工具/软件:
如何在 DTS 中将 I2C 从中断配置为轮询模式?

驱动程序中有轮询模式、但未找到在 DTS 中进行配置的方法。

This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
如何在 DTS 中将 I2C 从中断配置为轮询模式?

驱动程序中有轮询模式、但未找到在 DTS 中进行配置的方法。

您好、Tony、
感谢您的 ping。
我知道可以肯定地在中断或轮询模式下使用 CAN 接口(实际上、在 AM62x Linux 上只能通过轮询模式与 MCU 域 CAN 交互)。 对于该特定驱动程序和一组器件树节点、只需从器件树文件中删除中断和中断名称条目:
Documentation/devicetree/bindings/net/can/Bosch、m_can.yaml
// Example with interrupts
#include <dt-bindings/clock/imx6sx-clock.h>
can@20e8000 {
compatible = "bosch,m_can";
reg = <0x020e8000 0x4000>, <0x02298000 0x4000>;
reg-names = "m_can", "message_ram";
interrupts = <0 114 0x04>, <0 114 0x04>;
interrupt-names = "int0", "int1";
clocks = <&clks IMX6SX_CLK_CANFD>,
<&clks IMX6SX_CLK_CANFD>;
clock-names = "hclk", "cclk";
bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>;
can-transceiver {
max-bitrate = <5000000>;
};
};
- |
// Example with timer polling
#include <dt-bindings/clock/imx6sx-clock.h>
can@20e8000 {
compatible = "bosch,m_can";
reg = <0x020e8000 0x4000>, <0x02298000 0x4000>;
reg-names = "m_can", "message_ram";
clocks = <&clks IMX6SX_CLK_CANFD>,
<&clks IMX6SX_CLK_CANFD>;
clock-names = "hclk", "cclk";
bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>;
can-transceiver {
max-bitrate = <5000000>;
};
};
另一方面、I2C 绑定文档声称中断是器件树节点的必需属性:
Documentation/devicetree/bindings/i2c/ti、OMAP4-i2c.YAML
i2c-OMAP-Lc 驱动程序本身肯定具有执行轮询的调用、正如您所确定的那样。
i2c-OMAP 驱动程序是一个低级驱动程序、用于与 I2C 外设交互、客户将需要使用更高级别的驱动程序来实际与其 I2C 外设交互。 我期望更高级别的驱动程序中的调用将决定是使用轮询还是中断-即使为 I2C 启用了中断、如果更高级别的驱动程序进行转换为 MASTER_XFER_ATOMIC 的调用、那么我希望使用轮询方法。
此致、
Nick