【问题标题】:I2C & SPI driverI2C 和 SPI 驱动程序
【发布时间】:2017-05-04 01:08:53
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: linux-kernel driver i2c spi


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 当然,我可以按照你说的在用户空间做,但我想在内核空间做。所以我不知道有没有像 i2c_get_adapter 这样的东西,我可以通过 i2c_transfer 使用它来 R/W。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-23
        • 2016-05-28
        • 2016-03-21
        • 2019-09-08
        • 2018-07-24
        • 2013-02-07
        相关资源
        最近更新 更多