Для правильной установки VL6180X за мультиплексором в Linux вы должны описать их в дереве устройств. Посмотрите документацию I2 C MUX .
Таким образом, вы должны описать всю установку (I2 C mux + 2x VL6180X) следующим образом:
&i2c1 { // the SoC bus controller
mux@70 {
compatible = "nxp,pca9548";
reg = <0x70>;
#address-cells = <1>;
#size-cells = <0>;
i2c@3 {
#address-cells = <1>;
#size-cells = <0>;
reg = <3>;
gpio1: gpio@29 {
compatible = "st,vl6180";
reg = <0x29>;
};
};
i2c@4 {
#address-cells = <1>;
#size-cells = <0>;
reg = <4>;
gpio1: gpio@29 {
compatible = "st,vl6180";
reg = <0x29>;
};
};
};
};
Это приведет к созданию двух новых шин (перечислите их с помощью i2cdetect -l
) и один датчик vl6180 появится под каждым из них и будет описан как обычные устройства IIO.
Приведенный выше код представляет собой простое сочетание устройств документация по связыванию дерева для i2 c -mux и для датчика VL6180X , доступная в исходных кодах ядра.