From patchwork Mon Feb 6 13:50: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: 651559 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 03808C61DA4 for ; Mon, 6 Feb 2023 13:50:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230305AbjBFNus (ORCPT ); Mon, 6 Feb 2023 08:50:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53604 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230525AbjBFNuf (ORCPT ); Mon, 6 Feb 2023 08:50:35 -0500 Received: from mail-qt1-x82e.google.com (mail-qt1-x82e.google.com [IPv6:2607:f8b0:4864:20::82e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B3DBE252BE; Mon, 6 Feb 2023 05:50:17 -0800 (PST) Received: by mail-qt1-x82e.google.com with SMTP id h24so12730721qta.12; Mon, 06 Feb 2023 05:50:17 -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=L6uVVIDWDMsCSFQLILis/DJgYmwxhPs3uU4Pp+RwuOM=; b=QgEPBKlAP0Nb+KY4nNP1RfnZfXkujCDbvkvIc8Ctxg3boGN925uZWEtKPg0PHw4zZ2 URaem5rgIe0+NFz4k+ZRYsrN1PrjHfiFnt/Yhquhh22Bisliq9BoZRfeD4YDnDlf8K+a NdiwhiajmhvIYN1F4I0nH1d8NSVZqsDISuaN4Af52f3mVtNpSih+sJY3dYWchbKNe4oD c9Mzm9BJ3NkqEufV0LTYhTa2blWjHnBJmnD+hdJM352wC08BkS6gZim+mSHrY8WwVmz2 1uw2gvCluK/Au+CAkomTpadbX8g+bhz3jWY+6Us++mIFJw8GJLjSZqgRR2yLl4A97H4d hFEA== 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=L6uVVIDWDMsCSFQLILis/DJgYmwxhPs3uU4Pp+RwuOM=; b=dwSiKNF4G2R/WKTd1gpx1UU9HLRagSdiPeURtiz+/v8RvDyHVCmkZy21H1sFKARiq/ jcRPT7wtrG6KWWdhzGurrZvyCpa6TdNO+CTMl3rluLHVQIEBsQnIFdodcJ/fh4SVWDyM /XY298NQqO0n+zXRsMcqUd1rVtFmY1qB+3YeMFvomtq4FYKB253PNP6OWiDXmZrPnWOx uA52kh2Xo8dqaqwdaUgqVNAxiak4dBERci8zuFtTwl40yr9hmEnT44f2Qf5RVbf6WT2m kil7iOJaw0ZQuysgJclRFqMqh9p3wF2peMKLlypUP5hUQONL6FHGmtvC81cKcIFS3eAC QdWg== X-Gm-Message-State: AO0yUKU3DxdyTzKXbzn/Dw/QMKw+nmznwAvZpZhAdmdlBPULSCo8eV9X yvzJIVFUUQyGeBmKlz2frWg= X-Google-Smtp-Source: AK7set/FyAoqW2QrtDuXDoNMFUF0UOEPbbLod86SLlRySTJTJuIGdz3UIYYbWnwX2rvAiQQBriaQkw== X-Received: by 2002:ac8:5955:0:b0:3b6:2bb3:fb53 with SMTP id 21-20020ac85955000000b003b62bb3fb53mr35598467qtz.16.1675691416639; Mon, 06 Feb 2023 05:50: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 ed4-20020a05620a490400b007195af894e7sm7349492qkb.76.2023.02.06.05.50.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Feb 2023 05:50: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 v4 1/4] dt-bindings: i2c: Add CP2112 HID USB to SMBus Bridge Date: Mon, 6 Feb 2023 07:50:13 -0600 Message-Id: <20230206135016.6737-2-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230206135016.6737-1-kaehndan@gmail.com> References: <20230206135016.6737-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/i2c/silabs,cp2112.yaml | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml diff --git a/Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml b/Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml new file mode 100644 index 000000000000..286e4dbafd69 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml @@ -0,0 +1,112 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/i2c/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# + unevaluatedProperties: false + properties: + clock-frequency: + minimum: 10000 + default: 100000 + maximum: 400000 + + gpio: + description: The GPIO controller node for the CP2112 + type: object + properties: + interrupt-controller: true + "#interrupt-cells": + const: 2 + + gpio-controller: true + "#gpio-cells": + const: 2 + + ngpios: + const: 8 + + gpio-line-names: + minItems: 1 + maxItems: 8 + + patternProperties: + "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$": + type: object + properties: + gpio-hog: true + input: true + output-high: true + output-low: true + line-name: true + gpios: + minItems: 1 + maxItems: 8 + + 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 Mon Feb 6 13:50:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 651164 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 1FF77C64EC4 for ; Mon, 6 Feb 2023 13:50:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230252AbjBFNuu (ORCPT ); Mon, 6 Feb 2023 08:50:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231126AbjBFNuf (ORCPT ); Mon, 6 Feb 2023 08:50:35 -0500 Received: from mail-qv1-xf2d.google.com (mail-qv1-xf2d.google.com [IPv6:2607:f8b0:4864:20::f2d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 94A132595F; Mon, 6 Feb 2023 05:50:18 -0800 (PST) Received: by mail-qv1-xf2d.google.com with SMTP id j9so7098124qvt.0; Mon, 06 Feb 2023 05:50: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=vxwJJG81TUrsdw3X7aHgdC1I62jcckROfzmxoyJojKQ=; b=L7tu4+Ff+mvJHHdSiME91P7faYWX9NShpu+J0SyBJLwdGoutPMa5oMv93RQbcWB6Um J9Qvf2lvrk2VbVHLlpLZ8cLeT1hyvsjBPUEQneLO71CEFlpPYGuYpDKlXiGxxozG6y9r 7Uh6xhcp8GXOPQ/d7774RrczEE3xAzC+SLJ+gYcSjYkp15QdFDEJyILeKnn3V71aRMyN 15HKtac3UBjEsNyIqPOU8AiR021B9ZnmTP75XHNqNZT/bRV7mMF98F+2WR52Hc+Pd+1D SQV8ndUMdsa3BCDK0//sWM5STSy7orKooEFcMeF70YGPfX1xorULXEOcfAOASPVRr1hb ZPWA== 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=dBXZ9qjKRGrFp2gAhhYFxjSrBEopvsIiR3VgAX/b3y84H3SCiJL4F+XCFmKKY/BubO mChChT9z6waReBBHiwEYqzpo1wD9f5PSrWrdznQvcmHlyPP5t561O4Z3KK995vCjAyeP nd3THKAvOXOrcnuC7OEcgm1fsyTTHGK0AMjFJZqOrTCarj1AGtCqqdNGU4Ia9+ie/BjG ZPTgZkXwUO2LMpQ1MAkr8MkBxxrvfd944N2PD0HNq4hIKmsGcD02UH3J7v/TilM9/QjO woqHlpSq+2A9hr7Mvq54GRU1882hkopxnkYhmejzhwKhKh4QwdeJ8uW4p2ZC8Lq+XSh1 sxJw== X-Gm-Message-State: AO0yUKU8+Nwk1VzIr7v4KRPG5n1Rk7QpBMszBXdyEeq9kBUKZ4BadsZy O1garJ8WfGUUiF4SQ/IN8ro= X-Google-Smtp-Source: AK7set+m6zeI3ljrsdQWTgn1Lrkwm5DqLvOozgHnekR2TD3UgLoowgtrUomjxIOKiRhnbhiEFlcBFw== X-Received: by 2002:ad4:5145:0:b0:56b:ec8e:6a9d with SMTP id g5-20020ad45145000000b0056bec8e6a9dmr6949698qvq.12.1675691417598; Mon, 06 Feb 2023 05:50: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 ed4-20020a05620a490400b007195af894e7sm7349492qkb.76.2023.02.06.05.50.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Feb 2023 05:50: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 v4 2/4] HID: usbhid: Share USB device devicetree node with child HID device Date: Mon, 6 Feb 2023 07:50:14 -0600 Message-Id: <20230206135016.6737-3-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230206135016.6737-1-kaehndan@gmail.com> References: <20230206135016.6737-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 Mon Feb 6 13:50:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 651558 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 C6333C61DA4 for ; Mon, 6 Feb 2023 13:50:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230082AbjBFNu6 (ORCPT ); Mon, 6 Feb 2023 08:50:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53590 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230381AbjBFNuh (ORCPT ); Mon, 6 Feb 2023 08:50:37 -0500 Received: from mail-qv1-xf2a.google.com (mail-qv1-xf2a.google.com [IPv6:2607:f8b0:4864:20::f2a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D209B2194B; Mon, 6 Feb 2023 05:50:19 -0800 (PST) Received: by mail-qv1-xf2a.google.com with SMTP id m16so1279615qvm.4; Mon, 06 Feb 2023 05:50: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=oAYdJzzeTeXOhvH5ct62NBOgopLWCsTH7OnUSEt6qQ0=; b=PXpbPd6vE1wiSPKrt7MMFNq2IfJ5z1tkoSVO89fD3WY1R11nTXSfuwxrEDTfyqY8zN kxyjFdwD8yu5wsy0FCpA1DYTDLtxPlZfqv3PJIbT7WC4yB2ZNVV7CWRV0kRFzk5NxYiH PUXSl3p/nKcU0Rxqk2xKCl+Z/599crWS0IGBbJCyw79MInp/7cm5TT+SRMM6eOJDlQOE FUQoUb8xvoqY2baftF0d8o3KnwvpWR85q/PNU+J4Etl3SnoAG+rlGmJeFkglnpxIsgqt A0HRLxZW1qBXSLARZFHI+BVCoKTDQUhhlk0ZPBvg7FZaetbrR8mV43IfA12FQCcobGbI 6RQQ== 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=2dbl1dKm8imewSKfPFHGCUC36lwqYXGtOHm4Tm50DU8Jd1leRAN5bo6uu22ung4oEb hgb5L+LrbN95CJcEGC1QwXeeXjdGQFCV+3HrVJjHhM1CFj22h5mQ51Ue5CAJAvjOUUEj PjK/yHLH4sJ7pMT6MDV3SQ1VAldAteNw63baNAlGH6ULq2X5IO5swkPDgmRD3JvyU25E gIGy/sfdnwXCpkfEBJD9jW6JG5Uwx6umeMbAwoWJr4iKM7qN7jtIzVaf0FOLtYpyeiYU qoXE0vjbmXzxRvPInO1TtLM9o0YGfErz95pWmIpmmU4fXTC1rIvao7sKOJMCBojwIQYP 0tPg== X-Gm-Message-State: AO0yUKUvZD3Aw+7L6HGwLgW9UYUWZGYzPdxgx132Tu1YHpnxx0O4aAUp ko5QHPW5WNXsydlpp+gAyfw= X-Google-Smtp-Source: AK7set9y9EDYlgbf8ZAmjl3QCUvNkTVlXAQZuBXLOQI7Ua2RFyS8zEj4kv85Y4LqCgSLXEgDrwSUTg== X-Received: by 2002:a05:6214:2a83:b0:56b:eab3:baf4 with SMTP id jr3-20020a0562142a8300b0056beab3baf4mr13842160qvb.19.1675691418526; Mon, 06 Feb 2023 05:50: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 ed4-20020a05620a490400b007195af894e7sm7349492qkb.76.2023.02.06.05.50.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Feb 2023 05:50: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 v4 3/4] HID: cp2112: Fix driver not registering GPIO IRQ chip as threaded Date: Mon, 6 Feb 2023 07:50:15 -0600 Message-Id: <20230206135016.6737-4-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230206135016.6737-1-kaehndan@gmail.com> References: <20230206135016.6737-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 Mon Feb 6 13:50:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 651163 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 2C36AC61DA4 for ; Mon, 6 Feb 2023 13:51:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230399AbjBFNvA (ORCPT ); Mon, 6 Feb 2023 08:51:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230471AbjBFNuj (ORCPT ); Mon, 6 Feb 2023 08:50:39 -0500 Received: from mail-qt1-x831.google.com (mail-qt1-x831.google.com [IPv6:2607:f8b0:4864:20::831]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7CC6B2449B; Mon, 6 Feb 2023 05:50:20 -0800 (PST) Received: by mail-qt1-x831.google.com with SMTP id z5so12744927qtn.8; Mon, 06 Feb 2023 05:50:20 -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=OsRfJAZE0DbZvScCF8h1BPnIKA1IyQMJMmObv5R0f6RXGGvGhGImrdhkZktoT9LvC7 TQDPrHyx5FIn+zl/MFIXNtKMkbK4O23ODI40X8epY7U07ruGNHd8FuA6yDrn+y+khqDl MhuS2nI7TJDR9gBqgG6A9dQ1LY5Uv0UIqyqST0IPStwr1c0Ze56I7lPS5TrfOumHg+Hh BIuZdb21DAJyZaWlgp66EKptxZ4cDlRAXO33Knw/Of9VWjiYrGi5tGYticAfFH9/eKo6 W/9dRjHoS2son6x/TIoTa7O2WVZeZr21GlWTtMC6O9hcLx2aGW01HZizeyxdbeWJ8z6H afKA== 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=s0F0zCRQ+frtb0QP+geaXSHAgvUXB5ytsXiEOndLHbrRz4Q/IabQitTBOF1LVjFCXa 4xpHeitb6rYfyQNesdUBu6FB5+sFgJGOxJiB2iE28FcoFmA4qhH/sjOk4mB7OaXoLsET roDlPdVusv8P/Raikl71UvhDVxGaFARDCb23RrSutsVrmXskK5fHE2sBO+cxYyQoNz8+ pwctwRYVcCuGTTL42mmHOMe/hqDaa7rPMn1p85XKl/jbQgcfu76qAjachhrlqXTAGgFQ 001Vdgq4TM4lKq+7xMaIdfqLQTaCjAIacVp0yPfwnJdQm0O3TAkzPICVbFAeNNbbk2B3 salA== X-Gm-Message-State: AO0yUKXPL0E4XMJvDzR37zQSO1NGjjvsinpJI2qGTlfCFbcz38E1y8Cl pIlysTsSWrAV6T+RdvX6AFSwzHJJEsaYPA== X-Google-Smtp-Source: AK7set8GXdM3WkR/hGU0bOEx+TSAMGfo7qIoNTVTN8fKjj9Y3h7OIvghtQgLAFYK8QVW0cMTc6zVEg== X-Received: by 2002:a05:622a:134c:b0:3b9:ba79:80d7 with SMTP id w12-20020a05622a134c00b003b9ba7980d7mr35570946qtk.12.1675691419420; Mon, 06 Feb 2023 05:50:19 -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 ed4-20020a05620a490400b007195af894e7sm7349492qkb.76.2023.02.06.05.50.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Feb 2023 05:50:19 -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 v4 4/4] HID: cp2112: Devicetree Support Date: Mon, 6 Feb 2023 07:50:16 -0600 Message-Id: <20230206135016.6737-5-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230206135016.6737-1-kaehndan@gmail.com> References: <20230206135016.6737-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);