在USB设备枚举探测hid-cp2112驱动程序时,它甚至不尝试在设备树中查找自身。 我已经将以下修补程序创建到 hid-cp2112.c,它将找到的cp2112设备链接到devie树中的/i2c@cp2112 节点。 ( 当然,只有在USB上有一个cp2112芯片的情况下才适用。)diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c
index 2bd7f97..fa88590 100644
--- a/drivers/hid/hid-cp2112.c
+++ b/drivers/hid/hid-cp2112.c
@@ -31,6 +31,8 @@
#include
#include
#include
+#include
+#include
#include"hid-ids.h"
enum {
@@ -1014,6 +1016,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id)
dev->adap.algo = &smbus_algorithm;
dev->adap.algo_data = dev;
dev->adap.dev.parent = &hdev->dev;
+ dev->adap.dev.of_node = of_find_node_by_path("/i2c@cp2112");
snprintf(dev->adap.name, sizeof(dev->adap.name),
"CP2112 SMBus Bridge on hiddev%d", hdev->minor);
init_waitqueue_head(&dev->wait);
@@ -1029,6 +1032,8 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id)
hid_dbg(hdev,"adapter registeredn");
+ of_i2c_register_devices(&dev->adap);
+
dev->gc.label ="cp2112_gpio";
dev->gc.direction_input = cp2112_gpio_direction_input;
dev->gc.direction_output = cp2112_gpio_direction_output;
触摸控制器的. dts 文件中的条目如下所示:i2c@cp2112 {
#address-cells = <1>;
#size-cells = <0>;
st1332: touchscreen@55 {
compatible ="sitronix,st1232";
reg = <0x55>;
interrupt-parent = ;
interrupts = <189 IRQ_TYPE_EDGE_FALLING>;
};
};