gpt4 book ai didi

linux - 将多个 SPI 端口(设备)注册到单个 SPI 平台驱动程序?

转载 作者:行者123 更新时间:2023-12-04 10:24:50 25 4
gpt4 key购买 nike

我正在开发一个 Linux spi 驱动程序来处理通过 SPI 端口的通信。
我的 SoC 提供了三个 spi 模块(我将其理解为端口),称为 ecspi1/ecspi2/ecspi3。
我需要使用 ecspi1 和 ecspi2 发送两种数据。

我已经实现了一个注册到 spi 驱动程序的驱动程序,并且已经通过将以下添加到 dts 和驱动程序成功地处理了 ecspi1:

[ dts ]

&ecspi1 {
status = "okay";

fpga1: lfe5u12f6bg256i@0 {
reg = <0>;
compatible = "lattice,lfe5u12f6bg256i";
spi-max-frequency = <10000000>;
};
};

[ 司机 ]

static const struct of_device_id fpga_spi_of_match[] = {
{ .compatible = "lattice,lfe5u12f6bg256i", },
{},
};

我尝试通过以下修改将 ecspi2 添加到驱动程序。
但是,驱动程序在启动时进行了两次探测,并在第二次探测期间失败。

[ dts ]
 &ecspi1 {
status = "okay";

fpga1: lfe5u12f6bg256i@0 {
reg = <0>;
compatible = "lattice,lfe5u12f6bg256i";
spi-max-frequency = <10000000>;
};
};

+&ecspi2 {
+ status = "okay";
+
+ fpga0: fpga_fw@0 {
+ reg = <0>;
+ compatible = "fpga_fw,lfe5u12f6bg256i";
+ spi-max-frequency = <10000000>;
+ };
+};

[ 司机 ]
 static const struct of_device_id fpga_spi_of_match[] = {
{ .compatible = "fpga_fw,lfe5u12f6bg256i", },
+ { .compatible = "lattice,lfe5u12f6bg256i", },
{},
};

有谁知道如何在单个驱动程序中处理多个 SPI 端口(设备)?

最佳答案

要使用相同的驱动程序处理两个相同的 SPI 设备,不需要修改驱动程序,只需要一个兼容的字符串:

数据传输系统:

&ecspi1 {
status = "okay";

fpga1: lfe5u12f6bg256i@0 {
reg = <0>;
compatible = "lattice,lfe5u12f6bg256i";
spi-max-frequency = <10000000>;
};
};

&ecspi2 {
status = "okay";

fpga2: lfe5u12f6bg256i@0 {
reg = <0>;
compatible = "lattice,lfe5u12f6bg256i";
spi-max-frequency = <10000000>;
};
};

司机:
static const struct of_device_id fpga_spi_of_match[] = {
{ .compatible = "lattice,lfe5u12f6bg256i", },
{},
};

驱动程序将被实例化两次,每个设备一次,每次都会收到不同的 struct spi_device .

关于linux - 将多个 SPI 端口(设备)注册到单个 SPI 平台驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60667767/

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