aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Fainelli <f.fainelli@gmail.com>2016-11-22 00:09:19 -0500
committerFlorian Fainelli <f.fainelli@gmail.com>2016-11-22 00:09:19 -0500
commite687607116bc45afcbbcd0097129573f9729ff21 (patch)
treed0bd833220950b03e2cd4edbda7a35184614e559
parent7af371a70139d2e18350365d8685d4fc1cc67973 (diff)
parenta44e87b47148c6ee6b78509f47e6a15c0fae890a (diff)
Merge tag 'bcm2835-dt-64-next-2016-11-18' into devicetree-arm64/next
This pull request brings thermal support to the BCM2837 DT, and a few other fixes. In order to get the thermal node that we're adjusting the compatible string on, we have to merge in the bcm2835-dt-next branch. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
-rw-r--r--Documentation/devicetree/bindings/mailbox/brcm,bcm2835-mbox.txt2
-rw-r--r--Documentation/devicetree/bindings/thermal/brcm,bcm2835-thermal.txt17
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-a-plus.dts67
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-a.dts69
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-b-plus.dts68
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts68
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-b.dts69
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-zero.dts2
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi.dtsi15
-rw-r--r--arch/arm/boot/dts/bcm2835.dtsi6
-rw-r--r--arch/arm/boot/dts/bcm2836-rpi-2-b.dts2
-rw-r--r--arch/arm/boot/dts/bcm2836.dtsi6
-rw-r--r--arch/arm/boot/dts/bcm283x.dtsi212
-rw-r--r--arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts8
-rw-r--r--arch/arm64/boot/dts/broadcom/bcm2837.dtsi8
l---------arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi1
-rw-r--r--drivers/pinctrl/bcm/pinctrl-bcm2835.c6
-rw-r--r--include/dt-bindings/pinctrl/bcm2835.h5
18 files changed, 602 insertions, 29 deletions
diff --git a/Documentation/devicetree/bindings/mailbox/brcm,bcm2835-mbox.txt b/Documentation/devicetree/bindings/mailbox/brcm,bcm2835-mbox.txt
index e893615ef635..b48d7d30012c 100644
--- a/Documentation/devicetree/bindings/mailbox/brcm,bcm2835-mbox.txt
+++ b/Documentation/devicetree/bindings/mailbox/brcm,bcm2835-mbox.txt
@@ -12,7 +12,7 @@ Required properties:
12 12
13Example: 13Example:
14 14
15mailbox: mailbox@7e00b800 { 15mailbox: mailbox@7e00b880 {
16 compatible = "brcm,bcm2835-mbox"; 16 compatible = "brcm,bcm2835-mbox";
17 reg = <0x7e00b880 0x40>; 17 reg = <0x7e00b880 0x40>;
18 interrupts = <0 1>; 18 interrupts = <0 1>;
diff --git a/Documentation/devicetree/bindings/thermal/brcm,bcm2835-thermal.txt b/Documentation/devicetree/bindings/thermal/brcm,bcm2835-thermal.txt
new file mode 100644
index 000000000000..474531d2b2c5
--- /dev/null
+++ b/Documentation/devicetree/bindings/thermal/brcm,bcm2835-thermal.txt
@@ -0,0 +1,17 @@
1Binding for Thermal Sensor driver for BCM2835 SoCs.
2
3Required parameters:
4-------------------
5
6compatible: should be one of: "brcm,bcm2835-thermal",
7 "brcm,bcm2836-thermal" or "brcm,bcm2837-thermal"
8reg: Address range of the thermal registers.
9clocks: Phandle of the clock used by the thermal sensor.
10
11Example:
12
13thermal: thermal@7e212000 {
14 compatible = "brcm,bcm2835-thermal";
15 reg = <0x7e212000 0x8>;
16 clocks = <&clocks BCM2835_CLOCK_TSENS>;
17};
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
index f7f9db355d98..5a22c7965f34 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
@@ -22,7 +22,72 @@
22}; 22};
23 23
24&gpio { 24&gpio {
25 pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; 25 /*
26 * This is based on the unreleased schematic for the Model A+.
27 *
28 * Legend:
29 * "NC" = not connected (no rail from the SoC)
30 * "FOO" = GPIO line named "FOO" on the schematic
31 * "FOO_N" = GPIO line named "FOO" on schematic, active low
32 */
33 gpio-line-names = "SDA0",
34 "SCL0",
35 "SDA1",
36 "SCL1",
37 "GPIO_GCLK",
38 "GPIO5",
39 "GPIO6",
40 "SPI_CE1_N",
41 "SPI_CE0_N",
42 "SPI_MISO",
43 "SPI_MOSI",
44 "SPI_SCLK",
45 "GPIO12",
46 "GPIO13",
47 /* Serial port */
48 "TXD0",
49 "RXD0",
50 "GPIO16",
51 "GPIO17",
52 "GPIO18",
53 "GPIO19",
54 "GPIO20",
55 "GPIO21",
56 "GPIO22",
57 "GPIO23",
58 "GPIO24",
59 "GPIO25",
60 "GPIO26",
61 "GPIO27",
62 "SDA0",
63 "SCL0",
64 "NC", /* GPIO30 */
65 "NC", /* GPIO31 */
66 "NC", /* GPIO32 */
67 "NC", /* GPIO33 */
68 "NC", /* GPIO34 */
69 "PWR_LOW_N", /* GPIO35 */
70 "NC", /* GPIO36 */
71 "NC", /* GPIO37 */
72 "NC", /* GPIO38 */
73 "NC", /* GPIO39 */
74 "PWM0_OUT", /* GPIO40 */
75 "CAM_GPIO0", /* GPIO41 */
76 "NC", /* GPIO42 */
77 "NC", /* GPIO43 */
78 "NC", /* GPIO44 */
79 "PWM1_OUT", /* GPIO45 */
80 "HDMI_HPD_N",
81 "STATUS_LED",
82 /* Used by SD Card */
83 "SD_CLK_R",
84 "SD_CMD_R",
85 "SD_DATA0_R",
86 "SD_DATA1_R",
87 "SD_DATA2_R",
88 "SD_DATA3_R";
89
90 pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
26 91
27 /* I2S interface */ 92 /* I2S interface */
28 i2s_alt0: i2s_alt0 { 93 i2s_alt0: i2s_alt0 {
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts
index 8be102f5d826..54f98c59a75d 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-a.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts
@@ -15,7 +15,74 @@
15}; 15};
16 16
17&gpio { 17&gpio {
18 pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>; 18 /*
19 * Taken from Raspberry-Pi-Rev-1.0-Model-AB-Schematics.pdf
20 * RPI00021 sheet 02
21 *
22 * Legend:
23 * "NC" = not connected (no rail from the SoC)
24 * "FOO" = GPIO line named "FOO" on the schematic
25 * "FOO_N" = GPIO line named "FOO" on schematic, active low
26 */
27 gpio-line-names = "SDA0",
28 "SCL0",
29 "SDA1",
30 "SCL1",
31 "GPIO_GCLK",
32 "CAM_CLK",
33 "LAN_RUN",
34 "SPI_CE1_N",
35 "SPI_CE0_N",
36 "SPI_MISO",
37 "SPI_MOSI",
38 "SPI_SCLK",
39 "NC", /* GPIO12 */
40 "NC", /* GPIO13 */
41 /* Serial port */
42 "TXD0",
43 "RXD0",
44 "STATUS_LED_N",
45 "GPIO17",
46 "GPIO18",
47 "NC", /* GPIO19 */
48 "NC", /* GPIO20 */
49 "GPIO21",
50 "GPIO22",
51 "GPIO23",
52 "GPIO24",
53 "GPIO25",
54 "NC", /* GPIO26 */
55 "CAM_GPIO",
56 /* Binary number representing build/revision */
57 "CONFIG0",
58 "CONFIG1",
59 "CONFIG2",
60 "CONFIG3",
61 "NC", /* GPIO32 */
62 "NC", /* GPIO33 */
63 "NC", /* GPIO34 */
64 "NC", /* GPIO35 */
65 "NC", /* GPIO36 */
66 "NC", /* GPIO37 */
67 "NC", /* GPIO38 */
68 "NC", /* GPIO39 */
69 "PWM0_OUT",
70 "NC", /* GPIO41 */
71 "NC", /* GPIO42 */
72 "NC", /* GPIO43 */
73 "NC", /* GPIO44 */
74 "PWM1_OUT",
75 "HDMI_HPD_P",
76 "SD_CARD_DET",
77 /* Used by SD Card */
78 "SD_CLK_R",
79 "SD_CMD_R",
80 "SD_DATA0_R",
81 "SD_DATA1_R",
82 "SD_DATA2_R",
83 "SD_DATA3_R";
84
85 pinctrl-0 = <&gpioout &alt0 &i2s_alt2>;
19 86
20 /* I2S interface */ 87 /* I2S interface */
21 i2s_alt2: i2s_alt2 { 88 i2s_alt2: i2s_alt2 {
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
index 35cde65c975e..b67587e6cbef 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
@@ -23,7 +23,73 @@
23}; 23};
24 24
25&gpio { 25&gpio {
26 pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; 26 /*
27 * Taken from Raspberry-Pi-B-Plus-V1.2-Schematics.pdf
28 * RPI-BPLUS sheet 1
29 *
30 * Legend:
31 * "NC" = not connected (no rail from the SoC)
32 * "FOO" = GPIO line named "FOO" on the schematic
33 * "FOO_N" = GPIO line named "FOO" on schematic, active low
34 */
35 gpio-line-names = "SDA0",
36 "SCL0",
37 "SDA1",
38 "SCL1",
39 "GPIO_GCLK",
40 "GPIO5",
41 "GPIO6",
42 "SPI_CE1_N",
43 "SPI_CE0_N",
44 "SPI_MISO",
45 "SPI_MOSI",
46 "SPI_SCLK",
47 "GPIO12",
48 "GPIO13",
49 /* Serial port */
50 "TXD0",
51 "RXD0",
52 "GPIO16",
53 "GPIO17",
54 "GPIO18",
55 "GPIO19",
56 "GPIO20",
57 "GPIO21",
58 "GPIO22",
59 "GPIO23",
60 "GPIO24",
61 "GPIO25",
62 "GPIO26",
63 "GPIO27",
64 "SDA0",
65 "SCL0",
66 "NC", /* GPIO30 */
67 "LAN_RUN", /* GPIO31 */
68 "CAM_GPIO1", /* GPIO32 */
69 "NC", /* GPIO33 */
70 "NC", /* GPIO34 */
71 "PWR_LOW_N", /* GPIO35 */
72 "NC", /* GPIO36 */
73 "NC", /* GPIO37 */
74 "NC", /* GPIO38 */
75 "NC", /* GPIO39 */
76 "PWM0_OUT", /* GPIO40 */
77 "CAM_GPIO0", /* GPIO41 */
78 "NC", /* GPIO42 */
79 "NC", /* GPIO43 */
80 "ETHCLK", /* GPIO44 */
81 "PWM1_OUT", /* GPIO45 */
82 "HDMI_HPD_N",
83 "STATUS_LED",
84 /* Used by SD Card */
85 "SD_CLK_R",
86 "SD_CMD_R",
87 "SD_DATA0_R",
88 "SD_DATA1_R",
89 "SD_DATA2_R",
90 "SD_DATA3_R";
91
92 pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
27 93
28 /* I2S interface */ 94 /* I2S interface */
29 i2s_alt0: i2s_alt0 { 95 i2s_alt0: i2s_alt0 {
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
index 84df85ea6296..4133bc2cd9be 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
@@ -16,7 +16,73 @@
16}; 16};
17 17
18&gpio { 18&gpio {
19 pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>; 19 /*
20 * Taken from Raspberry-Pi-Rev-2.0-Model-AB-Schematics.pdf
21 * RPI00022 sheet 02
22 *
23 * Legend:
24 * "NC" = not connected (no rail from the SoC)
25 * "FOO" = GPIO line named "FOO" on the schematic
26 * "FOO_N" = GPIO line named "FOO" on schematic, active low
27 */
28 gpio-line-names = "SDA0",
29 "SCL0",
30 "SDA1",
31 "SCL1",
32 "GPIO_GCLK",
33 "CAM_CLK",
34 "LAN_RUN",
35 "SPI_CE1_N",
36 "SPI_CE0_N",
37 "SPI_MISO",
38 "SPI_MOSI",
39 "SPI_SCLK",
40 "NC", /* GPIO12 */
41 "NC", /* GPIO13 */
42 /* Serial port */
43 "TXD0",
44 "RXD0",
45 "STATUS_LED_N",
46 "GPIO17",
47 "GPIO18",
48 "NC", /* GPIO19 */
49 "NC", /* GPIO20 */
50 "CAM_GPIO",
51 "GPIO22",
52 "GPIO23",
53 "GPIO24",
54 "GPIO25",
55 "NC", /* GPIO26 */
56 "GPIO27",
57 "GPIO28",
58 "GPIO29",
59 "GPIO30",
60 "GPIO31",
61 "NC", /* GPIO32 */
62 "NC", /* GPIO33 */
63 "NC", /* GPIO34 */
64 "NC", /* GPIO35 */
65 "NC", /* GPIO36 */
66 "NC", /* GPIO37 */
67 "NC", /* GPIO38 */
68 "NC", /* GPIO39 */
69 "PWM0_OUT",
70 "NC", /* GPIO41 */
71 "NC", /* GPIO42 */
72 "NC", /* GPIO43 */
73 "NC", /* GPIO44 */
74 "PWM1_OUT",
75 "HDMI_HPD_P",
76 "SD_CARD_DET",
77 /* Used by SD Card */
78 "SD_CLK_R",
79 "SD_CMD_R",
80 "SD_DATA0_R",
81 "SD_DATA1_R",
82 "SD_DATA2_R",
83 "SD_DATA3_R";
84
85 pinctrl-0 = <&gpioout &alt0 &i2s_alt2>;
20 86
21 /* I2S interface */ 87 /* I2S interface */
22 i2s_alt2: i2s_alt2 { 88 i2s_alt2: i2s_alt2 {
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
index 8e626a80fe24..71f50e16c646 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
@@ -16,7 +16,74 @@
16}; 16};
17 17
18&gpio { 18&gpio {
19 pinctrl-0 = <&gpioout &alt0 &alt3>; 19 /*
20 * Taken from Raspberry-Pi-Rev-1.0-Model-AB-Schematics.pdf
21 * RPI00021 sheet 02
22 *
23 * Legend:
24 * "NC" = not connected (no rail from the SoC)
25 * "FOO" = GPIO line named "FOO" on the schematic
26 * "FOO_N" = GPIO line named "FOO" on schematic, active low
27 */
28 gpio-line-names = "SDA0",
29 "SCL0",
30 "SDA1",
31 "SCL1",
32 "GPIO_GCLK",
33 "CAM_CLK",
34 "LAN_RUN",
35 "SPI_CE1_N",
36 "SPI_CE0_N",
37 "SPI_MISO",
38 "SPI_MOSI",
39 "SPI_SCLK",
40 "NC", /* GPIO12 */
41 "NC", /* GPIO13 */
42 /* Serial port */
43 "TXD0",
44 "RXD0",
45 "STATUS_LED_N",
46 "GPIO17",
47 "GPIO18",
48 "NC", /* GPIO19 */
49 "NC", /* GPIO20 */
50 "GPIO21",
51 "GPIO22",
52 "GPIO23",
53 "GPIO24",
54 "GPIO25",
55 "NC", /* GPIO26 */
56 "CAM_GPIO",
57 /* Binary number representing build/revision */
58 "CONFIG0",
59 "CONFIG1",
60 "CONFIG2",
61 "CONFIG3",
62 "NC", /* GPIO32 */
63 "NC", /* GPIO33 */
64 "NC", /* GPIO34 */
65 "NC", /* GPIO35 */
66 "NC", /* GPIO36 */
67 "NC", /* GPIO37 */
68 "NC", /* GPIO38 */
69 "NC", /* GPIO39 */
70 "PWM0_OUT",
71 "NC", /* GPIO41 */
72 "NC", /* GPIO42 */
73 "NC", /* GPIO43 */
74 "NC", /* GPIO44 */
75 "PWM1_OUT",
76 "HDMI_HPD_P",
77 "SD_CARD_DET",
78 /* Used by SD Card */
79 "SD_CLK_R",
80 "SD_CMD_R",
81 "SD_DATA0_R",
82 "SD_DATA1_R",
83 "SD_DATA2_R",
84 "SD_DATA3_R";
85
86 pinctrl-0 = <&gpioout &alt0>;
20}; 87};
21 88
22&hdmi { 89&hdmi {
diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero.dts b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
index 60e359fafc5b..7c1c18048948 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-zero.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
@@ -26,7 +26,7 @@
26}; 26};
27 27
28&gpio { 28&gpio {
29 pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; 29 pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
30 30
31 /* I2S interface */ 31 /* I2S interface */
32 i2s_alt0: i2s_alt0 { 32 i2s_alt0: i2s_alt0 {
diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi
index e9b47b2bbc33..6ddf7dfe3f72 100644
--- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
+++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
@@ -39,22 +39,21 @@
39 }; 39 };
40 40
41 alt0: alt0 { 41 alt0: alt0 {
42 brcm,pins = <0 1 2 3 4 5 7 8 9 10 11 14 15 40 45>; 42 brcm,pins = <4 5 7 8 9 10 11 14 15>;
43 brcm,function = <BCM2835_FSEL_ALT0>; 43 brcm,function = <BCM2835_FSEL_ALT0>;
44 }; 44 };
45
46 alt3: alt3 {
47 brcm,pins = <48 49 50 51 52 53>;
48 brcm,function = <BCM2835_FSEL_ALT3>;
49 };
50}; 45};
51 46
52&i2c0 { 47&i2c0 {
48 pinctrl-names = "default";
49 pinctrl-0 = <&i2c0_gpio0>;
53 status = "okay"; 50 status = "okay";
54 clock-frequency = <100000>; 51 clock-frequency = <100000>;
55}; 52};
56 53
57&i2c1 { 54&i2c1 {
55 pinctrl-names = "default";
56 pinctrl-0 = <&i2c1_gpio2>;
58 status = "okay"; 57 status = "okay";
59 clock-frequency = <100000>; 58 clock-frequency = <100000>;
60}; 59};
@@ -64,11 +63,15 @@
64}; 63};
65 64
66&sdhci { 65&sdhci {
66 pinctrl-names = "default";
67 pinctrl-0 = <&emmc_gpio48>;
67 status = "okay"; 68 status = "okay";
68 bus-width = <4>; 69 bus-width = <4>;
69}; 70};
70 71
71&pwm { 72&pwm {
73 pinctrl-names = "default";
74 pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
72 status = "okay"; 75 status = "okay";
73}; 76};
74 77
diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
index a78759e73710..0890d97e674d 100644
--- a/arch/arm/boot/dts/bcm2835.dtsi
+++ b/arch/arm/boot/dts/bcm2835.dtsi
@@ -23,3 +23,9 @@
23 }; 23 };
24 }; 24 };
25}; 25};
26
27/* enable thermal sensor with the correct compatible property set */
28&thermal {
29 compatible = "brcm,bcm2835-thermal";
30 status = "okay";
31};
diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
index 39dccf62ac96..bf19e8cfb9e6 100644
--- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
+++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
@@ -27,7 +27,7 @@
27}; 27};
28 28
29&gpio { 29&gpio {
30 pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; 30 pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
31 31
32 /* I2S interface */ 32 /* I2S interface */
33 i2s_alt0: i2s_alt0 { 33 i2s_alt0: i2s_alt0 {
diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi
index 9d0651d8f373..519a44f5d25a 100644
--- a/arch/arm/boot/dts/bcm2836.dtsi
+++ b/arch/arm/boot/dts/bcm2836.dtsi
@@ -76,3 +76,9 @@
76 interrupt-parent = <&local_intc>; 76 interrupt-parent = <&local_intc>;
77 interrupts = <8>; 77 interrupts = <8>;
78}; 78};
79
80/* enable thermal sensor with the correct compatible property set */
81&thermal {
82 compatible = "brcm,bcm2836-thermal";
83 status = "okay";
84};
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
index 46d46d894a44..9a44da190897 100644
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
@@ -104,7 +104,7 @@
104 reg = <0x7e104000 0x10>; 104 reg = <0x7e104000 0x10>;
105 }; 105 };
106 106
107 mailbox: mailbox@7e00b800 { 107 mailbox: mailbox@7e00b880 {
108 compatible = "brcm,bcm2835-mbox"; 108 compatible = "brcm,bcm2835-mbox";
109 reg = <0x7e00b880 0x40>; 109 reg = <0x7e00b880 0x40>;
110 interrupts = <0 1>; 110 interrupts = <0 1>;
@@ -132,6 +132,209 @@
132 132
133 interrupt-controller; 133 interrupt-controller;
134 #interrupt-cells = <2>; 134 #interrupt-cells = <2>;
135
136 /* Defines pin muxing groups according to
137 * BCM2835-ARM-Peripherals.pdf page 102.
138 *
139 * While each pin can have its mux selected
140 * for various functions individually, some
141 * groups only make sense to switch to a
142 * particular function together.
143 */
144 dpi_gpio0: dpi_gpio0 {
145 brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
146 12 13 14 15 16 17 18 19
147 20 21 22 23 24 25 26 27>;
148 brcm,function = <BCM2835_FSEL_ALT2>;
149 };
150 emmc_gpio22: emmc_gpio22 {
151 brcm,pins = <22 23 24 25 26 27>;
152 brcm,function = <BCM2835_FSEL_ALT3>;
153 };
154 emmc_gpio34: emmc_gpio34 {
155 brcm,pins = <34 35 36 37 38 39>;
156 brcm,function = <BCM2835_FSEL_ALT3>;
157 brcm,pull = <BCM2835_PUD_OFF
158 BCM2835_PUD_UP
159 BCM2835_PUD_UP
160 BCM2835_PUD_UP
161 BCM2835_PUD_UP
162 BCM2835_PUD_UP>;
163 };
164 emmc_gpio48: emmc_gpio48 {
165 brcm,pins = <48 49 50 51 52 53>;
166 brcm,function = <BCM2835_FSEL_ALT3>;
167 };
168
169 gpclk0_gpio4: gpclk0_gpio4 {
170 brcm,pins = <4>;
171 brcm,function = <BCM2835_FSEL_ALT0>;
172 };
173 gpclk1_gpio5: gpclk1_gpio5 {
174 brcm,pins = <5>;
175 brcm,function = <BCM2835_FSEL_ALT0>;
176 };
177 gpclk1_gpio42: gpclk1_gpio42 {
178 brcm,pins = <42>;
179 brcm,function = <BCM2835_FSEL_ALT0>;
180 };
181 gpclk1_gpio44: gpclk1_gpio44 {
182 brcm,pins = <44>;
183 brcm,function = <BCM2835_FSEL_ALT0>;
184 };
185 gpclk2_gpio6: gpclk2_gpio6 {
186 brcm,pins = <6>;
187 brcm,function = <BCM2835_FSEL_ALT0>;
188 };
189 gpclk2_gpio43: gpclk2_gpio43 {
190 brcm,pins = <43>;
191 brcm,function = <BCM2835_FSEL_ALT0>;
192 };
193
194 i2c0_gpio0: i2c0_gpio0 {
195 brcm,pins = <0 1>;
196 brcm,function = <BCM2835_FSEL_ALT0>;
197 };
198 i2c0_gpio32: i2c0_gpio32 {
199 brcm,pins = <32 34>;
200 brcm,function = <BCM2835_FSEL_ALT0>;
201 };
202 i2c0_gpio44: i2c0_gpio44 {
203 brcm,pins = <44 45>;
204 brcm,function = <BCM2835_FSEL_ALT1>;
205 };
206 i2c1_gpio2: i2c1_gpio2 {
207 brcm,pins = <2 3>;
208 brcm,function = <BCM2835_FSEL_ALT0>;
209 };
210 i2c1_gpio44: i2c1_gpio44 {
211 brcm,pins = <44 45>;
212 brcm,function = <BCM2835_FSEL_ALT2>;
213 };
214 i2c_slave_gpio18: i2c_slave_gpio18 {
215 brcm,pins = <18 19 20 21>;
216 brcm,function = <BCM2835_FSEL_ALT3>;
217 };
218
219 jtag_gpio4: jtag_gpio4 {
220 brcm,pins = <4 5 6 12 13>;
221 brcm,function = <BCM2835_FSEL_ALT4>;
222 };
223 jtag_gpio22: jtag_gpio22 {
224 brcm,pins = <22 23 24 25 26 27>;
225 brcm,function = <BCM2835_FSEL_ALT4>;
226 };
227
228 pcm_gpio18: pcm_gpio18 {
229 brcm,pins = <18 19 20 21>;
230 brcm,function = <BCM2835_FSEL_ALT0>;
231 };
232 pcm_gpio28: pcm_gpio28 {
233 brcm,pins = <28 29 30 31>;
234 brcm,function = <BCM2835_FSEL_ALT2>;
235 };
236
237 pwm0_gpio12: pwm0_gpio12 {
238 brcm,pins = <12>;
239 brcm,function = <BCM2835_FSEL_ALT0>;
240 };
241 pwm0_gpio18: pwm0_gpio18 {
242 brcm,pins = <18>;
243 brcm,function = <BCM2835_FSEL_ALT5>;
244 };
245 pwm0_gpio40: pwm0_gpio40 {
246 brcm,pins = <40>;
247 brcm,function = <BCM2835_FSEL_ALT0>;
248 };
249 pwm1_gpio13: pwm1_gpio13 {
250 brcm,pins = <13>;
251 brcm,function = <BCM2835_FSEL_ALT0>;
252 };
253 pwm1_gpio19: pwm1_gpio19 {
254 brcm,pins = <19>;
255 brcm,function = <BCM2835_FSEL_ALT5>;
256 };
257 pwm1_gpio41: pwm1_gpio41 {
258 brcm,pins = <41>;
259 brcm,function = <BCM2835_FSEL_ALT0>;
260 };
261 pwm1_gpio45: pwm1_gpio45 {
262 brcm,pins = <45>;
263 brcm,function = <BCM2835_FSEL_ALT0>;
264 };
265
266 sdhost_gpio48: sdhost_gpio48 {
267 brcm,pins = <48 49 50 51 52 53>;
268 brcm,function = <BCM2835_FSEL_ALT0>;
269 };
270
271 spi0_gpio7: spi0_gpio7 {
272 brcm,pins = <7 8 9 10 11>;
273 brcm,function = <BCM2835_FSEL_ALT0>;
274 };
275 spi0_gpio35: spi0_gpio35 {
276 brcm,pins = <35 36 37 38 39>;
277 brcm,function = <BCM2835_FSEL_ALT0>;
278 };
279 spi1_gpio16: spi1_gpio16 {
280 brcm,pins = <16 17 18 19 20 21>;
281 brcm,function = <BCM2835_FSEL_ALT4>;
282 };
283 spi2_gpio40: spi2_gpio40 {
284 brcm,pins = <40 41 42 43 44 45>;
285 brcm,function = <BCM2835_FSEL_ALT4>;
286 };
287
288 uart0_gpio14: uart0_gpio14 {
289 brcm,pins = <14 15>;
290 brcm,function = <BCM2835_FSEL_ALT0>;
291 };
292 /* Separate from the uart0_gpio14 group
293 * because it conflicts with spi1_gpio16, and
294 * people often run uart0 on the two pins
295 * without flow contrl.
296 */
297 uart0_ctsrts_gpio16: uart0_ctsrts_gpio16 {
298 brcm,pins = <16 17>;
299 brcm,function = <BCM2835_FSEL_ALT3>;
300 };
301 uart0_gpio30: uart0_gpio30 {
302 brcm,pins = <30 31>;
303 brcm,function = <BCM2835_FSEL_ALT3>;
304 };
305 uart0_ctsrts_gpio32: uart0_ctsrts_gpio32 {
306 brcm,pins = <32 33>;
307 brcm,function = <BCM2835_FSEL_ALT3>;
308 };
309
310 uart1_gpio14: uart1_gpio14 {
311 brcm,pins = <14 15>;
312 brcm,function = <BCM2835_FSEL_ALT5>;
313 };
314 uart1_ctsrts_gpio16: uart1_ctsrts_gpio16 {
315 brcm,pins = <16 17>;
316 brcm,function = <BCM2835_FSEL_ALT5>;
317 };
318 uart1_gpio32: uart1_gpio32 {
319 brcm,pins = <32 33>;
320 brcm,function = <BCM2835_FSEL_ALT5>;
321 };
322 uart1_ctsrts_gpio30: uart1_ctsrts_gpio30 {
323 brcm,pins = <30 31>;
324 brcm,function = <BCM2835_FSEL_ALT5>;
325 };
326 uart1_gpio36: uart1_gpio36 {
327 brcm,pins = <36 37 38 39>;
328 brcm,function = <BCM2835_FSEL_ALT2>;
329 };
330 uart1_gpio40: uart1_gpio40 {
331 brcm,pins = <40 41>;
332 brcm,function = <BCM2835_FSEL_ALT5>;
333 };
334 uart1_ctsrts_gpio42: uart1_ctsrts_gpio42 {
335 brcm,pins = <42 43>;
336 brcm,function = <BCM2835_FSEL_ALT5>;
337 };
135 }; 338 };
136 339
137 uart0: serial@7e201000 { 340 uart0: serial@7e201000 {
@@ -187,6 +390,13 @@
187 interrupts = <2 14>; /* pwa1 */ 390 interrupts = <2 14>; /* pwa1 */
188 }; 391 };
189 392
393 thermal: thermal@7e212000 {
394 compatible = "brcm,bcm2835-thermal";
395 reg = <0x7e212000 0x8>;
396 clocks = <&clocks BCM2835_CLOCK_TSENS>;
397 status = "disabled";
398 };
399
190 aux: aux@0x7e215000 { 400 aux: aux@0x7e215000 {
191 compatible = "brcm,bcm2835-aux"; 401 compatible = "brcm,bcm2835-aux";
192 #clock-cells = <1>; 402 #clock-cells = <1>;
diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
index 7841b724e340..c309633a1e87 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
@@ -2,6 +2,7 @@
2#include "bcm2837.dtsi" 2#include "bcm2837.dtsi"
3#include "bcm2835-rpi.dtsi" 3#include "bcm2835-rpi.dtsi"
4#include "bcm283x-rpi-smsc9514.dtsi" 4#include "bcm283x-rpi-smsc9514.dtsi"
5#include "bcm283x-rpi-usb-host.dtsi"
5 6
6/ { 7/ {
7 compatible = "raspberrypi,3-model-b", "brcm,bcm2837"; 8 compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
@@ -15,13 +16,6 @@
15 act { 16 act {
16 gpios = <&gpio 47 0>; 17 gpios = <&gpio 47 0>;
17 }; 18 };
18
19 pwr {
20 label = "PWR";
21 gpios = <&gpio 35 0>;
22 default-state = "keep";
23 linux,default-trigger = "default-on";
24 };
25 }; 19 };
26}; 20};
27 21
diff --git a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
index 8216bbb29fe0..19f2fe620a21 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
@@ -1,7 +1,7 @@
1#include "bcm283x.dtsi" 1#include "bcm283x.dtsi"
2 2
3/ { 3/ {
4 compatible = "brcm,bcm2836"; 4 compatible = "brcm,bcm2837";
5 5
6 soc { 6 soc {
7 ranges = <0x7e000000 0x3f000000 0x1000000>, 7 ranges = <0x7e000000 0x3f000000 0x1000000>,
@@ -74,3 +74,9 @@
74 interrupt-parent = <&local_intc>; 74 interrupt-parent = <&local_intc>;
75 interrupts = <8>; 75 interrupts = <8>;
76}; 76};
77
78/* enable thermal sensor with the correct compatible property set */
79&thermal {
80 compatible = "brcm,bcm2837-thermal";
81 status = "okay";
82};
diff --git a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi
new file mode 120000
index 000000000000..cbeebe312ff8
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi
@@ -0,0 +1 @@
../../../../arm/boot/dts/bcm283x-rpi-usb-host.dtsi \ No newline at end of file
diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
index fa77165fab2c..4cf612bcfdfa 100644
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
@@ -76,12 +76,6 @@ enum bcm2835_pinconf_param {
76 BCM2835_PINCONF_PARAM_PULL, 76 BCM2835_PINCONF_PARAM_PULL,
77}; 77};
78 78
79enum bcm2835_pinconf_pull {
80 BCM2835_PINCONFIG_PULL_NONE,
81 BCM2835_PINCONFIG_PULL_DOWN,
82 BCM2835_PINCONFIG_PULL_UP,
83};
84
85#define BCM2835_PINCONF_PACK(_param_, _arg_) ((_param_) << 16 | (_arg_)) 79#define BCM2835_PINCONF_PACK(_param_, _arg_) ((_param_) << 16 | (_arg_))
86#define BCM2835_PINCONF_UNPACK_PARAM(_conf_) ((_conf_) >> 16) 80#define BCM2835_PINCONF_UNPACK_PARAM(_conf_) ((_conf_) >> 16)
87#define BCM2835_PINCONF_UNPACK_ARG(_conf_) ((_conf_) & 0xffff) 81#define BCM2835_PINCONF_UNPACK_ARG(_conf_) ((_conf_) & 0xffff)
diff --git a/include/dt-bindings/pinctrl/bcm2835.h b/include/dt-bindings/pinctrl/bcm2835.h
index 6f0bc37af39c..e4e4fdf5d38f 100644
--- a/include/dt-bindings/pinctrl/bcm2835.h
+++ b/include/dt-bindings/pinctrl/bcm2835.h
@@ -24,4 +24,9 @@
24#define BCM2835_FSEL_ALT2 6 24#define BCM2835_FSEL_ALT2 6
25#define BCM2835_FSEL_ALT3 7 25#define BCM2835_FSEL_ALT3 7
26 26
27/* brcm,pull property */
28#define BCM2835_PUD_OFF 0
29#define BCM2835_PUD_DOWN 1
30#define BCM2835_PUD_UP 2
31
27#endif /* __DT_BINDINGS_PINCTRL_BCM2835_H__ */ 32#endif /* __DT_BINDINGS_PINCTRL_BCM2835_H__ */