diff mbox

[v2,1/1] board/orangepi: add basic support for orangepi-zero board

Message ID 20170524215033.16342-1-geomatsi@gmail.com
State Accepted
Commit e3c1c6e41e65d3d96677a9c989e4bed32f758da0
Headers show

Commit Message

Sergey Matyukevich May 24, 2017, 9:50 p.m. UTC
This patch adds basic support for orangepi-zero board.
Board support package includes the following components:

- mainline kernel v4.11
- mainline u-boot v2017.03
- extra kernel config options: spidev, spi nor flash, wifi
- dts patches to enable SPI NOR and spidev

More details about this board are available here:
- http://linux-sunxi.org/Orange_Pi_Zero

Note that at the moment networking is not supported right out of the box.
Ethernet submission to mainline kernel is a work in progress, see the
latest dwmac-sun8i branches at https://github.com/montjoie/linux

On-board SDIO WiFi chip XR819 is supported by off-the-tree wireless
driver available at https://github.com/fifteenhex/xradio

Changes from v1:

* Send patch using proper subject
* Update xr819 kernel dts patch: add compatible property

Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
---
 board/orangepi/orangepi-zero/boot.cmd              |  8 +++++
 board/orangepi/orangepi-zero/genimage.cfg          | 36 +++++++++++++++++++
 board/orangepi/orangepi-zero/linux-extras.config   | 17 +++++++++
 ...orange-pi-zero-interrupt-triggering-xr819.patch | 35 ++++++++++++++++++
 ...002-ARM-dts-orange-pi-zero-enable-spi-nor.patch | 42 ++++++++++++++++++++++
 ...0003-ARM-dts-orange-pi-zero-enable-spidev.patch | 42 ++++++++++++++++++++++
 board/orangepi/orangepi-zero/post-build.sh         |  1 +
 board/orangepi/orangepi-zero/post-image.sh         |  1 +
 board/orangepi/orangepi-zero/readme.txt            | 29 +++++++++++++++
 configs/orangepi_zero_defconfig                    | 42 ++++++++++++++++++++++
 10 files changed, 253 insertions(+)
 create mode 100644 board/orangepi/orangepi-zero/boot.cmd
 create mode 100644 board/orangepi/orangepi-zero/genimage.cfg
 create mode 100644 board/orangepi/orangepi-zero/linux-extras.config
 create mode 100644 board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch
 create mode 100644 board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch
 create mode 100644 board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch
 create mode 120000 board/orangepi/orangepi-zero/post-build.sh
 create mode 120000 board/orangepi/orangepi-zero/post-image.sh
 create mode 100644 board/orangepi/orangepi-zero/readme.txt
 create mode 100644 configs/orangepi_zero_defconfig

Comments

Peter Korsgaard June 8, 2017, 7:23 p.m. UTC | #1
>>>>> "Sergey" == Sergey Matyukevich <geomatsi@gmail.com> writes:

 > This patch adds basic support for orangepi-zero board.
 > Board support package includes the following components:

 > - mainline kernel v4.11
 > - mainline u-boot v2017.03
 > - extra kernel config options: spidev, spi nor flash, wifi
 > - dts patches to enable SPI NOR and spidev

 > More details about this board are available here:
 > - http://linux-sunxi.org/Orange_Pi_Zero

 > Note that at the moment networking is not supported right out of the box.
 > Ethernet submission to mainline kernel is a work in progress, see the
 > latest dwmac-sun8i branches at https://github.com/montjoie/linux

 > On-board SDIO WiFi chip XR819 is supported by off-the-tree wireless
 > driver available at https://github.com/fifteenhex/xradio

Any plans for submitting a package for that?

 > +++ b/board/orangepi/orangepi-zero/genimage.cfg
 > @@ -0,0 +1,36 @@
 > +# Minimal SD card image for the OrangePi PC

Typo: s/PC/Zero/

