From patchwork Sat Feb 4 04:43:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 650710 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71366C63797 for ; Sat, 4 Feb 2023 04:43:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232165AbjBDEnT (ORCPT ); Fri, 3 Feb 2023 23:43:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36516 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229436AbjBDEnS (ORCPT ); Fri, 3 Feb 2023 23:43:18 -0500 Received: from mail-qt1-x82a.google.com (mail-qt1-x82a.google.com [IPv6:2607:f8b0:4864:20::82a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B7861E5F6; Fri, 3 Feb 2023 20:43:16 -0800 (PST) Received: by mail-qt1-x82a.google.com with SMTP id h24so7790066qta.12; Fri, 03 Feb 2023 20:43:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Hq7S589pClfngh7atm5SDuJU0tnsjL6477RHSbC1eCc=; b=lSUCzyVjxohX6Vu2Zf9hV9RtosSVY89T1IjM93Fw46PDasvbpRkNo4v3ZlheULgBFz Q0PLRWuYrYoXj8gqtBeAHmYBUkfP97c64LnvzGLU4iQl5a+ZiGpW3zgazcga14OzGYNr vU2/do49nN7AdFLKlGoN9NabjTZBwuIYrZhLFoyU9WuhEl6xYZ1ryuyU5aPsVdOy3ZT4 QM34LxOBlhhDcavvXvcP2lDQkam50vr8kr4k47YITwRvVF+Af+dCGjxZtVlftqH5NSZZ SmFOofH32isc4BzW8SQauABd/Fv/OLzNh9tlDsuWDOLBjDxK2VwI9+k1WVrF5MLFuHrj flWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Hq7S589pClfngh7atm5SDuJU0tnsjL6477RHSbC1eCc=; b=QmI6F/9aysCSq2P+PSjHhNiUvVglh5Mk/5OVMeHF/ljpElV+M5/o99QDXgbYmBoSBc F1FkwFVQqTa73+8bGcRmATVOBjvOAB5MzIw7TAPhC7UXULOiVvYm49DJ9bEjgJqH+VhR gkIAMyOu4DzhJIu9K9dRcoous2NTvNhbFju+rvMBzjZs0ER85Wm5y2qjpgjzVF9FYcdh fSCp2Y/FHlSh51daSAIdjoVUw2/PBDoy3rWUabhTzRKLKe7qaRhJyVMrEd5fdxj8zehi 4QanduLLtAhnSG+Fdr9NLhmXHKnl6W+EV9yxRRDyiqxfsBIlw8emTPgjZh8g7rQg3UQ5 Ceww== X-Gm-Message-State: AO0yUKXdAnFBtjXTmwHScdhUo7emrQjYviFa2RjGpnLlS61yELvAJP/m 72ZIan5u8THg5s1W6uwU1talrGy9AMvffQ== X-Google-Smtp-Source: AK7set/W6rwpWoRzmpmnmMD2oQlPjWNT+rbZPA6g2ongw0rqRFDDJO64ykkraORYlTd6YJMOnmOL+Q== X-Received: by 2002:a05:622a:148b:b0:3b9:c153:f169 with SMTP id t11-20020a05622a148b00b003b9c153f169mr18739750qtx.0.1675485795400; Fri, 03 Feb 2023 20:43:15 -0800 (PST) Received: from DANNY-DESKTOP.localdomain (071-013-243-092.res.spectrum.com. [71.13.243.92]) by smtp.gmail.com with ESMTPSA id l23-20020ac84597000000b003b85ed59fa2sm2882135qtn.50.2023.02.03.20.43.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Feb 2023 20:43:15 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v2 1/4] dt-bindings: input: Add CP2112 HID USB to SMBus Bridge Date: Fri, 3 Feb 2023 22:43:10 -0600 Message-Id: <20230204044313.364-2-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230204044313.364-1-kaehndan@gmail.com> References: <20230204044313.364-1-kaehndan@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org This is a USB HID device which includes an I2C controller and 8 GPIO pins. The binding allows describing the chip's gpio and i2c controller in DT using the subnodes named "gpio" and "i2c", respectively. This is intended to be used in configurations where the CP2112 is permanently connected in hardware. Signed-off-by: Danny Kaehn --- .../bindings/input/silabs,cp2112.yaml | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 Documentation/devicetree/bindings/input/silabs,cp2112.yaml diff --git a/Documentation/devicetree/bindings/input/silabs,cp2112.yaml b/Documentation/devicetree/bindings/input/silabs,cp2112.yaml new file mode 100644 index 000000000000..a8d7f8aea6c2 --- /dev/null +++ b/Documentation/devicetree/bindings/input/silabs,cp2112.yaml @@ -0,0 +1,114 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/input/silabs,cp2112.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: CP2112 HID USB to SMBus/I2C Bridge + +maintainers: + - Danny Kaehn + +description: + The CP2112 is a USB HID device which includes an integrated I2C controller + and 8 GPIO pins. Its GPIO pins can each be configured as inputs, open-drain + outputs, or push-pull outputs. + +properties: + compatible: + const: usb10c4,ea90 + + reg: + maxItems: 1 + description: The USB port number on the host controller + + i2c: + description: The SMBus/I2C controller node for the CP2112 + $ref: /schemas/i2c/i2c-controller.yaml# + + properties: + clock-frequency: + minimum: 10000 + default: 100000 + maximum: 400000 + + gpio: + description: The GPIO controller node for the CP2112 + $ref: /schemas/gpio/gpio.yaml# + + properties: + interrupt-controller: true + '#interrupt-cells': + const: 2 + + gpio-controller: true + "#gpio-cells": + const: 2 + + ngpios: + const: 8 + + patternProperties: + "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$": + type: object + properties: + gpio-hog: true + gpios: true + input: true + output-high: true + output-low: true + line-name: true + + required: + - gpio-hog + - gpios + + additionalProperties: false + + unevaluatedProperties: false + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + #include + #include + + usb { + #address-cells = <1>; + #size-cells = <0>; + + device@1 { + compatible = "usb10c4,ea90"; + reg = <1>; + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + temp@48 { + compatible = "national,lm75"; + reg = <0x48>; + }; + }; + + gpio { + gpio-controller; + interrupt-controller; + #gpio-cells = <2>; + gpio-line-names = + "TEST0", + "TEST1", + "TEST2", + "TEST3", + "TEST4", + "TEST5", + "TEST6", + "TEST7"; + }; + }; + }; From patchwork Sat Feb 4 04:43:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 650709 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EE3A5C64EC3 for ; Sat, 4 Feb 2023 04:43:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232529AbjBDEnT (ORCPT ); Fri, 3 Feb 2023 23:43:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36524 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231375AbjBDEnS (ORCPT ); Fri, 3 Feb 2023 23:43:18 -0500 Received: from mail-qt1-x835.google.com (mail-qt1-x835.google.com [IPv6:2607:f8b0:4864:20::835]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C21131E9DE; Fri, 3 Feb 2023 20:43:16 -0800 (PST) Received: by mail-qt1-x835.google.com with SMTP id g8so7783938qtq.13; Fri, 03 Feb 2023 20:43:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vxwJJG81TUrsdw3X7aHgdC1I62jcckROfzmxoyJojKQ=; b=ZtIZbgC3Ee5nRN6C46HbuTWX7lJSUl0+GkqaDWj2e69lOZ48g5yiQ+XR+sqZzCqI1T yIdQ1p5ZoAX1Bmzl9+jZSbiZE8Fj3mbHa8WWg31I6e1QdEKAvSw3HASlgJfqYJdXlhRn 3489mViZ9oIDr9ouITRPMbhGr52Al0aq0CKaTR/FLBrtNc6ga/utIcvA8mA4CaIUrTw0 aSE3+vl+StrTKujSLQA7LmDnrHd4JVFzwbRn42DLDYtfEQqXWw+hGkIjCKAXe0DXqShG PoIDtmZVkQrQSjtDehiD5mn9AIIecEpHjOF4H0ZaSlXBbHc1ftf5ZGU1aeAdy9Mal0mA TZHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vxwJJG81TUrsdw3X7aHgdC1I62jcckROfzmxoyJojKQ=; b=YCSUYfGKlaWaZoJaz9pAqx2++uKzis0+B0AeBvEHuPPY/yYTPHNlfvlSlUaC6/6GFT 4JP62I9HtAr0R/JW4YGxjD58DcD76CDJW2isrAwLkHysKINdowP0wkF/WI5y/ifzaQAc 8tDQYBATiT3hc3+qq/5t5ZEfsTerXwK72rlZbCRxR3LDdBffkZn1ZKnFTIfIhHb1NmtF SaPsc6yhbc4mQiAZkwqVJqQHUag1IYT8aufWcRN/pbm7mgjJofhq6lKWUFbitCTPy0AB JY+f/euqayULGRxPhIW2/lBWx4imTbYqkQ1jjY+rF8CBrjZwCbbxFpArviNCkhPuMlgt 2EKw== X-Gm-Message-State: AO0yUKUEHWaQe+qZX/+I1FEMSsNFke8EtUoOrPHdd9wP7Zor+p9TkGEg TKjHdmqzP6ccAv1V3UX3ngw= X-Google-Smtp-Source: AK7set/PArO3t3pEAhGdhPIKKxoZYD4mzsElB9TfIMowuzcXW+oyI6b/d8NNEYy8ERLMmi5lLuRC1A== X-Received: by 2002:a05:622a:60e:b0:3ba:1113:751a with SMTP id z14-20020a05622a060e00b003ba1113751amr3942436qta.67.1675485796354; Fri, 03 Feb 2023 20:43:16 -0800 (PST) Received: from DANNY-DESKTOP.localdomain (071-013-243-092.res.spectrum.com. [71.13.243.92]) by smtp.gmail.com with ESMTPSA id l23-20020ac84597000000b003b85ed59fa2sm2882135qtn.50.2023.02.03.20.43.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Feb 2023 20:43:16 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v2 2/4] HID: usbhid: Share USB device devicetree node with child HID device Date: Fri, 3 Feb 2023 22:43:11 -0600 Message-Id: <20230204044313.364-3-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230204044313.364-1-kaehndan@gmail.com> References: <20230204044313.364-1-kaehndan@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org USB HID core now shares its devicetree of_node with its child HID device. Since there can only be one HID device on a USB interface, it is redundant to specify a hid node under the USB device (and further, binding this way isn't currently possible, as hid_driver does not support of_match_table). Signed-off-by: Danny Kaehn --- drivers/hid/usbhid/hid-core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index be4c731aaa65..b6c968af258f 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "usbhid.h" /* @@ -1369,6 +1370,7 @@ static int usbhid_probe(struct usb_interface *intf, const struct usb_device_id * hid->hiddev_report_event = hiddev_report_event; #endif hid->dev.parent = &intf->dev; + device_set_of_node_from_dev(&hid->dev, &intf->dev); hid->bus = BUS_USB; hid->vendor = le16_to_cpu(dev->descriptor.idVendor); hid->product = le16_to_cpu(dev->descriptor.idProduct); From patchwork Sat Feb 4 04:43:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 650920 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AE57BC636D3 for ; Sat, 4 Feb 2023 04:43:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231375AbjBDEnU (ORCPT ); Fri, 3 Feb 2023 23:43:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232470AbjBDEnT (ORCPT ); Fri, 3 Feb 2023 23:43:19 -0500 Received: from mail-qt1-x835.google.com (mail-qt1-x835.google.com [IPv6:2607:f8b0:4864:20::835]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5152C2278D; Fri, 3 Feb 2023 20:43:18 -0800 (PST) Received: by mail-qt1-x835.google.com with SMTP id w3so7817419qts.7; Fri, 03 Feb 2023 20:43:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oAYdJzzeTeXOhvH5ct62NBOgopLWCsTH7OnUSEt6qQ0=; b=dgTSqwI7ELB8gfVEaC+P6eJ0ZIz6imZEbNjBgCyLuj83MUXFRVEbOQ445d72d6mo5C /yEVOUuYW9qQDxf9kMYMftUD0jfjB2EG04ZW6T0+25TDspXhWKBO0XfUPgFdl+Od+VcJ 7DGO6OLPZm1qF1eOgdPVHeids8MrmdopV7Q+/90tVQItviL1x2zJoFEjYlblGHHN43UN 7Sq0OzJI/AgKNyoSngBt3P5ojygS6+lJJIJSIrjNuKzw+pLGNQpxUzK+FNMk6gVa44g3 lCjbypgtRoNPOiaKJ5inZHBOnB9jIMIJGUrJt4wmmlK/Uj03ixfzdlNqsTS7nfWAMc5n XeRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oAYdJzzeTeXOhvH5ct62NBOgopLWCsTH7OnUSEt6qQ0=; b=n44/FOUKc037fyikn+QcnrVLxFxKzh2iOirIYllCvVUkLw8w5vJ51C/rE84cGtSqI1 6mdChf593HGFuXVyfLSKvWuIzp5NHNQGWuON9ABqZlmjxUXPn8517sA2Z+DsBqNthLMo 9XWdKjKBJMotqfq8shmIui2qf9AymYKeHEq0DWkF+9JDhs3X9pv/oFGCbgafP0XbaAee M/rCdAN66D3MYZWtSIbwxlLcS6Ri0nuzzV42VrD78OfH85oqj+SHV0G2SSItxB0CJ80Q wBMLQKmK/cebKtrLQhieWyI1G0UbsIdxeATX/Fqn1DPhs5YPEb2Hjvw1zONZh1zoTZiH eCYQ== X-Gm-Message-State: AO0yUKXGGuAq6SYB4mWQ1WaL7qfddPK8E0Z6RY/blwui7QRUmczoV52X Md2LkaS1uAPNZ2h24ctwNtYdw8J3bL+Ckw== X-Google-Smtp-Source: AK7set+WDPnHolfBXnmrawiwv3l5sfJGC7AbMRGX8Hr4TzhELzVsWIH5W6sGLc9JDRYw++MHLOrpRA== X-Received: by 2002:a05:622a:2d5:b0:3b9:ed95:6ab9 with SMTP id a21-20020a05622a02d500b003b9ed956ab9mr12864016qtx.51.1675485797306; Fri, 03 Feb 2023 20:43:17 -0800 (PST) Received: from DANNY-DESKTOP.localdomain (071-013-243-092.res.spectrum.com. [71.13.243.92]) by smtp.gmail.com with ESMTPSA id l23-20020ac84597000000b003b85ed59fa2sm2882135qtn.50.2023.02.03.20.43.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Feb 2023 20:43:17 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v2 3/4] HID: cp2112: Fix driver not registering GPIO IRQ chip as threaded Date: Fri, 3 Feb 2023 22:43:12 -0600 Message-Id: <20230204044313.364-4-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230204044313.364-1-kaehndan@gmail.com> References: <20230204044313.364-1-kaehndan@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org The CP2112 generates interrupts from a polling routine on a thread, and can only support threaded interrupts. This patch configures the gpiochip irq chip with this flag, disallowing consumers to request a hard IRQ from this driver, which resulted in a segfault previously. Signed-off-by: Danny Kaehn --- drivers/hid/hid-cp2112.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c index 1e16b0fa310d..27cadadda7c9 100644 --- a/drivers/hid/hid-cp2112.c +++ b/drivers/hid/hid-cp2112.c @@ -1354,6 +1354,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) girq->parents = NULL; girq->default_type = IRQ_TYPE_NONE; girq->handler = handle_simple_irq; + girq->threaded = true; ret = gpiochip_add_data(&dev->gc, dev); if (ret < 0) { From patchwork Sat Feb 4 04:43:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 650919 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D948C64EC4 for ; Sat, 4 Feb 2023 04:43:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232470AbjBDEnW (ORCPT ); Fri, 3 Feb 2023 23:43:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36548 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232611AbjBDEnV (ORCPT ); Fri, 3 Feb 2023 23:43:21 -0500 Received: from mail-qt1-x82d.google.com (mail-qt1-x82d.google.com [IPv6:2607:f8b0:4864:20::82d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C55C252B5; Fri, 3 Feb 2023 20:43:19 -0800 (PST) Received: by mail-qt1-x82d.google.com with SMTP id g18so5505487qtb.6; Fri, 03 Feb 2023 20:43:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UxXKGR9ltFdKDl8mSCieW1oHKLB8nv28bH/fp3/rD9Q=; b=LH+/iZF7HBV/S7Xu2nv3FpyfWu5Huh1+YzFFfqLGOtEPgihdZjiGyGITckoBS8rkRy eFuuYKcL6vCQZbyAki1wkhnl4L4teABf4KeXuH7jPGYAHEiUHauV6BBYTWCLlH/S4TEF PArcNV5ldTmaZOE7yUKZxxgXgrX5HdEFX+3z/7LPHATmo+XFZPPx5OfBW/lnBgWR6k8Y 8FMMxBgmhcyjjg+5o+Tcp+xBxbOAxfvWzusujSwJehEq9ri1kTJsFJoTCPDIV8+SGeUo 6NZp5sha0knnojT9ZKzSGy4bms/ahCgFWjqQxOHXWWVjKiF+JOygdgKy8bWKJjzeBlOs 0wZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UxXKGR9ltFdKDl8mSCieW1oHKLB8nv28bH/fp3/rD9Q=; b=P9UXrtX+ThUZ9dXU6vzd1tkOEXwkgLJbDLjqe4W35dBQrSEJT+PaqEg6GOB5wUUxUA KQNC1/mwkxgUNbT39IwL1FYPcq8JNmxwj2HKTXjWCcNoG/gabeAk7qti6tYmifI0FLKK 67dFW2KznrrMegDEdnli2HLbRPmjIOAP7tl5VKdHRtkswk2gyKxnMyArWIdHePy63qCA EWuRqXBjnf7lAheyIhSUBo2dA6Rd6D/cpx+1/JJjwFdPBgtNLjW6J2NtRBjAqHV+4sEW S8gd2k2JJDtX8/YMN/3rzNSa7NhEOqm/Kuw6m8UyYN4Kl7HNSKzbRV+ssoFsbCOdMVJ+ 0ZmA== X-Gm-Message-State: AO0yUKUyiNSMVFnX/r8IaM6crdWMaj+wsU0E0lnyhK/gSmy6MLx8oOoR hixJRpRQ0xKAE+9IOSRFcTY= X-Google-Smtp-Source: AK7set/lLKkrAGKutVgi4jr5I9+Cu2czUItSKLcD05Owdkr6qDJ8GFzep44BVvRnOmYye2Boa2jrGA== X-Received: by 2002:a05:622a:312:b0:3b7:ec1b:1fa7 with SMTP id q18-20020a05622a031200b003b7ec1b1fa7mr22922879qtw.43.1675485798335; Fri, 03 Feb 2023 20:43:18 -0800 (PST) Received: from DANNY-DESKTOP.localdomain (071-013-243-092.res.spectrum.com. [71.13.243.92]) by smtp.gmail.com with ESMTPSA id l23-20020ac84597000000b003b85ed59fa2sm2882135qtn.50.2023.02.03.20.43.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Feb 2023 20:43:18 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v2 4/4] HID: cp2112: Devicetree Support Date: Fri, 3 Feb 2023 22:43:13 -0600 Message-Id: <20230204044313.364-5-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230204044313.364-1-kaehndan@gmail.com> References: <20230204044313.364-1-kaehndan@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org Bind i2c and gpio interfaces to subnodes with names "i2c" and "gpio" if they exist, respectively. This allows the gpio and i2c controllers to be described in DT as usual. Additionally, support configuring the i2c bus speed from the clock-frequency property. Signed-off-by: Danny Kaehn --- drivers/hid/hid-cp2112.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c index 27cadadda7c9..aa634accdfb0 100644 --- a/drivers/hid/hid-cp2112.c +++ b/drivers/hid/hid-cp2112.c @@ -1234,6 +1234,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) u8 buf[3]; struct cp2112_smbus_config_report config; struct gpio_irq_chip *girq; + struct i2c_timings timings; int ret; dev = devm_kzalloc(&hdev->dev, sizeof(*dev), GFP_KERNEL); @@ -1292,6 +1293,10 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) goto err_power_normal; } + dev->adap.dev.of_node = of_get_child_by_name(hdev->dev.of_node, "i2c"); + i2c_parse_fw_timings(&dev->adap.dev, &timings, true); + + config.clock_speed = cpu_to_be32(timings.bus_freq_hz); config.retry_time = cpu_to_be16(1); ret = cp2112_hid_output(hdev, (u8 *)&config, sizeof(config), @@ -1300,7 +1305,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) hid_err(hdev, "error setting SMBus config\n"); if (ret >= 0) ret = -EIO; - goto err_power_normal; + goto err_free_i2c_of; } hid_set_drvdata(hdev, (void *)dev); @@ -1322,7 +1327,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) if (ret) { hid_err(hdev, "error registering i2c adapter\n"); - goto err_power_normal; + goto err_free_i2c_of; } hid_dbg(hdev, "adapter registered\n"); @@ -1336,6 +1341,9 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) dev->gc.ngpio = 8; dev->gc.can_sleep = 1; dev->gc.parent = &hdev->dev; +#if IS_ENABLED(CONFIG_OF_GPIO) + dev->gc.of_node = of_get_child_by_name(hdev->dev.of_node, "gpio"); +#endif dev->irq.name = "cp2112-gpio"; dev->irq.irq_startup = cp2112_gpio_irq_startup; @@ -1376,7 +1384,12 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) err_gpiochip_remove: gpiochip_remove(&dev->gc); err_free_i2c: +#if IS_ENABLED(CONFIG_OF_GPIO) + of_node_put(dev->gc.of_node); +#endif i2c_del_adapter(&dev->adap); +err_free_i2c_of: + of_node_put(dev->adap.dev.of_node); err_power_normal: hid_hw_power(hdev, PM_HINT_NORMAL); err_hid_close: @@ -1391,6 +1404,11 @@ static void cp2112_remove(struct hid_device *hdev) struct cp2112_device *dev = hid_get_drvdata(hdev); int i; + of_node_put(dev->adap.dev.of_node); +#if IS_ENABLED(CONFIG_OF_GPIO) + of_node_put(dev->gc.of_node); +#endif + sysfs_remove_group(&hdev->dev.kobj, &cp2112_attr_group); i2c_del_adapter(&dev->adap);