diff mbox

[U-Boot,v2,1/1] add support for Raspberry Pi Zero W

Message ID 1501598865-4281-1-git-send-email-dessel.k@gmail.com
State Superseded
Delegated to: Tom Rini
Headers show

Commit Message

Dmitry Korunov Aug. 1, 2017, 2:47 p.m. UTC
The Raspberry Pi Zero W extends the Pi Zero family and it's also
based on a BCM2835 SoC. Like the Pi Zero, it has 512MB RAM,
Mini HDMI and USB On-The-Go ports. Both Pi's hasn't got Ethernet,
but Pi Zero W has built in wireless LAN 802.11 b/g/n.

Signed-off-by: Dmitry Korunov <dessel.k@gmail.com>
---
Changes for v2:
   - removed surplus spaces
   - added the board description

 arch/arm/dts/bcm2835-rpi-zero-w.dts    | 33 +++++++++++++++++++++++++++++++++
 arch/arm/dts/bcm283x-rpi-usb-host.dtsi |  3 +++
 arch/arm/mach-bcm283x/Kconfig          | 16 ++++++++++++++++
 board/raspberrypi/rpi/rpi.c            |  5 +++++
 configs/rpi_0_w_defconfig              | 28 ++++++++++++++++++++++++++++
 include/configs/rpi.h                  |  2 +-
 6 files changed, 86 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/dts/bcm2835-rpi-zero-w.dts
 create mode 100644 arch/arm/dts/bcm283x-rpi-usb-host.dtsi
 create mode 100644 configs/rpi_0_w_defconfig

Comments

Tom Rini Aug. 3, 2017, 12:48 a.m. UTC | #1
On Tue, Aug 01, 2017 at 06:47:45PM +0400, Dmitry Korunov wrote:

> The Raspberry Pi Zero W extends the Pi Zero family and it's also
> based on a BCM2835 SoC. Like the Pi Zero, it has 512MB RAM,
> Mini HDMI and USB On-The-Go ports. Both Pi's hasn't got Ethernet,
> but Pi Zero W has built in wireless LAN 802.11 b/g/n.
> 
> Signed-off-by: Dmitry Korunov <dessel.k@gmail.com>

Reviewed-by: Tom Rini <trini@konsulko.com>
Andreas Färber Nov. 25, 2017, 3:12 p.m. UTC | #2
Am 01.08.2017 um 16:47 schrieb Dmitry Korunov:
> The Raspberry Pi Zero W extends the Pi Zero family and it's also
> based on a BCM2835 SoC. Like the Pi Zero, it has 512MB RAM,
> Mini HDMI and USB On-The-Go ports. Both Pi's hasn't got Ethernet,
> but Pi Zero W has built in wireless LAN 802.11 b/g/n.
> 
> Signed-off-by: Dmitry Korunov <dessel.k@gmail.com>
> ---
> Changes for v2:
>    - removed surplus spaces
>    - added the board description
> 
>  arch/arm/dts/bcm2835-rpi-zero-w.dts    | 33 +++++++++++++++++++++++++++++++++
>  arch/arm/dts/bcm283x-rpi-usb-host.dtsi |  3 +++
>  arch/arm/mach-bcm283x/Kconfig          | 16 ++++++++++++++++
>  board/raspberrypi/rpi/rpi.c            |  5 +++++
>  configs/rpi_0_w_defconfig              | 28 ++++++++++++++++++++++++++++
>  include/configs/rpi.h                  |  2 +-
>  6 files changed, 86 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/dts/bcm2835-rpi-zero-w.dts

>  create mode 100644 arch/arm/dts/bcm283x-rpi-usb-host.dtsi

This file is already present in the meantime (but applies with --3way).

>  create mode 100644 configs/rpi_0_w_defconfig
> 
> diff --git a/arch/arm/dts/bcm2835-rpi-zero-w.dts b/arch/arm/dts/bcm2835-rpi-zero-w.dts
> new file mode 100644
> index 0000000..067cb31
> --- /dev/null
> +++ b/arch/arm/dts/bcm2835-rpi-zero-w.dts
> @@ -0,0 +1,33 @@
> +/dts-v1/;
> +#include "bcm2835.dtsi"
> +#include "bcm2835-rpi.dtsi"
> +#include "bcm283x-rpi-usb-host.dtsi"
> +
> +/ {
> +	compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
> +	model = "Raspberry Pi Zero W";
> +
> +	leds {
> +		act {
> +			gpios = <&gpio 47 0>;
> +		};
> +	};
> +};
> +
> +&gpio {
> +	pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;

  DTC     arch/arm/dts/bcm2835-rpi-zero-w.dtb
arch/arm/dts/bcm2835-rpi-zero-w.dtb: ERROR (phandle_references):
Reference to non-existent node or label "alt3"

ERROR: Input tree has errors, aborting (use -f to force output)

If I comment out alt3, it builds and boots okay. How to fix properly?

> +
> +	/* I2S interface */
> +	i2s_alt0: i2s_alt0 {
> +		brcm,pins = <18 19 20 21>;
> +		brcm,function = <BCM2835_FSEL_ALT0>;
> +	};
> +};
> +
> +&uart1 {

The v4.14 .dts file does not have this and does not seem to work. Does
this need to go into a -uboot.dtsi file instead or do more files need a
refresh?

Regards,
Andreas

> +	status = "okay";
> +};
> +
> +&hdmi {
> +	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
> +};
[snip]
diff mbox

