Skip to content

Commit

Permalink
dt: overlay: added overlay for several variants of mcp25xxfd
Browse files Browse the repository at this point in the history
This includes overlays for individual can devices
but also support for the quadcan-fd hat

Signed-off-by: Martin Sperl <[email protected]>
  • Loading branch information
msperl committed May 11, 2019
1 parent a3ba69f commit 831a246
Show file tree
Hide file tree
Showing 7 changed files with 490 additions and 0 deletions.
5 changes: 5 additions & 0 deletions arch/arm/boot/dts/overlays/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
mcp23s17.dtbo \
mcp2515-can0.dtbo \
mcp2515-can1.dtbo \
mcp2517fd-spi0.0-can0.dtbo \
mcp2517fd-spi0.1-can1.dtbo \
mcp2517fd-spi1.0-can2.dtbo \
mcp2517fd-spi1.1-can3.dtbo \
mcp3008.dtbo \
mcp3202.dtbo \
mcp342x.dtbo \
Expand Down Expand Up @@ -110,6 +114,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
pwm-2chan.dtbo \
pwm-ir-tx.dtbo \
qca7000.dtbo \
quadcan-fd.dtbo \
rotary-encoder.dtbo \
rpi-backlight.dtbo \
rpi-cirrus-wm5102.dtbo \
Expand Down
30 changes: 30 additions & 0 deletions arch/arm/boot/dts/overlays/README
Original file line number Diff line number Diff line change
Expand Up @@ -1345,6 +1345,31 @@ Params: oscillator Clock frequency for the CAN controller (Hz)

interrupt GPIO for interrupt signal

Name: mcp2517-spi0.0-can0
Info: Configures the MCP2517/8 CAN controller on spi0.0
Load: dtoverlay=mcp2517-spi0.0-can0,<param>=<val>
Params: oscillator Clock frequency for the CAN controller (Hz)
spimaxfrequency Maximum SPI frequence (Hz)
interrupt GPIO for interrupt signal
clockdiv use a clock divider of 2 to get system clock
clockoutdiv clock divider used on clockout (0, 1, 2, 4, 10)
opendrain all pins are open-drain (except for RX-CAN)
xstandby use gpio0 as standby signal for transcciever

Name: mcp2517-spi0.1-can1
Info: Configures the MCP2517/8 CAN controller on spi0.1
Load: dtoverlay=mcp2517-spi0.1-can1,<param>=<val>
Params: <see mcp2517-spi0.0-can0>

Name: mcp2517-spi1.0-can2
Info: Configures the MCP2517/8 CAN controller on spi1.0
Load: dtoverlay=mcp2517-spi1.0-can2,<param>=<val>
Params: <see mcp2517-spi0.0-can0>

Name: mcp2517-spi1.1-can3
Info: Configures the MCP2517/8 CAN controller on spi1.1
Load: dtoverlay=mcp2517-spi1.1-can3,<param>=<val>
Params: <see mcp2517-spi0.0-can0>

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

speed SPI bus speed (default 12 MHz)

Name: quadcan-fd
Info: Configures 4 mcp2517fd for the quadcan-fd hat
Load: dtoverlay=quadcan-fd
Params: <None>


Name: rotary-encoder
Info: Overlay for GPIO connected rotary encoder.
Expand Down
79 changes: 79 additions & 0 deletions arch/arm/boot/dts/overlays/mcp2517fd-spi0.0-can0-overlay.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* Device tree overlay for mcp2517fd/can0 on spi0.0
*/

/dts-v1/;
/plugin/;

