board/orangepi: add basic support for orangepi-zero board

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

[Peter: fix s/PC/Zero/ typo]
Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Sergey Matyukevich 2017-05-25 00:50:33 +03:00 committed by Peter Korsgaard
parent b0fc65a11b
commit e3c1c6e41e
10 changed files with 253 additions and 0 deletions

View File

@ -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

View File

@ -0,0 +1,36 @@
# Minimal SD card image for the OrangePi Zero
#
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
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
../post-build.sh

View File

@ -0,0 +1 @@
../post-image.sh

View File

@ -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

View File

@ -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