我试图在I2C总线上添加一个PCA9557 I / O扩展器到一个基于ARM的系统。 系统在另一个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>; }; };
使用以上所述,现有的I / O扩展器(具有16个GPIO)在linux中以/ sys / class / gpio / gpiochip128的forms出现 ,其GPIO编号为128-143。GPIO 0-127内置于主机处理器中。
imx6设备树编译 – 致命错误:无法parsinginput树
如何从Linux驱动程序访问和debuggingFDT / DTS设备树(seg-fault)
如何编写Linux .dts设备树文件?
无法编译Linux dtb
i2c0: i2c@e8003000 { status = "ok"; pca9557: pca9557@18 { compatible = "nxp,pca9557"; reg = <0x18>; gpio-controller; #gpio-cells = <2>; };
我还修改了内核configuration来构buildGPIO_PCA953X驱动程序,它应该支持PCA9557。
当我编译和引导上面添加到设备树时,我现在看到新的扩展器(PCA9557)映射为/ sys / class / gpio / gpiochip136 ,它工作(我可以设置其IO 0引脚使用GPIO128)。
但是,其他扩展器不再有GPIO引脚。 它仍然出现在/ sys / devices /下适当的总线上的一个设备,但目录列表不显示之前有的“驱动程序…”和“i2c-2”项目。
那么如何让两个扩展器出现在/ sys / class / gpio /不同范围的GPIO数字中,所以我可以同时使用这两个扩展器?
我想“128”作为原始扩展器的基本GPIO只是下一个可用的GPIO? 但为什么新的扩展器最终从GPIO 136开始?
我见过这个页面的几个引用: GPIO绑定文档 ,但它是相当通用的,并没有太大的帮助。
ARM Linux Atags与设备树
用于无PHY连接到DSA交换机的设备树
设备树和驱动程序探测
spi_driver.id_table和spi_driver.driver.of_match_table之间的区别
如何在内核3.19+上加载设备树覆盖
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。