【发布时间】:2017-05-04 01:08:53
【问题描述】:
最近一直在写一个相机驱动,使用I2C接口读/写寄存器,并使用spi接口向其写入固件数据。所以我的问题是如何在I2C驱动中获取spi_device指针?
谢谢。
【问题讨论】:
标签: linux-kernel driver i2c spi
最近一直在写一个相机驱动,使用I2C接口读/写寄存器,并使用spi接口向其写入固件数据。所以我的问题是如何在I2C驱动中获取spi_device指针?
谢谢。
【问题讨论】:
标签: linux-kernel driver i2c spi
您可以从一个 I2C 驱动程序注册两个独立的驱动程序,即 SPI 和 I2C。
您必须定义包含spi_driver 和spi_device 的设备结构
然后从 I2C probe() 注册您的 spi_driver 并从 SPI probe() 函数初始化 spi_device。
【讨论】:
遇到了和你一样的问题。经过一段时间的内核挖掘。我发现了这个:https://elixir.bootlin.com/linux/v4.9.80/source/drivers/media/i2c/s5c73m3/s5c73m3-spi.c#L123。您需要在驱动程序的私有数据中定义一个 spi_driver,然后使用它来注册一个 SPI 驱动程序。在 SPI 的探测函数中,您将能够从 SPI 驱动程序的指针中检索私有数据。
注意: 我不知道相同的技巧是否适用于其他版本的 Linux 内核。不过我觉得值得一试。
【讨论】:
为什么你需要 I2C 驱动程序中的 SPI 句柄。目前我假设你的意思是应用程序,即你正在写/读寄存器和写固件的地方。你需要使用返回各自的函数打开两个 I2C 和 SPI 实例处理。
【讨论】: