Bump buildroot to 2020.11-rc1 (#985)

* Update buildroot-patches for 2020.11-rc1 buildroot

* Update buildroot to 2020.11-rc1

Signed-off-by: Stefan Agner <stefan@agner.ch>

* Don't rely on sfdisk --list-free output

The --list-free (-F) argument does not allow machine readable mode. And
it seems that the output format changes over time (different spacing,
using size postfixes instead of raw blocks).

Use sfdisk json output and calculate free partition space ourselfs. This
works for 2.35 and 2.36 and is more robust since we rely on output which
is meant for scripts to parse.

* Migrate defconfigs for Buildroot 2020.11-rc1

In particular, rename BR2_TARGET_UBOOT_BOOT_SCRIPT(_SOURCE) to
BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT(_SOURCE).

* Rebase/remove systemd patches for systemd 246

* Drop apparmor/libapparmor from buildroot-external

* hassos-persists: use /run as directory for lockfiles

The U-Boot tools use /var/lock by default which is not created any more
by systemd by default (it is under tmpfiles legacy.conf, which we no
longer install).

* Disable systemd-update-done.service

The service is not suited for pure read-only systems. In particular the
service needs to be able to write a file in /etc and /var. Remove the
service. Note: This is a static service and cannot be removed using
systemd-preset.

* Disable apparmor.service for now

The service loads all default profiles. Some might actually cause
problems. E.g. the profile for ping seems not to match our setup for
/etc/resolv.conf:
[85503.634653] audit: type=1400 audit(1605286002.684:236): apparmor="DENIED" operation="open" profile="ping" name="/run/resolv.conf" pid=27585 comm="ping" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
This commit is contained in:
Stefan Agner
2020-11-13 18:25:44 +01:00
committed by GitHub
parent 25a0dd3082
commit a0871be6c0
4024 changed files with 68095 additions and 47900 deletions

View File

@@ -0,0 +1,5 @@
#!/bin/sh
mkdir -p ${TARGET_DIR}/lib/firmware
cp -f ${BUILD_DIR}/linux-custom/firmware/ppfe/* ${TARGET_DIR}/lib/firmware/
cp -f ${BUILD_DIR}/linux-custom/br2-ucls1012a.its ${BINARIES_DIR}/

View File

@@ -1,6 +1,6 @@
This document explains how to set up a basic Buildroot system on various
Atmel boards. Additional details can also be found on the Linux4SAM website:
http://www.at91.com/linux4sam/bin/view/Linux4SAM/
This document explains how to set up a basic Buildroot system on
various Atmel/Microchip boards. Additional details can also be found
on the Linux4SAM website: http://www.linux4sam.org
This guide covers the following configurations:
- at91sam9g45m10ek_defconfig
@@ -19,6 +19,8 @@ This guide covers the following configurations:
- atmel_sama5d4_xplained_mmc_dev_defconfig
- atmel_sama5d2_xplained_mmc_defconfig
- atmel_sama5d2_xplained_mmc_dev_defconfig
- microchip_sama5d27_wlsom1_ek_mmc_defconfig
- microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig
These configurations will use AT91Bootstrap, u-boot and a linux kernel from
the git trees maintained by Atmel.
@@ -29,23 +31,23 @@ tests the features of the SoC:
- FFMPEG to record video from the ISI/ISC
- I2C, SPI, CAN, etc. tools
- modetest for LCD screens, HDMI
- Wilc1000 firmware for the Atmel Wireless sdio module
- Wilc1000/Wilc3000 firmware for the Atmel Wireless sdio module
- SSH for convenience
- GDB/GDB server for debug
Configuring and building Buildroot
==================================
For most configurations listed above, the Buildroot configuration
assumes the system will be flashed on NAND. In this case, after
building Buildroot, follow the instructions in the "Flashing the NAND
using SAM-BA" section below.
For the Xplained boards, an alternative Buildroot configuration is
For the Xplained/Evaluation Kit boards, the Buildroot configuration is
provided to boot from an SD card. Those configurations are labeled as
'mmc'. In this case, after building Buildroot, follow the instructions
in the "Preparing the SD card" section.
For the other configurations listed above, the Buildroot configuration
assumes the system will be flashed on NAND. In this case, after
building Buildroot, follow the instructions in the "Flashing the NAND
using SAM-BA" section below.
To configure and build Buildroot, run:
make <board>_defconfig
@@ -144,10 +146,10 @@ lost. To copy the image on the SD card:
dd if=output/images/sdcard.img of=/dev/mmcblk0
Insert your SD card in your Xplained board, and enjoy. The default
U-Boot environment will load properly the kernel and Device Tree blob
from the first partition of the SD card, so everything works
automatically.
Insert your SD card in your Xplained/Evaluation Kit board, and
enjoy. The default U-Boot environment will load properly the kernel
and Device Tree blob from the first partition of the SD card, so
everything works automatically.
By default a 16MB FAT partition is created. It contains at91bootstrap,
u-boot, the kernel image and all dtb variants for your board. The dtb

View File

@@ -0,0 +1,31 @@
# Image for SD card boot on Microchip SAMA5D27 WLSOM1 EK
#
image boot.vfat {
vfat {
files = {
"zImage",
"at91-sama5d27_wlsom1_ek.dtb",
"boot.bin",
"u-boot.bin"
}
}
size = 16M
}
image sdcard.img {
hdimage {
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
offset = 1M
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
size = 512M
}
}

View File

@@ -0,0 +1,7 @@
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
mmc dev 0
fatload mmc 0 $kernel_addr_r zImage
fatload mmc 0 $fdt_addr_r sun8i-h2-plus-bananapi-m2-zero.dtb
bootz $kernel_addr_r - $fdt_addr_r

View File

@@ -0,0 +1,33 @@
image boot.vfat {
vfat {
files = {
"zImage",
"sun8i-h2-plus-bananapi-m2-zero.dtb",
"boot.scr"
}
}
size = 64M
}
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"
}
}

View File

@@ -0,0 +1,34 @@
Intro
=====
This default configuration will allow you to start experimenting with the
Buildroot environment for the Bananapi M2 Zero. With the current configuration
it will bring-up the board, and allow access through the serial console.
Bananapi M2 Zero link:
http://www.banana-pi.org/m2z.html
This configuration uses U-Boot mainline and kernel mainline.
How to build
============
$ make bananapi_m2_zero_defconfig
$ make
Note: you will need access to the internet to download the required
sources.
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
$ sync
Insert the micro SDcard in your Bananapi M2 Zero and power it up. The console
is on the Debug UART on the CON3 header, with serial settings 115200 8N1.

View File

@@ -1,39 +0,0 @@
From 523ab5be1a84e9aa15fb62c3a15a6338b01d3961 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= <peron.clem@gmail.com>
Date: Tue, 9 Apr 2019 00:15:06 +0200
Subject: [PATCH] plat: allwinner: common: use r_wdog instead of wdog
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Some Allwinner H6 has a broken watchdog that doesn't
make the soc reboot.
Use the R_WATCHDOG instead.
Signed-off-by: Clément Péron <peron.clem@gmail.com>
Change-Id: Ie95cc30a80ed517b60b30d6bc2e655a1b53f18ba
---
plat/allwinner/common/sunxi_pm.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/plat/allwinner/common/sunxi_pm.c b/plat/allwinner/common/sunxi_pm.c
index 1d2dc938..13e13532 100644
--- a/plat/allwinner/common/sunxi_pm.c
+++ b/plat/allwinner/common/sunxi_pm.c
@@ -20,9 +20,9 @@
#include <sunxi_mmap.h>
#include <sunxi_private.h>
-#define SUNXI_WDOG0_CTRL_REG (SUNXI_WDOG_BASE + 0x0010)
-#define SUNXI_WDOG0_CFG_REG (SUNXI_WDOG_BASE + 0x0014)
-#define SUNXI_WDOG0_MODE_REG (SUNXI_WDOG_BASE + 0x0018)
+#define SUNXI_WDOG0_CTRL_REG (SUNXI_R_WDOG_BASE + 0x0010)
+#define SUNXI_WDOG0_CFG_REG (SUNXI_R_WDOG_BASE + 0x0014)
+#define SUNXI_WDOG0_MODE_REG (SUNXI_R_WDOG_BASE + 0x0018)
#define mpidr_is_valid(mpidr) ( \
MPIDR_AFFLVL3_VAL(mpidr) == 0 && \
--
2.20.1

View File

@@ -1,279 +0,0 @@
From 99cade8743158889b3e8db93c003b3318ebd4bda Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= <peron.clem@gmail.com>
Date: Sun, 11 Aug 2019 22:38:57 +0200
Subject: [PATCH] arm: dts: sync dts for Allwinner H6
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sync Kernel DTS for Allwinner H6 boards.
Drop /omit-if-no-ref/ keyword as it's not supported by U-boot.
commit <d45331b00ddb> Linux 5.3-rc4
Signed-off-by: Clément Péron <peron.clem@gmail.com>
---
arch/arm/dts/sun50i-h6-beelink-gs1.dts | 76 ++++++++++++++++++++++++++
arch/arm/dts/sun50i-h6-pine-h64.dts | 12 ++++
arch/arm/dts/sun50i-h6.dtsi | 46 +++++++++++++++-
3 files changed, 131 insertions(+), 3 deletions(-)
diff --git a/arch/arm/dts/sun50i-h6-beelink-gs1.dts b/arch/arm/dts/sun50i-h6-beelink-gs1.dts
index 54b0882bed..0dc33c90dd 100644
--- a/arch/arm/dts/sun50i-h6-beelink-gs1.dts
+++ b/arch/arm/dts/sun50i-h6-beelink-gs1.dts
@@ -14,6 +14,7 @@
compatible = "azw,beelink-gs1", "allwinner,sun50i-h6";
aliases {
+ ethernet0 = &emac;
serial0 = &uart0;
};
@@ -21,6 +22,17 @@
stdout-path = "serial0:115200n8";
};
+ connector {
+ compatible = "hdmi-connector";
+ type = "a";
+
+ port {
+ hdmi_con_in: endpoint {
+ remote-endpoint = <&hdmi_out_con>;
+ };
+ };
+ };
+
leds {
compatible = "gpio-leds";
@@ -41,6 +53,40 @@
};
};
+&de {
+ status = "okay";
+};
+
+&ehci0 {
+ status = "okay";
+};
+
+&emac {
+ pinctrl-names = "default";
+ pinctrl-0 = <&ext_rgmii_pins>;
+ phy-mode = "rgmii";
+ phy-handle = <&ext_rgmii_phy>;
+ phy-supply = <&reg_aldo2>;
+ status = "okay";
+};
+
+&hdmi {
+ status = "okay";
+};
+
+&hdmi_out {
+ hdmi_out_con: endpoint {
+ remote-endpoint = <&hdmi_con_in>;
+ };
+};
+
+&mdio {
+ ext_rgmii_phy: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ };
+};
+
&mmc0 {
vmmc-supply = <&reg_cldo1>;
cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
@@ -57,6 +103,15 @@
status = "okay";
};
+&ohci0 {
+ status = "okay";
+};
+
+&pio {
+ vcc-pd-supply = <&reg_cldo1>;
+ vcc-pg-supply = <&reg_aldo1>;
+};
+
&r_i2c {
status = "okay";
@@ -177,8 +232,29 @@
};
};
+&r_pio {
+ /*
+ * PL0 and PL1 are used for PMIC I2C
+ * don't enable the pl-supply else
+ * it will fail at boot
+ *
+ * vcc-pl-supply = <&reg_aldo1>;
+ */
+ vcc-pm-supply = <&reg_aldo1>;
+};
+
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_ph_pins>;
status = "okay";
};
+
+&usb2otg {
+ dr_mode = "host";
+ status = "okay";
+};
+
+&usb2phy {
+ usb0_vbus-supply = <&reg_vcc5v>;
+ status = "okay";
+};
diff --git a/arch/arm/dts/sun50i-h6-pine-h64.dts b/arch/arm/dts/sun50i-h6-pine-h64.dts
index 4802902e12..1898345183 100644
--- a/arch/arm/dts/sun50i-h6-pine-h64.dts
+++ b/arch/arm/dts/sun50i-h6-pine-h64.dts
@@ -127,6 +127,12 @@
status = "okay";
};
+&pio {
+ vcc-pc-supply = <&reg_bldo2>;
+ vcc-pd-supply = <&reg_cldo1>;
+ vcc-pg-supply = <&reg_aldo1>;
+};
+
&r_i2c {
status = "okay";
@@ -243,10 +249,16 @@
pcf8563: rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
+ interrupt-parent = <&r_intc>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
#clock-cells = <0>;
};
};
+&r_pio {
+ vcc-pm-supply = <&reg_aldo1>;
+};
+
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_ph_pins>;
diff --git a/arch/arm/dts/sun50i-h6.dtsi b/arch/arm/dts/sun50i-h6.dtsi
index e0dc4a05c1..a117f479ae 100644
--- a/arch/arm/dts/sun50i-h6.dtsi
+++ b/arch/arm/dts/sun50i-h6.dtsi
@@ -101,7 +101,7 @@
#size-cells = <1>;
ranges;
- display-engine@1000000 {
+ bus@1000000 {
compatible = "allwinner,sun50i-h6-de3",
"allwinner,sun50i-a64-de2";
reg = <0x1000000 0x400000>;
@@ -203,11 +203,32 @@
#reset-cells = <1>;
};
+ dma: dma-controller@3002000 {
+ compatible = "allwinner,sun50i-h6-dma";
+ reg = <0x03002000 0x1000>;
+ interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
+ clock-names = "bus", "mbus";
+ dma-channels = <16>;
+ dma-requests = <46>;
+ resets = <&ccu RST_BUS_DMA>;
+ #dma-cells = <1>;
+ };
+
sid: sid@3006000 {
compatible = "allwinner,sun50i-h6-sid";
reg = <0x03006000 0x400>;
};
+ watchdog: watchdog@30090a0 {
+ compatible = "allwinner,sun50i-h6-wdt",
+ "allwinner,sun6i-a31-wdt";
+ reg = <0x030090a0 0x20>;
+ interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
+ /* Broken on some H6 boards */
+ status = "disabled";
+ };
+
pio: pinctrl@300b000 {
compatible = "allwinner,sun50i-h6-pinctrl";
reg = <0x0300b000 0x400>;
@@ -243,6 +264,18 @@
bias-pull-up;
};
+ /*
+ * /omit-if-no-ref/ isn't supported by U-boot
+ * keep this comment to avoid bad sync with Linux
+ */
+ mmc1_pins: mmc1-pins {
+ pins = "PG0", "PG1", "PG2", "PG3",
+ "PG4", "PG5";
+ function = "mmc1";
+ drive-strength = <30>;
+ bias-pull-up;
+ };
+
mmc2_pins: mmc2-pins {
pins = "PC1", "PC4", "PC5", "PC6",
"PC7", "PC8", "PC9", "PC10",
@@ -294,6 +327,8 @@
resets = <&ccu RST_BUS_MMC1>;
reset-names = "ahb";
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&mmc1_pins>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
@@ -445,7 +480,6 @@
resets = <&ccu RST_BUS_OHCI3>,
<&ccu RST_BUS_EHCI3>;
phys = <&usb2phy 3>;
- phy-names = "usb";
status = "disabled";
};
@@ -457,7 +491,6 @@
<&ccu CLK_USB_OHCI3>;
resets = <&ccu RST_BUS_OHCI3>;
phys = <&usb2phy 3>;
- phy-names = "usb";
status = "disabled";
};
@@ -613,6 +646,13 @@
#reset-cells = <1>;
};
+ r_watchdog: watchdog@7020400 {
+ compatible = "allwinner,sun50i-h6-wdt",
+ "allwinner,sun6i-a31-wdt";
+ reg = <0x07020400 0x20>;
+ interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
r_intc: interrupt-controller@7021000 {
compatible = "allwinner,sun50i-h6-r-intc",
"allwinner,sun6i-a31-r-intc";
--
2.20.1

View File

@@ -9,9 +9,9 @@ if itest.s x51 == "x${imx_cpu}" ; then
a_base=0x90000000
elif itest.s x53 == "x${imx_cpu}"; then
a_base=0x70000000
elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
elif itest.s x6SX == "x${imx_cpu}" || itest.s x6ULL == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
a_base=0x80000000
elif itest.s x8MQ == "x${imx_cpu}"; then
elif itest.s x8MQ == "x${imx_cpu}" || itest.s x8MM == "x${imx_cpu}" || itest.s x8MMQ == "x${imx_cpu}" || itest.s x8MNano == "x${imx_cpu}"; then
a_base=0x40000000
kernelimage=Image
bootcommand=booti
@@ -43,10 +43,18 @@ if itest.s "x" == "x${fdt_file}" ; then
fdt_file=imx6qp-${board}.dtb;
elif itest.s x6SX == "x${imx_cpu}" ; then
fdt_file=imx6sx-${board}${m4}.dtb;
elif itest.s x6ULL == "x${imx_cpu}" ; then
fdt_file=imx6ull-${board}.dtb;
elif itest.s x7D == "x${imx_cpu}" ; then
fdt_file=imx7d-${board}${m4}.dtb;
elif itest.s x8MQ == "x${imx_cpu}" ; then
fdt_file=imx8mq-${board}${m4}.dtb;
elif itest.s x8MM == "x${imx_cpu}" ; then
fdt_file=imx8mm-${board}${m4}.dtb;
elif itest.s x8MMQ == "x${imx_cpu}" ; then
fdt_file=imx8mm-${board}${m4}.dtb;
elif itest.s x8MNano == "x${imx_cpu}" ; then
fdt_file=imx8mn-${board}${m4}.dtb;
elif itest.s x51 == "x${imx_cpu}" ; then
fdt_file=imx51-${board}.dtb;
elif itest.s x53 == "x${imx_cpu}" ; then
@@ -63,7 +71,6 @@ fi
if load ${devtype} ${devnum}:${distro_bootpart} ${a_script} uEnv.txt ; then
env import -t ${a_script} ${filesize}
fi
setenv bootargs ${bootargs} console=${console},115200 vmalloc=400M consoleblank=0 rootwait fixrtc cpu=${imx_cpu} board=${board}
if load ${devtype} ${devnum}:${distro_bootpart} ${a_fdt} ${prefix}${fdt_file} ; then
@@ -74,21 +81,20 @@ else
exit;
fi
fdt resize
fdt resize 4096
if itest.s "x" != "x${cmd_board}" ; then
run cmd_board
fi
if itest.s "x" != "x${cmd_custom}" ; then
run cmd_custom
fi
if itest.s "x" != "x${cmd_hdmi}" ; then
run cmd_hdmi
if itest.s x == x${allow_noncea} ; then
setenv bootargs ${bootargs} mxc_hdmi.only_cea=1;
echo "only CEA modes allowed on HDMI port";
else
if itest.s x != x${allow_noncea} ; then
setenv bootargs ${bootargs} mxc_hdmi.only_cea=0;
echo "non-CEA modes allowed on HDMI, audio may be affected";
fi
fi
if itest.s "x" != "x${cmd_lcd}" ; then
run cmd_lcd
fi

View File

@@ -1,16 +1,5 @@
#!/bin/sh
BOARD_DIR="$(dirname $0)"
GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
rm -rf "${GENIMAGE_TMP}"
genimage \
--rootpath "${TARGET_DIR}" \
--tmppath "${GENIMAGE_TMP}" \
--inputpath "${BINARIES_DIR}" \
--outputpath "${BINARIES_DIR}" \
--config "${GENIMAGE_CFG}"
support/scripts/genimage.sh -c $(dirname $0)/genimage.cfg
exit $?

View File

@@ -1,6 +1,6 @@
Buildroot for Boundary Devices platforms:
https://boundarydevices.com/product-category/popular-sbc-and-som-modules/
https://boundarydevices.com/nitrogen-sbcs-and-soms/
Here is the list of targeted platforms per defconfig:
@@ -19,7 +19,19 @@ Here is the list of targeted platforms per defconfig:
- nitrogen7_defconfig
- Nitrogen7
To install, simply copy the image to a uSD card:
- nitrogen8m_defconfig
- Nitrogen8M
- Nitrogen8M_SOM
- nitrogen8mm_defconfig
- Nitrogen8MMini
- Nitrogen8MMini_SOM
- nitrogen8mn_defconfig
- Nitrogen8MNano
- Nitrogen8MNano_SOM
To install, simply copy the image to your storage (SD, eMMC, USB):
$ sudo dd if=output/images/sdcard.img of=/dev/sdX

View File

@@ -13,11 +13,14 @@ if itest.s x51 == "x${imx_cpu}"; then
a_base=0x92000000
elif itest.s x53 == "x${imx_cpu}"; then
a_base=0x72000000
elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
elif itest.s x6SX == "x${imx_cpu}" || itest.s x6ULL == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
a_base=0x82000000
elif itest.s x8MQ == "x${imx_cpu}"; then
elif itest.s x8MQ == "x${imx_cpu}" || itest.s x8MM == "x${imx_cpu}" || itest.s x8MMQ == "x${imx_cpu}"; then
a_base=0x42000000
offset=0x8400
elif itest.s x8MNano == "x${imx_cpu}"; then
a_base=0x42000000
offset=0x8000
fi
qspi_match=1
@@ -56,6 +59,7 @@ mmc dev ${env_dev} ${env_part}
mmc read ${a_uImage2} ${cntoffset} ${cntfile}
if cmp.b ${a_uImage1} ${a_uImage2} ${filesize} ; then
echo "------- U-Boot versions match" ;
echo "------- U-Boot upgrade NOT needed" ;
exit ;
fi
@@ -134,7 +138,7 @@ fi
if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then
echo "------- U-Boot versions match" ;
if itest.s "${qspi_match}" == "1" ; then
echo "------- upgrade not needed" ;
echo "------- U-Boot upgrade NOT needed" ;
if itest.s "x" != "x${next}" ; then
if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_script} ${next} ; then
source ${a_script}
@@ -206,6 +210,12 @@ if itest.s "x" != "x${next}" ; then
fi
fi
while echo "---- U-Boot upgraded. Please reset the board" ; do
sleep 120
if itest.s "xno" == "x${reset}" ; then
while echo "---- U-Boot upgraded. Please reset the board" ; do
sleep 120
done
fi
echo "---- U-Boot upgraded. The board will now reset."
sleep 1
reset
done

View File

@@ -0,0 +1 @@
root=PARTUUID=%U/PARTNROFF=1 rootwait rw noinitrd kern_guid=%U console=tty0

View File

@@ -0,0 +1,38 @@
/dts-v1/;
/ {
description = "Chrome OS kernel image with FDT";
#address-cells = <1>;
images {
kernel-1 {
data = /incbin/("Image");
type = "kernel_noload";
arch = "arm64";
os = "linux";
compression = "none";
load = <0>;
entry = <0>;
};
fdt-1 {
description = "mt8173-elm.dtb";
data = /incbin/("mt8173-elm.dtb");
type = "flat_dt";
arch = "arm64";
compression = "none";
hash-1 {
algo = "sha1";
};
};
};
configurations {
default = "conf-1";
conf-1 {
kernel = "kernel-1";
fdt = "fdt-1";
};
};
};

View File

@@ -0,0 +1,453 @@
CONFIG_SYSVIPC=y
CONFIG_NO_HZ_IDLE=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_PREEMPT=y
CONFIG_IRQ_TIME_ACCOUNTING=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_NUMA_BALANCING=y
CONFIG_MEMCG=y
CONFIG_BLK_CGROUP=y
CONFIG_CGROUP_PIDS=y
CONFIG_CGROUP_HUGETLB=y
CONFIG_CPUSETS=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_PERF=y
CONFIG_USER_NS=y
CONFIG_SCHED_AUTOGROUP=y
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_COMPAT_BRK is not set
CONFIG_SLAB=y
CONFIG_PROFILING=y
CONFIG_ARCH_MEDIATEK=y
CONFIG_ARM64_VA_BITS_48=y
CONFIG_SCHED_MC=y
CONFIG_SCHED_SMT=y
CONFIG_NR_CPUS=4
CONFIG_NUMA=y
CONFIG_SECCOMP=y
CONFIG_PARAVIRT=y
CONFIG_CRASH_DUMP=y
CONFIG_COMPAT=y
CONFIG_RANDOMIZE_BASE=y
# CONFIG_EFI is not set
# CONFIG_SUSPEND is not set
CONFIG_PM=y
CONFIG_PM_DEBUG=y
CONFIG_PM_ADVANCED_DEBUG=y
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_ARM_CPUIDLE=y
CONFIG_ARM_PSCI_CPUIDLE=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
CONFIG_CPUFREQ_DT=y
CONFIG_ARM_SCPI_CPUFREQ=y
CONFIG_ARM_MEDIATEK_CPUFREQ=y
CONFIG_ARM_SCPI_PROTOCOL=y
CONFIG_JUMP_LABEL=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_BLK_DEBUG_FS is not set
# CONFIG_MQ_IOSCHED_KYBER is not set
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_KSM=y
CONFIG_MEMORY_FAILURE=y
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_CMA=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_UNIX_DIAG=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_INET_UDP_DIAG=y
# CONFIG_IPV6 is not set
CONFIG_CFG80211=y
# CONFIG_CFG80211_DEFAULT_PS is not set
CONFIG_MAC80211=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_FW_LOADER_USER_HELPER=y
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
CONFIG_BRCMSTB_GISB_ARB=y
CONFIG_VEXPRESS_CONFIG=y
CONFIG_MTD=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_CFI=y
CONFIG_MTD_CFI_ADV_OPTIONS=y
CONFIG_MTD_CFI_INTELEXT=y
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_CFI_STAA=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_OF=y
CONFIG_MTD_DATAFLASH=y
CONFIG_MTD_SST25L=y
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_NAND_DENALI_DT=y
CONFIG_MTD_SPI_NOR=y
CONFIG_SPI_CADENCE_QUADSPI=y
CONFIG_OF_OVERLAY=y
# CONFIG_BLK_DEV is not set
CONFIG_SRAM=y
CONFIG_EEPROM_AT24=m
CONFIG_EEPROM_AT25=m
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
# CONFIG_SCSI_PROC_FS is not set
CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_SAS_LIBSAS=y
CONFIG_SCSI_UFSHCD=y
CONFIG_SCSI_UFSHCD_PLATFORM=y
CONFIG_MD=y
CONFIG_BLK_DEV_MD=m
CONFIG_BLK_DEV_DM=m
CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m
CONFIG_NETDEVICES=y
# CONFIG_ETHERNET is not set
CONFIG_USB_RTL8152=y
CONFIG_USB_USBNET=y
# CONFIG_USB_NET_AX88179_178A is not set
# CONFIG_USB_NET_NET1080 is not set
# CONFIG_USB_NET_CDC_SUBSET is not set
# CONFIG_USB_NET_ZAURUS is not set
# CONFIG_WLAN_VENDOR_ADMTEK is not set
# CONFIG_WLAN_VENDOR_ATH is not set
# CONFIG_WLAN_VENDOR_ATMEL is not set
# CONFIG_WLAN_VENDOR_BROADCOM is not set
# CONFIG_WLAN_VENDOR_CISCO is not set
# CONFIG_WLAN_VENDOR_INTEL is not set
# CONFIG_WLAN_VENDOR_INTERSIL is not set
CONFIG_MWIFIEX=m
CONFIG_MWIFIEX_SDIO=m
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
# CONFIG_WLAN_VENDOR_RALINK is not set
# CONFIG_WLAN_VENDOR_REALTEK is not set
# CONFIG_WLAN_VENDOR_RSI is not set
# CONFIG_WLAN_VENDOR_ST is not set
# CONFIG_WLAN_VENDOR_TI is not set
# CONFIG_WLAN_VENDOR_ZYDAS is not set
# CONFIG_WLAN_VENDOR_QUANTENNA is not set
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_EVDEV=y
CONFIG_KEYBOARD_ADC=m
CONFIG_KEYBOARD_GPIO=y
CONFIG_KEYBOARD_CROS_EC=y
CONFIG_MOUSE_ELAN_I2C=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_ATMEL_MXT=m
CONFIG_TOUCHSCREEN_ELAN=y
CONFIG_INPUT_MISC=y
# CONFIG_SERIO_SERPORT is not set
CONFIG_SERIO_AMBAKMI=y
CONFIG_LEGACY_PTY_COUNT=16
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DW=y
CONFIG_SERIAL_8250_MT6577=y
CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_SERIAL_XILINX_PS_UART=y
CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
CONFIG_SERIAL_FSL_LPUART=y
CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
CONFIG_SERIAL_FSL_LINFLEXUART=y
CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y
CONFIG_SERIAL_DEV_BUS=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_IPMI_HANDLER=m
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
CONFIG_TCG_TPM=y
CONFIG_TCG_TIS_I2C_INFINEON=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MUX_PCA954x=y
CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_I2C_GPIO=m
CONFIG_I2C_MT65XX=y
CONFIG_I2C_RK3X=y
CONFIG_I2C_CROS_EC_TUNNEL=y
CONFIG_I2C_SLAVE=y
CONFIG_SPI=y
CONFIG_SPI_NXP_FLEXSPI=y
CONFIG_SPI_GPIO=y
CONFIG_SPI_MT65XX=y
CONFIG_SPI_PL022=y
CONFIG_SPI_ROCKCHIP=y
CONFIG_SPI_SPIDEV=y
CONFIG_PINCTRL_SINGLE=y
CONFIG_PINCTRL_MAX77620=y
CONFIG_GPIO_ALTERA=m
CONFIG_GPIO_DWAPB=y
CONFIG_GPIO_MB86S7X=y
CONFIG_GPIO_PL061=y
CONFIG_GPIO_XGENE=y
CONFIG_GPIO_MAX732X=y
CONFIG_GPIO_PCA953X=y
CONFIG_GPIO_PCA953X_IRQ=y
CONFIG_GPIO_BD9571MWV=m
CONFIG_GPIO_MAX77620=y
CONFIG_POWER_AVS=y
CONFIG_POWER_RESET_BRCMSTB=y
CONFIG_POWER_RESET_XGENE=y
CONFIG_POWER_RESET_SYSCON=y
CONFIG_SYSCON_REBOOT_MODE=y
CONFIG_BATTERY_SBS=m
CONFIG_BATTERY_BQ27XXX=y
CONFIG_SENSORS_ARM_SCPI=y
CONFIG_SENSORS_LM90=m
CONFIG_SENSORS_PWM_FAN=m
CONFIG_SENSORS_INA2XX=m
CONFIG_SENSORS_INA3221=m
CONFIG_THERMAL=y
CONFIG_CPU_THERMAL=y
CONFIG_DEVFREQ_THERMAL=y
CONFIG_THERMAL_EMULATION=y
CONFIG_WATCHDOG=y
CONFIG_MEDIATEK_WATCHDOG=y
CONFIG_MFD_BD9571MWV=y
CONFIG_MFD_AXP20X_I2C=y
CONFIG_MFD_HI6421_PMIC=y
CONFIG_MFD_MAX77620=y
CONFIG_MFD_MT6397=y
CONFIG_MFD_RK808=y
CONFIG_MFD_SEC_CORE=y
CONFIG_MFD_ROHM_BD718XX=y
CONFIG_REGULATOR_DEBUG=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_REGULATOR_AXP20X=y
CONFIG_REGULATOR_BD718XX=y
CONFIG_REGULATOR_BD9571MWV=y
CONFIG_REGULATOR_DA9211=y
CONFIG_REGULATOR_FAN53555=y
CONFIG_REGULATOR_GPIO=y
CONFIG_REGULATOR_HI6421V530=y
CONFIG_REGULATOR_MAX77620=y
CONFIG_REGULATOR_MAX8973=y
CONFIG_REGULATOR_MT6397=y
CONFIG_REGULATOR_PFUZE100=y
CONFIG_REGULATOR_PWM=y
CONFIG_REGULATOR_RK808=y
CONFIG_REGULATOR_S2MPS11=y
CONFIG_REGULATOR_VCTRL=m
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
CONFIG_MEDIA_SDR_SUPPORT=y
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=m
CONFIG_DRM=y
CONFIG_DRM_I2C_CH7006=m
CONFIG_DRM_I2C_SIL164=m
CONFIG_DRM_I2C_NXP_TDA998X=m
CONFIG_DRM_MALI_DISPLAY=m
CONFIG_DRM_PANEL_LVDS=m
CONFIG_DRM_PANEL_SIMPLE=y
CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m
CONFIG_DRM_DISPLAY_CONNECTOR=y
CONFIG_DRM_PARADE_PS8640=y
CONFIG_DRM_SII902X=m
CONFIG_DRM_THINE_THC63LVD1024=m
CONFIG_DRM_TI_SN65DSI86=m
CONFIG_DRM_ANALOGIX_ANX78XX=y
CONFIG_DRM_I2C_ADV7511=m
CONFIG_DRM_MEDIATEK=y
CONFIG_DRM_MEDIATEK_HDMI=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_SIMPLE=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_PWM=y
CONFIG_BACKLIGHT_LP855X=y
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_SOC=y
CONFIG_SND_SOC_MT8173=y
CONFIG_SND_SOC_MT8173_RT5650_RT5676=y
CONFIG_I2C_HID=m
CONFIG_USB_CONN_GPIO=y
CONFIG_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_HCD_PLATFORM=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PLATFORM=y
CONFIG_USB_STORAGE=y
CONFIG_USB_MTU3=y
CONFIG_USB_MUSB_HDRC=y
CONFIG_USB_DWC3=y
CONFIG_USB_DWC2=y
CONFIG_USB_CHIPIDEA=y
CONFIG_USB_CHIPIDEA_UDC=y
CONFIG_USB_CHIPIDEA_HOST=y
CONFIG_USB_ISP1760=y
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_CONSOLE=y
CONFIG_USB_SERIAL_PL2303=y
CONFIG_USB_HSIC_USB3503=y
CONFIG_NOP_USB_XCEIV=y
CONFIG_USB_ULPI=y
CONFIG_USB_GADGET=y
CONFIG_USB_SNP_UDC_PLAT=y
CONFIG_USB_BDC_UDC=y
CONFIG_USB_ETH=m
CONFIG_USB_ETH_EEM=y
CONFIG_TYPEC=m
CONFIG_TYPEC_TCPM=m
CONFIG_TYPEC_FUSB302=m
CONFIG_MMC=y
CONFIG_MMC_BLOCK_MINORS=32
CONFIG_MMC_ARMMMCI=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_OF_ARASAN=y
CONFIG_MMC_SDHCI_CADENCE=y
CONFIG_MMC_SDHCI_F_SDH30=y
CONFIG_MMC_SPI=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_EXYNOS=y
CONFIG_MMC_DW_HI3798CV200=y
CONFIG_MMC_DW_K3=y
CONFIG_MMC_MTK=y
CONFIG_MMC_SDHCI_XENON=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_PWM=y
CONFIG_LEDS_SYSCON=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_CPU=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_DS1307=m
CONFIG_RTC_DRV_MAX77686=y
CONFIG_RTC_DRV_RK808=m
CONFIG_RTC_DRV_PCF85363=m
CONFIG_RTC_DRV_RX8581=m
CONFIG_RTC_DRV_S5M=y
CONFIG_RTC_DRV_DS3232=y
CONFIG_RTC_DRV_PCF2127=m
CONFIG_RTC_DRV_CROS_EC=y
CONFIG_RTC_DRV_PL031=y
CONFIG_DMADEVICES=y
CONFIG_FSL_EDMA=y
CONFIG_MV_XOR_V2=y
CONFIG_PL330_DMA=y
CONFIG_MTK_CQDMA=y
CONFIG_QCOM_HIDMA_MGMT=y
CONFIG_QCOM_HIDMA=y
# CONFIG_VIRTIO_MENU is not set
CONFIG_MFD_CROS_EC=y
CONFIG_CROS_EC_I2C=y
CONFIG_CROS_EC_SPI=y
CONFIG_COMMON_CLK_RK808=y
CONFIG_COMMON_CLK_SCPI=y
CONFIG_COMMON_CLK_CS2000_CP=y
CONFIG_COMMON_CLK_S2MPS11=y
CONFIG_CLK_QORIQ=y
CONFIG_COMMON_CLK_XGENE=y
CONFIG_COMMON_CLK_PWM=y
CONFIG_COMMON_CLK_VC5=y
CONFIG_COMMON_CLK_MT6797_MMSYS=y
CONFIG_COMMON_CLK_MT6797_IMGSYS=y
CONFIG_COMMON_CLK_MT6797_VDECSYS=y
CONFIG_COMMON_CLK_MT6797_VENCSYS=y
CONFIG_HWSPINLOCK=y
CONFIG_ARM_MHU=y
CONFIG_PLATFORM_MHU=y
CONFIG_ARM_SMMU=y
CONFIG_ARM_SMMU_V3=y
CONFIG_MTK_IOMMU=y
CONFIG_REMOTEPROC=y
CONFIG_MTK_CMDQ=y
CONFIG_MTK_PMIC_WRAP=y
CONFIG_EXTCON_USB_GPIO=y
CONFIG_EXTCON_USBC_CROS_EC=y
CONFIG_IIO=y
CONFIG_MAX9611=m
CONFIG_IIO_CROS_EC_SENSORS_CORE=m
CONFIG_IIO_CROS_EC_SENSORS=m
CONFIG_IIO_CROS_EC_LIGHT_PROX=m
CONFIG_SENSORS_ISL29018=m
CONFIG_IIO_CROS_EC_BARO=m
CONFIG_MPL3115=m
CONFIG_PWM=y
CONFIG_PWM_CROS_EC=m
CONFIG_PWM_MTK_DISP=y
CONFIG_PWM_MEDIATEK=y
CONFIG_PHY_XGENE=y
CONFIG_PHY_FSL_IMX8MQ_USB=y
CONFIG_PHY_MTK_TPHY=y
CONFIG_PHY_QCOM_USB_HS=y
CONFIG_PHY_SAMSUNG_USB2=y
CONFIG_EXT2_FS=y
CONFIG_EXT3_FS=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_FANOTIFY=y
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
CONFIG_QUOTA=y
CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=m
CONFIG_CUSE=m
CONFIG_OVERLAY_FS=y
CONFIG_OVERLAY_FS_INDEX=y
CONFIG_OVERLAY_FS_XINO_AUTO=y
CONFIG_OVERLAY_FS_METACOPY=y
CONFIG_VFAT_FS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_HUGETLBFS=y
CONFIG_CONFIGFS_FS=y
CONFIG_PSTORE=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y
CONFIG_SECURITY=y
CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_DH=m
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_ECHAINIV=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_XXHASH=m
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA3=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_ANSI_CPRNG=y
CONFIG_CRYPTO_DEV_CCREE=m
CONFIG_PACKING=y
CONFIG_INDIRECT_PIO=y
CONFIG_CRC_CCITT=m
CONFIG_CRC_T10DIF=y
CONFIG_LIBCRC32C=m
CONFIG_DMA_CMA=y
CONFIG_CMA_SIZE_MBYTES=32
CONFIG_IRQ_POLL=y
CONFIG_PRINTK_TIME=y
CONFIG_DEBUG_INFO=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_KERNEL=y
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_PREEMPT is not set
CONFIG_STACKTRACE=y
# CONFIG_FTRACE is not set
# CONFIG_STRICT_DEVMEM is not set

View File

@@ -0,0 +1,35 @@
From 510d0ad0ce1b51c072309ba12dfb024fc2c3dbac Mon Sep 17 00:00:00 2001
From: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Date: Wed, 26 Aug 2020 10:15:22 +0200
Subject: [PATCH 1/5] drm/bridge_connector: Set default status connected for
eDP connectors
In an eDP application, HPD is not required and on most bridge chips
useless. If HPD is not used, we need to set initial status as connected,
otherwise the connector created by the drm_bridge_connector API remains
in an unknown state.
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Reviewed-by: Bilal Wasim <bwasim.lkml@gmail.com>
Tested-by: Bilal Wasim <bwasim.lkml@gmail.com>
---
drivers/gpu/drm/drm_bridge_connector.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/drm_bridge_connector.c b/drivers/gpu/drm/drm_bridge_connector.c
index c6994fe673f3..a58cbde59c34 100644
--- a/drivers/gpu/drm/drm_bridge_connector.c
+++ b/drivers/gpu/drm/drm_bridge_connector.c
@@ -187,6 +187,7 @@ drm_bridge_connector_detect(struct drm_connector *connector, bool force)
case DRM_MODE_CONNECTOR_DPI:
case DRM_MODE_CONNECTOR_LVDS:
case DRM_MODE_CONNECTOR_DSI:
+ case DRM_MODE_CONNECTOR_eDP:
status = connector_status_connected;
break;
default:
--
2.25.1

View File

@@ -0,0 +1,50 @@
From cc0f2fea61fb34ca84e4812a615e0035d812aa8b Mon Sep 17 00:00:00 2001
From: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Date: Wed, 26 Aug 2020 10:15:23 +0200
Subject: [PATCH 2/5] drm/bridge: ps8640: Get the EDID from eDP control
The PS8640 DSI-to-eDP bridge can retrieve the EDID, so implement the
.get_edid callback and set the flag to indicate the core to use it.
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
---
drivers/gpu/drm/bridge/parade-ps8640.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c
index 4b099196afeb..13755d278db6 100644
--- a/drivers/gpu/drm/bridge/parade-ps8640.c
+++ b/drivers/gpu/drm/bridge/parade-ps8640.c
@@ -242,8 +242,18 @@ static int ps8640_bridge_attach(struct drm_bridge *bridge,
return ret;
}
+static struct edid *ps8640_bridge_get_edid(struct drm_bridge *bridge,
+ struct drm_connector *connector)
+{
+ struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
+
+ return drm_get_edid(connector,
+ ps_bridge->page[PAGE0_DP_CNTL]->adapter);
+}
+
static const struct drm_bridge_funcs ps8640_bridge_funcs = {
.attach = ps8640_bridge_attach,
+ .get_edid = ps8640_bridge_get_edid,
.post_disable = ps8640_post_disable,
.pre_enable = ps8640_pre_enable,
};
@@ -294,6 +304,8 @@ static int ps8640_probe(struct i2c_client *client)
ps_bridge->bridge.funcs = &ps8640_bridge_funcs;
ps_bridge->bridge.of_node = dev->of_node;
+ ps_bridge->bridge.ops = DRM_BRIDGE_OP_EDID;
+ ps_bridge->bridge.type = DRM_MODE_CONNECTOR_eDP;
ps_bridge->page[PAGE0_DP_CNTL] = client;
--
2.25.1

View File

@@ -0,0 +1,35 @@
From 62afc499fc46c8018f40733c31a675b28f0717d8 Mon Sep 17 00:00:00 2001
From: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Date: Wed, 26 Aug 2020 10:15:24 +0200
Subject: [PATCH 3/5] drm/bridge: ps8640: Return an error for incorrect attach
flags
Bridge drivers that implement the new model only shall return an error
from their attach() handler when the DRM_BRIDGE_ATTACH_NO_CONNECTOR flag
is not set. So make sure we return an error because only the new
drm_bridge model is supported.
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
---
drivers/gpu/drm/bridge/parade-ps8640.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c
index 13755d278db6..ce3e8b2da8c9 100644
--- a/drivers/gpu/drm/bridge/parade-ps8640.c
+++ b/drivers/gpu/drm/bridge/parade-ps8640.c
@@ -200,6 +200,10 @@ static int ps8640_bridge_attach(struct drm_bridge *bridge,
.channel = 0,
.node = NULL,
};
+
+ if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR))
+ return -EINVAL;
+
/* port@0 is ps8640 dsi input port */
in_ep = of_graph_get_endpoint_by_regs(dev->of_node, 0, -1);
if (!in_ep)
--
2.25.1