> +++ b/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch
 > @@ -0,0 +1,42 @@
 > +From 068c3baff3048a3db4ef2518ff917ce749cd8169 Mon Sep 17 00:00:00 2001
 > +From: Sergey Matyukevich <geomatsi@gmail.com>
 > +Date: Sat, 20 May 2017 11:24:26 +0300
 > +Subject: [PATCH 2/3] ARM: dts: orange-pi-zero: enable SPI NOR

Please drop the 2/3, they tend to get out of date.

> +
 > +Enable SPI NOR on orange-pi-zero board.
 > +
 > +For more information see:
 > +- http://linux-sunxi.org/Orange_Pi_Zero#SPI_NOR_flash
 > +
 > +Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>

It would be nicer to add the v2 version that got merged, but oh well.

Committed with the typo fixed, thanks.
Sergey Matyukevich June 9, 2017, 2:38 p.m. UTC | #2
>  > On-board SDIO WiFi chip XR819 is supported by off-the-tree wireless
>  > driver available at https://github.com/fifteenhex/xradio
> 
> Any plans for submitting a package for that?

It doesn't look like xradio driver or its flavors are anywhere on its way to
mainline kernel. So yes, I plan to add this package to simplify the use of
zero board right out of the box.

Meanwhile I have some doubts about supplementary firmware package.
IIUC normally xr819 firmware is extracted from vendor's SDK.
Extracted firmware can be obtained e.g. from Armbian project.
Would it be alright to point at Armbian github in firmware package ?

> > +++ b/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch
>  > @@ -0,0 +1,42 @@
>  > +From 068c3baff3048a3db4ef2518ff917ce749cd8169 Mon Sep 17 00:00:00 2001
>  > +From: Sergey Matyukevich <geomatsi@gmail.com>
>  > +Date: Sat, 20 May 2017 11:24:26 +0300
>  > +Subject: [PATCH 2/3] ARM: dts: orange-pi-zero: enable SPI NOR
> 
> Please drop the 2/3, they tend to get out of date.

Do you mean all the patch indices in Subjects ?

> > +
>  > +Enable SPI NOR on orange-pi-zero board.
>  > +
>  > +For more information see:
>  > +- http://linux-sunxi.org/Orange_Pi_Zero#SPI_NOR_flash
>  > +
>  > +Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
> 
> It would be nicer to add the v2 version that got merged, but oh well.
> 
> Committed with the typo fixed, thanks.

Thanks !

Regards,
Sergey
diff mbox

Patch

