微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Linux设备树中指定IO扩展器的GPIO编号

我试图在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内置于主机处理器中。

我在I2C总线0上为新的扩展器添加了以下内容

imx6设备树编译 – 致命错误:无法parsinginput树

如何在设备树(.dts)文件中为uart指定设备名称

如何从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] 举报,一经查实,本站将立刻删除。

相关推荐