View File

@@ -0,0 +1,58 @@
From 4897262a71cbf55d726d9174f5f646897dc13704 Mon Sep 17 00:00:00 2001
From: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Date: Wed, 26 Aug 2020 10:15:25 +0200
Subject: [PATCH 4/5] drm/bridge: ps8640: Print an error if VDO control fails
Print an error message inside ps8640_bridge_vdo_control() function when
it fails so we can simplify a bit the callers, they will only need to
check the error code.
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
---
drivers/gpu/drm/bridge/parade-ps8640.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c
index ce3e8b2da8c9..9f7b7a9c53c5 100644
--- a/drivers/gpu/drm/bridge/parade-ps8640.c
+++ b/drivers/gpu/drm/bridge/parade-ps8640.c
@@ -82,8 +82,11 @@ static int ps8640_bridge_vdo_control(struct ps8640 *ps_bridge,
ret = i2c_smbus_write_i2c_block_data(client, PAGE3_SET_ADD,
sizeof(vdo_ctrl_buf),
vdo_ctrl_buf);
- if (ret < 0)
+ if (ret < 0) {
+ DRM_ERROR("failed to %sable VDO: %d\n",
+ ctrl == ENABLE ? "en" : "dis", ret);
return ret;
+ }
return 0;
}
@@ -150,10 +153,8 @@ static void ps8640_pre_enable(struct drm_bridge *bridge)
}
ret = ps8640_bridge_vdo_control(ps_bridge, ENABLE);
- if (ret) {
- DRM_ERROR("failed to enable VDO: %d\n", ret);
+ if (ret)
goto err_regulators_disable;
- }
/* Switch access edp panel's edid through i2c */
ret = i2c_smbus_write_byte_data(client, PAGE2_I2C_BYPASS,
@@ -175,9 +176,7 @@ static void ps8640_post_disable(struct drm_bridge *bridge)
struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
int ret;
- ret = ps8640_bridge_vdo_control(ps_bridge, DISABLE);
- if (ret < 0)
- DRM_ERROR("failed to disable VDO: %d\n", ret);
+ ps8640_bridge_vdo_control(ps_bridge, DISABLE);
gpiod_set_value(ps_bridge->gpio_reset, 1);
gpiod_set_value(ps_bridge->gpio_powerdown, 1);
--
2.25.1

View File

@@ -0,0 +1,162 @@
From 5bb60fe7c748a0aae2bdbab10e73b2dc48c09dda Mon Sep 17 00:00:00 2001
From: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Date: Wed, 26 Aug 2020 10:15:26 +0200
Subject: [PATCH 5/5] drm/bridge: ps8640: Rework power state handling
The get_edid() callback can be triggered anytime by an ioctl, i.e
drm_mode_getconnector (ioctl)
-> drm_helper_probe_single_connector_modes
-> drm_bridge_connector_get_modes
-> ps8640_bridge_get_edid
Actually if the bridge pre_enable() function was not called before
get_edid(), the driver will not be able to get the EDID properly and
display will not work until a second get_edid() call is issued and if
pre_enable() is called before. The side effect of this, for example, is
that you see anything when `Frecon` starts, neither the splash screen,
until the graphical session manager starts.
To fix this we need to make sure that all we need is enabled before
reading the EDID. This means the following:
1. If get_edid() is called before having the device powered we need to
power on the device. In such case, the driver will power off again the
device.
2. If get_edid() is called after having the device powered, all should
just work. We added a powered flag in order to avoid recurrent calls
to ps8640_bridge_poweron() and unneeded delays.
3. This seems to be specific for this device, but we need to make sure
the panel is powered on before do a power on cycle on this device.
Otherwise the device fails to retrieve the EDID.
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
---
drivers/gpu/drm/bridge/parade-ps8640.c | 64 +++++++++++++++++++++++---
1 file changed, 58 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c
index 9f7b7a9c53c5..c5d76e209bda 100644
--- a/drivers/gpu/drm/bridge/parade-ps8640.c
+++ b/drivers/gpu/drm/bridge/parade-ps8640.c
@@ -65,6 +65,7 @@ struct ps8640 {
struct regulator_bulk_data supplies[2];
struct gpio_desc *gpio_reset;
struct gpio_desc *gpio_powerdown;
+ bool powered;
};
static inline struct ps8640 *bridge_to_ps8640(struct drm_bridge *e)
@@ -91,13 +92,15 @@ static int ps8640_bridge_vdo_control(struct ps8640 *ps_bridge,
return 0;
}
-static void ps8640_pre_enable(struct drm_bridge *bridge)
+static void ps8640_bridge_poweron(struct ps8640 *ps_bridge)
{
- struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
struct i2c_client *client = ps_bridge->page[PAGE2_TOP_CNTL];
unsigned long timeout;
int ret, status;
+ if (ps_bridge->powered)
+ return;
+
ret = regulator_bulk_enable(ARRAY_SIZE(ps_bridge->supplies),
ps_bridge->supplies);
if (ret < 0) {
@@ -164,6 +167,8 @@ static void ps8640_pre_enable(struct drm_bridge *bridge)
goto err_regulators_disable;
}
+ ps_bridge->powered = true;
+
return;
err_regulators_disable:
@@ -171,12 +176,12 @@ static void ps8640_pre_enable(struct drm_bridge *bridge)
ps_bridge->supplies);
}
-static void ps8640_post_disable(struct drm_bridge *bridge)
+static void ps8640_bridge_poweroff(struct ps8640 *ps_bridge)
{
- struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
int ret;
- ps8640_bridge_vdo_control(ps_bridge, DISABLE);
+ if (!ps_bridge->powered)
+ return;
gpiod_set_value(ps_bridge->gpio_reset, 1);
gpiod_set_value(ps_bridge->gpio_powerdown, 1);
@@ -184,6 +189,28 @@ static void ps8640_post_disable(struct drm_bridge *bridge)
ps_bridge->supplies);
if (ret < 0)
DRM_ERROR("cannot disable regulators %d\n", ret);
+
+ ps_bridge->powered = false;
+}
+
+static void ps8640_pre_enable(struct drm_bridge *bridge)
+{
+ struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
+ int ret;
+
+ ps8640_bridge_poweron(ps_bridge);
+
+ ret = ps8640_bridge_vdo_control(ps_bridge, DISABLE);
+ if (ret < 0)
+ ps8640_bridge_poweroff(ps_bridge);
+}
+
+static void ps8640_post_disable(struct drm_bridge *bridge)
+{
+ struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
+
+ ps8640_bridge_vdo_control(ps_bridge, DISABLE);
+ ps8640_bridge_poweroff(ps_bridge);
}
static int ps8640_bridge_attach(struct drm_bridge *bridge,
@@ -249,9 +276,34 @@ static struct edid *ps8640_bridge_get_edid(struct drm_bridge *bridge,
struct drm_connector *connector)
{
struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
+ bool poweroff = !ps_bridge->powered;
+ struct edid *edid;
+
+ /*
+ * When we end calling get_edid() triggered by an ioctl, i.e
+ *
+ * drm_mode_getconnector (ioctl)
+ * -> drm_helper_probe_single_connector_modes
+ * -> drm_bridge_connector_get_modes
+ * -> ps8640_bridge_get_edid
+ *
+ * We need to make sure that what we need is enabled before reading
+ * EDID, for this chip, we need to do a full poweron, otherwise it will
+ * fail.
+ */
+ drm_bridge_chain_pre_enable(bridge);
- return drm_get_edid(connector,
+ edid = drm_get_edid(connector,
ps_bridge->page[PAGE0_DP_CNTL]->adapter);
+
+ /*
+ * If we call the get_edid() function without having enabled the chip
+ * before, return the chip to its original power state.
+ */
+ if (poweroff)
+ drm_bridge_chain_post_disable(bridge);
+
+ return edid;
}
static const struct drm_bridge_funcs ps8640_bridge_funcs = {
--
2.25.1

View File

@@ -0,0 +1,41 @@
From 51109530891c981b681816152bd205724deabcca Mon Sep 17 00:00:00 2001
From: Jitao Shi <jitao.shi@mediatek.com>
Date: Sat, 10 Oct 2020 15:09:09 +0800
Subject: [PATCH] Revert "drm/mediatek: dsi: Fix scrolling of panel with small
hfp or hbp"
This reverts commit 35bf948f1edbf507f6e57e0879fa6ea36d2d2930.
Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Reviewed-by: Bilal Wasim <bilal.wasim@imgtec.com>
Tested-by: Bilal Wasim <bilal.wasim@imgtec.com>
---
drivers/gpu/drm/mediatek/mtk_dsi.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
index 80b7a082e874..16fd99dcdacf 100644
--- a/drivers/gpu/drm/mediatek/mtk_dsi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
@@ -466,13 +466,14 @@ static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)
horizontal_sync_active_byte = (vm->hsync_len * dsi_tmp_buf_bpp - 10);
if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE)
- horizontal_backporch_byte = vm->hback_porch * dsi_tmp_buf_bpp;
+ horizontal_backporch_byte =
+ (vm->hback_porch * dsi_tmp_buf_bpp - 10);
else
- horizontal_backporch_byte = (vm->hback_porch + vm->hsync_len) *
- dsi_tmp_buf_bpp;
+ horizontal_backporch_byte = ((vm->hback_porch + vm->hsync_len) *
+ dsi_tmp_buf_bpp - 10);
data_phy_cycles = timing->lpx + timing->da_hs_prepare +
- timing->da_hs_zero + timing->da_hs_exit;
+ timing->da_hs_zero + timing->da_hs_exit + 3;
if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) {
if ((vm->hfront_porch + vm->hback_porch) * dsi_tmp_buf_bpp >
--
2.25.1

View File

@@ -0,0 +1,56 @@
Mediatek MT8173 aka Chromebook Elm
==================================
This file describes booting the Chromebook from an SD card containing
Buildroot kernel and rootfs, using the original bootloader. This is
the least invasive way to get Buildroot onto the devices and a good
starting point.
The bootloader will only boot a kernel from a GPT partition marked
bootable with cgpt tool from vboot-utils package.
The kernel image must be signed using futility from the same package.
The signing part is done by sign.sh script in this directory.
It does not really matter where rootfs is as long as the kernel is able
to find it, but this particular configuration assumes the kernel is on
partition 1 and rootfs is on partition 2 of the SD card.
Make sure to check kernel.args if you change this.
Making the boot media
---------------------
Start by configuring and building the images.
make chromebook_elm_defconfig
make menuconfig # if necessary
make
The important files are:
uImage.kpart (kernel and device tree, signed)
rootfs.tar
bootsd.img (SD card image containing both kernel and rootfs)
Write the image directly to some SD card.
WARNING: make sure there is nothing important on that card,
and double-check the device name!
SD=/dev/mmcblk1 # may be /dev/sdX on some hosts
dd if=output/images/bootsd.img of=$SD
Switching to developer mode and booting from SD
-----------------------------------------------
Power Chromebook down, then power it up while holding Esc+F3.
BEWARE: switching to developer mode deletes all user data.
Create backups if you need them.
While in developer mode, Chromebook will boot into a white screen saying
"OS verification is off".
Press Ctrl-D at this screen to boot Chromium OS from eMMC.
Press Ctrl-U at this screen to boot from SD (or USB)
Press Power to power it off.
Do NOT press Space unless you mean it.
This will switch it back to normal mode.
The is no way to get rid of the white screen without re-flashing the bootloader.

View File

@@ -0,0 +1,41 @@
#!/bin/sh
# This script creates u-boot FIT image containing the kernel and the DT,
# then signs it using futility from vboot-utils.
# The resulting file is called uImage.kpart.
BOARD_DIR=$(dirname $0)/${BOARD_NAME}
mkimage=$HOST_DIR/bin/mkimage
futility=$HOST_DIR/bin/futility
devkeys=$HOST_DIR/share/vboot/devkeys
run() { echo "$@"; "$@"; }
die() { echo "$@" >&2; exit 1; }
test -f $BINARIES_DIR/Image || \
die "No kernel image found"
test -x $mkimage || \
die "No mkimage found (host-uboot-tools has not been built?)"
test -x $futility || \
die "No futility found (host-vboot-utils has not been built?)"
# kernel.its references Image and mt8173-elm.dtb, and all three
# files must be in current directory for mkimage.
run cp $BOARD_DIR/kernel.its $BINARIES_DIR/kernel.its || exit 1
echo "# entering $BINARIES_DIR for the next command"
(cd $BINARIES_DIR && run $mkimage -f kernel.its uImage.itb) || exit 1
# futility requires non-empty file to be supplied with --bootloader
# even if it does not make sense for the target platform.
echo > $BINARIES_DIR/dummy.txt
run $futility vbutil_kernel \
--keyblock $devkeys/kernel.keyblock \
--signprivate $devkeys/kernel_data_key.vbprivk \
--arch aarch64 \
--version 1 \
--config $BOARD_DIR/kernel.args \
--vmlinuz $BINARIES_DIR/uImage.itb \
--bootloader $BINARIES_DIR/dummy.txt \
--pack $BINARIES_DIR/uImage.kpart || exit 1
rm -f $BINARIES_DIR/kernel.its $BINARIES_DIR/dummy.txt

View File

@@ -0,0 +1,4 @@
label RK3399RocPC linux
kernel /boot/Image
devicetree /boot/rk3399-roc-pc.dtb
append earlycon=uart8250,mmio32,0xff1a0000 root=/dev/mmcblk0p1 rootwait

View File

@@ -0,0 +1,22 @@
image sdcard.img {
hdimage {
}
partition u-boot-tpl-spl-dtb {
in-partition-table = "no"
image = "idbloader.img"
offset = 32K
}
partition u-boot-dtb {
in-partition-table = "no"
image = "u-boot.itb"
offset = 8M
size = 30M
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,5 @@
#!/bin/sh
BOARD_DIR="$(dirname $0)"
install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf

View File

@@ -0,0 +1,40 @@
Libre Computer Board ROC-RK3399-PC
===================================
Build:
$ make roc_pc_rk3399_defconfig
$ make
Files created in output directory
=================================
output/images
├── bl31.elf
├── idbloader.img
├── Image
├── rk3399-roc-pc.dtb
├── rootfs.ext2
├── rootfs.ext4 -> rootfs.ext2
├── rootfs.tar
├── sdcard.img
├── u-boot.bin
└── u-boot.itb
Creating bootable SD card:
==========================
Simply invoke (as root)
sudo dd if=output/images/sdcard.img of=/dev/sdX && sync
Where X is your SD card device
Serial console
--------------
Baudrate for this board is 1500000
Wiki link:
https://wiki.amarulasolutions.com/bsp/rockchip/rk3399/roc-rk3399-pc.html

View File

@@ -9,6 +9,7 @@
image boot.vfat {
vfat {
label = "boot"
files = {
%FILES%
}

View File

@@ -9,6 +9,7 @@
image boot.vfat {
vfat {
label = "boot"
files = {
%FILES%
}

View File

@@ -9,6 +9,7 @@
image boot.vfat {
vfat {
label = "boot"
files = {
%FILES%
}

View File

@@ -9,19 +9,26 @@ main ()
fi
if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; then
cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00910000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its
${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb
rm -f ${BINARIES_DIR}/u-boot.its
${HOST_DIR}/bin/mkimage_imx8 -fit -signed_hdmi ${BINARIES_DIR}/signed_hdmi_imx8m.bin -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin
elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then
cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00920000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its
${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb
rm -f ${BINARIES_DIR}/u-boot.its
${HOST_DIR}/bin/mkimage_imx8 -fit -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin
elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y$" ${BR2_CONFIG}; then
cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00960000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its
${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb
rm -f ${BINARIES_DIR}/u-boot.its
${HOST_DIR}/bin/mkimage_imx8 -v v2 -fit -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x912000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin
else
${HOST_DIR}/bin/mkimage_imx8 -commit > ${BINARIES_DIR}/mkimg.commit
cat ${BINARIES_DIR}/u-boot.bin ${BINARIES_DIR}/mkimg.commit > ${BINARIES_DIR}/u-boot-hash.bin

View File

@@ -38,6 +38,8 @@ genimage_type()
echo "genimage.cfg.template_imx8"
elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then
echo "genimage.cfg.template_imx8"
elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y$" ${BR2_CONFIG}; then
echo "genimage.cfg.template_imx8"
elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X=y$" ${BR2_CONFIG}; then
echo "genimage.cfg.template_imx8"
elif grep -Eq "^BR2_LINUX_KERNEL_INSTALL_TARGET=y$" ${BR2_CONFIG}; then

View File

@@ -8,6 +8,7 @@
image boot.vfat {
vfat {
label = "boot"
files = {
%FILES%
}

View File

@@ -1,4 +1,4 @@
From 90ecc0ad14337898b75843efc6530fc4a34f7808 Mon Sep 17 00:00:00 2001
From e9a88fddc149fc52cdc5a8997f9fd3a29416c643 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= <vincent.stehle@freescale.com>
Date: Tue, 12 Aug 2014 10:17:31 +0200
Subject: [PATCH] mx6qsabre_common: boot Linux to /init in mfgtools mode
@@ -14,23 +14,24 @@ This patch tells u-boot to tell the kernel to boot into /init (instead of
buildroot system entirely through USB.
Signed-off-by: Vincent Stehlé <vincent.stehle@freescale.com>
Signed-off-by: Julien Olivain <julien.olivain@oss.nxp.com>
---
include/configs/mx6sabre_common.h | 2 +-
include/configs/imx_env.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/configs/mx6sabre_common.h b/include/configs/mx6sabre_common.h
index 93d4c4b..d2e7efd 100644
--- a/include/configs/mx6sabre_common.h
+++ b/include/configs/mx6sabre_common.h
@@ -52,7 +52,7 @@
diff --git a/include/configs/imx_env.h b/include/configs/imx_env.h
index c03748d93f..aa1a8bf488 100644
--- a/include/configs/imx_env.h
+++ b/include/configs/imx_env.h
@@ -29,7 +29,7 @@
#define CONFIG_MFG_ENV_SETTINGS \
"mfgtool_args=setenv bootargs console=" CONSOLE_DEV ",115200 " \
#define CONFIG_MFG_ENV_SETTINGS_DEFAULT \
"mfgtool_args=setenv bootargs console=${console},${baudrate} " \
- "rdinit=/linuxrc " \
+ "rdinit=/init " \
"g_mass_storage.stall=0 g_mass_storage.removable=1 " \
"g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF "\
"g_mass_storage.iSerialNumber=\"\" "\
"clk_ignore_unused "\
"\0" \
"kboot="MFG_BOOT_CMD"\0"\
--
2.1.4
2.26.2

View File

@@ -1,89 +0,0 @@
From 27a2cd6a1980adf3002412678c8fdec6528dc47d Mon Sep 17 00:00:00 2001
From: Trent Piepho <tpiepho@impinj.com>
Date: Fri, 6 Apr 2018 17:11:27 -0700
Subject: [PATCH] imx: Create distinct pre-processed mkimage config files
Each imx image is created by a separate sub-make and during this process
the mkimage config file is run though cpp.
The cpp output is to the same file no matter what imx image is being
created.
This means if two imx images are generated in parallel they will attempt
to independently produce the same pre-processed mkimage config file at
the same time.
Avoid the problem by making the pre-processed config file name unique
based on the imx image it will be used in. This way each image will
create a unique config file and they won't clobber each other when run
in parallel.
This should fixed the build bug referenced in b5b0e4e3 ("imximage:
Remove failure when no IVT offset is found").
Cc: Breno Lima <breno.lima@nxp.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Fabio Estevam <fabio.estevam@nxp.com>
Signed-off-by: Trent Piepho <tpiepho@impinj.com>
Tested-by: Fabio Estevam <fabio.estevam@nxp.com>
[fabio: Adapted to imx_v2017.03_4.9.11_1.0.0_ga]
Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
arch/arm/imx-common/Makefile | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/arch/arm/imx-common/Makefile b/arch/arm/imx-common/Makefile
index d862258..f1bae8d 100644
--- a/arch/arm/imx-common/Makefile
+++ b/arch/arm/imx-common/Makefile
@@ -69,9 +69,11 @@ endif
quiet_cmd_cpp_cfg = CFGS $@
cmd_cpp_cfg = $(CPP) $(cpp_flags) -x c -o $@ $<
-IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%).cfgtmp
+# mkimage source config file
+IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%)
-$(IMX_CONFIG): %.cfgtmp: % FORCE
+# How to create a cpp processed config file, they all use the same source
+%.cfgout: $(IMX_CONFIG) FORCE
$(Q)mkdir -p $(dir $@)
$(call if_changed_dep,cpp_cfg)
@@ -79,7 +81,7 @@ MKIMAGEFLAGS_u-boot.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imxim
-e $(CONFIG_SYS_TEXT_BASE)
u-boot.imx: MKIMAGEOUTPUT = u-boot.imx.log
-u-boot.imx: u-boot.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
+u-boot.imx: u-boot.bin u-boot.cfgout $(PLUGIN).bin FORCE
$(call if_changed,mkimage)
ifeq ($(CONFIG_OF_SEPARATE),y)
@@ -87,16 +89,15 @@ MKIMAGEFLAGS_u-boot-dtb.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T i
-e $(CONFIG_SYS_TEXT_BASE)
u-boot-dtb.imx: MKIMAGEOUTPUT = u-boot-dtb.imx.log
-u-boot-dtb.imx: u-boot-dtb.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
+u-boot-dtb.imx: u-boot-dtb.bin u-boot-dtb.cfgout $(PLUGIN).bin FORCE
$(call if_changed,mkimage)
endif
MKIMAGEFLAGS_SPL = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imximage \
-e $(CONFIG_SPL_TEXT_BASE)
-
SPL: MKIMAGEOUTPUT = SPL.log
-SPL: spl/u-boot-spl.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
+SPL: spl/u-boot-spl.bin spl/u-boot-spl.cfgout $(PLUGIN).bin FORCE
$(call if_changed,mkimage)
MKIMAGEFLAGS_u-boot.uim = -A arm -O U-Boot -a $(CONFIG_SYS_TEXT_BASE) \
@@ -124,4 +125,4 @@ cmd_u-boot-nand-spl_imx = (printf '\000\000\000\000\106\103\102\040\001' && \
spl/u-boot-nand-spl.imx: SPL FORCE
$(call if_changed,u-boot-nand-spl_imx)
-targets += $(addprefix ../../../,$(IMX_CONFIG) SPL u-boot.uim spl/u-boot-nand-spl.imx)
+targets += $(addprefix ../../../,SPL spl/u-boot-spl.cfgout u-boot-dtb.cfgout u-boot.cfgout u-boot.uim spl/u-boot-nand-spl.imx)
--
2.7.4

View File

@@ -0,0 +1,71 @@
****************************
Freescale i.MX6ULL EVK board
****************************
This file documents the Buildroot support for the Freescale i.MX6ULL EVK board.
Build
=====
First, configure Buildroot for your i.MX6ULL EVK board:
In order to to do so there are two supported options:
make freescale_imx6ullevk_defconfig
if you plan to use NXP provided U-Boot and kernel.
or
make imx6ullevk_defconfig
if you plan to use mainline U-Boot and mainline kernel.
Build all components:
make
You will find in output/images/ the following files:
- boot.vfat
- imx6ull-14x14-evk.dtb
- rootfs.ext2
- rootfs.ext4
- rootfs.tar
- sdcard.img
- u-boot.bin
- u-boot.imx
- zImage
Create a bootable SD card
=========================
To determine the device associated to the SD card have a look in the
/proc/partitions file:
cat /proc/partitions
Buildroot prepares a bootable "sdcard.img" image in the output/images/
directory, ready to be dumped on a SD card. Launch the following
command as root:
dd if=./output/images/sdcard.img of=/dev/<your-sd-device>
*** WARNING! This will destroy all the card content. Use with care! ***
For details about the medium image layout, see the definition in
board/freescale/common/imx/genimage.cfg.template.
Boot the i.MX6ULL EVK board
===========================
To boot your newly created system (refer to the i.MX 6ULL EVK Quick Start Guide [1] for guidance):
- insert the SD card in the micro SD slot of the board;
- put a micro USB cable into the Debug USB Port and connect using a terminal
emulator at 115200 bps, 8n1;
- power on the board.
Enjoy!
References
==========
[1] https://www.nxp.com/files-static/32bit/doc/brochure/IMX6ULLQSG.pdf

View File

@@ -1,89 +0,0 @@
From 27a2cd6a1980adf3002412678c8fdec6528dc47d Mon Sep 17 00:00:00 2001
From: Trent Piepho <tpiepho@impinj.com>
Date: Fri, 6 Apr 2018 17:11:27 -0700
Subject: [PATCH] imx: Create distinct pre-processed mkimage config files
Each imx image is created by a separate sub-make and during this process
the mkimage config file is run though cpp.
The cpp output is to the same file no matter what imx image is being
created.
This means if two imx images are generated in parallel they will attempt
to independently produce the same pre-processed mkimage config file at
the same time.
Avoid the problem by making the pre-processed config file name unique
based on the imx image it will be used in. This way each image will
create a unique config file and they won't clobber each other when run
in parallel.
This should fixed the build bug referenced in b5b0e4e3 ("imximage:
Remove failure when no IVT offset is found").
Cc: Breno Lima <breno.lima@nxp.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Fabio Estevam <fabio.estevam@nxp.com>
Signed-off-by: Trent Piepho <tpiepho@impinj.com>
Tested-by: Fabio Estevam <fabio.estevam@nxp.com>
[fabio: Adapted to imx_v2017.03_4.9.11_1.0.0_ga]
Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
arch/arm/imx-common/Makefile | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/arch/arm/imx-common/Makefile b/arch/arm/imx-common/Makefile
index d862258..f1bae8d 100644
--- a/arch/arm/imx-common/Makefile
+++ b/arch/arm/imx-common/Makefile
@@ -69,9 +69,11 @@ endif
quiet_cmd_cpp_cfg = CFGS $@
cmd_cpp_cfg = $(CPP) $(cpp_flags) -x c -o $@ $<
-IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%).cfgtmp
+# mkimage source config file
+IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%)
-$(IMX_CONFIG): %.cfgtmp: % FORCE
+# How to create a cpp processed config file, they all use the same source
+%.cfgout: $(IMX_CONFIG) FORCE
$(Q)mkdir -p $(dir $@)
$(call if_changed_dep,cpp_cfg)
@@ -79,7 +81,7 @@ MKIMAGEFLAGS_u-boot.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imxim
-e $(CONFIG_SYS_TEXT_BASE)
u-boot.imx: MKIMAGEOUTPUT = u-boot.imx.log
-u-boot.imx: u-boot.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
+u-boot.imx: u-boot.bin u-boot.cfgout $(PLUGIN).bin FORCE
$(call if_changed,mkimage)
ifeq ($(CONFIG_OF_SEPARATE),y)
@@ -87,16 +89,15 @@ MKIMAGEFLAGS_u-boot-dtb.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T i
-e $(CONFIG_SYS_TEXT_BASE)
u-boot-dtb.imx: MKIMAGEOUTPUT = u-boot-dtb.imx.log
-u-boot-dtb.imx: u-boot-dtb.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
+u-boot-dtb.imx: u-boot-dtb.bin u-boot-dtb.cfgout $(PLUGIN).bin FORCE
$(call if_changed,mkimage)
endif
MKIMAGEFLAGS_SPL = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imximage \
-e $(CONFIG_SPL_TEXT_BASE)
-
SPL: MKIMAGEOUTPUT = SPL.log
-SPL: spl/u-boot-spl.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
+SPL: spl/u-boot-spl.bin spl/u-boot-spl.cfgout $(PLUGIN).bin FORCE
$(call if_changed,mkimage)
MKIMAGEFLAGS_u-boot.uim = -A arm -O U-Boot -a $(CONFIG_SYS_TEXT_BASE) \
@@ -124,4 +125,4 @@ cmd_u-boot-nand-spl_imx = (printf '\000\000\000\000\106\103\102\040\001' && \
spl/u-boot-nand-spl.imx: SPL FORCE
$(call if_changed,u-boot-nand-spl_imx)
-targets += $(addprefix ../../../,$(IMX_CONFIG) SPL u-boot.uim spl/u-boot-nand-spl.imx)
+targets += $(addprefix ../../../,SPL spl/u-boot-spl.cfgout u-boot-dtb.cfgout u-boot.cfgout u-boot.uim spl/u-boot-nand-spl.imx)
--
2.7.4

View File

@@ -0,0 +1,73 @@
***************************
Freescale i.MX8MN EVK board
***************************
This file documents the Buildroot support for the i.MX8M Nano EVK board.
Build
=====
First, configure Buildroot for the i.MX8MN EVK board:
make freescale_imx8mnevk_defconfig
Build all components:
make
You will find in output/images/ the following files:
- bl31.bin
- boot.vfat
- ddr4_201810_fw.bin
- ddr_fw.bin
- fsl-imx8mn-ddr4-evk.dtb
- Image
- imx8-boot-sd.bin
- rootfs.ext2
- rootfs.ext4
- rootfs.tar
- sdcard.img
- u-boot.bin
- u-boot.imx
- u-boot.itb
- u-boot-nodtb.bin
- u-boot-spl.bin
- u-boot-spl-ddr.bin
Create a bootable SD card
=========================
To determine the device associated to the SD card have a look in the
/proc/partitions file:
cat /proc/partitions
Buildroot prepares a bootable "sdcard.img" image in the output/images/
directory, ready to be dumped on a SD card. Launch the following
command as root:
dd if=output/images/sdcard.img of=/dev/<your-sd-device>
*** WARNING! This will destroy all the card content. Use with care! ***
For details about the medium image layout, see the definition in
board/freescale/common/imx/genimage.cfg.template_imx8.
Boot the i.MX8MN EVK board
==========================
To boot your newly created system (refer to the i.MX8MNano EVK Quick Start Guide
[1] for guidance):
- insert the SD card in the SD slot of the board;
- Configure the switches as follows (X = "don't care"):
SW1101: 1100XXXXXX [D1-D10]
SW1102: XXXXXXXXXX [D1-D10]
- put a micro USB cable into the Debug USB Port and connect using a terminal
emulator at 115200 bps, 8n1;
- power on the board.
Enjoy!
References
==========
[1] https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-8m-nano-applications-processor:8MNANOD4-EVK

View File

@@ -10,8 +10,14 @@ Build
First, configure Buildroot for the i.MX8MQ EVK board:
If you want to use the NXP kernel:
make freescale_imx8mqevk_defconfig
Or if you want to use a mainline kernel:
make imx8mqevk_defconfig
Build all components:
make

View File

@@ -0,0 +1,76 @@
***************************
Freescale i.MX8QM MEK board
***************************
This file documents the Buildroot support for the NXP i.MX8QM MEK board.
You will find a reference to the board on nxp.com:
https://www.nxp.com/design/development-boards/i.mx-evaluation-and-development-boards/i.mx-8quadmax-multisensory-enablement-kit-mek:MCIMX8QM-CPU
You can also find the get started guide here:
https://www.nxp.com/document/guide/get-started-with-the-i.mx-8quadmax-mek:GS-iMX-8QM-MEK
Build
=====
First, configure Buildroot for the i.MX8QM MEK board:
$ make freescale_imx8qmmek_defconfig
Build all components:
$ make
You will find in output/images/ the following files:
- ahab-container.img
- bl31.bin
- boot.vfat
- fsl-imx8qm-mek.dtb
- Image
- imx8-boot-sd.bin
- mkimg.commit
- mx8qm-mek-scfw-tcm.bin
- mx8qm-val-scfw-tcm.bin
- mx8qm-a0-ddr4-scfw-tcm.bin
- mx8qm-a0-mek-scfw-tcm.bin
- mx8qm-a0-val-scfw-tcm.bin
- mx8qm-ddr4-scfw-tcm.bin
- rootfs.ext2
- rootfs.ext4
- rootfs.tar
- sdcard.img
- u-boot-atf.bin
- u-boot.bin
- u-boot-hash.bin
Create a bootable SD card
=========================
To determine the device associated to the SD card have a look in the
/proc/partitions file:
cat /proc/partitions
Buildroot prepares a bootable "sdcard.img" image in the output/images/
directory, ready to be dumped on a SD card. Launch the following
command as root:
dd if=output/images/sdcard.img of=/dev/<your-sd-device>
*** WARNING! This will destroy all the card content. Use with care! ***
For details about the medium image layout, see the definition in
board/freescale/common/imx/genimage.cfg.template_imx8.
Boot the i.MX8QM MEK board
==========================
To boot your newly created system:
- insert the SD card in the SD slot of the board;
- Configure the boot switch as follows:
SW2: OFF OFF ON ON OFF OFF
- put a micro USB cable into the Debug USB Port and connect using a terminal
emulator at 115200 bps, 8n1;
- power on the board.
Enjoy!

View File

@@ -0,0 +1,4 @@
label RK3399_NanoPC_T4 linux
kernel /Image
devicetree /rk3399-nanopc-t4.dtb
append earlycon=uart8250,mmio32,0xff1a0000 root=/dev/mmcblk1p4 rootwait

View File

@@ -0,0 +1,39 @@
image boot.vfat {
vfat {
files = {
"Image",
"rk3399-nanopc-t4.dtb",
"extlinux"
}
}
size = 64M
}
image sdcard.img {
hdimage {
gpt = true
}
partition loader1 {
image = "idbloader.img"
offset = 32K
}
partition loader2 {
image = "u-boot.itb"
offset = 8M
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
offset = 16M
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,5 @@
#!/bin/sh
BOARD_DIR="$(dirname $0)"
install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf

View File

@@ -0,0 +1,45 @@
FriendlyARM NANOPC-T4
=====================
Build:
$ make nanopc_t4_defconfig
$ make
Files created in output directory
=================================
output/images
├── bl31.elf
├── boot.vfat
├── extlinux
├── idbloader.img
├── Image
├── rk3399-nanopc-t4.dtb
├── rootfs.ext2
├── rootfs.ext4 -> rootfs.ext2
├── rootfs.tar
├── sdcard.img
├── u-boot.bin
└── u-boot.itb
Creating bootable SD card:
==========================
Simply invoke (as root)
sudo dd if=output/images/sdcard.img of=/dev/sdX && sync
Where X is your SD card device
Serial console
--------------
Baudrate for this board is 1500000
Login:
------
Apply power and press the PWR button for 3 sec. Enter 'root' as login user, and the prompt is ready.
https://wiki.amarulasolutions.com/bsp/rockchip/rk3399/npc_t4.html

View File

@@ -0,0 +1,4 @@
label RK3399_NANOPI_M4 linux
kernel /Image
devicetree /rk3399-nanopi-m4.dtb
append earlycon=uart8250,mmio32,0xff1a0000 root=/dev/mmcblk1p4 rw rootwait

View File

@@ -0,0 +1,39 @@
image boot.vfat {
vfat {
files = {
"Image",
"rk3399-nanopi-m4.dtb",
"extlinux"
}
}
size = 64M
}
image sdcard.img {
hdimage {
gpt = true
}
partition loader1 {
image = "idbloader.img"
offset = 32K
}
partition loader2 {
image = "u-boot.itb"
offset = 8M
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
offset = 16M
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,5 @@
#!/bin/sh
BOARD_DIR="$(dirname $0)"
install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf

View File

@@ -0,0 +1,45 @@
FriendlyARM NANOPI-M4
=====================
Build:
$ make nanopi_m4_defconfig
$ make
Files created in output directory
=================================
output/images
├── bl31.elf
├── boot.vfat
├── extlinux
├── idbloader.img
├── Image
├── rk3399-nanopi-m4.dtb
├── rootfs.ext2
├── rootfs.ext4 -> rootfs.ext2
├── rootfs.tar
├── sdcard.img
├── u-boot.bin
└── u-boot.itb
Creating bootable SD card:
==========================
Simply invoke (as root)
sudo dd if=output/images/sdcard.img of=/dev/sdX && sync
Where X is your SD card device
Serial console
--------------
Baudrate for this board is 1500000
Login:
------
Enter 'root' as login user, and the prompt is ready.
https://wiki.amarulasolutions.com/bsp/rockchip/rk3399/nanopi_m4.html

View File

@@ -0,0 +1,4 @@
label NanoPi Neo4 linux
kernel /boot/Image
devicetree /boot/rk3399-nanopi-neo4.dtb
append earlycon=uart8250,mmio32,0xff1a0000 root=/dev/mmcblk1p1 rootwait

View File

@@ -0,0 +1,22 @@
image sdcard.img {
hdimage {
}
partition u-boot-tpl-spl-dtb {
in-partition-table = "no"
image = "idbloader.img"
offset = 32K
}
partition u-boot-dtb {
in-partition-table = "no"
image = "u-boot.itb"
offset = 8M
size = 30M
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,5 @@
#!/bin/sh
BOARD_DIR="$(dirname $0)"
install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf

View File

@@ -0,0 +1,53 @@
Intro
=====
NanoPi Neo4 is a RK3399 SoC based ARM64 board.
Official wiki: http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO4
Mainline wiki: https://wiki.amarulasolutions.com/bsp/rockchip/rk3399/neo4.html
Build
=====
Run NanoPi Neo4 configuration
$ make nanopi_neo4_defconfig
To build, run make comamnd.
$ make
Files created in output directory
=================================
output/images
├── bl31.bin
├── bl31.elf
├── Image
├── rk3399-nanopi-neo4.dtb
├── rootfs.ext2
├── rootfs.ext4 -> rootfs.ext2
├── rootfs.tar
├── sdcard.img
├── u-boot.bin
├── u-boot.itb
├── u-boot-spl-dtb.bin
├── u-boot-tpl-dtb.bin
├── u-boot-tpl-dtb.img
└── u-boot-tpl-spl-dtb.img
Creating bootable SD card:
=========================
Simply invoke (as root)
# dd if=output/images/sdcard.img of=/dev/sdX && sync
Where X is your SD card device
Serial console
--------------
Baudrate for this board is 1500000

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-h3-nanopi-r1.dtb
bootz $kernel_addr_r - $fdt_addr_r

View File

@@ -0,0 +1,36 @@
# Minimal SD card image for the NanoPi M1
#
image boot.vfat {
vfat {
files = {
"zImage",
"sun8i-h3-nanopi-r1.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,2 @@
# USB ethernet
CONFIG_USB_RTL8152=y

View File

@@ -0,0 +1,170 @@
/*
* Copyright (C) 2019 Igor Pecovnik <igor@armbian.com>
*
* This file is dual-licensed: you can use it either under the terms
* of the GPL or the X11 license, at your option. Note that this dual
* licensing only applies to this file, and not this project as a
* whole.
*
* a) This file is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This file is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* Or, alternatively,
*
* b) Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include "sun8i-h3-nanopi.dtsi"
/ {
model = "FriendlyElec NanoPi-R1";
compatible = "friendlyarm,nanopi-r1", "allwinner,sun8i-h3";
aliases {
serial1 = &uart3;
ethernet0 = &emac;
ethernet1 = &emac;
ethernet2 = &sdio_wifi;
};
wifi_pwrseq: wifi_pwrseq {
compatible = "mmc-pwrseq-simple";
pinctrl-names = "default";
reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
};
reg_gmac_3v3: gmac-3v3 {
compatible = "regulator-fixed";
regulator-name = "gmac-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
startup-delay-us = <100000>;
enable-active-high;
gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
};
leds {
/delete-node/ status;
/delete-node/ pwr;
led1 {
label = "LED1";
gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
};
led2 {
label = "LED2";
gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>;
default-state = "off";
linux,default-trigger = "netdev";
};
led3 {
label = "LED3";
gpios = <&pio 0 9 GPIO_ACTIVE_HIGH>;
default-state = "off";
linux,default-trigger = "netdev";
};
};
r_gpio_keys {
compatible = "gpio-keys";
input-name = "k1";
pinctrl-names = "default";
pinctrl-0 = <&sw_r_npi>;
/delete-node/ k1;
reset {
label = "reset";
linux,code = <BTN_1>;
gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
};
};
};
&emac {
pinctrl-names = "default";
pinctrl-0 = <&emac_rgmii_pins>;
phy-supply = <&reg_gmac_3v3>;
phy-handle = <&ext_rgmii_phy>;
phy-mode = "rgmii";
status = "okay";
};
&external_mdio {
ext_rgmii_phy: ethernet-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <7>;
};
};
&mmc1 {
vmmc-supply = <&reg_vcc3v3>;
vqmmc-supply = <&reg_vcc3v3>;
mmc-pwrseq = <&wifi_pwrseq>;
bus-width = <4>;
non-removable;
status = "okay";
sdio_wifi: sdio_wifi@1 {
reg = <1>;
compatible = "brcm,bcm4329-fmac";
interrupt-parent = <&pio>;
interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 / EINT10 */
interrupt-names = "host-wake";
};
};
&mmc2 {
pinctrl-names = "default";
pinctrl-0 = <&mmc2_8bit_pins>;
vmmc-supply = <&reg_vcc3v3>;
vqmmc-supply = <&reg_vcc3v3>;
bus-width = <8>;
non-removable;
status = "okay";
};
&ohci0 {
status = "okay";
};
&ohci1 {
status = "okay";
};
&usb_otg {
dr_mode = "peripheral";
status = "okay";
};
&usbphy {
status = "okay";
};

View File

@@ -0,0 +1,29 @@
NanoPi R1
Intro
=====
This default configuration will allow you to start experimenting with the
buildroot environment for the NanoPi R1. With the current configuration
it will bring-up the board, and allow access through the serial console.
How to build it
===============
Configure Buildroot:
$ make nanopi_r1_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,22 @@
CONFIG_ARM=y
CONFIG_ARCH_SUNXI=y
CONFIG_SPL=y
CONFIG_MACH_SUN8I_H3=y
CONFIG_DRAM_CLK=408
CONFIG_DRAM_ZQ=3881979
CONFIG_DRAM_ODT_EN=y
CONFIG_MACPWR="PD6"
# CONFIG_VIDEO_DE2 is not set
CONFIG_NR_DRAM_BANKS=1
# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
CONFIG_CONSOLE_MUX=y
CONFIG_SYS_CLK_FREQ=480000000
# CONFIG_CMD_FLASH is not set
# CONFIG_SPL_DOS_PARTITION is not set
# CONFIG_SPL_EFI_PARTITION is not set
CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-nanopi-r1"
CONFIG_SUN8I_EMAC=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_OHCI_HCD=y
CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
CONFIG_MMC_SUNXI_SLOT_EXTRA=2

View File

@@ -0,0 +1,102 @@
/*
* Copyright (C) 2019 Igor Pecovnik <igor@armbian.com>
*
* This file is dual-licensed: you can use it either under the terms
* of the GPL or the X11 license, at your option. Note that this dual
* licensing only applies to this file, and not this project as a
* whole.
*
* a) This file is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This file is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* Or, alternatively,
*
* b) Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include "sun8i-h3-nanopi.dtsi"
/ {
model = "FriendlyARM NanoPi R1";
compatible = "friendlyarm,nanopi-neo", "allwinner,sun8i-h3";
reg_gmac_3v3: gmac-3v3 {
compatible = "regulator-fixed";
pinctrl-names = "default";
regulator-name = "gmac-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
startup-delay-us = <100000>;
enable-active-high;
gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
};
};
&ehci0 {
status = "okay";
};
&pio {
gmac_power_pin_nanopi: gmac_power_pin@0 {
pins = "PD6";
function = "gpio_out";
};
};
&ohci0 {
status = "okay";
};
&mmc2 {
pinctrl-names = "default";
pinctrl-0 = <&mmc2_8bit_pins>;
vmmc-supply = <&reg_vcc3v3>;
bus-width = <8>;
non-removable;
cap-mmc-hw-reset;
status = "okay";
};
&emac {
pinctrl-names = "default";
pinctrl-0 = <&emac_rgmii_pins>;
phy-supply = <&reg_gmac_3v3>;
phy-handle = <&ext_rgmii_phy>;
phy-mode = "rgmii";
status = "okay";
};
&external_mdio {
ext_rgmii_phy: ethernet-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <7>;
};
};

View File

@@ -0,0 +1,11 @@
# Minimal image, no U-boot since v3/v5 cannot boot from sdcard, see
# readme.txt for details on configuring the on-board u-boot.
image sdcard.img {
hdimage {
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,14 @@
#
# The Espressobin has a switchcore with full support in the kernel.
# This fragment enables DSA and its drivers, inclding VLAN aware bridge
# support to allow users to easily set up a LAN switch + WAN interface.
#
CONFIG_NET_DSA=m
CONFIG_VLAN_8021Q=y
CONFIG_BRIDGE=m
CONFIG_BRIDGE_IGMP_SNOOPING=y
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_NET_DSA_MV88E6XXX=m
CONFIG_NET_DSA_MV88E6XXX_PTP=y

View File

@@ -0,0 +1,90 @@
Marvell ESPRESSObin
===================
This default configuration allows you to quickly get up and running with
the Marvell ESPRESSObin board by Globalscale Technologies Inc.
The ESPRESSObin is based on the Marvell Armada 88F3720 SoC, coupled with
a Marvell 88E6341 switch core "Topaz", with three exposed gigabit ports.
_________________________
|# U W L L U #|
|# S A A A S #|
|# B N N N B #|
|# 0 1 #|
|# Mini #|
|# -PCI #|
|# #|
|# 5 #|
|#__V___usb_PWR_SATA__SW_#|
Fig 1: Overview of board
Notice difference in Ethernet port layout compared to the Globalscale
docs. They order the ports; LAN2, LAN1, WAN (left to right in figure
above). For more information, see http://espressobin.net
Building
--------
$ make globalscale_espressobin_defconfig
$ make
This generates the kernel image, the devicetree binary, the rootfs as a
tar.gz, and a filesystem image containing everything.
All build artifacts are located in `output/images/`
Booting
-------
To boot, you need a UART connection, using the on-board micro USB port
set to 115200 8N1.
By default, the ESPRESSObin comes with a pre-flashed U-Boot set up to
load the kernel, device-tree and rootfs from SPI NOR flash. The board
jumpers can be changed to boot from different sources, see the quick
start guide for each board revision for details:
- ftp://downloads.globalscaletechnologies.com/Downloads/Espressobin/ESPRESSObin%20V5/
- ftp://downloads.globalscaletechnologies.com/Downloads/Espressobin/ESPRESSObin%20V7/
Note: the v5, and earlier, cannot boot from sdcard, so you have to set
up the factory U-Boot to boot into Buildroot:
1. Flash rootfs image to sdcard drive, your `of=` device may differ:
$ sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 bs=1M
$ sync
2. Boot board from SPI NOR, interrupt boot by pressing any key ...
3. Check with `printenv` that the default setup is OK, otherwise ensure
the following are set, and define `bootcmd` for automatic boot:
> setenv kernel_addr 0x5000000
> setenv fdt_addr 0x1800000
> setenv fdt_name boot/armada-3720-espressobin.dtb
> setenv console console=ttyMV0,115200 earlycon=ar3700_uart,0xd0012000
> setenv bootcmd 'mmc dev 0; ext4load mmc 0:1 $kernel_addr $image_name;ext4load mmc 0:1 $fdt_addr $fdt_name;setenv bootargs $console root=/dev/mmcblk0p1 rw rootwait; booti $kernel_addr - $fdt_addr'
4. Call the boot command, or `reset` the board to start:
> run bootcmd
Networking
----------
To enable Ethernet networking, load the `mv88e6xxx` kernel module, and
bring up each respective interface needed:
# modprobe mv88e6xxx
# ifconfig wan up
A more advanced scenario is setting up switching between the ports using
the Linux bridge. The kernel switchdev layer, and DSA driver, ensure
switch functions are "offloaded" to the HW switch, i.e., all traffic
between LAN ports never reach the CPU. For this you need the iproute2
suite of tools.

View File

@@ -1,14 +0,0 @@
#!/usr/bin/env bash
BOARD_DIR="$(dirname $0)"
GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
rm -rf "${GENIMAGE_TMP}"
genimage \
--rootpath "${TARGET_DIR}" \
--tmppath "${GENIMAGE_TMP}" \
--inputpath "${BINARIES_DIR}" \
--outputpath "${BINARIES_DIR}" \
--config "${GENIMAGE_CFG}"

View File

@@ -1,14 +0,0 @@
#!/usr/bin/env bash
BOARD_DIR="$(dirname $0)"
GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
rm -rf "${GENIMAGE_TMP}"
genimage \
--rootpath "${TARGET_DIR}" \
--tmppath "${GENIMAGE_TMP}" \
--inputpath "${BINARIES_DIR}" \
--outputpath "${BINARIES_DIR}" \
--config "${GENIMAGE_CFG}"

View File

@@ -0,0 +1,11 @@
setenv kernel_filename "Image"
setenv fdt_filename "meson-gxbb-odroidc2.dtb"
setenv bootargs "console=ttyAML0,115200n8 earlyprintk root=/dev/mmcblk1p2 rootwait rw"
echo > Loading Kernel...
fatload mmc 0:1 ${kernel_addr_r} ${kernel_filename}
echo > Loading FDT...
fatload mmc 0:1 ${fdt_addr_r} ${fdt_filename}
echo > Booting System...
booti ${kernel_addr_r} - ${fdt_addr_r}

View File

@@ -0,0 +1,38 @@
image boot.vfat {
vfat {
files = {
"Image",
"meson-gxbb-odroidc2.dtb",
"boot.scr"
}
}
size = 64M
}
image sdcard.img {
hdimage {
}
partition bl1 {
in-partition-table = "no"
image = "bl1.bin.hardkernel"
offset = 0
}
partition u-boot {
in-partition-table = "no"
image = "uboot-odc2.img"
offset = 49664
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,21 @@
#!/bin/sh
BOARD_DIR="$(dirname $0)"
${HOST_DIR}/bin/fip_create \
--bl30 ${BINARIES_DIR}/bl30.bin \
--bl301 ${BINARIES_DIR}/bl301.bin \
--bl31 ${BINARIES_DIR}/bl31.bin \
--bl33 ${BINARIES_DIR}/u-boot.bin \
${BINARIES_DIR}/fip.bin
${HOST_DIR}/bin/fip_create --dump ${BINARIES_DIR}/fip.bin
cat ${BINARIES_DIR}/bl2.package ${BINARIES_DIR}/fip.bin \
> ${BINARIES_DIR}/boot_new.bin
${HOST_DIR}/bin/amlbootsig ${BINARIES_DIR}/boot_new.bin ${BINARIES_DIR}/u-boot.img
dd if=${BINARIES_DIR}/u-boot.img of=${BINARIES_DIR}/uboot-odc2.img bs=512 skip=96
support/scripts/genimage.sh -c ${BOARD_DIR}/genimage.cfg

View File

@@ -0,0 +1,64 @@
ODROID-C2
Intro
=====
To be able to use ODROID-C2 board with the images generated by
Buildroot, you have to prepare the SDCard or eMMC.
How to build it
===============
$ make odroidc2_defconfig
Then you can edit the build options using
$ make menuconfig
Compile all and build rootfs image:
$ make
Note: you will need to have access to the network, since Buildroot will
download the packages' sources.
Result of the build
-------------------
After building, you should obtain this tree:
output/images/
+-- bl1.bin.hardkernel
+-- bl2.package
+-- bl301.bin
+-- bl30.bin
+-- bl31.bin
+-- boot_new.bin
+-- boot.scr [1]
+-- boot.vfat
+-- fip.bin
+-- Image [2]
+-- meson-gxbb-odroidc2.dtb
+-- rootfs.ext2
+-- rootfs.ext4
+-- rootfs.tar
+-- sdcard.img
+-- u-boot.bin
+-- u-boot.img
+-- uboot-odc2.img [3]
[1] This is the ODROID-C2 configuration file used in u-boot.
[2] This is the ODROID-C2 kernel image file which will be booted.
[3] This is the ODROID-C2 signed u-boot image which will be used.
How to write the SD card or eMMC
================================
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 or eMMC with "dd":
$ sudo dd if=output/images/sdcard.img of=/dev/sdX
Insert the SDcard into your ODROID-C2, and power it up. Your new system
should come up now.

View File

@@ -0,0 +1,23 @@
#!/bin/sh
#
load_drivers()
{
echo "Loading needed modules..."
for file in $(echo "dwmac_generic dwmac-meson8b meson_dw_hdmi meson_gxbb_wdt"); do
modprobe ${file}
done
}
case "$1" in
start)
load_drivers
;;
stop)
;;
restart|reload)
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac

View File

@@ -0,0 +1,4 @@
label buildroot
kernel /boot/Image
devicetreedir /boot
append root=PARTUUID=%PARTUUID% rootwait

View File

@@ -0,0 +1,11 @@
image sdcard-emmc.img {
hdimage {
gpt = true
}
partition rootfs {
offset = 2M
image = rootfs.ext4
partition-uuid = %PARTUUID%
}
}

View File

@@ -0,0 +1,7 @@
#!/bin/sh
BOARD_DIR="$(dirname $0)"
PARTUUID="$($HOST_DIR/bin/uuidgen)"
install -d "$TARGET_DIR/boot/extlinux/"
sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf"
sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/genimage.cfg" > "$BINARIES_DIR/genimage.cfg"

View File

@@ -0,0 +1,80 @@
Kontron SMARC-sAL28
===================
How to build it
===============
Configure Buildroot:
$ make kontron_smarc_sal28_defconfig
Change settings to fit your needs (optional):
$ make menuconfig
Compile everything and build the rootfs image:
$ make
Copying the image to a storage device
=====================================
Buildroot builds an image which can be written to the internal eMMC
storage, a SD card or an USB thumb drive. You can use the following
command on your host:
$ sudo dd if=output/images/sdcard-emmc.img of=/dev/sdx bs=1M
Where /dev/sdx is the corresponding block device of your SD card or USB
thumb drive. To flash it on your internal eMMC use the following command on
the board:
# dd if=sdcard-emmc.img of=/dev/mmcblk1 bs=1M
Be sure you have not booted from the internal eMMC in this case!
Booting the board
=================
By default the bootloader will search for the first valid image, starting
with the internal eMMC. Consult the vendor documentation on how to use the
DIP switches to select specific boot devices. To use the bootloader
environment set the boot_targets correspondingly. E.g.:
# setenv boot_targets usb0
To boot from an USB thumb drive.
The device tree is loaded according to the filename in fdtfile. The
following command will set the default device tree, which works on almost
all variants (with less features of course):
# setenv fdtfile freescale/fsl-ls1028a-kontron-sl28.dtb
Set this to a device tree which fits your board variant.
Connect your serial cable to SER1 and open your favorite terminal emulation
program (baudrate 115200, 8n1). E.g.:
$ picocom -b 115200 /dev/ttyUSB0
You will get a warning reported by fdisk when you examine the SD card.
This is because the genimage.cfg file doesn't specify the SD card size
(as people will naturally have different sized cards), so the
secondary GPT header is placed after the rootfs rather than at the end
of the disk where it is expected to be.
You will see something like this at boot time:
[ 4.552797] GPT:Primary header thinks Alt. header is not at the end of the disk.
[ 4.560237] GPT:266272 != 7864319
[ 4.563565] GPT:Alternate GPT header not at the end of the disk.
[ 4.569596] GPT:266272 != 7864319
[ 4.572925] GPT: Use GNU Parted to correct GPT errors.
What does not work
==================
For reasons unknown, the network card doesn't work if you use the original
vendor bootloader. Board support patches for upstream u-boot are currently
pending. Stay tuned.

View File

@@ -0,0 +1,8 @@
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.0", DRIVERS=="fsl_enetc", NAME="eno0"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.1", DRIVERS=="fsl_enetc", NAME="eno1"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.2", DRIVERS=="fsl_enetc", NAME="eno2"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.6", DRIVERS=="fsl_enetc", NAME="eno3"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.0", DRIVERS=="fsl_enetc_vf", NAME="eno0vf0"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.1", DRIVERS=="fsl_enetc_vf", NAME="eno0vf1"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.2", DRIVERS=="fsl_enetc_vf", NAME="eno1vf0"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.3", DRIVERS=="fsl_enetc_vf", NAME="eno1vf1"

View File

@@ -0,0 +1,6 @@
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p0", NAME="swp0"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p1", NAME="swp1"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p2", NAME="swp2"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p3", NAME="swp3"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p4", NAME="swp4"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p5", NAME="swp5"

View File

@@ -0,0 +1,19 @@
# Map the GBE0 and GBE1 names from the SMARC standard to the network
# interfaces. This depends on the variant of the board.
# get the variant compatible string
PROGRAM=="/bin/grep '^kontron,sl28-var[1-4]$' /sys/firmware/devicetree/base/compatible", ENV{sl28_compatible}="%c"
# variant 1
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.1", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var1", NAME="gbe0"
# variant 2
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p0", ENV{sl28_compatible}=="kontron,sl28-var2", NAME="gbe0"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p1", ENV{sl28_compatible}=="kontron,sl28-var2", NAME="gbe1"
# variant 3
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.0", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var3", NAME="gbe0"
# variant 4
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.0", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var4", NAME="gbe0"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.1", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var4", NAME="gbe1"

View File

@@ -0,0 +1,9 @@
image sdcard.img {
hdimage {
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,71 @@
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_PREEMPT=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_CFG80211=y
CONFIG_CFG80211_WEXT=y
CONFIG_MAC80211=y
CONFIG_RFKILL=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_CHR_DEV_SG=y
CONFIG_MTD=y
CONFIG_MTD_BLOCK=y
CONFIG_GPIO_SYSFS=y
CONFIG_NETDEVICES=y
CONFIG_LIBERTAS=m
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1200
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=900
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_TABLET=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_POWER_SUPPLY=y
CONFIG_BATTERY_OLPC=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_CONTROLLER=y
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=m
CONFIG_V4L_PLATFORM_DRIVERS=y
CONFIG_DRM=y
CONFIG_DRM_PANEL_SIMPLE=m
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FB_SIMPLE=y
CONFIG_LCD_CLASS_DEVICE=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_STORAGE=y
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
CONFIG_RTC_CLASS=y
CONFIG_EXT4_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_FONTS=y
CONFIG_FONT_TER16x32=y

View File

@@ -0,0 +1,47 @@
\ OLPC XO boot script
: (visible) " unfreeze visible" evaluate ;
' (visible) catch drop forget (visible)
" /aliases" find-device " last" get-property
abort" No last alias"
" /pci/sd@c" 2over substring? if " root=/dev/mmcblk0p1 " to boot-file then
" /sd/sdhci@d4280000" 2over substring? if " root=/dev/mmcblk1p1 " to boot-file then
" /pci/usb@" 2over substring? if " root=/dev/sda1 " to boot-file then
" /usb@" 2over substring? if " root=/dev/sda1 " to boot-file then
" /pci/nandflash@c" 2over substring? if " root=/dev/mtdblock0 rootfstype=jffs2 " to boot-file then
2drop
root-device " compatible" get-property dend if 0 0 then ( compatible$ )
" olpc,xo-1.75" 2over sindex -1 > if ( compatible$ )
\ Version check on XO-1.75
" mrvl,mmp2" 2over sindex -1 = if ( compatible$ )
2drop ( )
cr
." Firmware Q4E00 or newer is needed to boot a Devicetree enabled kernel." cr
cr
." One way to update is to copy http://dev.laptop.org/~quozl/q4e00ja.rom" cr
." to a FAT partition on a USB flash stick and run ""flash u:\q4e00ja.rom""" cr
cr
." Aborting boot." cr
" show-sad" evaluate
abort
then
then ( compatible$ )
" mmp" 2swap sindex -1 > if
\ A Marvell MMP-based machine
" last:\boot\zImage" to boot-device
boot-file " console=ttyS2,115200 " $cat2 to boot-file
else
\ Assume XO-1
" last:\boot\bzImage" to boot-device
boot-file " console=ttyS0,115200 reboot=pci " $cat2 to boot-file
then
\ Pick a terminal that looks better on the XO screen
root-device " architecture" get-property dend if 0 0 else 1- then
" OLPC" $= if boot-file " fbcon=font:TER16x32 vt.color=0xf0 " $cat2 to boot-file then
boot-file " console=tty0 rootwait" $cat2 to boot-file
boot

View File

@@ -0,0 +1,4 @@
#!/bin/sh
BOARD_DIR="$(dirname $0)"
install -m 0644 -D $BOARD_DIR/olpc.fth $TARGET_DIR/boot/olpc.fth

View File

@@ -0,0 +1,98 @@
OLPC XO Laptops
===============
This document explains how to build and run images that run on the OLPC
XO laptops.
Supported models
----------------
* OLPC XO-1
The original NS Geode based OLPC laptop, uses the x86 architecture.
Can be booted either from an internal MTD device formatted with JFFS2
or from a FAT or EXT4 partition on a SD card or a USB flash stick.
* OLPC XO-7.5
The ARM-based laptop. Needs a recent enough firmware to provide a good
enough flattened device tree to the kernel. Can be from a FAT or EXT4
partition on a internal eMMC, a SD card or a USB flash stick.
Configure and build
===================
$ make olpc_xo1_defconfig # Configure for XO-1
or:
$ make olpc_xo175_defconfig # Configure for XO-1.75
Then:
$ make menuconfig # Customize the build configuration
$ make # Build
Preparing the machine
=====================
Firmware security
-----------------
Most OLPC machines were shipped with the security system that disallows
booting unsigned software. If this is the case with your machine, in order
to run the image you've built on it you'll need to get a developer key and
deactivate the security system.
The procedure is descriped in the OLPC wiki:
http://wiki.laptop.org/go/Activation_and_Developer_Keys
Firmware upgrade
----------------
It is always preferrable to use an up to date firmware. The firmware images
are available at http://wiki.laptop.org/go/Firmware. For the XO-1.75 laptop
to boot the mainline kernel a firmware Q4E00JA or newer is needed. You can
get it at http://dev.laptop.org/~quozl/q4e00ja.rom.
To update the firmware, place the .rom file on to your bootable media,
connect a charged battery pack and a wall adapter, and enter the Open
Firmware prompt by pressing ESC during the early boot (needs an unlocked
laptop -- see "Firmware security" above). Then use the "flash" command
to update the firmware:
ok flash ext:\q4e00ja.rom \ Flash the "q4e00ja.rom" from the SD card
ok flash u:\q4e00ja.rom \ Flash the "q4e00ja.rom" from USB stick
Create the bootable SD card or USB flash stick
==============================================
When the build is finished, an image file called "sdcard.img" will be created.
It is suitable for writing directly to a SD card, USB flash stick or (on a
XO-1.75) the internal eMMC flash.
Before writing the image, please double check that you're using the right
device (e.g. with "lsblk" command). Doing the following will DESTROY ALL DATA
that's currently on the media.
# cat output/images/sdcard.img >/dev/<device>
Flashing the JFFS2 image (XO-1 only)
====================================
Unlike XO-1.75, the internal NAND flash on XO-1 is accessed without a
FTL and needs a flash-friendly filesystem. A build configured for XO-1
creates a file named "root.jffs2" that can be written to it.
One way to write it is from the Open Firmware prompt. First, partition
and format a USB flash disk with a FAT file system and place the
"root.jffs2" file onto it. Then power on the machine, enter the
Open Firmware port by pressing the ESC key and run the following:
ok patch noop ?open-crcs copy-nand \ Disable CRC check
ok copy-nand u:\root.jffs2
Booting the machine
===================
Once your machine is unlocked, it will automatically boot from your media
wherever it will detect it attached to the USB bus or the SD card slot,
otherwise it will proceed booting from the internal flash.

View File

@@ -0,0 +1,55 @@
CONFIG_ARCH_MMP=y
CONFIG_MACH_MMP2_DT=y
CONFIG_MACH_MMP3_DT=y
CONFIG_USB_EHCI_MV_U2O=y
CONFIG_SMP=y
CONFIG_NR_CPUS=2
CONFIG_HIGHMEM=y
CONFIG_FORCE_MAX_ZONEORDER=16
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_VFP=y
CONFIG_NEON=y
CONFIG_SENSORS_LIS3_SPI=y
CONFIG_SERIO_OLPC_APSP=y
CONFIG_REGULATOR_88PG86X=m
CONFIG_MEDIA_PLATFORM_SUPPORT=y
CONFIG_V4L_PLATFORM_DRIVERS=y
CONFIG_VIDEO_MMP_CAMERA=y
CONFIG_DRM_ARMADA=y
CONFIG_DRM_CHRONTEL_CH7033=m
CONFIG_DRM_DISPLAY_CONNECTOR=m
CONFIG_DRM_SIMPLE_BRIDGE=m
CONFIG_DRM_ETNAVIV=m
CONFIG_USB_EHCI_MV=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_PXAV3=y
CONFIG_OLPC_XO175=y
CONFIG_OLPC_XO175_EC=y
CONFIG_PHY_PXA_USB=y
CONFIG_PHY_MMP3_USB=y
CONFIG_CRYPTO_LZO=m
CONFIG_LIBERTAS_SDIO=m
CONFIG_LIBERTAS_THINFIRM=m
CONFIG_MWIFIEX=m
CONFIG_MWIFIEX_SDIO=m
CONFIG_MTD_SPI_NOR=m
CONFIG_SRAM=y
CONFIG_I2C_PXA=y
CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_SPI=y
CONFIG_SPI_PXA2XX=y
CONFIG_SPI_SLAVE=y
CONFIG_SND_SOC=y
CONFIG_SND_MMP_SOC_SSPA=y
CONFIG_SND_SOC_RT5631=y
CONFIG_SND_AUDIO_GRAPH_CARD=y
CONFIG_PWRSEQ_SD8787=m
CONFIG_RTC_DRV_DS1307=y
CONFIG_DMADEVICES=y
CONFIG_MMP_TDMA=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_ZFORCE=y
CONFIG_COMMON_CLK_MMP2_AUDIO=y

View File

@@ -0,0 +1,80 @@
# CONFIG_64BIT is not set
CONFIG_IOSF_MBI=y
CONFIG_MGEODE_LX=y
CONFIG_X86_MSR=y
CONFIG_HZ_100=y
CONFIG_KEXEC=y
CONFIG_CMDLINE_BOOL=y
CONFIG_ACPI=y
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_OLPC=y
CONFIG_OLPC_XO1_PM=y
CONFIG_OLPC_XO1_RTC=y
CONFIG_OLPC_XO1_SCI=y
# CONFIG_VIRTUALIZATION is not set
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_CMA=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_REDBOOT_PARTS=y
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=0
CONFIG_MTD_ONENAND=y
CONFIG_MTD_ONENAND_GENERIC=y
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_NAND_CAFE=y
CONFIG_MTD_UBI=y
CONFIG_CS5535_MFGPT=y
CONFIG_CS5535_CLOCK_EVENT_SRC=y
CONFIG_MOUSE_PS2_OLPC=y
CONFIG_SERIAL_8250_NR_UARTS=1
CONFIG_SERIAL_8250_RUNTIME_UARTS=1
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_VIA is not set
CONFIG_NVRAM=y
CONFIG_SCx200_ACB=y
CONFIG_PINCTRL=y
CONFIG_PINCTRL_SINGLE=y
CONFIG_GPIO_CS5535=y
CONFIG_THERMAL=y
CONFIG_WATCHDOG=y
CONFIG_GEODE_WDT=y
CONFIG_MFD_CS5535=y
CONFIG_MFD_MAX8925=y
CONFIG_VIDEO_CAFE_CCIC=y
CONFIG_FB_TILEBLITTING=y
CONFIG_FB_VESA=y
CONFIG_FB_GEODE=y
CONFIG_FB_GEODE_LX=y
CONFIG_BACKLIGHT_MAX8925=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_SND_OSSEMUL=y
CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_CS5535AUDIO=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_OHCI_HCD=y
CONFIG_MMC_SDHCI_PCI=y
CONFIG_STAGING=y
CONFIG_FB_OLPC_DCON=y
CONFIG_XO1_RFKILL=y
CONFIG_RESET_CONTROLLER=y
CONFIG_GENERIC_PHY=y
CONFIG_PROC_KCORE=y
CONFIG_HUGETLBFS=y
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_WBUF_VERIFY=y
CONFIG_JFFS2_SUMMARY=y
CONFIG_JFFS2_FS_XATTR=y
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
CONFIG_UBIFS_FS=y
CONFIG_PCI=y
CONFIG_LIBERTAS_USB=m
CONFIG_LIBERTAS_MESH=y
CONFIG_LIBERTAS_THINFIRM=m
CONFIG_LIBERTAS_THINFIRM_USB=m

View File

@@ -2,4 +2,3 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
CONFIG_REGULATOR_SY8106A=y
CONFIG_DRM_SUN8I_DW_HDMI=y
CONFIG_SUN8I_DE2_CCU=y
CONFIG_SND_SUN8I_CODEC_ANALOG=y

View File

@@ -0,0 +1,4 @@
label RK3399_ROCKPRO64 linux
kernel /Image
devicetree /rk3399-orangepi.dtb
append earlycon=uart8250,mmio32,0xff1a0000 root=/dev/mmcblk1p4 rw rootwait

View File

@@ -0,0 +1,39 @@
image boot.vfat {
vfat {
files = {
"Image",
"rk3399-orangepi.dtb",
"extlinux"
}
}
size = 64M
}
image sdcard.img {
hdimage {
gpt = true
}
partition loader1 {
image = "idbloader.img"
offset = 32K
}
partition loader2 {
image = "u-boot.itb"
offset = 8M
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
offset = 16M
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,5 @@
#!/bin/sh
BOARD_DIR="$(dirname $0)"
install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf

View File

@@ -0,0 +1,56 @@
Orangepi Rk3399
================
http://www.orangepi.org/Orange%20Pi%20RK3399/
Build:
======
$ make orangepi_rk3399_defconfig
$ make
Files created in output directory
=================================
output/images
├── bl31.elf
├── boot.vfat
├── extlinux
├── idbloader.img
├── Image
├── rk3399-orangepi.dtb
├── rootfs.ext2
├── rootfs.ext4 -> rootfs.ext2
├── rootfs.tar
├── sdcard.img
├── u-boot.bin
└── u-boot.itb
Creating bootable SD card:
==========================
Simply invoke (as root)
sudo dd if=output/images/sdcard.img of=/dev/sdX && sync
Where X is your SD card device.
Booting:
========
Orangepi-RK3399 by default boots from emmc. For SD card boot to
happen, emmc should be empty. If emmc happens to have any bootable
image then erase emmc so that bootrom will look for a proper image in SD.
emmc can be erased once after booted into linux as shown in below link.
https://wiki.amarulasolutions.com/bsp/setup/rockchip/rk3399_emmc.html
Serial console:
---------------
Baudrate for this board is 1500000.
Login:
------
Enter 'root' as login user, and the prompt is ready.
https://wiki.amarulasolutions.com/bsp/rockchip/rk3399/orangepi.html

View File

@@ -0,0 +1,6 @@
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
fatload mmc 0 $kernel_addr_r Image
fatload mmc 0 $fdt_addr_r sun50i-h5-orangepi-zero-plus.dtb
booti $kernel_addr_r - $fdt_addr_r

View File

@@ -0,0 +1,39 @@
image boot.vfat {
vfat {
files = {
"Image",
"sun50i-h5-orangepi-zero-plus.dtb",
"boot.scr"
}
}
size = 64M
}
image sdcard.img {
hdimage {
}
partition spl {
in-partition-table = "no"
image = "sunxi-spl.bin"
offset = 8192
}
partition u-boot {
in-partition-table = "no"
image = "u-boot.itb"
offset = 40K
size = 1M # 1MB - 40K
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,34 @@
Intro
=====
This default configuration will allow you to start experimenting with the
buildroot environment for the Orangepi Zero Plus. With the current configuration
it will bring-up the board, and allow access through the serial console.
Orangepi Zero Plus link:
http://www.orangepi.org/OrangePiZeroPlus/
This configuration uses U-Boot mainline and kernel mainline.
How to build
============
$ make orangepi_zero_plus_defconfig
$ make
Note: you will need access to the internet to download the required
sources.
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
$ sudo sync
Insert the micro SDcard in your Orangepi Zero Plus and power it up. The console
is on the serial line, 115200 8N1.

View File

@@ -10,7 +10,8 @@ image efi-part.vfat {
image = "bzImage"
}
}
size = 16777216
# 16MB - 32KB
size = 16744448
}
image disk.img {
@@ -22,7 +23,6 @@ image disk.img {
image = "efi-part.vfat"
partition-type-uuid = c12a7328-f81f-11d2-ba4b-00a0c93ec93b
offset = 32768
size = 16777216
bootable = true
}
@@ -30,6 +30,5 @@ image disk.img {
partition-type-uuid = 44479540-f297-41b2-9af7-d131d5f0458a
partition-uuid = UUID_TMP
image = "rootfs.ext2"
offset = 16809984
}
}

View File

@@ -0,0 +1,6 @@
serial 0 115200
default 1
label 1
kernel __KERNEL_PATH__
initrd __INITRD_PATH__
append root=/dev/sr0 console=ttyS0,115200n8

View File

@@ -0,0 +1,51 @@
CONFIG_SYSVIPC=y
CONFIG_CGROUPS=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_SMP=y
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_WIRELESS is not set
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_VIRTIO_BLK=y
CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_VIRTIO=y
CONFIG_ATA=y
CONFIG_SATA_AHCI=y
CONFIG_ATA_PIIX=y
CONFIG_NETDEVICES=y
CONFIG_VIRTIO_NET=y
CONFIG_IGB=y
CONFIG_NE2K_PCI=y
CONFIG_8139CP=y
# CONFIG_WLAN is not set
CONFIG_INPUT_EVDEV=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_DRM=y
CONFIG_SOUND=y
CONFIG_SND=y
# CONFIG_SND_PCI is not set
CONFIG_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_UHCI_HCD=y
CONFIG_USB_STORAGE=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_VIRTIO_INPUT=y
CONFIG_VIRTIO_MMIO=y
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
CONFIG_EXT4_FS=y
CONFIG_AUTOFS4_FS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_UNWINDER_FRAME_POINTER=y

View File

@@ -0,0 +1,40 @@
Intro
=====
This is a board configuration for the apu2 platform by PC Engines.
https://pcengines.ch/apu2.htm
Since the apu2 does not have any graphical output, the default configuration
will ensure that the kernel output as well as the login prompt will be sent to
the serial port.
How to build
============
The provided defconfig creates a hybrid isolinux image that can be booted from
either an USB stick or a CD.
$ make pcengines_apu2_defconfig
$ make
How to write to an USB stick
============================
Once the build process is finished you will have an image
called "rootfs.iso9660" in the output/images/ directory.
Copy the bootable "rootfs.iso9660" onto the USB stick with "dd":
$ sudo dd if=output/images/rootfs.iso9660 of=/dev/sdX bs=1M conv=fsync
$ sudo sync
How to connect to the apu2
==========================
Connect to the DB9 serial port of the apu2 board (either directly or through a
USB adapter) with a baudrate of 115200.
For example with miniterm (part of pyserial):
$ miniterm.py -f direct /dev/ttyUSB0 115200

View File

@@ -0,0 +1,4 @@
label RK3399_ROCKPRO64 linux
kernel /Image
devicetree /rk3399-rockpro64.dtb
append earlycon=uart8250,mmio32,0xff1a0000 root=/dev/mmcblk0p4 rw rootwait

View File

@@ -0,0 +1,39 @@
image boot.vfat {
vfat {
files = {
"Image",
"rk3399-rockpro64.dtb",
"extlinux"
}
}
size = 64M
}
image sdcard.img {
hdimage {
gpt = true
}
partition loader1 {
image = "idbloader.img"
offset = 32K
}
partition loader2 {
image = "u-boot.itb"
offset = 8M
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
offset = 16M
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,5 @@
#!/bin/sh
BOARD_DIR="$(dirname $0)"
install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf

View File

@@ -0,0 +1,60 @@
PINE64 ROCKPro64
================
https://www.pine64.org/rockpro64/
Build:
======
$ make rockpro64_defconfig
$ make
Files created in output directory
=================================
output/images
├── bl31.elf
├── boot.vfat
├── extlinux
├── idbloader.img
├── Image
├── rk3399-rockpro64.dtb
├── rootfs.ext2
├── rootfs.ext4 -> rootfs.ext2
├── rootfs.tar
├── sdcard.img
├── u-boot.bin
└── u-boot.itb
Creating bootable SD card:
==========================
Simply invoke (as root)
sudo dd if=output/images/sdcard.img of=/dev/sdX && sync
Where X is your SD card device.
Booting:
========
RockPro64 has a 40-pin PI-2 GPIO Bus.
Connect a jumper between pin 23 and pin 25 for SD card boot.
Serial console:
---------------
The pin layout for serial console on PI-2 GPIO Bus is as follows:
pin 6: gnd
pin 8: tx
pin 10: rx
Initially connect pin 6 and pin 8(transmit). Apply power to RockPro64, once the
power is on then connect pin 10(receive).
Baudrate for this board is 1500000.
Login:
------
Enter 'root' as login user, and the prompt is ready.
https://wiki.amarulasolutions.com/bsp/rockchip/rk3399/rockpro64.html

Some files were not shown because too many files have changed in this diff Show More