diff --git a/board/orangepi/orangepi-zero/boot.cmd b/board/orangepi/orangepi-zero/boot.cmd
new file mode 100644
index 000000000..44f0885ff
--- /dev/null
+++ b/board/orangepi/orangepi-zero/boot.cmd
@@ -0,0 +1,8 @@ 
+setenv fdt_high ffffffff
+
+setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
+
+fatload mmc 0 $kernel_addr_r zImage
+fatload mmc 0 $fdt_addr_r sun8i-h2-plus-orangepi-zero.dtb
+
+bootz $kernel_addr_r - $fdt_addr_r
diff --git a/board/orangepi/orangepi-zero/genimage.cfg b/board/orangepi/orangepi-zero/genimage.cfg
new file mode 100644
index 000000000..bc8601cbb
--- /dev/null
+++ b/board/orangepi/orangepi-zero/genimage.cfg
@@ -0,0 +1,36 @@ 
+# Minimal SD card image for the OrangePi PC
+#
+image boot.vfat {
+	vfat {
+		files = {
+			"zImage",
+			"sun8i-h2-plus-orangepi-zero.dtb",
+			"boot.scr"
+		}
+	}
+	size = 10M
+}
+
+image sdcard.img {
+	hdimage {
+	}
+
+	partition u-boot {
+		in-partition-table = "no"
+		image = "u-boot-sunxi-with-spl.bin"
+		offset = 8192
+		size = 1040384 # 1MB - 8192
+	}
+
+	partition boot {
+		partition-type = 0xC
+		bootable = "true"
+		image = "boot.vfat"
+	}
+
+	partition rootfs {
+		partition-type = 0x83
+		image = "rootfs.ext4"
+		size = 512M
+	}
+}
diff --git a/board/orangepi/orangepi-zero/linux-extras.config b/board/orangepi/orangepi-zero/linux-extras.config
new file mode 100644
index 000000000..fe00af5ef
--- /dev/null
+++ b/board/orangepi/orangepi-zero/linux-extras.config
@@ -0,0 +1,17 @@ 
+# spidev
+CONFIG_SPI_SPIDEV=y
+
+# spi nor
+CONFIG_MTD=y
+CONFIG_MTD_OF_PARTS=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
+
+# wireless core
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=y
+CONFIG_MAC80211=y
+CONFIG_CFG80211_WEXT=y
+
+# wireless drivers
+CONFIG_WLAN=y
diff --git a/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch b/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch
new file mode 100644
index 000000000..146d23d1a
--- /dev/null
+++ b/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch
@@ -0,0 +1,35 @@ 
+From 321faaf4b78d46a0c77782c1798856746f0619e9 Mon Sep 17 00:00:00 2001
+From: Sergey Matyukevich <geomatsi@gmail.com>
+Date: Fri, 19 May 2017 23:39:48 +0300
+Subject: [PATCH 1/3] ARM: dts: orange-pi-zero: specify XR819 WiFi chip
+ interrupts
+
+The orange-pi-zero board has Allwinner XR819 SDIO wifi chip. The board
+dts file provides a node enabling mmc1 controller. Together with an
+out-of-tree driver https://github.com/fifteenhex/xradio this node
+enables using the wifi chip.
+
+This commit specifies XR819 interrupt configuration for the driver.
+
+Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
+---
+ arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
+index b7ca916d871d..4e1a9050c6b4 100644
+--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
+@@ -125,6 +125,9 @@
+ 	 */
+ 	xr819: sdio_wifi@1 {
+ 		reg = <1>;
++		compatible = "xradio,xr819";
++		interrupt-parent = <&pio>;
++		interrupts = <6 10 IRQ_TYPE_EDGE_RISING>;
+ 	};
+ };
+ 
+-- 
+2.11.0
+
diff --git a/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch b/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch
new file mode 100644
index 000000000..fc24e7b8a
--- /dev/null
+++ b/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch
@@ -0,0 +1,42 @@ 
+From 068c3baff3048a3db4ef2518ff917ce749cd8169 Mon Sep 17 00:00:00 2001
+From: Sergey Matyukevich <geomatsi@gmail.com>
+Date: Sat, 20 May 2017 11:24:26 +0300
+Subject: [PATCH 2/3] ARM: dts: orange-pi-zero: enable SPI NOR
+
+Enable SPI NOR on orange-pi-zero board.
+
+For more information see:
+- http://linux-sunxi.org/Orange_Pi_Zero#SPI_NOR_flash
+
+Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
+---
+ arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
+index 4e1a9050c6b4..cdf19821b1f3 100644
+--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
+@@ -161,3 +161,19 @@
+ 	/* USB VBUS is always on */
+ 	status = "okay";
+ };
++
++&spi0 {
++	status = "okay";
++
++	flash@0 {
++		#address-cells = <1>;
++		#size-cells = <1>;
++		compatible = "mxicy,mx25l1606e", "winbond,w25q128";
++		reg = <0>;
++		spi-max-frequency = <40000000>;
++
++		partition@00000000 {
++			reg = <0x00000000 0x200000>;	/* 2Mb */
++		};
++	};
++};
+-- 
+2.11.0
+
diff --git a/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch b/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch
new file mode 100644
index 000000000..553155ce1
--- /dev/null
+++ b/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch
@@ -0,0 +1,42 @@ 
+From 8dd1b2a696bb7e9914abd11cc6f5c0f54c33d626 Mon Sep 17 00:00:00 2001
+From: Sergey Matyukevich <geomatsi@gmail.com>
+Date: Sat, 20 May 2017 15:36:51 +0300
+Subject: [PATCH 3/3] ARM: dts: orange-pi-zero: enable spidev
+
+On orange-pi-zero board SPI1 pins are accessible via GPIO expansion port.
+This patch enables spidev driver for SPI1.
+
+Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
+---
+ arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
+index cdf19821b1f3..7242aaecb14f 100644
+--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
+@@ -59,6 +59,7 @@
+ 		serial0 = &uart0;
+ 		/* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */
+ 		ethernet1 = &xr819;
++		spi1 = &spi1;
+ 	};
+ 
+ 	chosen {
+@@ -177,3 +178,13 @@
+ 		};
+ 	};
+ };
++
++&spi1 {
++	status = "okay";
++
++	spidev@0 {
++		compatible = "rohm,dh2228fv";
++		reg = <0>;
++		spi-max-frequency = <10000000>;
++	};
++};
+-- 
+2.11.0
+
diff --git a/board/orangepi/orangepi-zero/post-build.sh b/board/orangepi/orangepi-zero/post-build.sh
new file mode 120000
index 000000000..cd7f11645
--- /dev/null
+++ b/board/orangepi/orangepi-zero/post-build.sh
@@ -0,0 +1 @@ 
+../post-build.sh
\ No newline at end of file
diff --git a/board/orangepi/orangepi-zero/post-image.sh b/board/orangepi/orangepi-zero/post-image.sh
new file mode 120000
index 000000000..ae6294fa3
--- /dev/null
+++ b/board/orangepi/orangepi-zero/post-image.sh
@@ -0,0 +1 @@ 
+../post-image.sh
\ No newline at end of file
diff --git a/board/orangepi/orangepi-zero/readme.txt b/board/orangepi/orangepi-zero/readme.txt
new file mode 100644
index 000000000..1afdbb784
--- /dev/null
+++ b/board/orangepi/orangepi-zero/readme.txt
@@ -0,0 +1,29 @@ 
+OrangePi Zero
+
+Intro
+=====
+
+This default configuration will allow you to start experimenting with the
+buildroot environment for the OrangePi Zero. With the current configuration
+it will bring-up the board, and allow access through the serial console.
+
+How to build it
+===============
+
+Configure Buildroot:
+
+    $ make orangepi_zero_defconfig
+
+Compile everything and build the SD card image:
+
+    $ make
+
+How to write the SD card
+========================
+
+Once the build process is finished you will have an image called "sdcard.img"
+in the output/images/ directory.
+
+Copy the bootable "sdcard.img" onto an SD card with "dd":
+
+  $ sudo dd if=output/images/sdcard.img of=/dev/sdX
diff --git a/configs/orangepi_zero_defconfig b/configs/orangepi_zero_defconfig
new file mode 100644
index 000000000..e023af448
--- /dev/null
+++ b/configs/orangepi_zero_defconfig
@@ -0,0 +1,42 @@ 
+BR2_arm=y
+BR2_cortex_a7=y
+BR2_ARM_FPU_VFPV4=y
+BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero/patches"
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y
+BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Zero"
+BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Zero"
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepi-zero/post-build.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/orangepi/orangepi-zero/post-image.sh"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
+BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-zero"
+BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.config"
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+# BR2_TARGET_ROOTFS_TAR is not set
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.03"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero"
+BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin"
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
+BR2_PACKAGE_HOST_UBOOT_TOOLS=y
+
+# wireless support
+BR2_PACKAGE_IW=y
+BR2_PACKAGE_WIRELESS_TOOLS=y
+BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
+BR2_PACKAGE_WPA_SUPPLICANT=y
+BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
+BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
+
+# spi flash support
+BR2_PACKAGE_MTD=y