bolin123 发表于 2021-6-15 14:12:15

扩展CAN芯片MCP2515的驱动移植问题

本帖最后由 bolin123 于 2021-6-15 14:15 编辑

Hi,
    我们用在飞凌A40i_C核心板扩展了一路CAN接口,是用SPI2总线连接MCP2515芯片。
我看到内核已经支持该芯片的驱动,但是需要修改内核设备树文件。
飞凌有个2410里面好像用的也是这个扩展芯片,能否提供一下MCP2515驱动设备树文件,或者移植方案。
下面是我们的硬件设计,用的是SPI2,中断管脚是G20_SPI2_CS1



BR.

zhichao 发表于 2021-6-15 15:41:57

以下为例子,设备树linux-3.10/arch/arm/boot/dts/sun8iw11p1-OKA40i_C.dts里把cs换成2515就行
&spi2 {
      status = "okay";

      mcp2515_2:mcp2515_2@0 {
               #address-cells=<1>;
               #size-cells=<1>;
               compatible = "microchip,mcp2515_2";
               pinctrl-names = "default";
               reg=<0>;
               spi-max-frequency = <5000000>;
               clocks = <&mcp251x_clock>;
               interrupt-parent = <&pio>;
               interrupts = <27 0>;
   };
/*
   spidev_cs0:spi2_cs0@0{
               #address-cells=<1>;
               #size-cells=<1>;
               compatible = "spidev";
               spi-max-frequency = <1000000>;
               reg               = <0>;
               mode=<0>;
   };
*/
};

zhangylong 发表于 2021-7-4 16:27:50

您好,MCP2515的设备树配置,有两点不明白,clocks = <&mcp251x_clock>;这个时钟在哪

zhichao 发表于 2021-7-5 08:34:48

您需要在驱动中寻找这个时钟

zhangylong 发表于 2021-7-10 17:05:35

想同时驱动两个mcp2515,设备树这个配置可行吗

        clocks {
                mcp251x_clock:mcp251x_clock{
                        compatible = "fixed-clock";
                        #clock-cells = <0>;
                        clock-frequency = <8000000>;
                };
        };       



&spi1 {
      status = "okay";

          mcp2515:mcp2515@0 {
               #address-cells=<1>;
               #size-cells=<1>;
               compatible = "microchip,mcp2515";
                               pinctrl-names = "default";
                               reg=<0>;
               spi-max-frequency = <1000000>;
               clocks = <&mcp251x_clock>;
                               interrupt-parent = <&pio>;
                               interrupts = <8 0>;
        };
};

&spi2 {
      status = "okay";

          mcp2515_1:mcp2515@1 {
               #address-cells=<1>;
               #size-cells=<1>;
               compatible = "microchip,mcp2515";
                               pinctrl-names = "default";
                               reg=<0>;
               spi-max-frequency = <1000000>;
               clocks = <&mcp251x_clock>;
                               interrupt-parent = <&pio>;
                               interrupts = <23 0>;
        };

};

时钟用同一个没问题吧,这样能生成can0和can1吗

tanglu 发表于 2021-7-14 08:46:33

2401上做的是两路can,配置如下:
&spi1 {
      status = "okay";

      mcp2515_1:mcp2515_1@0 {
               #address-cells=<1>;
               #size-cells=<1>;
               compatible = "microchip,mcp2515_1";
               pinctrl-names = "default";
               reg=<0>;
               spi-max-frequency = <2000000>;
               clocks = <&mcp251x_clock>;
               interrupt-parent = <&pio>;
               interrupts = <22 0>;
   };
};

&spi2 {
      status = "okay";

      mcp2515_2:mcp2515_2@0 {
               #address-cells=<1>;
               #size-cells=<1>;
               compatible = "microchip,mcp2515_2";
               pinctrl-names = "default";
               reg=<0>;
               spi-max-frequency = <2000000>;
               clocks = <&mcp251x_clock>;
               interrupt-parent = <&pio>;
               interrupts = <27 0>;
   };
/*
   spidev_cs0:spi2_cs0@0{
               #address-cells=<1>;
               #size-cells=<1>;
               compatible = "spidev";
               spi-max-frequency = <1000000>;
               reg               = <0>;
               mode=<0>;
   };

bolin123 发表于 2021-8-9 10:10:08

tanglu 发表于 2021-7-14 08:46
2401上做的是两路can,配置如下:
&spi1 {
      status = "okay";


interrupts = <27 0>;
这个接收中断指的是哪个管脚,PA27吗?
如果我把中断管脚换成SPI2_CS1 -- PB13应该是哪个数值?
页: [1]
查看完整版本: 扩展CAN芯片MCP2515的驱动移植问题