工具/软件:Linux
我正在将 PCF857r GPIO 扩展器驱动程序集成到 Linux 内核(版本~3.2 Linux)中。 由于这是在较旧版本的 Linux 内核上构建的、因此我使用板级配置文件来设置此驱动程序。 下面是板级配置文件(./mach-exynos/mach-u1.c)中的一段代码、其中我设置了此扩展器:
/* PCF8574 GPIO 扩展器平台数据*/
静态结构 pcf857x_platform_data pcf857x_data[]={
{
.GPIO_base = 300、
}、};
/* I2C1 */
静态结构 i2c_board_info i2c_devs1[]__initdata ={
{
I2C_Board_info ("pcf857x"、0x20)、
.type ="PCF8574"、
.platform_data =&pcf857x_data[0]、
}、};
我在相应的 I2C 总线上的正确地址(I2C1为0x20)看到 PCF8574寄存器。 但是、我看不到正在注册任何 GPIO。 目前、我还没有将扩展器连接到 I2C1总线、但我认为我应该仍然能够看到已注册的 GPIO。 具体而言、我应该看到已注册的 GPIO 300-307 (因为它是一个8位扩展器)。 但我不这么做。
我通过"cat /sys/kernel/debug/gpio "从硬件(Exynos 4210 SoC)看到的 GPIO 范围为0-287。 由于我不想与任何物理 GPIO 发生冲突、因此我选择的扩展器 GPIO 超出此范围(300+)。 我认为、问题的一部分是超出此范围的 GPIO 不存在。 我是否需要以某种方式创建“虚拟”GPIO 以便 PCF8574能够识别和采用? 我不确定如何继续。 谢谢你。