#linux-device-driver #gpio #i2c #microchip #device-tree
#linux-драйвер устройства #gpio #i2c #микросхема #дерево устройств
Вопрос:
У меня есть 2 расширителя портов, подключенных к I2C моего чипа. Я могу настроить один расширитель портов из NXP и может переключать gpio. Но второй — от microchip, и он не отображает gpio, перечисленные как в предыдущем случае. Пожалуйста, дайте мне знать, как правильно это настроить.
amp;i2c1 {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <amp;pinctrl_i2c1>;
scl-gpios = <amp;lsio_gpio0 xx GPIO_ACTIVE_HIGH>;
sda-gpios = <amp;lsio_gpio0 xx GPIO_ACTIVE_HIGH>;
status = "okay";
mcp23017: gpio@10 {
compatible = "microchip,mcp23017";
reg = <0x10>;
gpio-controller;
#gpio-cells = <2>;
};
pca6416: gpio@11 {
compatible = "ti,tca6416";
reg = <0x11>;
gpio-controller;
#gpio-cells = <2>;
};
Комментарии:
1. Микрочип один — это контактный элемент управления, а не старый простой чип GPIO, вы должны использовать привязки pinctrl.
2. Согласно спецификации MCP23017, адрес I2C, установленный его выводами A2, A1 и A0, будет находиться в диапазоне от 0x20 до 0x27, но в вашем узле дерева устройств для него установлено значение 0x10.