Patch

diff --git a/arch/arm/dts/bcm2835-rpi-zero-w.dts b/arch/arm/dts/bcm2835-rpi-zero-w.dts
new file mode 100644
index 0000000..067cb31
--- /dev/null
+++ b/arch/arm/dts/bcm2835-rpi-zero-w.dts
@@ -0,0 +1,33 @@ 
+/dts-v1/;
+#include "bcm2835.dtsi"
+#include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
+
+/ {
+	compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
+	model = "Raspberry Pi Zero W";
+
+	leds {
+		act {
+			gpios = <&gpio 47 0>;
+		};
+	};
+};
+
+&gpio {
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
+
+	/* I2S interface */
+	i2s_alt0: i2s_alt0 {
+		brcm,pins = <18 19 20 21>;
+		brcm,function = <BCM2835_FSEL_ALT0>;
+	};
+};
+
+&uart1 {
+	status = "okay";
+};
+
+&hdmi {
+	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+};
diff --git a/arch/arm/dts/bcm283x-rpi-usb-host.dtsi b/arch/arm/dts/bcm283x-rpi-usb-host.dtsi
new file mode 100644
index 0000000..73f4ece
--- /dev/null
+++ b/arch/arm/dts/bcm283x-rpi-usb-host.dtsi
@@ -0,0 +1,3 @@ 
+&usb {
+	dr_mode = "host";
+};
diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig
index 69f7a46..a78239d 100644
--- a/arch/arm/mach-bcm283x/Kconfig
+++ b/arch/arm/mach-bcm283x/Kconfig
@@ -44,6 +44,22 @@  config TARGET_RPI
 	  This option creates a build targetting the ARM1176 ISA.
 	select BCM2835
 
+config TARGET_RPI_0_W
+	bool "Raspberry Pi Zero W"
+	help
+	  Support for all ARM1176-/BCM2835-based Raspberry Pi variants, such as
+	  the RPi Zero model W.
+
+	  This option assumes the VideoCore firmware is configured to use the
+	  mini UART (rather than PL011) for the serial console. This is the
+	  default on the RPi Zero W. To enable the UART console, the following
+	  non-default option must be present in config.txt: enable_uart=1.
+	  This is required for U-Boot to operate correctly, even if you only
+	  care about the HDMI/usbkbd console.
+
+	  This option creates a build targetting the ARMv7/AArch32 ISA.
+	select BCM2835
+
 config TARGET_RPI_2
 	bool "Raspberry Pi 2"
 	help
diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
index d3c6ba5..63998d7 100644
--- a/board/raspberrypi/rpi/rpi.c
+++ b/board/raspberrypi/rpi/rpi.c
@@ -105,6 +105,11 @@  static const struct rpi_model rpi_models_new_scheme[] = {
 		DTB_DIR "bcm2835-rpi-zero.dtb",
 		false,
 	},
+	[0xC] = {
+		"Zero W",
+		DTB_DIR "bcm2835-rpi-zero-w.dtb",
+		false,
+	},
 };
 
 static const struct rpi_model rpi_models_old_scheme[] = {
diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig
new file mode 100644
index 0000000..092f378
--- /dev/null
+++ b/configs/rpi_0_w_defconfig
@@ -0,0 +1,28 @@ 
+CONFIG_ARM=y
+CONFIG_ARCH_BCM283X=y
+CONFIG_TARGET_RPI_0_W=y
+CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-zero-w"
+CONFIG_DISTRO_DEFAULTS=y
+CONFIG_OF_BOARD_SETUP=y
+# CONFIG_DISPLAY_CPUINFO is not set
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_SYS_PROMPT="U-Boot> "
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_FPGA is not set
+CONFIG_CMD_GPIO=y
+CONFIG_DM_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_BCM2835=y
+CONFIG_DM_ETH=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_KEYBOARD=y
+CONFIG_DM_VIDEO=y
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_CONSOLE_SCROLL_LINES=10
+CONFIG_PHYS_TO_BUS=y
+CONFIG_OF_LIBFDT_OVERLAY=y
diff --git a/include/configs/rpi.h b/include/configs/rpi.h
index c545f99..46295c7 100644
--- a/include/configs/rpi.h
+++ b/include/configs/rpi.h
@@ -79,7 +79,7 @@ 
 #endif
 
 /* Console UART */
-#ifdef CONFIG_BCM2837
+#if defined (CONFIG_BCM2837) || defined(CONFIG_TARGET_RPI_0_W)
 #define CONFIG_BCM283X_MU_SERIAL
 #else
 #define CONFIG_PL01X_SERIAL