[PATCH 1/4] dt-bindings: hid: Add CP2112 HID USB to SMBus Bridge

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <kaehndan@xxxxxxxxx>
---
 .../bindings/hid/silabs,cp2112.yaml           | 82 +++++++++++++++++++
 1 file changed, 82 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/hid/silabs,cp2112.yaml

diff --git a/Documentation/devicetree/bindings/hid/silabs,cp2112.yaml b/Documentation/devicetree/bindings/hid/silabs,cp2112.yaml
new file mode 100644
index 000000000000..49287927c63f
--- /dev/null
+++ b/Documentation/devicetree/bindings/hid/silabs,cp2112.yaml
@@ -0,0 +1,82 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hid/silabs,cp2112.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: CP2112 HID USB to SMBus/I2C Bridge
+
+maintainers:
+  - Danny Kaehn <kaehndan@xxxxxxxxx>
+
+description:
+  This is a USB HID device which includes an I2C controller and 8 GPIO pins.
+  While USB devices typically aren't described in DeviceTree, doing so with the
+  CP2112 allows use of its i2c and gpio controllers with other DT nodes when
+  the chip is expected to be found on a USB port.
+
+properties:
+  compatible:
+    const: usb10c4,ea90
+  reg:
+    maxItems: 1
+    description: The USB port number on the host controller
+  i2c:
+    $ref: /schemas/i2c/i2c-controller.yaml#
+  gpio:
+    $ref: /schemas/gpio/gpio.yaml#
+
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/input/input.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    usb1 {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      usb@1 {
+        compatible = "usb424,2514";
+        reg = <1>;
+
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        device@1 {	/* CP2112 I2C Bridge */
+          compatible = "usb10c4,ea90";
+          reg = <1>;
+
+          cp2112_i2c0: i2c {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            /* Child I2C Devices can be described as normal here */
+            temp@48 {
+              compatible = "national,lm75";
+              reg = <0x48>;
+            };
+          };
+
+          cp2112_gpio0: gpio {
+            gpio-controller;
+            interrupt-controller;
+            #gpio-cells = <2>;
+            gpio-line-names =
+              "TEST0",
+              "TEST1",
+              "TEST2",
+              "TEST3",
+              "TEST4",
+              "TEST5",
+              "TEST6",
+              "TEST7";
+          };
+        };
+      };
+    };
-- 
2.25.1




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux