From patchwork Thu Feb 23 21:31:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 13150773 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 7F4CDC61DA4 for ; Thu, 23 Feb 2023 21:31:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229615AbjBWVby (ORCPT ); Thu, 23 Feb 2023 16:31:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45514 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229379AbjBWVbx (ORCPT ); Thu, 23 Feb 2023 16:31:53 -0500 Received: from mail-qv1-xf2f.google.com (mail-qv1-xf2f.google.com [IPv6:2607:f8b0:4864:20::f2f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 804DB56505; Thu, 23 Feb 2023 13:31:52 -0800 (PST) Received: by mail-qv1-xf2f.google.com with SMTP id bo10so11437555qvb.12; Thu, 23 Feb 2023 13:31:52 -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=uGjpuoHToThUojmYOw0QiZ7tHvBkaksCb1ZjIQGUb8s=; b=f5XCKjkefDjBnd3OEPHxB1xZ/PIFjIcRyTnv1x0kR3QEYWJTdfwnIMN3eEf+CyDqTO CK6LZE6zjJ4d36yO8JqiH9zTFztkNsEfDLEiHfSn7mKyMSh0xm5/Wwmp3F67LQEmjWyN 0SbvBjKF+wmvsStu46P/JXbLYzwgiG6AlJKzDXBVgmaQqpwRhuhiaKE4vVuHIVdDXtLJ qarTd4AypLPAnVzxc+sJpV7JTvPGn3W5nPEeV8qu5aw+SWhj9skpgrEVEXecLFq9fnFh VfkFWEDjvLFt6EBzhqr1oCKty7lo0dQdS4UhPvlg60lo+MQPDlk0taR2xiHeE0tg8XFK 8n3g== 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=uGjpuoHToThUojmYOw0QiZ7tHvBkaksCb1ZjIQGUb8s=; b=1fbX0l6IH5tOer0xHjGYxN/oD3rc2VTjnblPqftIcjHxuEvGcH/KX2PDlzUi3PijIa oJVNaNaW/6U8W4FuYGzKqlHuvy3knlaS9+iw1dezJWrmR9EesahU6pU51BZrMndyQjeR 7QxoIkTx74E3K3SBr/ATQtcyp2zVUBdeB35SnNG1LF7Pzm4jeRr2ESD7kfdD6Ld4XkKc AdWgNEetevHVqN2AHoduScKFKLtwgp7dZF9t0U9KUYokw3DnWjnQ1Dcl55a1Arx8CINq s7g6qW1KeXe7U5h3mBXVDOgdhfTh4Y0DjcbH15Njm3fMR3Cnf67IN1TFW4+iov74pdOM 0FEQ== X-Gm-Message-State: AO0yUKVXAT3LIfcWLoul1e0lZsvBS5bZDMwXtkjMxD94UbM7jFjgVjka OdeiXtY9WHG+2Slh7twp0mo= X-Google-Smtp-Source: AK7set9RzhT4ZDlYzVXnJruzI7aeFlwLU63R+z6Vt0wL83Pxc2a8ACPoelftg6Y96MHWS931JjNUMQ== X-Received: by 2002:a05:6214:f24:b0:56b:ee46:5c3c with SMTP id iw4-20020a0562140f2400b0056bee465c3cmr24322608qvb.49.1677187911429; Thu, 23 Feb 2023 13:31:51 -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 j187-20020a3787c4000000b00739e7e10b71sm3475394qkd.114.2023.02.23.13.31.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Feb 2023 13:31:51 -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 v7 1/3] dt-bindings: i2c: Add CP2112 HID USB to SMBus Bridge Date: Thu, 23 Feb 2023 15:31:45 -0600 Message-Id: <20230223213147.268-2-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230223213147.268-1-kaehndan@gmail.com> References: <20230223213147.268-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 | 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..a27509627804 --- /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 Thu Feb 23 21:31:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 13150774 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 97111C677F1 for ; Thu, 23 Feb 2023 21:31:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229672AbjBWVb4 (ORCPT ); Thu, 23 Feb 2023 16:31:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45556 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229379AbjBWVbz (ORCPT ); Thu, 23 Feb 2023 16:31:55 -0500 Received: from mail-qt1-x834.google.com (mail-qt1-x834.google.com [IPv6:2607:f8b0:4864:20::834]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 901F518162; Thu, 23 Feb 2023 13:31:53 -0800 (PST) Received: by mail-qt1-x834.google.com with SMTP id r5so2789583qtp.4; Thu, 23 Feb 2023 13:31:53 -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=FQLtlVN+sRXbnWehgURQpNSTbev0VNH05s1JB65dZEM=; b=nlYQpJeB87/hwgDR8TGGtvLUWPjhRo/giVBFHwmxd5B2HHavpgLGjf5WvFB8WPIj+I Mry/mg83wW8MCpQOZq0hlELBds47k7pLSnvPQFP0139EKGXjzxp60LVUdOSrX//phmvQ x+3a321jO2Wd5Bg5V37MmWTuCuRki+6TgguQo9f21nkbR+tD9eBbx+8MGNkUbHIu9dnn GZav8orvRoEr/OVoU/85gC85D3hP+vHM+3F+oPBD35/g0oQO5tRJljZk8YEtTSuujujg cCRRNL4tz0nKZvk2z50Wtc61jwk8G5gylxzkbmQkpgBtGUXWj0aBSmdCFz0RmEnp7eBP V8Dw== 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=FQLtlVN+sRXbnWehgURQpNSTbev0VNH05s1JB65dZEM=; b=wn/zkuBEH5+ExrLd485OBBtIRBEmrDnsu4u/sp1x3BOJ4LDbr3Duq6BsivFxJl0/Ae hK9qnrmKe8oD1QpfasmtXOijhuhlAhXbD7z8QBu07gUi92oTD6VXzK5BhrjOWGVRZE1Z NxaWhd/OKGOVIpZAToefQWdiNtLBXDuOXpDPqaQ2h9RBWsr23sjO9wLnTr11jI+JRE30 /GWjeUTnbjne8ybognfawOzcLwmF/oIAx4BLj1EWAvxcsMILKQpjv99zqVvA26ueKJ9+ XezfJBJeaphLEaUv9Da7nYEFlPXuCeGnt5KYmrLK1V10SyPAJSLnbSuSxr8lHM1zVqPD 1oXA== X-Gm-Message-State: AO0yUKW7flD9eidxpDKEa/OPat1+twD1ULT8ffMKwBF5ONgG3uw8ALgC gfk2Duc2iJSwAmwdLtp6j7o= X-Google-Smtp-Source: AK7set9ZRssBG1XuqX7U1jM0EHeVBUOIxoeF37JsQJba9FqRz6kxwPduO5RSR7Zb1+zA9pVbu/FLtA== X-Received: by 2002:ac8:578b:0:b0:3b6:895c:d18d with SMTP id v11-20020ac8578b000000b003b6895cd18dmr25615760qta.15.1677187912573; Thu, 23 Feb 2023 13:31:52 -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 j187-20020a3787c4000000b00739e7e10b71sm3475394qkd.114.2023.02.23.13.31.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Feb 2023 13:31:52 -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 v7 2/3] HID: usbhid: Share USB device firmware node with child HID device Date: Thu, 23 Feb 2023 15:31:46 -0600 Message-Id: <20230223213147.268-3-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230223213147.268-1-kaehndan@gmail.com> References: <20230223213147.268-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 257dd73e37bf..090260d99c84 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 @@ -1374,6 +1375,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 Thu Feb 23 21:31:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 13150775 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 1B941C678DB for ; Thu, 23 Feb 2023 21:31:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229379AbjBWVb5 (ORCPT ); Thu, 23 Feb 2023 16:31:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229553AbjBWVb4 (ORCPT ); Thu, 23 Feb 2023 16:31:56 -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 A519456505; Thu, 23 Feb 2023 13:31:54 -0800 (PST) Received: by mail-qt1-x831.google.com with SMTP id d7so12551700qtr.12; Thu, 23 Feb 2023 13:31:54 -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=q4WrHToYhjDx1AbMUlSeZkbECM8IxjfDW2y4H9aWRFA=; b=XtR2q1zAOu5fQT8ZO0UFLqP70l4Utk2RNQMU4Lw7PzbrLvcfAOigqZ9ft/r+RXMeLy e6WsuLGk/t4oRLHMOI/J340NZGnx+zjolHPgOPu7vSzQpVNLeSzgeAWugOKRvPxRSQoQ UcvBSQGIZpHR5/R8s5jMQnPDmS6iG48fXVEz4/vehSxs7h6CUlP3xQwrxOZHF7tWBV4L miXcXrnTFA0/nNe4uKtGbOckGsFwhA73hJRbAg3wh1YsnSGYUP2vCBfFq6uMbgRZzkMy Dp9AaR57Yjnj5JQtURRdaN9SGWyFd0wEc8JmW3MzbLlHt2Jm1BLTIH8RG22Dp4Os3ncm cSqw== 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=q4WrHToYhjDx1AbMUlSeZkbECM8IxjfDW2y4H9aWRFA=; b=gVvBWUDusvmMf0q6bea859PuEtM4NSlD8Su7oYog7WDjnn65t8fLms+7kVoPSJBHRu p6/nH+nQQhhbxLg6r+wLrcIWnoeUcFvxQqn5XW+YGOw4AmE/RZm6JuCqfwM9v0Ul3aOe mS8S4xe9XIKvCGHeHu5IYVTOB4S+xUgoafx1JexeJc6bc8FxtQ8Gx+rJ3QOOFw25+Rpk Yg+ZZhAnoJX2p3ZGzRfKXaxVTR3QSbP99xgCz8UkyOZBKD0Rm2XJ9lUbpufyr35nCDn9 KzY2K09JmdNNzRBkyzcUCSCpiYSsCe+1cWflXnExLHvVLXUnjjpe7/2Dkgngju4Ot38y pZcw== X-Gm-Message-State: AO0yUKWtLVP0abAM7kB63CATmt9VsQ09sYkSdSDFDajC0DBnYgLOnwtG FmwA006IlPcVO/IbAHRoJJg= X-Google-Smtp-Source: AK7set82VY6tdcA/sG+2AAgbSthszXP3VxHt6hvxah8XWTkAHmEDji6pYZ96revkGPBdzdsOET1g2Q== X-Received: by 2002:ac8:5e09:0:b0:3bf:ae12:eff with SMTP id h9-20020ac85e09000000b003bfae120effmr9757859qtx.68.1677187913713; Thu, 23 Feb 2023 13:31:53 -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 j187-20020a3787c4000000b00739e7e10b71sm3475394qkd.114.2023.02.23.13.31.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Feb 2023 13:31:53 -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 v7 3/3] HID: cp2112: Fwnode Support Date: Thu, 23 Feb 2023 15:31:47 -0600 Message-Id: <20230223213147.268-4-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230223213147.268-1-kaehndan@gmail.com> References: <20230223213147.268-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 | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c index 27cadadda7c9..491e3c83af12 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), @@ -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,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; @@ -1376,7 +1382,10 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) err_gpiochip_remove: gpiochip_remove(&dev->gc); err_free_i2c: + fwnode_handle_put(dev->gc.fwnode); i2c_del_adapter(&dev->adap); +err_free_i2c_of: + fwnode_handle_put(dev_fwnode(&dev->adap.dev)); err_power_normal: hid_hw_power(hdev, PM_HINT_NORMAL); err_hid_close: @@ -1391,6 +1400,8 @@ static void cp2112_remove(struct hid_device *hdev) struct cp2112_device *dev = hid_get_drvdata(hdev); int i; + fwnode_handle_put(dev->gc.fwnode); + fwnode_handle_put(dev_fwnode(&dev->adap.dev)); sysfs_remove_group(&hdev->dev.kobj, &cp2112_attr_group); i2c_del_adapter(&dev->adap);