Jer*_*emy 5 linux i2c gpio device-tree
我正在尝试将PCA9557 I / O扩展器添加到I2C总线上基于手臂的系统上。系统已经在不同的I2C总线上具有另一个I / O扩展器。我试图弄清楚如何指定新扩展器上的针脚获得的GPIO编号,以及如何使它们都能正常工作。
这是I2C总线2下现有扩展器的设备树部分:
i2c2: i2c@e8007000 {
status = "ok";
pca9539: pca9539@74 {
compatible = "nxp,pca9539";
reg = <0x74>;
interrupt-parent = <&gpio>;
interrupts = <9 0x0>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
};
Run Code Online (Sandbox Code Playgroud)
使用上述方法,现有的I / O扩展器(带有16个GPIO)在Linux中显示为/ sys / class / gpio / gpiochip128,公开了GPIO编号128-143。GPIO 0-127内置于主机处理器中。
我为I2C总线0上的新扩展器添加了以下内容:
i2c0: i2c@e8003000 {
status = "ok";
pca9557: pca9557@18 {
compatible = "nxp,pca9557";
reg = <0x18>;
gpio-controller;
#gpio-cells = <2>;
};
Run Code Online (Sandbox Code Playgroud)
我还修改了内核配置,以构建GPIO_PCA953X驱动程序,该驱动程序应支持PCA9557。
当我将以上内容添加到设备树中进行编译和引导时,我现在看到映射为/ sys / class / gpio / gpiochip136的NEW扩展器(PCA9557),并且可以工作(我可以使用GPIO128设置其IO 0引脚)。
但是,另一个扩展器不再具有任何GPIO引脚。它仍然显示为/ sys / devices / ...下相应总线上的设备,但目录列表未显示以前存在的“ driver ...”和“ i2c-2”项。
那么如何使两个扩展器都出现在/ sys / class / gpio /中,具有不同范围的GPIO编号,因此我可以同时使用这两个扩展器?
我想“ 128”作为原始扩展器的基本GPIO只是下一个可用的GPIO?但是,为什么新的扩展器最终从GPIO 136开始呢?
我已经看到了对该页面的一些参考:GPIO绑定文档,但是它相当通用,并没有太大帮助。
| 归档时间: |
|
| 查看次数: |
3946 次 |
| 最近记录: |