扩展CAN芯片MCP2515的驱动移植问题
本帖最后由 bolin123 于 2021-6-15 14:15 编辑Hi,
我们用在飞凌A40i_C核心板扩展了一路CAN接口,是用SPI2总线连接MCP2515芯片。
我看到内核已经支持该芯片的驱动,但是需要修改内核设备树文件。
飞凌有个2410里面好像用的也是这个扩展芯片,能否提供一下MCP2515驱动设备树文件,或者移植方案。
下面是我们的硬件设计,用的是SPI2,中断管脚是G20_SPI2_CS1
BR.
以下为例子,设备树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>;
};
*/
};
您好,MCP2515的设备树配置,有两点不明白,clocks = <&mcp251x_clock>;这个时钟在哪 您需要在驱动中寻找这个时钟 想同时驱动两个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吗 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>;
};
tanglu 发表于 2021-7-14 08:46
2401上做的是两路can,配置如下:
&spi1 {
status = "okay";
interrupts = <27 0>;
这个接收中断指的是哪个管脚,PA27吗?
如果我把中断管脚换成SPI2_CS1 -- PB13应该是哪个数值?
页:
[1]