У меня есть устройство i2c (сенсорный контроллер). Обычно я хотел бы добавить его в .dts файл, как это, когда он подключен к ведущему SoC i2c (чип Tegra в моем случае):Дерево устройств Linux (DTS): устройство i2c на мосте USB-I2C
[email protected] {
st1332: [email protected] {
compatible = "sitronix,st1232";
reg = <0x55>;
interrupt-parent = <&gpio>;
interrupts = <189 IRQ_TYPE_EDGE_FALLING>;
};
};
С i2c [email protected]
контроллера определяется в файле .dtsi СОВ в :
i2c1: [email protected] {
#address-cells = <1>;
#size-cells = <0>;
compatible = "nvidia,tegra124-i2c";
reg = <0x0 0x7000c000 0x0 0x100>;
interrupts = <0 38 0x04>;
scl-gpio = <&gpio 20 0>; /* gpio PC4 */
sda-gpio = <&gpio 21 0>; /* gpio PC5 */
nvidia,memory-clients = <14>;
status = "okay";
clock-frequency = <400000>;
};
Однако, я не хочу, чтобы подключить сенсорный контроллер к одному из i2c мастеров из SoC. Вместо этого я подключил его к мосту cp2112 USB to i2c.
Драйвер cp2112 отлично работает: я могу использовать команды, такие как i2cget
, для доступа к нему из командной строки. Но как добавить его в файл .dts, чтобы драйвер сенсорного контроллера говорил с ним?
Поскольку устройства USB перечислены автоматически, у меня нет узла в моем .dts-файле, который я могу использовать в качестве родителя для узла сенсорного контроллера. Я бы предположил, что мне нужно создать узел-заполнитель в файле .dts под контроллером usb ([email protected]0000
в моем случае), который затем связан с указанным USB-устройством ядром и перемещает сенсорный контроллер в этот узел, но Я не знаю, как это сделать. Как выглядит такой узел для устройства USB? Или есть совершенно другое решение проблемы?
Я запускаю Linux 3.10.40 с помощью backpeded версии hid-cp2112 из Linux v4.1.0-rc5.