linux调用USB转i2c,在 USB I2C桥上,Linux设备树( DTS ): I2C设备

在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>;

};

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值