brcm2708: switch to linux 4.4 and update patches
[openwrt.git] / target / linux / brcm2708 / patches-4.1 / 0108-Added-support-for-2-mcp2515-CAN-Bus-IC.patch
1 From 298e839b5159e62739d98875162132fb8e1d8409 Mon Sep 17 00:00:00 2001
2 From: petit-miner <cooker5000@gmail.com>
3 Date: Fri, 10 Jul 2015 13:59:18 +0200
4 Subject: [PATCH 108/222] Added support for 2 mcp2515 CAN Bus IC
5
6 See: https://github.com/raspberrypi/linux/issues/1018
7      https://github.com/raspberrypi/linux/pull/1049
8      https://github.com/raspberrypi/linux/pull/1052
9 ---
10  arch/arm/boot/dts/overlays/Makefile                |  1 +
11  arch/arm/boot/dts/overlays/README                  | 12 +++-
12  .../arm/boot/dts/overlays/mcp2515-can1-overlay.dts | 69 ++++++++++++++++++++++
13  3 files changed, 81 insertions(+), 1 deletion(-)
14  create mode 100644 arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
15
16 --- a/arch/arm/boot/dts/overlays/Makefile
17 +++ b/arch/arm/boot/dts/overlays/Makefile
18 @@ -29,6 +29,7 @@ dtb-$(RPI_DT_OVERLAYS) += iqaudio-dac-ov
19  dtb-$(RPI_DT_OVERLAYS) += iqaudio-dacplus-overlay.dtb
20  dtb-$(RPI_DT_OVERLAYS) += lirc-rpi-overlay.dtb
21  dtb-$(RPI_DT_OVERLAYS) += mcp2515-can0-overlay.dtb
22 +dtb-$(RPI_DT_OVERLAYS) += mcp2515-can1-overlay.dtb
23  dtb-$(RPI_DT_OVERLAYS) += mmc-overlay.dtb
24  dtb-$(RPI_DT_OVERLAYS) += mz61581-overlay.dtb
25  dtb-$(RPI_DT_OVERLAYS) += piscreen-overlay.dtb
26 --- a/arch/arm/boot/dts/overlays/README
27 +++ b/arch/arm/boot/dts/overlays/README
28 @@ -328,11 +328,21 @@ Params: gpio_out_pin             GPIO fo
29  
30  
31  Name:   mcp2515-can0
32 -Info:   Configures the MCP2515 CAN controller
33 +Info:   Configures the MCP2515 CAN controller on spi0.0
34  Load:   dtoverlay=mcp2515-can0,<param>=<val>
35  Params: oscillator               Clock frequency for the CAN controller (Hz)
36  
37          spimaxfrequency          Maximum SPI frequence (Hz)
38 +
39 +        interrupt                GPIO for interrupt signal
40 +
41 +
42 +Name:   mcp2515-can1
43 +Info:   Configures the MCP2515 CAN controller on spi0.1
44 +Load:   dtoverlay=mcp2515-can1,<param>=<val>
45 +Params: oscillator               Clock frequency for the CAN controller (Hz)
46 +
47 +        spimaxfrequency          Maximum SPI frequence (Hz)
48  
49          interrupt                GPIO for interrupt signal
50  
51 --- /dev/null
52 +++ b/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
53 @@ -0,0 +1,69 @@
54 +/*
55 + * Device tree overlay for mcp251x/can1 on spi0.1 edited by petit_miner
56 + */
57 +
58 +/dts-v1/;
59 +/plugin/;
60 +
61 +/ {
62 +    compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
63 +    /* disable spi-dev for spi0.1 */
64 +    fragment@0 {
65 +        target = <&spi0>;
66 +        __overlay__ {
67 +            status = "okay";
68 +            spidev@1{
69 +                status = "disabled";
70 +            };
71 +        };
72 +    };
73 +
74 +    /* the interrupt pin of the can-controller */
75 +    fragment@1 {
76 +        target = <&gpio>;
77 +        __overlay__ {
78 +            can1_pins: can1_pins {
79 +                brcm,pins = <25>;
80 +                brcm,function = <0>; /* input */
81 +            };
82 +        };
83 +    };
84 +
85 +    /* the clock/oscillator of the can-controller */
86 +    fragment@2 {
87 +        target-path = "/clocks";
88 +        __overlay__ {
89 +            /* external oscillator of mcp2515 on spi0.1 */
90 +            can1_osc: can1_osc {
91 +                compatible = "fixed-clock";
92 +                #clock-cells = <0>;
93 +                clock-frequency  = <16000000>;
94 +            };
95 +        };
96 +    };
97 +
98 +    /* the spi config of the can-controller itself binding everything together */
99 +    fragment@3 {
100 +        target = <&spi0>;
101 +        __overlay__ {
102 +            /* needed to avoid dtc warning */
103 +            #address-cells = <1>;
104 +            #size-cells = <0>;
105 +            can1: mcp2515@1 {
106 +                reg = <1>;
107 +                compatible = "microchip,mcp2515";
108 +                pinctrl-names = "default";
109 +                pinctrl-0 = <&can1_pins>;
110 +                spi-max-frequency = <10000000>;
111 +                interrupt-parent = <&gpio>;
112 +                interrupts = <25 0x2>;
113 +                clocks = <&can1_osc>;
114 +            };
115 +        };
116 +    };
117 +    __overrides__ {
118 +        oscillator = <&can1_osc>,"clock-frequency:0";
119 +        spimaxfrequency = <&can1>,"spi-max-frequency:0";
120 +        interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0";
121 +    };
122 +};