/ {
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2837", "brcm,bcm2708", "brcm,bcm2709", "brcm,bcm2710";
/* disable spi-dev for spi0.0 */
fragment@0 {
target = <&spi0>;
__overlay__ {
status = "okay";
};
};

fragment@1 {
target = <&spidev0>;
__overlay__ {
status = "disabled";
};
};

/* the interrupt pin of the can-controller */
fragment@2 {
target = <&gpio>;
__overlay__ {
can0_pins: can0_pins {
brcm,pins = <25>;
brcm,function = <0>; /* input */
};
};
};

/* the clock/oscillator of the can-controller */
fragment@3 {
target-path = "/clocks";
__overlay__ {
/* external oscillator of mcp2517fd on SPI0.0 */
can0_osc: can0_osc {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <40000000>;
};
};
};

/* the spi config of the can-controller itself binding everything together */
fragment@4 {
target = <&spi0>;
__overlay__ {
/* needed to avoid dtc warning */
#address-cells = <1>;
#size-cells = <0>;
can0: mcp2517fd@0 {
reg = <0>;
compatible = "microchip,mcp2517fd";
pinctrl-names = "default";
pinctrl-0 = <&can0_pins>;
spi-max-frequency = <20000000>;
interrupt-parent = <&gpio>;
interrupts = <25 0x8>;
clocks = <&can0_osc>;
microchip,clock-out-div = <10>;
};
};
};

__overrides__ {
oscillator = <&can0_osc>,"clock-frequency:0";
spimaxfrequency = <&can0>,"spi-max-frequency:0";
interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0";
clockdiv = <&can0>,"microchip,clock-div?";
clockoutdiv = <&can0>,"microchip,clock-out-div:0";
opendrain = <&can0>, "microchip,gpio-open-drain?";
xstandby = <&can0>, "microchip,gpio0-xstandby?";
};
};
79 changes: 79 additions & 0 deletions arch/arm/boot/dts/overlays/mcp2517fd-spi0.1-can1-overlay.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* Device tree overlay for mcp2517fd/can1 on spi0.1
*/

/dts-v1/;
/plugin/;

/ {
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2837", "brcm,bcm2708", "brcm,bcm2709", "brcm,bcm2710";
/* disable spi-dev for spi0.1 */
fragment@0 {
target = <&spi0>;
__overlay__ {
status = "okay";
};
};

fragment@1 {
target = <&spidev1>;
__overlay__ {
status = "disabled";
};
};

/* the interrupt pin of the can-controller */
fragment@2 {
target = <&gpio>;
__overlay__ {
can1_pins: can1_pins {
brcm,pins = <26>;
brcm,function = <0>; /* input */
};
};
};

/* the clock/oscillator of the can-controller */
fragment@3 {
target-path = "/clocks";
__overlay__ {
/* external oscillator of mcp2517fd on SPI0.0 */
can1_osc: can1_osc {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <40000000>;
};
};
};

/* the spi config of the can-controller itself binding everything together */
fragment@4 {
target = <&spi0>;
__overlay__ {
/* needed to avoid dtc warning */
#address-cells = <1>;
#size-cells = <0>;
can1: mcp2517fd@1 {
reg = <1>;
compatible = "microchip,mcp2517fd";
pinctrl-names = "default";
pinctrl-0 = <&can1_pins>;
spi-max-frequency = <20000000>;
interrupt-parent = <&gpio>;
interrupts = <26 0x8>;
clocks = <&can1_osc>;
microchip,clock-out-div = <10>;
};
};
};

__overrides__ {
oscillator = <&can1_osc>,"clock-frequency:0";
spimaxfrequency = <&can1>,"spi-max-frequency:0";
interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0";
clockdiv = <&can1>,"microchip,clock-div?";
clockoutdiv = <&can1>,"microchip,clock-out-div:0";
opendrain = <&can1>, "microchip,gpio-open-drain?";
xstandby = <&can1>, "microchip,gpio0-xstandby?";
};
};
79 changes: 79 additions & 0 deletions arch/arm/boot/dts/overlays/mcp2517fd-spi1.0-can2-overlay.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* Device tree overlay for mcp2517fd/can2 on spi0.0
*/

/dts-v1/;
/plugin/;

