Skip to content

Commit 831a246

Browse files
committed
dt: overlay: added overlay for several variants of mcp25xxfd
This includes overlays for individual can devices but also support for the quadcan-fd hat Signed-off-by: Martin Sperl <[email protected]>
1 parent a3ba69f commit 831a246

File tree

7 files changed

+490
-0
lines changed

7 files changed

+490
-0
lines changed

arch/arm/boot/dts/overlays/Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
8181
mcp23s17.dtbo \
8282
mcp2515-can0.dtbo \
8383
mcp2515-can1.dtbo \
84+
mcp2517fd-spi0.0-can0.dtbo \
85+
mcp2517fd-spi0.1-can1.dtbo \
86+
mcp2517fd-spi1.0-can2.dtbo \
87+
mcp2517fd-spi1.1-can3.dtbo \
8488
mcp3008.dtbo \
8589
mcp3202.dtbo \
8690
mcp342x.dtbo \
@@ -110,6 +114,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
110114
pwm-2chan.dtbo \
111115
pwm-ir-tx.dtbo \
112116
qca7000.dtbo \
117+
quadcan-fd.dtbo \
113118
rotary-encoder.dtbo \
114119
rpi-backlight.dtbo \
115120
rpi-cirrus-wm5102.dtbo \

arch/arm/boot/dts/overlays/README

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,6 +1345,31 @@ Params: oscillator Clock frequency for the CAN controller (Hz)
13451345

13461346
interrupt GPIO for interrupt signal
13471347

1348+
Name: mcp2517-spi0.0-can0
1349+
Info: Configures the MCP2517/8 CAN controller on spi0.0
1350+
Load: dtoverlay=mcp2517-spi0.0-can0,<param>=<val>
1351+
Params: oscillator Clock frequency for the CAN controller (Hz)
1352+
spimaxfrequency Maximum SPI frequence (Hz)
1353+
interrupt GPIO for interrupt signal
1354+
clockdiv use a clock divider of 2 to get system clock
1355+
clockoutdiv clock divider used on clockout (0, 1, 2, 4, 10)
1356+
opendrain all pins are open-drain (except for RX-CAN)
1357+
xstandby use gpio0 as standby signal for transcciever
1358+
1359+
Name: mcp2517-spi0.1-can1
1360+
Info: Configures the MCP2517/8 CAN controller on spi0.1
1361+
Load: dtoverlay=mcp2517-spi0.1-can1,<param>=<val>
1362+
Params: <see mcp2517-spi0.0-can0>
1363+
1364+
Name: mcp2517-spi1.0-can2
1365+
Info: Configures the MCP2517/8 CAN controller on spi1.0
1366+
Load: dtoverlay=mcp2517-spi1.0-can2,<param>=<val>
1367+
Params: <see mcp2517-spi0.0-can0>
1368+
1369+
Name: mcp2517-spi1.1-can3
1370+
Info: Configures the MCP2517/8 CAN controller on spi1.1
1371+
Load: dtoverlay=mcp2517-spi1.1-can3,<param>=<val>
1372+
Params: <see mcp2517-spi0.0-can0>
13481373

13491374
Name: mcp3008
13501375
Info: Configures MCP3008 A/D converters
@@ -1701,6 +1726,11 @@ Params: int_pin GPIO pin for interrupt signal (default 23)
17011726

17021727
speed SPI bus speed (default 12 MHz)
17031728

1729+
Name: quadcan-fd
1730+
Info: Configures 4 mcp2517fd for the quadcan-fd hat
1731+
Load: dtoverlay=quadcan-fd
1732+
Params: <None>
1733+
17041734

17051735
Name: rotary-encoder
17061736
Info: Overlay for GPIO connected rotary encoder.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*
2+
* Device tree overlay for mcp2517fd/can0 on spi0.0
3+
*/
4+
5+
/dts-v1/;
6+
/plugin/;
7+
8+
/ {
9+
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2837", "brcm,bcm2708", "brcm,bcm2709", "brcm,bcm2710";
10+
/* disable spi-dev for spi0.0 */
11+
fragment@0 {
12+
target = <&spi0>;
13+
__overlay__ {
14+
status = "okay";
15+
};
16+
};
17+
18+
fragment@1 {
19+
target = <&spidev0>;
20+
__overlay__ {
21+
status = "disabled";
22+
};
23+
};
24+
25+
/* the interrupt pin of the can-controller */
26+
fragment@2 {
27+
target = <&gpio>;
28+
__overlay__ {
29+
can0_pins: can0_pins {
30+
brcm,pins = <25>;
31+
brcm,function = <0>; /* input */
32+
};
33+
};
34+
};
35+
36+
/* the clock/oscillator of the can-controller */
37+
fragment@3 {
38+
target-path = "/clocks";
39+
__overlay__ {
40+
/* external oscillator of mcp2517fd on SPI0.0 */
41+
can0_osc: can0_osc {
42+
compatible = "fixed-clock";
43+
#clock-cells = <0>;
44+
clock-frequency = <40000000>;
45+
};
46+
};
47+
};
48+
49+
/* the spi config of the can-controller itself binding everything together */
50+
fragment@4 {
51+
target = <&spi0>;
52+
__overlay__ {
53+
/* needed to avoid dtc warning */
54+
#address-cells = <1>;
55+
#size-cells = <0>;
56+
can0: mcp2517fd@0 {
57+
reg = <0>;
58+
compatible = "microchip,mcp2517fd";
59+
pinctrl-names = "default";
60+
pinctrl-0 = <&can0_pins>;
61+
spi-max-frequency = <20000000>;
62+
interrupt-parent = <&gpio>;
63+
interrupts = <25 0x8>;
64+
clocks = <&can0_osc>;
65+
microchip,clock-out-div = <10>;
66+
};
67+
};
68+
};
69+
70+
__overrides__ {
71+
oscillator = <&can0_osc>,"clock-frequency:0";
72+
spimaxfrequency = <&can0>,"spi-max-frequency:0";
73+
interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0";
74+
clockdiv = <&can0>,"microchip,clock-div?";
75+
clockoutdiv = <&can0>,"microchip,clock-out-div:0";
76+
opendrain = <&can0>, "microchip,gpio-open-drain?";
77+
xstandby = <&can0>, "microchip,gpio0-xstandby?";
78+
};
79+
};
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*
2+
* Device tree overlay for mcp2517fd/can1 on spi0.1
3+
*/
4+
5+
/dts-v1/;
6+
/plugin/;
7+
8+
/ {
9+
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2837", "brcm,bcm2708", "brcm,bcm2709", "brcm,bcm2710";
10+
/* disable spi-dev for spi0.1 */
11+
fragment@0 {
12+
target = <&spi0>;
13+
__overlay__ {
14+
status = "okay";
15+
};
16+
};
17+
18+
fragment@1 {
19+
target = <&spidev1>;
20+
__overlay__ {
21+
status = "disabled";
22+
};
23+
};
24+
25+
/* the interrupt pin of the can-controller */
26+
fragment@2 {
27+
target = <&gpio>;
28+
__overlay__ {
29+
can1_pins: can1_pins {
30+
brcm,pins = <26>;
31+
brcm,function = <0>; /* input */
32+
};
33+
};
34+
};
35+
36+
/* the clock/oscillator of the can-controller */
37+
fragment@3 {
38+
target-path = "/clocks";
39+
__overlay__ {
40+
/* external oscillator of mcp2517fd on SPI0.0 */
41+
can1_osc: can1_osc {
42+
compatible = "fixed-clock";
43+
#clock-cells = <0>;
44+
clock-frequency = <40000000>;
45+
};
46+
};
47+
};
48+
49+
/* the spi config of the can-controller itself binding everything together */
50+
fragment@4 {
51+
target = <&spi0>;
52+
__overlay__ {
53+
/* needed to avoid dtc warning */
54+
#address-cells = <1>;
55+
#size-cells = <0>;
56+
can1: mcp2517fd@1 {
57+
reg = <1>;
58+
compatible = "microchip,mcp2517fd";
59+
pinctrl-names = "default";
60+
pinctrl-0 = <&can1_pins>;
61+
spi-max-frequency = <20000000>;
62+
interrupt-parent = <&gpio>;
63+
interrupts = <26 0x8>;
64+
clocks = <&can1_osc>;
65+
microchip,clock-out-div = <10>;
66+
};
67+
};
68+
};
69+
70+
__overrides__ {
71+
oscillator = <&can1_osc>,"clock-frequency:0";
72+
spimaxfrequency = <&can1>,"spi-max-frequency:0";
73+
interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0";
74+
clockdiv = <&can1>,"microchip,clock-div?";
75+
clockoutdiv = <&can1>,"microchip,clock-out-div:0";
76+
opendrain = <&can1>, "microchip,gpio-open-drain?";
77+
xstandby = <&can1>, "microchip,gpio0-xstandby?";
78+
};
79+
};
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*
2+
* Device tree overlay for mcp2517fd/can2 on spi0.0
3+
*/
4+
5+
/dts-v1/;
6+
/plugin/;
7+
8+
/ {
9+
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2837", "brcm,bcm2708", "brcm,bcm2709", "brcm,bcm2710";
10+
/* disable spi-dev for spi0.0 */
11+
fragment@0 {
12+
target = <&spi0>;
13+
__overlay__ {
14+
status = "okay";
15+
};
16+
};
17+
18+
fragment@1 {
19+
target = <&spidev0>;
20+
__overlay__ {
21+
status = "disabled";
22+
};
23+
};
24+
25+
/* the interrupt pin of the can-controller */
26+
fragment@2 {
27+
target = <&gpio>;
28+
__overlay__ {
29+
can2_pins: can2_pins {
30+
brcm,pins = <25>;
31+
brcm,function = <0>; /* input */
32+
};
33+
};
34+
};
35+
36+
/* the clock/oscillator of the can-controller */
37+
fragment@3 {
38+
target-path = "/clocks";
39+
__overlay__ {
40+
/* external oscillator of mcp2517fd on SPI0.0 */
41+
can2_osc: can2_osc {
42+
compatible = "fixed-clock";
43+
#clock-cells = <0>;
44+
clock-frequency = <40000000>;
45+
};
46+
};
47+
};
48+
49+
/* the spi config of the can-controller itself binding everything together */
50+
fragment@4 {
51+
target = <&spi0>;
52+
__overlay__ {
53+
/* needed to avoid dtc warning */
54+
#address-cells = <1>;
55+
#size-cells = <0>;
56+
can2: mcp2517fd@0 {
57+
reg = <0>;
58+
compatible = "microchip,mcp2517fd";
59+
pinctrl-names = "default";
60+
pinctrl-0 = <&can2_pins>;
61+
spi-max-frequency = <20000000>;
62+
interrupt-parent = <&gpio>;
63+
interrupts = <25 0x8>;
64+
clocks = <&can2_osc>;
65+
microchip,clock-out-div = <10>;
66+
};
67+
};
68+
};
69+
70+
__overrides__ {
71+
oscillator = <&can2_osc>,"clock-frequency:0";
72+
spimaxfrequency = <&can2>,"spi-max-frequency:0";
73+
interrupt = <&can2_pins>,"brcm,pins:0",<&can2>,"interrupts:0";
74+
clockdiv = <&can2>,"microchip,clock-div?";
75+
clockoutdiv = <&can2>,"microchip,clock-out-div:0";
76+
opendrain = <&can2>, "microchip,gpio-open-drain?";
77+
xstandby = <&can2>, "microchip,gpio0-xstandby?";
78+
};
79+
};
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*
2+
* Device tree overlay for mcp2517fd/can3 on spi0.0
3+
*/
4+
5+
/dts-v1/;
6+
/plugin/;
7+
8+
/ {
9+
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2837", "brcm,bcm2708", "brcm,bcm2709", "brcm,bcm2710";
10+
/* disable spi-dev for spi0.0 */
11+
fragment@0 {
12+
target = <&spi0>;
13+
__overlay__ {
14+
status = "okay";
15+
};
16+
};
17+
18+
fragment@1 {
19+
target = <&spidev0>;
20+
__overlay__ {
21+
status = "disabled";
22+
};
23+
};
24+
25+
/* the interrupt pin of the can-controller */
26+
fragment@2 {
27+
target = <&gpio>;
28+
__overlay__ {
29+
can3_pins: can3_pins {
30+
brcm,pins = <25>;
31+
brcm,function = <0>; /* input */
32+
};
33+
};
34+
};
35+
36+
/* the clock/oscillator of the can-controller */
37+
fragment@3 {
38+
target-path = "/clocks";
39+
__overlay__ {
40+
/* external oscillator of mcp2517fd on SPI0.0 */
41+
can3_osc: can3_osc {
42+
compatible = "fixed-clock";
43+
#clock-cells = <0>;
44+
clock-frequency = <40000000>;
45+
};
46+
};
47+
};
48+
49+
/* the spi config of the can-controller itself binding everything together */
50+
fragment@4 {
51+
target = <&spi0>;
52+
__overlay__ {
53+
/* needed to avoid dtc warning */
54+
#address-cells = <1>;
55+
#size-cells = <0>;
56+
can3: mcp2517fd@0 {
57+
reg = <0>;
58+
compatible = "microchip,mcp2517fd";
59+
pinctrl-names = "default";
60+
pinctrl-0 = <&can3_pins>;
61+
spi-max-frequency = <20000000>;
62+
interrupt-parent = <&gpio>;
63+
interrupts = <25 0x8>;
64+
clocks = <&can3_osc>;
65+
microchip,clock-out-div = <10>;
66+
};
67+
};
68+
};
69+
70+
__overrides__ {
71+
oscillator = <&can3_osc>,"clock-frequency:0";
72+
spimaxfrequency = <&can3>,"spi-max-frequency:0";
73+
interrupt = <&can3_pins>,"brcm,pins:0",<&can3>,"interrupts:0";
74+
clockdiv = <&can3>,"microchip,clock-div?";
75+
clockoutdiv = <&can3>,"microchip,clock-out-div:0";
76+
opendrain = <&can3>, "microchip,gpio-open-drain?";
77+
xstandby = <&can3>, "microchip,gpio0-xstandby?";
78+
};
79+
};

0 commit comments

Comments
 (0)