I2C& SPI驱动程序

时间:2016-12-19 01:58:51

标签: linux-kernel driver i2c spi

最近,我一直在编写一个使用I2C接口读/写寄存器的摄像头驱动程序,并使用spi接口向其写入固件数据。所以我的问题是如何在I2C驱动程序中获取spi_device指针?

感谢。

3 个答案:

答案 0 :(得分:1)

和你有同样的问题。经过一段时间挖掘内核。我发现了这个:https://elixir.bootlin.com/linux/v4.9.80/source/drivers/media/i2c/s5c73m3/s5c73m3-spi.c#L123。您需要在驱动程序的私有数据中定义spi_driver,然后使用它来注册SPI驱动程序。在SPI的probe函数中,您将能够从SPI驱动程序的指针中检索私有数据。

注意: 我不知道同样的技巧是否适用于其他版本的Linux内核。但我认为值得一试。

答案 1 :(得分:0)

为什么你需要在I2C驱动程序中使用SPI句柄。目前我假设你的意思是应用程序,即你正在写/读寄存器和写固件的地方。我需要使用返回各自的函数打开I2C和SPI实例。处理

答案 2 :(得分:0)

您可以从一个I2C驱动程序注册两个单独的驱动程序SPI和I2C。

您必须定义包含spi_driverspi_device的设备结构

然后从I2C probe()注册spi_driver并从SPI spi_device函数初始化probe()