gpt4 book ai didi

linux-kernel - 如何使用单个 SPI 平台驱动程序处理 Linux 内核中的两个 SPI 设备?

转载 作者:行者123 更新时间:2023-12-01 16:40:41 27 4
gpt4 key购买 nike

我为单个 SPI 设备开发了一个 SPI 平台驱动程序。我们正在使用哪个 SPI 设备,可以在设备树中给出配置。当名称与给定的名称匹配时,将调用 SPI 平台驱动程序的probe()函数驱动程序和 DT 中的相同。

在 SPI 平台驱动 module_init() 方法中,我们通过函数调用 spi_register_driver() 注册 SPI 设备结构体 (struct spi_driver spidev_spi_driver)。

请引用以下链接中的 (static struct spi_driver spidev_spi_driver) 示例。链接:http://lxr.free-electrons.com/source/drivers/spi/spidev.c#L664

这里Probe()是本次调用中注册的一个重要方法。当调用probe函数时,内核在probe()函数中传递SPI设备的指针(例如struct spi_device *spi),该指针进一步用于SPI设备的读写操作。对于单个 SPI 设备,上述所有过程仅发生一次。

现在我有疑问,如果我想使用我的微 Controller 中存在的多个 SPI 设备,例如那么imx6我会如何处理这种情况呢?在这种情况下我将如何接收 SPI 设备指针?探测函数是否会被调用两次(因为这里只有我从内核获取SPI设备指针)?我是否需要创建诸如 spidev_dt_ids 中完成的条目: http://lxr.free-electrons.com/source/drivers/spi/spidev.c#L657

最佳答案

我没有专门研究过 spi 设备,但我想我可以给你一些基本的想法。逻辑是只要 device->name 和 device_driver->name 之间存在匹配,就会调用probe。因此,2 个设备可以使用相同的驱动程序,但同一个设备不应该有 2 个驱动程序。

要将 2 个设备配置到同一驱动程序,这 2 个设备将以相同的名称注册,因此将调用相同的探测器。但随后在探测中你可以区分。您将可以访问spi的设备结构体,您可以使用它来设置一个参数,以区分和设置相关参数。

另一种方法是使用 i2c 使用的核心框架,其中客户端驱动程序在需要时创建和使用通用功能函数。

我希望这会有所帮助。

关于linux-kernel - 如何使用单个 SPI 平台驱动程序处理 Linux 内核中的两个 SPI 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26052473/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com