This patchset allows USB-HID devices to have Firmware bindings through sharing the USB fwnode with the HID driver, and adds such a binding and driver implementation for the CP2112 USB to SMBus Bridge (which necessitated the USB-HID change). This change allows a CP2112 permanently attached in hardware to be described in DT and ACPI and interoperate with other drivers. Changes in v11: - Eliminate 'gpio' subnode for DT and ACPI for the CP2112 per comment from Rob H. - Edit hid-cp2112.c to match for ACPI index and fall back to matching by name (instead of the other way around) - Separate CP2112 I2C bus speed configuration into a separate patch Changes in v10: - Define an enumeration and mapping for CP2112 ACPI _ADRs and devicetree child node names, and use these in the scanning of child nodes - Address other miscellaneous Changes in v9: - Add _ADR-based ACPI binding of child nodes (I2C is _ADR Zero, GPIO is _ADR One) - Use a loop-based approach for assigning child nodes within probe(). As a consequence, hid-cp2112.c no longer maintains references to the child fwnodes during the lifetime of the device. (plese correct if this is actually needed for this use-case) Changes in v8: - Apply Review tags retroactively to patches previously reviewed Changes in v7: - Use dev_fwnode when calling fwnod_handle_put in i2c_adapter in hid-cp2112.c - Capitalize I2C and GPIO in commit message for patch 0003 Changes in v6: - Fix fwnode_handle reference leaks in hid-cp21112.c - Simplify hog node pattern in silabs,cp2112.yaml Changes in v5: - Use fwnode API instead of of_node api in hid-core.c and hid-cp2112.c - Include sda-gpios and scl-gpios in silabs,cp2112.yaml - Additional fixups to silabs,cp2112.yaml to address comments - Submit threaded interrupt bugfix separately from this patchset, as requested Changes in v4: - Moved silabs,cp2112.yaml to /Documentation/devicetree/bindings/i2c Changes in v3: - Additional fixups to silabs,cp2112.yaml to address comments Changes in v2: - Added more detail to silabs,cp2112.yaml dt-binding - Moved silabs,cp2112.yaml to /Documentation/devicetree/bindings/input - Added support for setting smbus clock-frequency from DT in hid-cp2112.c - Added freeing of of_nodes on error paths of _probe in hid-cp2112.c Danny Kaehn (3): dt-bindings: i2c: Add CP2112 HID USB to SMBus Bridge HID: usbhid: Share USB device firmware node with child HID device HID: cp2112: Fwnode Support .../bindings/i2c/silabs,cp2112.yaml | 113 ++++++++++++++++++ drivers/hid/hid-cp2112.c | 50 ++++++++ drivers/hid/usbhid/hid-core.c | 2 + 3 files changed, 165 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml -- 2.25.1 --- Danny Kaehn (4): dt-bindings: i2c: Add CP2112 HID USB to SMBus Bridge HID: usbhid: Share USB device firmware node with child HID device HID: cp2112: Fwnode Support HID: cp2112: Configure I2C Bus Speed from Firmware .../devicetree/bindings/i2c/silabs,cp2112.yaml | 105 +++++++++++++++++++++ drivers/hid/hid-cp2112.c | 43 +++++++++ drivers/hid/usbhid/hid-core.c | 2 + 3 files changed, 150 insertions(+) --- base-commit: 4f54308c970692e66a2a354ac2bde32f228cedeb change-id: 20240605-cp2112-dt-7cdc95448e8a Best regards, -- Danny Kaehn <danny.kaehn@xxxxxxxxxx>