diff options
author | Andrei Gherzan <andrei@gherzan.ro> | 2019-07-18 13:30:32 +0100 |
---|---|---|
committer | Andrei Gherzan <andrei@gherzan.ro> | 2019-07-18 15:20:46 +0100 |
commit | fb6ec0aabf272eca1cf57e910cebe3532f1cafd8 (patch) | |
tree | 95a06d0a1b8d3aed9be2c6be20c20c92c5898de2 | |
parent | 570bed8acfbaf2dfd99469909a6f01e5b9b3caed (diff) | |
download | meta-raspberrypi-ag/rpi4-misc.tar.gz |
u-boot: Replace custom fork by patchesag/rpi4-misc
The upstream branch might suffer rebases due to effort of pushing the
patches upstream. To avoid issues, let's have here the patches we need
for RPi 4 support.
Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
13 files changed, 1110 insertions, 4 deletions
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch b/recipes-bsp/u-boot/u-boot-2019.07/0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch new file mode 100644 index 0000000..2fe7b9e --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch | |||
@@ -0,0 +1,111 @@ | |||
1 | From 2a59e8a0d574c5f878e7cf640dd2337ac5721372 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@balena.io> | ||
3 | Date: Wed, 17 Jul 2019 15:32:11 +0100 | ||
4 | Subject: [PATCH 01/12] configs: rpi4: Add defconfigs for rpi4 (32/64) | ||
5 | |||
6 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
7 | Upstream-status: Pending | ||
8 | --- | ||
9 | configs/rpi_4_32b_defconfig | 41 +++++++++++++++++++++++++++++++++++++ | ||
10 | configs/rpi_4_defconfig | 41 +++++++++++++++++++++++++++++++++++++ | ||
11 | 2 files changed, 82 insertions(+) | ||
12 | create mode 100644 configs/rpi_4_32b_defconfig | ||
13 | create mode 100644 configs/rpi_4_defconfig | ||
14 | |||
15 | diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig | ||
16 | new file mode 100644 | ||
17 | index 0000000000..3ee33174bc | ||
18 | --- /dev/null | ||
19 | +++ b/configs/rpi_4_32b_defconfig | ||
20 | @@ -0,0 +1,41 @@ | ||
21 | +CONFIG_ARM=y | ||
22 | +CONFIG_ARCH_BCM283X=y | ||
23 | +CONFIG_SYS_TEXT_BASE=0x00008000 | ||
24 | +CONFIG_TARGET_RPI_4_32B=y | ||
25 | +CONFIG_SYS_MALLOC_F_LEN=0x2000 | ||
26 | +CONFIG_DISTRO_DEFAULTS=y | ||
27 | +CONFIG_NR_DRAM_BANKS=1 | ||
28 | +# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set | ||
29 | +CONFIG_OF_BOARD_SETUP=y | ||
30 | +CONFIG_MISC_INIT_R=y | ||
31 | +# CONFIG_DISPLAY_CPUINFO is not set | ||
32 | +# CONFIG_DISPLAY_BOARDINFO is not set | ||
33 | +CONFIG_SYS_PROMPT="U-Boot> " | ||
34 | +# CONFIG_CMD_FLASH is not set | ||
35 | +CONFIG_CMD_GPIO=y | ||
36 | +CONFIG_CMD_MMC=y | ||
37 | +CONFIG_CMD_USB=y | ||
38 | +CONFIG_CMD_FS_UUID=y | ||
39 | +CONFIG_OF_EMBED=y | ||
40 | +CONFIG_DEFAULT_DEVICE_TREE="bcm2838-rpi-4-b" | ||
41 | +CONFIG_ENV_FAT_INTERFACE="mmc" | ||
42 | +CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" | ||
43 | +CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y | ||
44 | +CONFIG_DM_KEYBOARD=y | ||
45 | +CONFIG_DM_MMC=y | ||
46 | +CONFIG_MMC_SDHCI=y | ||
47 | +CONFIG_MMC_SDHCI_BCM2835=y | ||
48 | +CONFIG_PHYLIB=y | ||
49 | +CONFIG_DM_ETH=y | ||
50 | +CONFIG_PINCTRL=y | ||
51 | +# CONFIG_PINCTRL_GENERIC is not set | ||
52 | +# CONFIG_REQUIRE_SERIAL_CONSOLE is not set | ||
53 | +CONFIG_USB=y | ||
54 | +CONFIG_DM_USB=y | ||
55 | +CONFIG_USB_KEYBOARD=y | ||
56 | +CONFIG_USB_HOST_ETHER=y | ||
57 | +CONFIG_DM_VIDEO=y | ||
58 | +CONFIG_SYS_WHITE_ON_BLACK=y | ||
59 | +CONFIG_CONSOLE_SCROLL_LINES=10 | ||
60 | +CONFIG_PHYS_TO_BUS=y | ||
61 | +CONFIG_OF_LIBFDT_OVERLAY=y | ||
62 | diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig | ||
63 | new file mode 100644 | ||
64 | index 0000000000..b91b0869e5 | ||
65 | --- /dev/null | ||
66 | +++ b/configs/rpi_4_defconfig | ||
67 | @@ -0,0 +1,41 @@ | ||
68 | +CONFIG_ARM=y | ||
69 | +CONFIG_ARCH_BCM283X=y | ||
70 | +CONFIG_SYS_TEXT_BASE=0x00080000 | ||
71 | +CONFIG_TARGET_RPI_4=y | ||
72 | +CONFIG_SYS_MALLOC_F_LEN=0x2000 | ||
73 | +CONFIG_DISTRO_DEFAULTS=y | ||
74 | +CONFIG_NR_DRAM_BANKS=1 | ||
75 | +# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set | ||
76 | +CONFIG_OF_BOARD_SETUP=y | ||
77 | +CONFIG_MISC_INIT_R=y | ||
78 | +# CONFIG_DISPLAY_CPUINFO is not set | ||
79 | +# CONFIG_DISPLAY_BOARDINFO is not set | ||
80 | +CONFIG_SYS_PROMPT="U-Boot> " | ||
81 | +# CONFIG_CMD_FLASH is not set | ||
82 | +CONFIG_CMD_GPIO=y | ||
83 | +CONFIG_CMD_MMC=y | ||
84 | +CONFIG_CMD_USB=y | ||
85 | +CONFIG_CMD_FS_UUID=y | ||
86 | +CONFIG_OF_EMBED=y | ||
87 | +CONFIG_DEFAULT_DEVICE_TREE="bcm2838-rpi-4-b" | ||
88 | +CONFIG_ENV_FAT_INTERFACE="mmc" | ||
89 | +CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" | ||
90 | +CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y | ||
91 | +CONFIG_DM_KEYBOARD=y | ||
92 | +CONFIG_DM_MMC=y | ||
93 | +CONFIG_MMC_SDHCI=y | ||
94 | +CONFIG_MMC_SDHCI_BCM2835=y | ||
95 | +CONFIG_PHYLIB=y | ||
96 | +CONFIG_DM_ETH=y | ||
97 | +CONFIG_PINCTRL=y | ||
98 | +# CONFIG_PINCTRL_GENERIC is not set | ||
99 | +# CONFIG_REQUIRE_SERIAL_CONSOLE is not set | ||
100 | +CONFIG_USB=y | ||
101 | +CONFIG_DM_USB=y | ||
102 | +CONFIG_USB_KEYBOARD=y | ||
103 | +CONFIG_USB_HOST_ETHER=y | ||
104 | +CONFIG_DM_VIDEO=y | ||
105 | +CONFIG_SYS_WHITE_ON_BLACK=y | ||
106 | +CONFIG_CONSOLE_SCROLL_LINES=10 | ||
107 | +CONFIG_PHYS_TO_BUS=y | ||
108 | +CONFIG_OF_LIBFDT_OVERLAY=y | ||
109 | -- | ||
110 | 2.22.0 | ||
111 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0002-dts-Create-a-dtsi-for-BCM2835-6-7-specific-configura.patch b/recipes-bsp/u-boot/u-boot-2019.07/0002-dts-Create-a-dtsi-for-BCM2835-6-7-specific-configura.patch new file mode 100644 index 0000000..eda8b56 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0002-dts-Create-a-dtsi-for-BCM2835-6-7-specific-configura.patch | |||
@@ -0,0 +1,209 @@ | |||
1 | From 9ef5ac66aaa8e52d1ed3a6fd6390d7d8d91a537d Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@balena.io> | ||
3 | Date: Wed, 17 Jul 2019 15:32:34 +0100 | ||
4 | Subject: [PATCH 02/12] dts: Create a dtsi for BCM2835/6/7 specific | ||
5 | configuration | ||
6 | |||
7 | This follows a similar change in kernel[1]. The change moves | ||
8 | configuration that was not applicable for all bcm2835/6/7/8 out of | ||
9 | bcm283x.dtsi. The new file is bcm2835-common.dtsi and contains | ||
10 | conifguration that is common for bcm2835/6/7 (not bcm2838). | ||
11 | |||
12 | [1] https://github.com/raspberrypi/linux/commit/769a7330aa5bebcc98b1ff12ecb767db4e5c644d#diff-5979fba23a5bab2cf66dde09db872dfc | ||
13 | |||
14 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
15 | Upstream-status: Pending | ||
16 | --- | ||
17 | arch/arm/dts/bcm2835-common.dtsi | 53 ++++++++++++++++++++++++++++++++ | ||
18 | arch/arm/dts/bcm2835.dtsi | 1 + | ||
19 | arch/arm/dts/bcm2836.dtsi | 1 + | ||
20 | arch/arm/dts/bcm2837.dtsi | 1 + | ||
21 | arch/arm/dts/bcm283x.dtsi | 45 +-------------------------- | ||
22 | 5 files changed, 57 insertions(+), 44 deletions(-) | ||
23 | create mode 100644 arch/arm/dts/bcm2835-common.dtsi | ||
24 | |||
25 | diff --git a/arch/arm/dts/bcm2835-common.dtsi b/arch/arm/dts/bcm2835-common.dtsi | ||
26 | new file mode 100644 | ||
27 | index 0000000000..17771730a3 | ||
28 | --- /dev/null | ||
29 | +++ b/arch/arm/dts/bcm2835-common.dtsi | ||
30 | @@ -0,0 +1,53 @@ | ||
31 | +// SPDX-License-Identifier: GPL-2.0 | ||
32 | + | ||
33 | +/* This include file covers the common peripherals and configuration between | ||
34 | + * bcm2835, bcm2836 and bcm2837 implementations. | ||
35 | + */ | ||
36 | + | ||
37 | +/ { | ||
38 | + soc { | ||
39 | + timer@7e003000 { | ||
40 | + compatible = "brcm,bcm2835-system-timer"; | ||
41 | + reg = <0x7e003000 0x1000>; | ||
42 | + interrupts = <1 0>, <1 1>, <1 2>, <1 3>; | ||
43 | + /* This could be a reference to BCM2835_CLOCK_TIMER, | ||
44 | + * but we don't have the driver using the common clock | ||
45 | + * support yet. | ||
46 | + */ | ||
47 | + clock-frequency = <1000000>; | ||
48 | + }; | ||
49 | + | ||
50 | + intc: interrupt-controller@7e00b200 { | ||
51 | + compatible = "brcm,bcm2835-armctrl-ic"; | ||
52 | + reg = <0x7e00b200 0x200>; | ||
53 | + interrupt-controller; | ||
54 | + #interrupt-cells = <2>; | ||
55 | + }; | ||
56 | + | ||
57 | + thermal: thermal@7e212000 { | ||
58 | + compatible = "brcm,bcm2835-thermal"; | ||
59 | + reg = <0x7e212000 0x8>; | ||
60 | + clocks = <&clocks BCM2835_CLOCK_TSENS>; | ||
61 | + #thermal-sensor-cells = <0>; | ||
62 | + status = "disabled"; | ||
63 | + }; | ||
64 | + | ||
65 | + v3d: v3d@7ec00000 { | ||
66 | + compatible = "brcm,bcm2835-v3d"; | ||
67 | + reg = <0x7ec00000 0x1000>; | ||
68 | + interrupts = <1 10>; | ||
69 | + }; | ||
70 | + }; | ||
71 | +}; | ||
72 | + | ||
73 | +&gpio { | ||
74 | + i2c_slave_gpio18: i2c_slave_gpio18 { | ||
75 | + brcm,pins = <18 19 20 21>; | ||
76 | + brcm,function = <BCM2835_FSEL_ALT3>; | ||
77 | + }; | ||
78 | + | ||
79 | + jtag_gpio4: jtag_gpio4 { | ||
80 | + brcm,pins = <4 5 6 12 13>; | ||
81 | + brcm,function = <BCM2835_FSEL_ALT5>; | ||
82 | + }; | ||
83 | +}; | ||
84 | diff --git a/arch/arm/dts/bcm2835.dtsi b/arch/arm/dts/bcm2835.dtsi | ||
85 | index a5c3824c80..53bf4579cc 100644 | ||
86 | --- a/arch/arm/dts/bcm2835.dtsi | ||
87 | +++ b/arch/arm/dts/bcm2835.dtsi | ||
88 | @@ -1,5 +1,6 @@ | ||
89 | // SPDX-License-Identifier: GPL-2.0 | ||
90 | #include "bcm283x.dtsi" | ||
91 | +#include "bcm2835-common.dtsi" | ||
92 | |||
93 | / { | ||
94 | compatible = "brcm,bcm2835"; | ||
95 | diff --git a/arch/arm/dts/bcm2836.dtsi b/arch/arm/dts/bcm2836.dtsi | ||
96 | index c933e84138..82d6c4662a 100644 | ||
97 | --- a/arch/arm/dts/bcm2836.dtsi | ||
98 | +++ b/arch/arm/dts/bcm2836.dtsi | ||
99 | @@ -1,5 +1,6 @@ | ||
100 | // SPDX-License-Identifier: GPL-2.0 | ||
101 | #include "bcm283x.dtsi" | ||
102 | +#include "bcm2835-common.dtsi" | ||
103 | |||
104 | / { | ||
105 | compatible = "brcm,bcm2836"; | ||
106 | diff --git a/arch/arm/dts/bcm2837.dtsi b/arch/arm/dts/bcm2837.dtsi | ||
107 | index beb6c502da..9e95fee78e 100644 | ||
108 | --- a/arch/arm/dts/bcm2837.dtsi | ||
109 | +++ b/arch/arm/dts/bcm2837.dtsi | ||
110 | @@ -1,4 +1,5 @@ | ||
111 | #include "bcm283x.dtsi" | ||
112 | +#include "bcm2835-common.dtsi" | ||
113 | |||
114 | / { | ||
115 | compatible = "brcm,bcm2837"; | ||
116 | diff --git a/arch/arm/dts/bcm283x.dtsi b/arch/arm/dts/bcm283x.dtsi | ||
117 | index 9777644c6c..a024727e4d 100644 | ||
118 | --- a/arch/arm/dts/bcm283x.dtsi | ||
119 | +++ b/arch/arm/dts/bcm283x.dtsi | ||
120 | @@ -56,17 +56,6 @@ | ||
121 | #address-cells = <1>; | ||
122 | #size-cells = <1>; | ||
123 | |||
124 | - timer@7e003000 { | ||
125 | - compatible = "brcm,bcm2835-system-timer"; | ||
126 | - reg = <0x7e003000 0x1000>; | ||
127 | - interrupts = <1 0>, <1 1>, <1 2>, <1 3>; | ||
128 | - /* This could be a reference to BCM2835_CLOCK_TIMER, | ||
129 | - * but we don't have the driver using the common clock | ||
130 | - * support yet. | ||
131 | - */ | ||
132 | - clock-frequency = <1000000>; | ||
133 | - }; | ||
134 | - | ||
135 | txp@7e004000 { | ||
136 | compatible = "brcm,bcm2835-txp"; | ||
137 | reg = <0x7e004000 0x20>; | ||
138 | @@ -114,13 +103,6 @@ | ||
139 | brcm,dma-channel-mask = <0x7f35>; | ||
140 | }; | ||
141 | |||
142 | - intc: interrupt-controller@7e00b200 { | ||
143 | - compatible = "brcm,bcm2835-armctrl-ic"; | ||
144 | - reg = <0x7e00b200 0x200>; | ||
145 | - interrupt-controller; | ||
146 | - #interrupt-cells = <2>; | ||
147 | - }; | ||
148 | - | ||
149 | pm: watchdog@7e100000 { | ||
150 | compatible = "brcm,bcm2835-pm", "brcm,bcm2835-pm-wdt"; | ||
151 | #power-domain-cells = <1>; | ||
152 | @@ -184,8 +166,7 @@ | ||
153 | interrupt-controller; | ||
154 | #interrupt-cells = <2>; | ||
155 | |||
156 | - /* Defines pin muxing groups according to | ||
157 | - * BCM2835-ARM-Peripherals.pdf page 102. | ||
158 | + /* Defines common pin muxing groups | ||
159 | * | ||
160 | * While each pin can have its mux selected | ||
161 | * for various functions individually, some | ||
162 | @@ -263,15 +244,6 @@ | ||
163 | brcm,pins = <44 45>; | ||
164 | brcm,function = <BCM2835_FSEL_ALT2>; | ||
165 | }; | ||
166 | - i2c_slave_gpio18: i2c_slave_gpio18 { | ||
167 | - brcm,pins = <18 19 20 21>; | ||
168 | - brcm,function = <BCM2835_FSEL_ALT3>; | ||
169 | - }; | ||
170 | - | ||
171 | - jtag_gpio4: jtag_gpio4 { | ||
172 | - brcm,pins = <4 5 6 12 13>; | ||
173 | - brcm,function = <BCM2835_FSEL_ALT5>; | ||
174 | - }; | ||
175 | jtag_gpio22: jtag_gpio22 { | ||
176 | brcm,pins = <22 23 24 25 26 27>; | ||
177 | brcm,function = <BCM2835_FSEL_ALT4>; | ||
178 | @@ -488,14 +460,6 @@ | ||
179 | |||
180 | }; | ||
181 | |||
182 | - thermal: thermal@7e212000 { | ||
183 | - compatible = "brcm,bcm2835-thermal"; | ||
184 | - reg = <0x7e212000 0x8>; | ||
185 | - clocks = <&clocks BCM2835_CLOCK_TSENS>; | ||
186 | - #thermal-sensor-cells = <0>; | ||
187 | - status = "disabled"; | ||
188 | - }; | ||
189 | - | ||
190 | aux: aux@7e215000 { | ||
191 | compatible = "brcm,bcm2835-aux"; | ||
192 | #clock-cells = <1>; | ||
193 | @@ -635,13 +599,6 @@ | ||
194 | phy-names = "usb2-phy"; | ||
195 | }; | ||
196 | |||
197 | - v3d: v3d@7ec00000 { | ||
198 | - compatible = "brcm,bcm2835-v3d"; | ||
199 | - reg = <0x7ec00000 0x1000>; | ||
200 | - interrupts = <1 10>; | ||
201 | - power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>; | ||
202 | - }; | ||
203 | - | ||
204 | vc4: gpu { | ||
205 | compatible = "brcm,bcm2835-vc4"; | ||
206 | }; | ||
207 | -- | ||
208 | 2.22.0 | ||
209 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0003-dts-Add-initial-support-for-bcm2838.patch b/recipes-bsp/u-boot/u-boot-2019.07/0003-dts-Add-initial-support-for-bcm2838.patch new file mode 100644 index 0000000..b6b8ca7 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0003-dts-Add-initial-support-for-bcm2838.patch | |||
@@ -0,0 +1,333 @@ | |||
1 | From 9a6dca219480423f6c9dd5804e5890d434cc11b8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@balena.io> | ||
3 | Date: Wed, 17 Jul 2019 15:32:46 +0100 | ||
4 | Subject: [PATCH 03/12] dts: Add initial support for bcm2838 | ||
5 | |||
6 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
7 | Upstream-status: Pending | ||
8 | --- | ||
9 | arch/arm/dts/Makefile | 3 +- | ||
10 | arch/arm/dts/bcm2838-rpi-4-b.dts | 52 +++++++ | ||
11 | arch/arm/dts/bcm2838.dtsi | 237 +++++++++++++++++++++++++++++++ | ||
12 | 3 files changed, 291 insertions(+), 1 deletion(-) | ||
13 | create mode 100644 arch/arm/dts/bcm2838-rpi-4-b.dts | ||
14 | create mode 100644 arch/arm/dts/bcm2838.dtsi | ||
15 | |||
16 | diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile | ||
17 | index 20dbc2ff84..fdb55f7fde 100644 | ||
18 | --- a/arch/arm/dts/Makefile | ||
19 | +++ b/arch/arm/dts/Makefile | ||
20 | @@ -749,7 +749,8 @@ dtb-$(CONFIG_ARCH_BCM283X) += \ | ||
21 | bcm2837-rpi-3-a-plus.dtb \ | ||
22 | bcm2837-rpi-3-b.dtb \ | ||
23 | bcm2837-rpi-3-b-plus.dtb \ | ||
24 | - bcm2837-rpi-cm3-io3.dtb | ||
25 | + bcm2837-rpi-cm3-io3.dtb \ | ||
26 | + bcm2838-rpi-4-b.dtb | ||
27 | |||
28 | dtb-$(CONFIG_ARCH_BCM63158) += \ | ||
29 | bcm963158.dtb | ||
30 | diff --git a/arch/arm/dts/bcm2838-rpi-4-b.dts b/arch/arm/dts/bcm2838-rpi-4-b.dts | ||
31 | new file mode 100644 | ||
32 | index 0000000000..fa7fcfed9d | ||
33 | --- /dev/null | ||
34 | +++ b/arch/arm/dts/bcm2838-rpi-4-b.dts | ||
35 | @@ -0,0 +1,52 @@ | ||
36 | +/dts-v1/; | ||
37 | +#include "bcm2838.dtsi" | ||
38 | + | ||
39 | +/ { | ||
40 | + compatible = "raspberrypi,4-model-b","brcm,bcm2838","brcm,bcm2837"; | ||
41 | + model = "Raspberry Pi 4 Model B"; | ||
42 | + | ||
43 | + memory { | ||
44 | + reg = <0 0 0x0>; | ||
45 | + }; | ||
46 | + | ||
47 | + leds { | ||
48 | + act { | ||
49 | + gpios = <&gpio 47 0>; | ||
50 | + }; | ||
51 | + }; | ||
52 | +}; | ||
53 | + | ||
54 | +/* uart0 communicates with the BT module */ | ||
55 | +&uart0 { | ||
56 | + pinctrl-names = "default"; | ||
57 | + pinctrl-0 = <&uart0_gpio32 &gpclk2_gpio43>; | ||
58 | + status = "okay"; | ||
59 | +}; | ||
60 | + | ||
61 | +/* uart1 is mapped to the pin header */ | ||
62 | +&uart1 { | ||
63 | + pinctrl-names = "default"; | ||
64 | + pinctrl-0 = <&uart1_pins>; | ||
65 | + status = "okay"; | ||
66 | +}; | ||
67 | + | ||
68 | +&sdhci { | ||
69 | + status = "disabled"; | ||
70 | +}; | ||
71 | + | ||
72 | +&sdhost { | ||
73 | + status = "disabled"; | ||
74 | +}; | ||
75 | + | ||
76 | +&emmc2 { | ||
77 | + compatible = "brcm,bcm2711-emmc2"; | ||
78 | + status = "okay"; | ||
79 | +}; | ||
80 | + | ||
81 | +&gpio { | ||
82 | + uart1_pins: uart1_pins { | ||
83 | + brcm,pins; | ||
84 | + brcm,function; | ||
85 | + brcm,pull; | ||
86 | + }; | ||
87 | +}; | ||
88 | diff --git a/arch/arm/dts/bcm2838.dtsi b/arch/arm/dts/bcm2838.dtsi | ||
89 | new file mode 100644 | ||
90 | index 0000000000..19b2d7b905 | ||
91 | --- /dev/null | ||
92 | +++ b/arch/arm/dts/bcm2838.dtsi | ||
93 | @@ -0,0 +1,237 @@ | ||
94 | +#include "bcm283x.dtsi" | ||
95 | +#include <dt-bindings/interrupt-controller/arm-gic.h> | ||
96 | +#include <dt-bindings/power/raspberrypi-power.h> | ||
97 | + | ||
98 | +/ { | ||
99 | + compatible = "brcm,bcm2838"; | ||
100 | + | ||
101 | + #address-cells = <2>; | ||
102 | + #size-cells = <1>; | ||
103 | + | ||
104 | + interrupt-parent = <&gic>; | ||
105 | + | ||
106 | + soc { | ||
107 | + ranges = <0x7e000000 0x0 0xfe000000 0x01800000>, | ||
108 | + <0x7c000000 0x0 0xfc000000 0x02000000>, | ||
109 | + <0x40000000 0x0 0xff800000 0x00800000>; | ||
110 | + dma-ranges = <0xc0000000 0x0 0x00000000 0x3c000000>; | ||
111 | + | ||
112 | + gic: gic400@40041000 { | ||
113 | + interrupt-controller; | ||
114 | + #interrupt-cells = <3>; | ||
115 | + compatible = "arm,gic-400"; | ||
116 | + reg = <0x40041000 0x1000>, | ||
117 | + <0x40042000 0x2000>, | ||
118 | + <0x40044000 0x2000>, | ||
119 | + <0x40046000 0x2000>; | ||
120 | + }; | ||
121 | + | ||
122 | + thermal: thermal@7d5d2200 { | ||
123 | + compatible = "brcm,avs-tmon-bcm2838"; | ||
124 | + reg = <0x7d5d2200 0x2c>; | ||
125 | + interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>; | ||
126 | + interrupt-names = "tmon"; | ||
127 | + clocks = <&clocks BCM2835_CLOCK_TSENS>; | ||
128 | + #thermal-sensor-cells = <0>; | ||
129 | + status = "okay"; | ||
130 | + }; | ||
131 | + | ||
132 | + spi@7e204000 { | ||
133 | + reg = <0x7e204000 0x0200>; | ||
134 | + interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>; | ||
135 | + }; | ||
136 | + | ||
137 | + pixelvalve@7e206000 { | ||
138 | + interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; | ||
139 | + }; | ||
140 | + | ||
141 | + pixelvalve@7e207000 { | ||
142 | + interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>; | ||
143 | + }; | ||
144 | + | ||
145 | + hvs@7e400000 { | ||
146 | + interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; | ||
147 | + }; | ||
148 | + | ||
149 | + emmc2: emmc2@7e340000 { | ||
150 | + compatible = "brcm,bcm2711-emmc2"; | ||
151 | + status = "okay"; | ||
152 | + interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>; | ||
153 | + clocks = <&clocks BCM2838_CLOCK_EMMC2>; | ||
154 | + reg = <0x7e340000 0x100>; | ||
155 | + }; | ||
156 | + | ||
157 | + pixelvalve@7e807000 { | ||
158 | + interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>; | ||
159 | + }; | ||
160 | + | ||
161 | + }; | ||
162 | + | ||
163 | + arm-pmu { | ||
164 | + /* | ||
165 | + * N.B. the A72 PMU support only exists in arch/arm64, hence | ||
166 | + * the fallback to the A53 version. | ||
167 | + */ | ||
168 | + compatible = "arm,cortex-a72-pmu", "arm,cortex-a53-pmu"; | ||
169 | + interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>, | ||
170 | + <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>, | ||
171 | + <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, | ||
172 | + <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; | ||
173 | + }; | ||
174 | + | ||
175 | + timer { | ||
176 | + compatible = "arm,armv7-timer"; | ||
177 | + interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | | ||
178 | + IRQ_TYPE_LEVEL_LOW)>, | ||
179 | + <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | | ||
180 | + IRQ_TYPE_LEVEL_LOW)>, | ||
181 | + <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | | ||
182 | + IRQ_TYPE_LEVEL_LOW)>, | ||
183 | + <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | | ||
184 | + IRQ_TYPE_LEVEL_LOW)>; | ||
185 | + arm,cpu-registers-not-fw-configured; | ||
186 | + always-on; | ||
187 | + }; | ||
188 | + | ||
189 | + cpus: cpus { | ||
190 | + #address-cells = <1>; | ||
191 | + #size-cells = <0>; | ||
192 | + enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit | ||
193 | + | ||
194 | + cpu0: cpu@0 { | ||
195 | + device_type = "cpu"; | ||
196 | + compatible = "arm,cortex-a72"; | ||
197 | + reg = <0>; | ||
198 | + enable-method = "spin-table"; | ||
199 | + cpu-release-addr = <0x0 0x000000d8>; | ||
200 | + }; | ||
201 | + | ||
202 | + cpu1: cpu@1 { | ||
203 | + device_type = "cpu"; | ||
204 | + compatible = "arm,cortex-a72"; | ||
205 | + reg = <1>; | ||
206 | + enable-method = "spin-table"; | ||
207 | + cpu-release-addr = <0x0 0x000000e0>; | ||
208 | + }; | ||
209 | + | ||
210 | + cpu2: cpu@2 { | ||
211 | + device_type = "cpu"; | ||
212 | + compatible = "arm,cortex-a72"; | ||
213 | + reg = <2>; | ||
214 | + enable-method = "spin-table"; | ||
215 | + cpu-release-addr = <0x0 0x000000e8>; | ||
216 | + }; | ||
217 | + | ||
218 | + cpu3: cpu@3 { | ||
219 | + device_type = "cpu"; | ||
220 | + compatible = "arm,cortex-a72"; | ||
221 | + reg = <3>; | ||
222 | + enable-method = "spin-table"; | ||
223 | + cpu-release-addr = <0x0 0x000000f0>; | ||
224 | + }; | ||
225 | + }; | ||
226 | +}; | ||
227 | + | ||
228 | +&clk_osc { | ||
229 | + clock-frequency = <54000000>; | ||
230 | +}; | ||
231 | + | ||
232 | +&clocks { | ||
233 | + compatible = "brcm,bcm2838-cprman"; | ||
234 | +}; | ||
235 | + | ||
236 | +&cpu_thermal { | ||
237 | + coefficients = <(-487) 410040>; | ||
238 | +}; | ||
239 | + | ||
240 | +&dsi0 { | ||
241 | + interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; | ||
242 | +}; | ||
243 | + | ||
244 | +&dsi1 { | ||
245 | + interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; | ||
246 | +}; | ||
247 | + | ||
248 | +&gpio { | ||
249 | + compatible = "brcm,bcm2838-gpio", "brcm,bcm2835-gpio"; | ||
250 | + interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>, | ||
251 | + <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>, | ||
252 | + <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>, | ||
253 | + <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>; | ||
254 | +}; | ||
255 | + | ||
256 | +&vec { | ||
257 | + interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>; | ||
258 | +}; | ||
259 | + | ||
260 | +&usb { | ||
261 | + interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; | ||
262 | +}; | ||
263 | + | ||
264 | +&hdmi { | ||
265 | + interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>, | ||
266 | + <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>; | ||
267 | +}; | ||
268 | + | ||
269 | +&uart1 { | ||
270 | + interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>; | ||
271 | +}; | ||
272 | + | ||
273 | +&spi1 { | ||
274 | + interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>; | ||
275 | +}; | ||
276 | + | ||
277 | +&spi2 { | ||
278 | + interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>; | ||
279 | +}; | ||
280 | + | ||
281 | +&i2c0 { | ||
282 | + interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>; | ||
283 | +}; | ||
284 | + | ||
285 | +&i2c1 { | ||
286 | + interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>; | ||
287 | +}; | ||
288 | + | ||
289 | +&i2c2 { | ||
290 | + interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>; | ||
291 | +}; | ||
292 | + | ||
293 | +&mailbox { | ||
294 | + interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; | ||
295 | +}; | ||
296 | + | ||
297 | +&sdhost { | ||
298 | + interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; | ||
299 | +}; | ||
300 | + | ||
301 | +&uart0 { | ||
302 | + interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; | ||
303 | +}; | ||
304 | + | ||
305 | +&dma { | ||
306 | + reg = <0x7e007000 0xb00>; | ||
307 | + interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>, | ||
308 | + <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>, | ||
309 | + <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>, | ||
310 | + <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>, | ||
311 | + <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>, | ||
312 | + <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>, | ||
313 | + <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>, | ||
314 | + <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>, /* dmalite 7 */ | ||
315 | + <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>, /* dmalite 8 */ | ||
316 | + <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>, /* dmalite 9 */ | ||
317 | + <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>; /* dmalite 10 */ | ||
318 | + interrupt-names = "dma0", | ||
319 | + "dma1", | ||
320 | + "dma2", | ||
321 | + "dma3", | ||
322 | + "dma4", | ||
323 | + "dma5", | ||
324 | + "dma6", | ||
325 | + "dma7", | ||
326 | + "dma8", | ||
327 | + "dma9", | ||
328 | + "dma10"; | ||
329 | + brcm,dma-channel-mask = <0x07f5>; | ||
330 | +}; | ||
331 | -- | ||
332 | 2.22.0 | ||
333 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0004-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch b/recipes-bsp/u-boot/u-boot-2019.07/0004-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch new file mode 100644 index 0000000..ce2a664 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0004-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch | |||
@@ -0,0 +1,67 @@ | |||
1 | From a343e3755ff8b85f453800fe165624687e4d5879 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@balena.io> | ||
3 | Date: Wed, 17 Jul 2019 15:33:01 +0100 | ||
4 | Subject: [PATCH 04/12] arm: mach-bcm283x: Define configs for RaspberryPi 4 | ||
5 | |||
6 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
7 | Upstream-status: Pending | ||
8 | --- | ||
9 | arch/arm/mach-bcm283x/Kconfig | 35 +++++++++++++++++++++++++++++++++++ | ||
10 | 1 file changed, 35 insertions(+) | ||
11 | |||
12 | diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig | ||
13 | index 3eb5a9a897..d5069fe688 100644 | ||
14 | --- a/arch/arm/mach-bcm283x/Kconfig | ||
15 | +++ b/arch/arm/mach-bcm283x/Kconfig | ||
16 | @@ -26,6 +26,23 @@ config BCM2837_64B | ||
17 | select BCM2837 | ||
18 | select ARM64 | ||
19 | |||
20 | +config BCM2838 | ||
21 | + bool "Broadcom BCM2838 SoC support" | ||
22 | + depends on ARCH_BCM283X | ||
23 | + | ||
24 | +config BCM2838_32B | ||
25 | + bool "Broadcom BCM2838 SoC 32-bit support" | ||
26 | + depends on ARCH_BCM283X | ||
27 | + select BCM2838 | ||
28 | + select ARMV7_LPAE | ||
29 | + select CPU_V7A | ||
30 | + | ||
31 | +config BCM2838_64B | ||
32 | + bool "Broadcom BCM2838 SoC 64-bit support" | ||
33 | + depends on ARCH_BCM283X | ||
34 | + select BCM2838 | ||
35 | + select ARM64 | ||
36 | + | ||
37 | menu "Broadcom BCM283X family" | ||
38 | depends on ARCH_BCM283X | ||
39 | |||
40 | @@ -127,6 +144,24 @@ config TARGET_RPI_3 | ||
41 | This option creates a build targeting the ARMv8/AArch64 ISA. | ||
42 | select BCM2837_64B | ||
43 | |||
44 | +config TARGET_RPI_4 | ||
45 | + bool "Raspberry Pi 4 64-bit build" | ||
46 | + help | ||
47 | + Support for all BCM2838-based Raspberry Pi variants, such as | ||
48 | + the RPi 4 model B, in AArch64 (64-bit) mode. | ||
49 | + | ||
50 | + This option creates a build targeting the ARMv8/AArch64 ISA. | ||
51 | + select BCM2838_64B | ||
52 | + | ||
53 | +config TARGET_RPI_4_32B | ||
54 | + bool "Raspberry Pi 4 32-bit build" | ||
55 | + help | ||
56 | + Support for all BCM2838-based Raspberry Pi variants, such as | ||
57 | + the RPi 4 model B, in AArch32 (32-bit) mode. | ||
58 | + | ||
59 | + This option creates a build targeting the ARMv7/AArch32 ISA. | ||
60 | + select BCM2838_32B | ||
61 | + | ||
62 | endchoice | ||
63 | |||
64 | config SYS_BOARD | ||
65 | -- | ||
66 | 2.22.0 | ||
67 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0005-arm-mach-bcm283x-Define-mbox-address-for-BCM2838.patch b/recipes-bsp/u-boot/u-boot-2019.07/0005-arm-mach-bcm283x-Define-mbox-address-for-BCM2838.patch new file mode 100644 index 0000000..a7def93 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0005-arm-mach-bcm283x-Define-mbox-address-for-BCM2838.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 32546abed12ff4c9b8b1480b31e6306bec876218 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@balena.io> | ||
3 | Date: Wed, 17 Jul 2019 15:34:07 +0100 | ||
4 | Subject: [PATCH 05/12] arm: mach-bcm283x: Define mbox address for BCM2838 | ||
5 | |||
6 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
7 | Upstream-status: Pending | ||
8 | --- | ||
9 | arch/arm/mach-bcm283x/include/mach/mbox.h | 5 +++++ | ||
10 | 1 file changed, 5 insertions(+) | ||
11 | |||
12 | diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h | ||
13 | index e3a893e49c..2d711daaa8 100644 | ||
14 | --- a/arch/arm/mach-bcm283x/include/mach/mbox.h | ||
15 | +++ b/arch/arm/mach-bcm283x/include/mach/mbox.h | ||
16 | @@ -38,11 +38,16 @@ | ||
17 | /* Raw mailbox HW */ | ||
18 | |||
19 | #ifndef CONFIG_BCM2835 | ||
20 | +#ifdef CONFIG_BCM2838 | ||
21 | +#define BCM2835_MBOX_PHYSADDR 0xfe00b880 | ||
22 | +#else | ||
23 | #define BCM2835_MBOX_PHYSADDR 0x3f00b880 | ||
24 | +#endif | ||
25 | #else | ||
26 | #define BCM2835_MBOX_PHYSADDR 0x2000b880 | ||
27 | #endif | ||
28 | |||
29 | + | ||
30 | struct bcm2835_mbox_regs { | ||
31 | u32 read; | ||
32 | u32 rsvd0[5]; | ||
33 | -- | ||
34 | 2.22.0 | ||
35 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0006-rpi-Add-rpi_model-entry-for-RaspberryPi-4.patch b/recipes-bsp/u-boot/u-boot-2019.07/0006-rpi-Add-rpi_model-entry-for-RaspberryPi-4.patch new file mode 100644 index 0000000..b279d11 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0006-rpi-Add-rpi_model-entry-for-RaspberryPi-4.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 8a8e6c7364d41bbd3eb20dc7e4ec1c0a3e3b5259 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@balena.io> | ||
3 | Date: Wed, 17 Jul 2019 15:34:18 +0100 | ||
4 | Subject: [PATCH 06/12] rpi: Add rpi_model entry for RaspberryPi 4 | ||
5 | |||
6 | The Raspebrry Pi 4 uses the new revision code scheme as documented by | ||
7 | the foundation[1]. This change adds an entry for this board as well. | ||
8 | |||
9 | [1] https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md | ||
10 | |||
11 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
12 | Upstream-status: Pending | ||
13 | --- | ||
14 | board/raspberrypi/rpi/rpi.c | 5 +++++ | ||
15 | 1 file changed, 5 insertions(+) | ||
16 | |||
17 | diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c | ||
18 | index 617c892dde..6d6f1ef39a 100644 | ||
19 | --- a/board/raspberrypi/rpi/rpi.c | ||
20 | +++ b/board/raspberrypi/rpi/rpi.c | ||
21 | @@ -148,6 +148,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { | ||
22 | DTB_DIR "bcm2837-rpi-cm3.dtb", | ||
23 | false, | ||
24 | }, | ||
25 | + [0x11] = { | ||
26 | + "4 Model B", | ||
27 | + DTB_DIR "bcm2711-rpi-4-b.dtb", | ||
28 | + true, | ||
29 | + }, | ||
30 | }; | ||
31 | |||
32 | static const struct rpi_model rpi_models_old_scheme[] = { | ||
33 | -- | ||
34 | 2.22.0 | ||
35 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0007-dt-bindings-Define-BCM2838_CLOCK_EMMC2-needed-for-Ra.patch b/recipes-bsp/u-boot/u-boot-2019.07/0007-dt-bindings-Define-BCM2838_CLOCK_EMMC2-needed-for-Ra.patch new file mode 100644 index 0000000..597b492 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0007-dt-bindings-Define-BCM2838_CLOCK_EMMC2-needed-for-Ra.patch | |||
@@ -0,0 +1,27 @@ | |||
1 | From 8ba1934b184fcdb967c5046ddace112bf3be21f1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@balena.io> | ||
3 | Date: Wed, 17 Jul 2019 15:34:28 +0100 | ||
4 | Subject: [PATCH 07/12] dt-bindings: Define BCM2838_CLOCK_EMMC2 needed for | ||
5 | RaspberryPi 4 | ||
6 | |||
7 | On BCM2838 there is an additional clock. This clock was added in the | ||
8 | same bcm2835-cprman driver and is used by the emmc2 dt node. | ||
9 | |||
10 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
11 | Upstream-status: Pending | ||
12 | --- | ||
13 | include/dt-bindings/clock/bcm2835.h | 1 + | ||
14 | 1 file changed, 1 insertion(+) | ||
15 | |||
16 | diff --git a/include/dt-bindings/clock/bcm2835.h b/include/dt-bindings/clock/bcm2835.h | ||
17 | index 2cec01f968..b75031abb1 100644 | ||
18 | --- a/include/dt-bindings/clock/bcm2835.h | ||
19 | +++ b/include/dt-bindings/clock/bcm2835.h | ||
20 | @@ -58,3 +58,4 @@ | ||
21 | #define BCM2835_CLOCK_DSI1E 48 | ||
22 | #define BCM2835_CLOCK_DSI0P 49 | ||
23 | #define BCM2835_CLOCK_DSI1P 50 | ||
24 | +#define BCM2838_CLOCK_EMMC2 51 | ||
25 | -- | ||
26 | 2.22.0 | ||
27 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0008-arm-bcm283x-Include-definition-for-additional-emmc-c.patch b/recipes-bsp/u-boot/u-boot-2019.07/0008-arm-bcm283x-Include-definition-for-additional-emmc-c.patch new file mode 100644 index 0000000..546e786 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0008-arm-bcm283x-Include-definition-for-additional-emmc-c.patch | |||
@@ -0,0 +1,32 @@ | |||
1 | From cb85ecba76fde3c96007eae9eda58a083f177333 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@balena.io> | ||
3 | Date: Fri, 12 Jul 2019 11:26:10 +0100 | ||
4 | Subject: [PATCH 08/12] arm: bcm283x: Include definition for additional emmc | ||
5 | clock | ||
6 | |||
7 | This clock has a different mbox ID[1] so have this included in the | ||
8 | relevant header file. | ||
9 | |||
10 | [1] https://github.com/raspberrypi/firmware/issues/1179 | ||
11 | |||
12 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
13 | Upstream-status: Pending | ||
14 | --- | ||
15 | arch/arm/mach-bcm283x/include/mach/mbox.h | 1 + | ||
16 | 1 file changed, 1 insertion(+) | ||
17 | |||
18 | diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h | ||
19 | index 2d711daaa8..cad035e8cd 100644 | ||
20 | --- a/arch/arm/mach-bcm283x/include/mach/mbox.h | ||
21 | +++ b/arch/arm/mach-bcm283x/include/mach/mbox.h | ||
22 | @@ -239,6 +239,7 @@ struct bcm2835_mbox_tag_set_power_state { | ||
23 | #define BCM2835_MBOX_CLOCK_ID_SDRAM 8 | ||
24 | #define BCM2835_MBOX_CLOCK_ID_PIXEL 9 | ||
25 | #define BCM2835_MBOX_CLOCK_ID_PWM 10 | ||
26 | +#define BCM2835_MBOX_CLOCK_ID_EMMC2 12 | ||
27 | |||
28 | struct bcm2835_mbox_tag_get_clock_rate { | ||
29 | struct bcm2835_mbox_tag_hdr tag_hdr; | ||
30 | -- | ||
31 | 2.22.0 | ||
32 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0009-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch b/recipes-bsp/u-boot/u-boot-2019.07/0009-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch new file mode 100644 index 0000000..762cb7e --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0009-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch | |||
@@ -0,0 +1,53 @@ | |||
1 | From 8fd71dfaeab0ae350c8fa56b039eaafd577a1787 Mon Sep 17 00:00:00 2001 | ||
2 | From: Matthias Brugger <mbrugger@suse.com> | ||
3 | Date: Wed, 10 Jul 2019 13:24:36 +0200 | ||
4 | Subject: [PATCH 09/12] mmc: bcm2835_sdhci: Add support for bcm2711 device | ||
5 | |||
6 | The bcm2711 has two emmc controller. The difference is the clocks | ||
7 | they use. Add support for the second emmc contoller. | ||
8 | |||
9 | Signed-off-by: Matthias Brugger <mbrugger@suse.com> | ||
10 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
11 | Upstream-status: Pending | ||
12 | --- | ||
13 | drivers/mmc/bcm2835_sdhci.c | 12 ++++++++++-- | ||
14 | 1 file changed, 10 insertions(+), 2 deletions(-) | ||
15 | |||
16 | diff --git a/drivers/mmc/bcm2835_sdhci.c b/drivers/mmc/bcm2835_sdhci.c | ||
17 | index 08bddd410e..e68dec3be7 100644 | ||
18 | --- a/drivers/mmc/bcm2835_sdhci.c | ||
19 | +++ b/drivers/mmc/bcm2835_sdhci.c | ||
20 | @@ -178,12 +178,13 @@ static int bcm2835_sdhci_probe(struct udevice *dev) | ||
21 | fdt_addr_t base; | ||
22 | int emmc_freq; | ||
23 | int ret; | ||
24 | + int clock_id = (int)dev_get_driver_data(dev); | ||
25 | |||
26 | base = devfdt_get_addr(dev); | ||
27 | if (base == FDT_ADDR_T_NONE) | ||
28 | return -EINVAL; | ||
29 | |||
30 | - ret = bcm2835_get_mmc_clock(BCM2835_MBOX_CLOCK_ID_EMMC); | ||
31 | + ret = bcm2835_get_mmc_clock(clock_id); | ||
32 | if (ret < 0) { | ||
33 | debug("%s: Failed to set MMC clock (err=%d)\n", __func__, ret); | ||
34 | return ret; | ||
35 | @@ -228,7 +229,14 @@ static int bcm2835_sdhci_probe(struct udevice *dev) | ||
36 | } | ||
37 | |||
38 | static const struct udevice_id bcm2835_sdhci_match[] = { | ||
39 | - { .compatible = "brcm,bcm2835-sdhci" }, | ||
40 | + { | ||
41 | + .compatible = "brcm,bcm2835-sdhci", | ||
42 | + .data = BCM2835_MBOX_CLOCK_ID_EMMC | ||
43 | + }, | ||
44 | + { | ||
45 | + .compatible = "brcm,bcm2711-emmc2", | ||
46 | + .data = BCM2835_MBOX_CLOCK_ID_EMMC2 | ||
47 | + }, | ||
48 | { /* sentinel */ } | ||
49 | }; | ||
50 | |||
51 | -- | ||
52 | 2.22.0 | ||
53 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0010-arm-bcm283x-Define-device-base-addresses-for-bcm2835.patch b/recipes-bsp/u-boot/u-boot-2019.07/0010-arm-bcm283x-Define-device-base-addresses-for-bcm2835.patch new file mode 100644 index 0000000..bfba764 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0010-arm-bcm283x-Define-device-base-addresses-for-bcm2835.patch | |||
@@ -0,0 +1,64 @@ | |||
1 | From 1f7bbd8ee6f4781473d87f6194ad2f815b1c1a19 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@balena.io> | ||
3 | Date: Fri, 12 Jul 2019 11:38:11 +0100 | ||
4 | Subject: [PATCH 10/12] arm: bcm283x: Define device base addresses for bcm2835 | ||
5 | |||
6 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
7 | Upstream-status: Pending | ||
8 | --- | ||
9 | arch/arm/mach-bcm283x/include/mach/sdhci.h | 4 ++++ | ||
10 | arch/arm/mach-bcm283x/include/mach/timer.h | 4 ++++ | ||
11 | arch/arm/mach-bcm283x/include/mach/wdog.h | 4 ++++ | ||
12 | 3 files changed, 12 insertions(+) | ||
13 | |||
14 | diff --git a/arch/arm/mach-bcm283x/include/mach/sdhci.h b/arch/arm/mach-bcm283x/include/mach/sdhci.h | ||
15 | index 5cb6ec3340..262b016a1b 100644 | ||
16 | --- a/arch/arm/mach-bcm283x/include/mach/sdhci.h | ||
17 | +++ b/arch/arm/mach-bcm283x/include/mach/sdhci.h | ||
18 | @@ -7,7 +7,11 @@ | ||
19 | #define _BCM2835_SDHCI_H_ | ||
20 | |||
21 | #ifndef CONFIG_BCM2835 | ||
22 | +#ifdef CONFIG_BCM2838 | ||
23 | +#define BCM2835_SDHCI_BASE 0xfe300000 | ||
24 | +#else | ||
25 | #define BCM2835_SDHCI_BASE 0x3f300000 | ||
26 | +#endif | ||
27 | #else | ||
28 | #define BCM2835_SDHCI_BASE 0x20300000 | ||
29 | #endif | ||
30 | diff --git a/arch/arm/mach-bcm283x/include/mach/timer.h b/arch/arm/mach-bcm283x/include/mach/timer.h | ||
31 | index 56b0c356bb..dc3ed98879 100644 | ||
32 | --- a/arch/arm/mach-bcm283x/include/mach/timer.h | ||
33 | +++ b/arch/arm/mach-bcm283x/include/mach/timer.h | ||
34 | @@ -7,7 +7,11 @@ | ||
35 | #define _BCM2835_TIMER_H | ||
36 | |||
37 | #ifndef CONFIG_BCM2835 | ||
38 | +#ifdef CONFIG_BCM2838 | ||
39 | +#define BCM2835_TIMER_PHYSADDR 0xfe003000 | ||
40 | +#else | ||
41 | #define BCM2835_TIMER_PHYSADDR 0x3f003000 | ||
42 | +#endif | ||
43 | #else | ||
44 | #define BCM2835_TIMER_PHYSADDR 0x20003000 | ||
45 | #endif | ||
46 | diff --git a/arch/arm/mach-bcm283x/include/mach/wdog.h b/arch/arm/mach-bcm283x/include/mach/wdog.h | ||
47 | index 99c88e5df7..ef040f385d 100644 | ||
48 | --- a/arch/arm/mach-bcm283x/include/mach/wdog.h | ||
49 | +++ b/arch/arm/mach-bcm283x/include/mach/wdog.h | ||
50 | @@ -7,7 +7,11 @@ | ||
51 | #define _BCM2835_WDOG_H | ||
52 | |||
53 | #ifndef CONFIG_BCM2835 | ||
54 | +#ifdef CONFIG_BCM2838 | ||
55 | +#define BCM2835_WDOG_PHYSADDR 0xfe100000 | ||
56 | +#else | ||
57 | #define BCM2835_WDOG_PHYSADDR 0x3f100000 | ||
58 | +#endif | ||
59 | #else | ||
60 | #define BCM2835_WDOG_PHYSADDR 0x20100000 | ||
61 | #endif | ||
62 | -- | ||
63 | 2.22.0 | ||
64 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0011-rpi-Add-memory-map-for-bcm2838.patch b/recipes-bsp/u-boot/u-boot-2019.07/0011-rpi-Add-memory-map-for-bcm2838.patch new file mode 100644 index 0000000..b2d25d0 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0011-rpi-Add-memory-map-for-bcm2838.patch | |||
@@ -0,0 +1,59 @@ | |||
1 | From ab0137601cea84296f607da22d27f0bbf1265e1a Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@balena.io> | ||
3 | Date: Fri, 12 Jul 2019 14:27:31 +0100 | ||
4 | Subject: [PATCH 11/12] rpi: Add memory map for bcm2838 | ||
5 | |||
6 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
7 | Upstream-status: Pending | ||
8 | --- | ||
9 | board/raspberrypi/rpi/rpi.c | 27 ++++++++++++++++++++++++--- | ||
10 | 1 file changed, 24 insertions(+), 3 deletions(-) | ||
11 | |||
12 | diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c | ||
13 | index 6d6f1ef39a..1c4fae9166 100644 | ||
14 | --- a/board/raspberrypi/rpi/rpi.c | ||
15 | +++ b/board/raspberrypi/rpi/rpi.c | ||
16 | @@ -249,7 +249,8 @@ static uint32_t rev_type; | ||
17 | static const struct rpi_model *model; | ||
18 | |||
19 | #ifdef CONFIG_ARM64 | ||
20 | -static struct mm_region bcm2837_mem_map[] = { | ||
21 | +#ifndef CONFIG_BCM2838 | ||
22 | +static struct mm_region bcm283x_mem_map[] = { | ||
23 | { | ||
24 | .virt = 0x00000000UL, | ||
25 | .phys = 0x00000000UL, | ||
26 | @@ -268,8 +269,28 @@ static struct mm_region bcm2837_mem_map[] = { | ||
27 | 0, | ||
28 | } | ||
29 | }; | ||
30 | - | ||
31 | -struct mm_region *mem_map = bcm2837_mem_map; | ||
32 | +#else | ||
33 | +static struct mm_region bcm283x_mem_map[] = { | ||
34 | + { | ||
35 | + .virt = 0x00000000UL, | ||
36 | + .phys = 0x00000000UL, | ||
37 | + .size = 0xfe000000UL, | ||
38 | + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | | ||
39 | + PTE_BLOCK_INNER_SHARE | ||
40 | + }, { | ||
41 | + .virt = 0xfe000000UL, | ||
42 | + .phys = 0xfe000000UL, | ||
43 | + .size = 0x01800000UL, | ||
44 | + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | | ||
45 | + PTE_BLOCK_NON_SHARE | | ||
46 | + PTE_BLOCK_PXN | PTE_BLOCK_UXN | ||
47 | + }, { | ||
48 | + /* List terminator */ | ||
49 | + 0, | ||
50 | + } | ||
51 | +}; | ||
52 | +#endif | ||
53 | +struct mm_region *mem_map = bcm283x_mem_map; | ||
54 | #endif | ||
55 | |||
56 | int dram_init(void) | ||
57 | -- | ||
58 | 2.22.0 | ||
59 | |||
diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0012-bcm283x-mbox-Correctly-wait-for-space-to-send.patch b/recipes-bsp/u-boot/u-boot-2019.07/0012-bcm283x-mbox-Correctly-wait-for-space-to-send.patch new file mode 100644 index 0000000..47d443b --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0012-bcm283x-mbox-Correctly-wait-for-space-to-send.patch | |||
@@ -0,0 +1,68 @@ | |||
1 | From 29f48584f6c4b40124396c77547e34febc015a36 Mon Sep 17 00:00:00 2001 | ||
2 | From: Fabian Vogt <fvogt@suse.com> | ||
3 | Date: Fri, 28 Jun 2019 14:25:53 +0200 | ||
4 | Subject: [PATCH 12/12] bcm283x mbox: Correctly wait for space to send | ||
5 | |||
6 | For sending, the second mailbox is used, but previously the status register of | ||
7 | the first one was read. | ||
8 | |||
9 | Signed-off-by: Andrei Gherzan <andrei@balena.io> | ||
10 | Upstream-status: Submitted [https://lists.denx.de/pipermail/u-boot/2019-July/376774.html] | ||
11 | --- | ||
12 | arch/arm/mach-bcm283x/include/mach/mbox.h | 7 +++++-- | ||
13 | arch/arm/mach-bcm283x/mbox.c | 6 +++--- | ||
14 | 2 files changed, 8 insertions(+), 5 deletions(-) | ||
15 | |||
16 | diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h | ||
17 | index cad035e8cd..cd78966150 100644 | ||
18 | --- a/arch/arm/mach-bcm283x/include/mach/mbox.h | ||
19 | +++ b/arch/arm/mach-bcm283x/include/mach/mbox.h | ||
20 | @@ -51,9 +51,12 @@ | ||
21 | struct bcm2835_mbox_regs { | ||
22 | u32 read; | ||
23 | u32 rsvd0[5]; | ||
24 | - u32 status; | ||
25 | - u32 config; | ||
26 | + u32 status_r; | ||
27 | + u32 config_r; | ||
28 | u32 write; | ||
29 | + u32 rsvd1[5]; | ||
30 | + u32 status_w; | ||
31 | + u32 config_w; | ||
32 | }; | ||
33 | |||
34 | #define BCM2835_MBOX_STATUS_WR_FULL 0x80000000 | ||
35 | diff --git a/arch/arm/mach-bcm283x/mbox.c b/arch/arm/mach-bcm283x/mbox.c | ||
36 | index 1642ebd103..f7483bf423 100644 | ||
37 | --- a/arch/arm/mach-bcm283x/mbox.c | ||
38 | +++ b/arch/arm/mach-bcm283x/mbox.c | ||
39 | @@ -27,7 +27,7 @@ int bcm2835_mbox_call_raw(u32 chan, u32 send, u32 *recv) | ||
40 | /* Drain any stale responses */ | ||
41 | |||
42 | for (;;) { | ||
43 | - val = readl(®s->status); | ||
44 | + val = readl(®s->status_r); | ||
45 | if (val & BCM2835_MBOX_STATUS_RD_EMPTY) | ||
46 | break; | ||
47 | if (get_timer(0) >= endtime) { | ||
48 | @@ -40,7 +40,7 @@ int bcm2835_mbox_call_raw(u32 chan, u32 send, u32 *recv) | ||
49 | /* Wait for space to send */ | ||
50 | |||
51 | for (;;) { | ||
52 | - val = readl(®s->status); | ||
53 | + val = readl(®s->status_w); | ||
54 | if (!(val & BCM2835_MBOX_STATUS_WR_FULL)) | ||
55 | break; | ||
56 | if (get_timer(0) >= endtime) { | ||
57 | @@ -58,7 +58,7 @@ int bcm2835_mbox_call_raw(u32 chan, u32 send, u32 *recv) | ||
58 | /* Wait for the response */ | ||
59 | |||
60 | for (;;) { | ||
61 | - val = readl(®s->status); | ||
62 | + val = readl(®s->status_r); | ||
63 | if (!(val & BCM2835_MBOX_STATUS_RD_EMPTY)) | ||
64 | break; | ||
65 | if (get_timer(0) >= endtime) { | ||
66 | -- | ||
67 | 2.22.0 | ||
68 | |||
diff --git a/recipes-bsp/u-boot/u-boot_2019.07.bbappend b/recipes-bsp/u-boot/u-boot_2019.07.bbappend index 6dfcc2c..f39db10 100644 --- a/recipes-bsp/u-boot/u-boot_2019.07.bbappend +++ b/recipes-bsp/u-boot/u-boot_2019.07.bbappend | |||
@@ -1,4 +1,17 @@ | |||
1 | SRC_URI_raspberrypi4 = "git://github.com/balena-os/u-boot;branch=ag/rpi4" | 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" |
2 | SRCREV_raspberrypi4 = "62b6e39a53c56a9085aeab1b47b5cc6020fcdb6f" | 2 | UBOOT_RPI4_SUPPORT_PATCHES = " \ |
3 | SRC_URI_raspberrypi4-64 = "git://github.com/balena-os/u-boot;branch=ag/rpi4" | 3 | file://0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch \ |
4 | SRCREV_raspberrypi4-64 = "62b6e39a53c56a9085aeab1b47b5cc6020fcdb6f" | 4 | file://0002-dts-Create-a-dtsi-for-BCM2835-6-7-specific-configura.patch \ |
5 | file://0003-dts-Add-initial-support-for-bcm2838.patch \ | ||
6 | file://0004-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch \ | ||
7 | file://0005-arm-mach-bcm283x-Define-mbox-address-for-BCM2838.patch \ | ||
8 | file://0006-rpi-Add-rpi_model-entry-for-RaspberryPi-4.patch \ | ||
9 | file://0007-dt-bindings-Define-BCM2838_CLOCK_EMMC2-needed-for-Ra.patch \ | ||
10 | file://0008-arm-bcm283x-Include-definition-for-additional-emmc-c.patch \ | ||
11 | file://0009-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch \ | ||
12 | file://0010-arm-bcm283x-Define-device-base-addresses-for-bcm2835.patch \ | ||
13 | file://0011-rpi-Add-memory-map-for-bcm2838.patch \ | ||
14 | file://0012-bcm283x-mbox-Correctly-wait-for-space-to-send.patch \ | ||
15 | " | ||
16 | |||
17 | SRC_URI_append_raspberrypi4 = "${UBOOT_RPI4_SUPPORT_PATCHES}" | ||