All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Matyukevich <geomatsi@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] orangepi: add basic support for orangepi-zero board
Date: Sat, 20 May 2017 16:31:53 +0300	[thread overview]
Message-ID: <20170520133153.2673-1-geomatsi@gmail.com> (raw)

Board support package includes the following components:

- mainline kernel v4.11
- mainline u-boot v2017.03
- extra kernel config options and 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

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 | 32 +++++++++++++++++
 ...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, 250 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

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..0101e137e
--- /dev/null
+++ b/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch
@@ -0,0 +1,32 @@
+From d06068f474e029bbde7348108c509cc63d6aa196 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/2] ARM: dts: orange-pi-zero: interrupt triggering for XR819
+ WiFi chip
+
+Specify interrupt triggering for XR819 SDIO WiFi chip
+on orange-pi-zero board.
+
+For more details see: http://linux-sunxi.org/Wifi#Allwinner
+
+Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
+---
+ arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 2 ++
+ 1 file changed, 2 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..6510d22deed3 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,8 @@
+ 	 */
+ 	xr819: sdio_wifi at 1 {
+ 		reg = <1>;
++		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..0fb9f4bc8
--- /dev/null
+++ b/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch
@@ -0,0 +1,42 @@
+From f6ea4149cb1093a32a574a12496cbdbf3adbff93 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/2] 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 6510d22deed3..119f529e6d22 100644
+--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
+@@ -160,3 +160,19 @@
+ 	/* USB VBUS is always on */
+ 	status = "okay";
+ };
++
++&spi0 {
++	status = "okay";
++
++	flash at 0 {
++		#address-cells = <1>;
++		#size-cells = <1>;
++		compatible = "mxicy,mx25l1606e", "winbond,w25q128";
++		reg = <0>;
++		spi-max-frequency = <40000000>;
++
++		partition at 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..d29c406b6
--- /dev/null
+++ b/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch
@@ -0,0 +1,42 @@
+From 5487218257a40c24aa0960f323ccfbd3793ab560 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 119f529e6d22..da83d92201df 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 {
+@@ -176,3 +177,13 @@
+ 		};
+ 	};
+ };
++
++&spi1 {
++	status = "okay";
++
++	spidev at 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
-- 
2.11.0

             reply	other threads:[~2017-05-20 13:31 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-20 13:31 Sergey Matyukevich [this message]
2017-05-24 21:46 ` [Buildroot] [PATCH] orangepi: add basic support for orangepi-zero board Sergey Matyukevich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170520133153.2673-1-geomatsi@gmail.com \
    --to=geomatsi@gmail.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.