| From bf4b67c2f83437fd6f26ed0d96dd23144a746f83 Mon Sep 17 00:00:00 2001 |
| From: Danny Kaehn <danny.kaehn@plexus.com> |
| Date: Wed, 5 Jun 2024 18:12:44 -0500 |
| Subject: [PATCH] dt-bindings: i2c: Add CP2112 HID USB to SMBus Bridge |
| |
| 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 <danny.kaehn@plexus.com> |
| --- |
| .../bindings/i2c/silabs,cp2112.yaml | 105 ++++++++++++++++++ |
| 1 file changed, 105 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..0108f2e43c8c |
| --- /dev/null |
| +++ b/Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml |
| @@ -0,0 +1,105 @@ |
| +# 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 <danny.kaehn@plexus.com> |
| + |
| +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 |
| + |
| + 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 <dt-bindings/interrupt-controller/irq.h> |
| + #include <dt-bindings/gpio/gpio.h> |
| + |
| + usb { |
| + #address-cells = <1>; |
| + #size-cells = <0>; |
| + |
| + cp2112: device@1 { |
| + compatible = "usb10c4,ea90"; |
| + reg = <1>; |
| + |
| + i2c { |
| + #address-cells = <1>; |
| + #size-cells = <0>; |
| + sda-gpios = <&cp2112 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; |
| + scl-gpios = <&cp2112 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; |
| + |
| + temp@48 { |
| + compatible = "national,lm75"; |
| + reg = <0x48>; |
| + }; |
| + }; |
| + |
| + 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"; |
| + }; |
| + }; |
| + }; |
| -- |
| 2.52.0.313.g674ac2bdf7-goog |
| |