From patchwork Fri Feb 10 22:36:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 13136563 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 45F61C636D7 for ; Fri, 10 Feb 2023 22:36:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233888AbjBJWgi (ORCPT ); Fri, 10 Feb 2023 17:36:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60550 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233878AbjBJWgh (ORCPT ); Fri, 10 Feb 2023 17:36:37 -0500 Received: from mail-qt1-x829.google.com (mail-qt1-x829.google.com [IPv6:2607:f8b0:4864:20::829]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 54D271733; Fri, 10 Feb 2023 14:36:36 -0800 (PST) Received: by mail-qt1-x829.google.com with SMTP id z5so7578467qtn.8; Fri, 10 Feb 2023 14:36:36 -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=/HbCbFVY56AQbOfarvrsKxEUIEroNNwPD9YmXZj1dKo=; b=UpRcOFYzkCh/hMqT2g2b+IY81PDaB0XAmE0pkyH5YpEYwPUBwtDgOZEaPbSV1NWZCS 8mxFq/DnbVYB12zb1f50MIie+trezc86WnnyMtv4MxaEXmMIHQjstG7RNic3JFq2SGmD bTOtKZS8zjapQDYowbV+e9rd8Ll6fbj1Wq8mTNwY/ReyhB/rVdMmd9qbW1ubbkdQS280 BEvFd5N6lQ7VOTfMVqO6IGQxhfZWhkpqiqQESUzHHtf/KzDazyAmaR6BmBzscVCckG5j MzYQrq1NhLeRSqnzC5/bpK63z/wnAc6tBfK3msXFFO3lm4v5P5SJxh1IetCCNdyge/yO ssOw== 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=/HbCbFVY56AQbOfarvrsKxEUIEroNNwPD9YmXZj1dKo=; b=HImgn6G0gIfmqx54jHCufyeRgQXJFnMcDxU2Y8EvXlCMziPYM3QC2g5hcHjR7zxmrh eWAVv6venLOZFdZw9P9sPUnig9gbXjWzr0nLwhkd2qFZ6eosP8C7L6xy5LMKpuh08EJ2 VlkrctaCq+epO3WDUBgA18kPlBc/ncGF1g+urA+xTV35U4vD3ANX6b2NuZqgh/E3LTjp 9p/S9bAWlgkm5pacb3WcbyX6SKUDnndb00GMRqf0uDvKVx0oFwH9A7vguXzOw5p4f1bx G3/nAXYBAgaGB2vVXyisontp8oHuQG13WNq2EQKKqUKVNL28NTpq8WIFLFJSNeHX3X8K glQw== X-Gm-Message-State: AO0yUKXbF6PVFYE66Zt3md+Y2lsQpiP336FENPO5TlZ3wwcjtRNaMCcg UvEX3g7cXP4l9pnt3V3ItEM= X-Google-Smtp-Source: AK7set/t5KCDDzxI//shjx+QfrH+JPOUIyKMgV35NLZj8reyhs0rasCIdzb1bCTkonnNunieNUM9+g== X-Received: by 2002:ac8:5a54:0:b0:3ba:1acd:4f8 with SMTP id o20-20020ac85a54000000b003ba1acd04f8mr30070350qta.42.1676068595351; Fri, 10 Feb 2023 14:36:35 -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 o5-20020ac80245000000b003b64f1b1f40sm4166063qtg.40.2023.02.10.14.36.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Feb 2023 14:36:35 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: bartosz.golaszewski@linaro.org, andriy.shevchenko@linux.intel.com, dmitry.torokhov@gmail.com, devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v5 1/3] dt-bindings: i2c: Add CP2112 HID USB to SMBus Bridge Date: Fri, 10 Feb 2023 16:36:36 -0600 Message-Id: <20230210223638.12796-2-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230210223638.12796-1-kaehndan@gmail.com> References: <20230210223638.12796-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 Reviewed-by: Rob Herring --- .../bindings/i2c/silabs,cp2112.yaml | 113 ++++++++++++++++++ 1 file changed, 113 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..81eda01ebda5 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml @@ -0,0 +1,113 @@ +# 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: + sda-gpios: + maxItems: 1 + + scl-gpios: + maxItems: 1 + + clock-frequency: + minimum: 10000 + default: 100000 + maximum: 400000 + + gpio: + description: The GPIO controller node for the CP2112 + type: object + unevaluatedProperties: false + + properties: + interrupt-controller: true + "#interrupt-cells": + const: 2 + + gpio-controller: true + "#gpio-cells": + const: 2 + + gpio-line-names: + minItems: 1 + maxItems: 8 + + patternProperties: + "^(.+-hog(-[0-9]+)?)$": + type: object + + required: + - gpio-hog + +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>; + sda-gpios = <&cp2112_gpio 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + scl-gpios = <&cp2112_gpio 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + + temp@48 { + compatible = "national,lm75"; + reg = <0x48>; + }; + }; + + cp2112_gpio: gpio { + gpio-controller; + interrupt-controller; + #gpio-cells = <2>; + gpio-line-names = "CP2112_SDA", "CP2112_SCL", "TEST2", + "TEST3","TEST4", "TEST5", "TEST6"; + + fan-rst-hog { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "FAN_RST"; + }; + }; + }; + }; From patchwork Fri Feb 10 22:36:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 13136562 X-Patchwork-Delegate: jikos@jikos.cz 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 B7329C6379F for ; Fri, 10 Feb 2023 22:36:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233889AbjBJWgj (ORCPT ); Fri, 10 Feb 2023 17:36:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60556 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233555AbjBJWgi (ORCPT ); Fri, 10 Feb 2023 17:36:38 -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 75B6EC0; Fri, 10 Feb 2023 14:36:37 -0800 (PST) Received: by mail-qt1-x82d.google.com with SMTP id g8so7556044qtq.13; Fri, 10 Feb 2023 14:36:37 -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=PB9yw80m4eUWIlzkt3mXh3jD0Iw3rE375qRHv4MHbow=; b=a9yxqGZ6vF79wsnZvR1mP+EDaX9Z89UW1fi1I9chGS8tQuO8zXrUV98fC04YoYxTM8 cb2gmIxMEPU7tKxSr5p0dJh9feFAFP9CRKMO+TZeXk6T2VeaJiHUmlsdjSzxZAn07r+g VNPfgMpW9ZBwiyEt5Umw282wA283/xdS4ghZKze5yWi8E4/+7NGX6neHGWQeJpOZzMua mc4DVCDwE3ALZSwUfP6+pXRukWdz43cZEg9CXIM7hWMxDVhzxAsS13FxzQKW/iGc/yIR dXBgA7Uyk0lthdYBqD4NmvxMrSYZ/+IMdE+mPEUB1Uv62HgIh0jOeRbpAIfl14evBqLt wqQA== 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=PB9yw80m4eUWIlzkt3mXh3jD0Iw3rE375qRHv4MHbow=; b=T1g4wnwALCt5R8OlNNWEFPuwR6P/VVmchrO7eA83uJgGCdPTSs7RdYlG+umMZ14UdP KO2OLIKcfjpNnmCrSPy8sJgSM/+Ad1VDyEzQnkJcfqZaandcomP5JG0akTrOyn1YaANA J3QTR2XcGXJQSkd9j7etCUjGKsRDzIOpcol8ooRrndXZqt0f74hl6ZqyBwJQJahzXP9B lzQ7A0dCc1b0EsX9Gb/KzzCKTqETtYlbBAFJhAd9vK8wcMgO7p2C4JsWLTWoX5Flp7/r aZc07jpBglnBfbxvbtRfJZe93XXTCaVl0C2OBnoqHbSrxhlVNKxwE9fth0VuvQZ+O2Am 8POA== X-Gm-Message-State: AO0yUKWCIChTFgXrispDidD9A1o+7NXHJm2jarFsV3gwoO13C57mNm2O UXzy61fYTWgQ6oZGrgN+SV3ZZlFtYozvyA== X-Google-Smtp-Source: AK7set8x3BKmYvbwgE9xfrXvynMpqayR23LXPrvHVoUVbK22gOX7qF/CvxAj3TAEaWWte518SXDLgw== X-Received: by 2002:a05:622a:1752:b0:3b9:a965:7af2 with SMTP id l18-20020a05622a175200b003b9a9657af2mr28240281qtk.45.1676068596490; Fri, 10 Feb 2023 14:36:36 -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 o5-20020ac80245000000b003b64f1b1f40sm4166063qtg.40.2023.02.10.14.36.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Feb 2023 14:36:36 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: bartosz.golaszewski@linaro.org, andriy.shevchenko@linux.intel.com, dmitry.torokhov@gmail.com, devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v5 2/3] HID: usbhid: Share USB device firmware node with child HID device Date: Fri, 10 Feb 2023 16:36:37 -0600 Message-Id: <20230210223638.12796-3-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230210223638.12796-1-kaehndan@gmail.com> References: <20230210223638.12796-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 fwnode 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. This allows usb HID device drivers to be described in firmware and make use of device properties. 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..a0859c49d9f4 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -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_node(&hid->dev, dev_fwnode(&intf->dev)); hid->bus = BUS_USB; hid->vendor = le16_to_cpu(dev->descriptor.idVendor); hid->product = le16_to_cpu(dev->descriptor.idProduct); From patchwork Fri Feb 10 22:36:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 13136564 X-Patchwork-Delegate: jikos@jikos.cz 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 B52C2C636D7 for ; Fri, 10 Feb 2023 22:36:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233907AbjBJWgl (ORCPT ); Fri, 10 Feb 2023 17:36:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232950AbjBJWgj (ORCPT ); Fri, 10 Feb 2023 17:36:39 -0500 Received: from mail-qt1-x82f.google.com (mail-qt1-x82f.google.com [IPv6:2607:f8b0:4864:20::82f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A6F2DC0; Fri, 10 Feb 2023 14:36:38 -0800 (PST) Received: by mail-qt1-x82f.google.com with SMTP id g8so7556115qtq.13; Fri, 10 Feb 2023 14:36:38 -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=9aW1PkSRv3jt+WaJT9WXVxW1GhTX6PsVqCh9XDNIwKI=; b=JJxL/5RqpaGgrVE1Bs5XUZL5kk0IBT6jTvxtEV8CxFEYizSeEZLUVqPBHcLzfL7Lsy KcQ+2xu5YLaXMJKDbZIdHY49b5r3+Ct8yLQNW+H5LTgiWhhdrt1YvlpszJ3i+m34noqT N4EmT2SB2gHv2zmMUGm86IKWcXqB4mmFbZy9Qy5GtPNDR8C0AP5huCmDKNyDCfYAJh84 zkS/9u16GJ335H3CamlhrKytvxgzn5pUJG8Q7hSXrjGX0QegJmcdwkvRhYOWNUgzWMdz H5/eOM2BDye5wLOUfATpH0oWVWeWFcmNz/G42Tx+TTO2swhbbR4SXujfPqTRa9eDSX8H IKXA== 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=9aW1PkSRv3jt+WaJT9WXVxW1GhTX6PsVqCh9XDNIwKI=; b=UoSIDa6sOUzeaJ+IguSZoaH7aM3HcWA/lPOeeCIv9D/P2sEgHVfWP2ADxAaomPIZiX FyQ4WztlIxTzvgxT6rwbErB0l1wAmvk43CHAJ7TcDrxot7xIPAhRmqyJSzPC16aSA4jh wJsXyEF47Nby/jC3xp6izdhD6fBYsTFI4Vbtkj6RniaOBTumXvNhIUZl+GgyCoLpd57p rR0zNOkNN6EiiyaOHXGj2vLvyQUEf2SnNhecZUMUX5Oac1PB885zLh7EcGcb6MIFcWJl urc1ObpP2Bq7o5gnthLem8BGA/J+J8Z7i4X2oueLQdVLOuiwFjRvKQtJzaS2nmClaymN PVnQ== X-Gm-Message-State: AO0yUKXErvmBiP92dI8I8WPyYmnzKXkdCFrKHvydEb97cIVAl4IgaMsm sbRbjrEFokd1RWiso1qFFysdA4htD/Cb7Q== X-Google-Smtp-Source: AK7set9JFiCORaiIUucMOJD+DkloHy2ly80R2CpAJ5daubjDkcu36Xl6Ec4sIkWOQLZBhYvp7diRIg== X-Received: by 2002:ac8:4e46:0:b0:3ae:189c:7455 with SMTP id e6-20020ac84e46000000b003ae189c7455mr28710928qtw.47.1676068597614; Fri, 10 Feb 2023 14:36:37 -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 o5-20020ac80245000000b003b64f1b1f40sm4166063qtg.40.2023.02.10.14.36.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Feb 2023 14:36:37 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: bartosz.golaszewski@linaro.org, andriy.shevchenko@linux.intel.com, dmitry.torokhov@gmail.com, devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v5 3/3] HID: cp2112: Fwnode Support Date: Fri, 10 Feb 2023 16:36:38 -0600 Message-Id: <20230210223638.12796-4-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230210223638.12796-1-kaehndan@gmail.com> References: <20230210223638.12796-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 firmware as usual. Additionally, support configuring the i2c bus speed from the clock-frequency device property. Signed-off-by: Danny Kaehn --- drivers/hid/hid-cp2112.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c index 27cadadda7c9..23c4518ec016 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; } + device_set_node(&dev->adap.dev, device_get_named_child_node(&hdev->dev, "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), @@ -1336,6 +1341,7 @@ 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; + dev->gc.fwnode = device_get_named_child_node(&hdev->dev, "gpio"); dev->irq.name = "cp2112-gpio"; dev->irq.irq_startup = cp2112_gpio_irq_startup;