/ {
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2837", "brcm,bcm2708", "brcm,bcm2709", "brcm,bcm2710";
/* disable spi-dev for spi0.0 */
fragment@0 {
target = <&spi0>;
__overlay__ {
status = "okay";
};
};

fragment@1 {
target = <&spidev0>;
__overlay__ {
status = "disabled";
};
};

/* the interrupt pin of the can-controller */
fragment@2 {
target = <&gpio>;
__overlay__ {
can2_pins: can2_pins {
brcm,pins = <25>;
brcm,function = <0>; /* input */
};
};
};

/* the clock/oscillator of the can-controller */
fragment@3 {
target-path = "/clocks";
__overlay__ {
/* external oscillator of mcp2517fd on SPI0.0 */
can2_osc: can2_osc {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <40000000>;
};
};
};

/* the spi config of the can-controller itself binding everything together */
fragment@4 {
target = <&spi0>;
__overlay__ {
/* needed to avoid dtc warning */
#address-cells = <1>;
#size-cells = <0>;
can2: mcp2517fd@0 {
reg = <0>;
compatible = "microchip,mcp2517fd";
pinctrl-names = "default";
pinctrl-0 = <&can2_pins>;
spi-max-frequency = <20000000>;
interrupt-parent = <&gpio>;
interrupts = <25 0x8>;
clocks = <&can2_osc>;
microchip,clock-out-div = <10>;
};
};
};

__overrides__ {
oscillator = <&can2_osc>,"clock-frequency:0";
spimaxfrequency = <&can2>,"spi-max-frequency:0";
interrupt = <&can2_pins>,"brcm,pins:0",<&can2>,"interrupts:0";
clockdiv = <&can2>,"microchip,clock-div?";
clockoutdiv = <&can2>,"microchip,clock-out-div:0";
opendrain = <&can2>, "microchip,gpio-open-drain?";
xstandby = <&can2>, "microchip,gpio0-xstandby?";
};
};
79 changes: 79 additions & 0 deletions arch/arm/boot/dts/overlays/mcp2517fd-spi1.1-can3-overlay.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* Device tree overlay for mcp2517fd/can3 on spi0.0
*/

/dts-v1/;
/plugin/;

/ {
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2837", "brcm,bcm2708", "brcm,bcm2709", "brcm,bcm2710";
/* disable spi-dev for spi0.0 */
fragment@0 {
target = <&spi0>;
__overlay__ {
status = "okay";
};
};

fragment@1 {
target = <&spidev0>;
__overlay__ {
status = "disabled";
};
};

/* the interrupt pin of the can-controller */
fragment@2 {
target = <&gpio>;
__overlay__ {
can3_pins: can3_pins {
brcm,pins = <25>;
brcm,function = <0>; /* input */
};
};
};

/* the clock/oscillator of the can-controller */
fragment@3 {
target-path = "/clocks";
__overlay__ {
/* external oscillator of mcp2517fd on SPI0.0 */
can3_osc: can3_osc {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <40000000>;
};
};
};

/* the spi config of the can-controller itself binding everything together */
fragment@4 {
target = <&spi0>;
__overlay__ {
/* needed to avoid dtc warning */
#address-cells = <1>;
#size-cells = <0>;
can3: mcp2517fd@0 {
reg = <0>;
compatible = "microchip,mcp2517fd";
pinctrl-names = "default";
pinctrl-0 = <&can3_pins>;
spi-max-frequency = <20000000>;
interrupt-parent = <&gpio>;
interrupts = <25 0x8>;
clocks = <&can3_osc>;
microchip,clock-out-div = <10>;
};
};
};

__overrides__ {
oscillator = <&can3_osc>,"clock-frequency:0";
spimaxfrequency = <&can3>,"spi-max-frequency:0";
interrupt = <&can3_pins>,"brcm,pins:0",<&can3>,"interrupts:0";
clockdiv = <&can3>,"microchip,clock-div?";
clockoutdiv = <&can3>,"microchip,clock-out-div:0";
opendrain = <&can3>, "microchip,gpio-open-drain?";
xstandby = <&can3>, "microchip,gpio0-xstandby?";
};
};
Loading

0 comments on commit 831a246

Please sign in to comment.