216 lines
7.6 KiB
Diff
216 lines
7.6 KiB
Diff
From 1c3ed985114431f9f3342ca4fcf6751a0ef39fed Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
|
|
Date: Tue, 22 Nov 2016 01:01:49 +0100
|
|
Subject: [PATCH 269/391] Add README.md with information and u-boot patches
|
|
|
|
Signed-off-by: Ondrej Jirman <megi@xff.cz>
|
|
---
|
|
...Fix-PLL1-setup-to-never-use-dividers.patch | 33 ++++
|
|
README.md | 154 ++++++++++++++++++
|
|
2 files changed, 187 insertions(+)
|
|
create mode 100644 0001-sunxi-h3-Fix-PLL1-setup-to-never-use-dividers.patch
|
|
create mode 100644 README.md
|
|
|
|
diff --git a/0001-sunxi-h3-Fix-PLL1-setup-to-never-use-dividers.patch b/0001-sunxi-h3-Fix-PLL1-setup-to-never-use-dividers.patch
|
|
new file mode 100644
|
|
index 000000000..2b892e805
|
|
--- /dev/null
|
|
+++ b/0001-sunxi-h3-Fix-PLL1-setup-to-never-use-dividers.patch
|
|
@@ -0,0 +1,33 @@
|
|
+From 7f5071f906f79bdc99d6b4b0ccf0cb280abe740b Mon Sep 17 00:00:00 2001
|
|
+From: Ondrej Jirman <megi@xff.cz>
|
|
+Date: Tue, 20 Dec 2016 11:25:12 +0100
|
|
+Subject: [PATCH] sunxi: h3: Fix PLL1 setup to never use dividers
|
|
+
|
|
+Kernel would lower the divider on first CLK change and cause the
|
|
+lock up.
|
|
+---
|
|
+ arch/arm/mach-sunxi/clock_sun6i.c | 7 +++----
|
|
+ 1 file changed, 3 insertions(+), 4 deletions(-)
|
|
+
|
|
+diff --git a/arch/arm/mach-sunxi/clock_sun6i.c b/arch/arm/mach-sunxi/clock_sun6i.c
|
|
+index 50fb302a19..91aa2a0478 100644
|
|
+--- a/arch/arm/mach-sunxi/clock_sun6i.c
|
|
++++ b/arch/arm/mach-sunxi/clock_sun6i.c
|
|
+@@ -94,11 +94,10 @@ void clock_set_pll1(unsigned int clk)
|
|
+ int k = 1;
|
|
+ int m = 1;
|
|
+
|
|
+- if (clk > 1152000000) {
|
|
+- k = 2;
|
|
+- } else if (clk > 768000000) {
|
|
++ if (clk >= 1368000000) {
|
|
+ k = 3;
|
|
+- m = 2;
|
|
++ } else if (clk >= 768000000) {
|
|
++ k = 2;
|
|
+ }
|
|
+
|
|
+ /* Switch to 24MHz clock while changing PLL1 */
|
|
+--
|
|
+2.11.0
|
|
+
|
|
diff --git a/README.md b/README.md
|
|
new file mode 100644
|
|
index 000000000..74c4c1641
|
|
--- /dev/null
|
|
+++ b/README.md
|
|
@@ -0,0 +1,154 @@
|
|
+Mainline linux kernel for Orange Pi PC/PC2/PC3/One, TBS A711, PinePhone (Pro), PocketBook Touch Lux 3
|
|
+------------------------------------------------------------------------------------------------------
|
|
+
|
|
+This kernel tree is meant for:
|
|
+
|
|
+- Orange Pi One
|
|
+- Orange Pi PC
|
|
+- Orange Pi PC 2
|
|
+- Orange Pi 3
|
|
+- PinePhone 1.0, 1.1 and 1.2(a/b)
|
|
+- TBS A711 Tablet
|
|
+- PocketBook Touch Lux 3
|
|
+- Pinebook Pro
|
|
+- Pinephone Pro
|
|
+
|
|
+Features in addition to mainline:
|
|
+
|
|
+- [Orange Pi One/PC/PC2] More aggressive OPPs for CPU
|
|
+- [All] Mark one of DRM planes as a cursor plane, speeding up Xorg based desktop with modesetting driver
|
|
+- [Orange Pi One/PC/PC2] Configure on-board micro-switches to perform system power off function
|
|
+- [Orange Pi One/PC/PC2/3] HDMI audio
|
|
+- [Orange Pi 3] Ethernet
|
|
+- [TBS A711] HM5065 (back camera) / GC2145 (front camera)
|
|
+- [PinePhone] WiFi, Bluetooth, Audio, Modem power, HDMI out over USB-C, USB-C support, cameras, PMIC improvements, power management, fixes here and there
|
|
+- [PocketBook Touch Lux 3] Display and Touchscreen support
|
|
+- [Pinephone Pro] Everything
|
|
+
|
|
+Pre-built u-boot and kernels are available at https://xff.cz/kernels/
|
|
+
|
|
+You may need some firmware files for some part of the functionality. Those are
|
|
+available at: https://megous.com/git/linux-firmware
|
|
+
|
|
+If you want to reproduce my pre-built kernels exactly, you'll need to uncomment
|
|
+CONFIG_EXTRA_FIRMWARE_DIR and CONFIG_EXTRA_FIRMWARE in the defconfigs, and
|
|
+point CONFIG_EXTRA_FIRMWARE_DIR to a directory on your computer where the
|
|
+clone of https://megous.com/git/linux-firmware resides.
|
|
+
|
|
+You can also leave those two config options commented out, and copy the contents
|
|
+of https://megous.com/git/linux-firmware to /lib/firmware/ on the target device.
|
|
+
|
|
+You can use this kernel to run a desktop environment on Orange Pi SBCs,
|
|
+Arch Linux on your Pinephone, or to have a completely opensource OS on
|
|
+a Pocketbook e-ink book reader.
|
|
+
|
|
+Have fun!
|
|
+
|
|
+
|
|
+Build instructions
|
|
+------------------
|
|
+
|
|
+These are rudimentary instructions and you need to understand what you're doing.
|
|
+These are just core steps required to build the ATF/u-boot/kernel. Downloading,
|
|
+verifying, renaming to correct directories is not described or mentioned. You
|
|
+should be able to infer missing necessary steps yourself for your particular needs.
|
|
+
|
|
+Get necessary toolchains from:
|
|
+
|
|
+- https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/ for 64bit Orange Pi PC2 and Orange Pi 3, PinePhone
|
|
+- https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/ for 32bit Orange Pis, Pocketbook, TBS tablet
|
|
+
|
|
+Extract toolchains and prepare the environment:
|
|
+
|
|
+ CWD=`pwd`
|
|
+ OUT=$CWD/builds
|
|
+ SRC=$CWD/u-boot
|
|
+ export PATH="$PATH:$CWD/Toolchains/arm/bin:$CWD/Toolchains/aarch64/bin"
|
|
+
|
|
+For Orange Pi PC2, Orange Pi 3 or PinePhone:
|
|
+
|
|
+ export CROSS_COMPILE=aarch64-linux-gnu-
|
|
+ export KBUILD_OUTPUT=$OUT/.tmp/uboot-pc2
|
|
+ rm -rf "$KBUILD_OUTPUT"
|
|
+ mkdir -p $KBUILD_OUTPUT $OUT/pc2
|
|
+
|
|
+Get and build ATF from https://github.com/ARM-software/arm-trusted-firmware:
|
|
+
|
|
+ make -C "$CWD/arm-trusted-firmware" PLAT=sun50i_a64 DEBUG=1 bl31
|
|
+ cp "$CWD/arm-trusted-firmware/build/sun50i_a64/debug/bl31.bin" "$KBUILD_OUTPUT"
|
|
+
|
|
+Use sun50i_a64 for Orange Pi PC2 or PinePhone and sun50i_h6 for Orange Pi 3.
|
|
+
|
|
+Build u-boot from https://megous.com/git/u-boot/ (opi-v2020.04 branch) with appropriate
|
|
+defconfig (orangepi_one_defconfig, orangepi_pc2_defconfig, orangepi_pc_defconfig, orangepi_3_defconfig, tbs_a711_defconfig, pinephone_defconfig).
|
|
+
|
|
+My u-boot branch already has all the necessary patches integrated and is configured for quick u-boot/kernel startup.
|
|
+
|
|
+ make -C u-boot orangepi_pc2_defconfig
|
|
+ make -C u-boot -j5
|
|
+
|
|
+ cp $KBUILD_OUTPUT/.config $OUT/pc2/uboot.config
|
|
+ cat $KBUILD_OUTPUT/{spl/sunxi-spl.bin,u-boot.itb} > $OUT/pc2/uboot.bin
|
|
+
|
|
+Get kernel from this repository and checkout the latest orange-pi-5.18 branch.
|
|
+
|
|
+Build the kernel for 64-bit boards:
|
|
+
|
|
+ export ARCH=arm64
|
|
+ export CROSS_COMPILE=aarch64-linux-gnu-
|
|
+ export KBUILD_OUTPUT=$OUT/.tmp/linux-arm64
|
|
+ mkdir -p $KBUILD_OUTPUT $OUT/pc2
|
|
+
|
|
+ make -C linux orangepi_defconfig
|
|
+ # or make -C linux pocketbook_touch_lux_3_defconfig
|
|
+ # or make -C linux tbs_a711_defconfig
|
|
+ make -C linux -j5 clean
|
|
+ make -C linux -j5 Image dtbs
|
|
+
|
|
+ cp -f $KBUILD_OUTPUT/arch/arm64/boot/Image $OUT/pc2/
|
|
+ cp -f $KBUILD_OUTPUT/.config $OUT/pc2/linux.config
|
|
+ cp -f $KBUILD_OUTPUT/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dtb $OUT/pc2/board.dtb
|
|
+
|
|
+Build the kernel for 32-bit boards:
|
|
+
|
|
+ export ARCH=arm
|
|
+ export CROSS_COMPILE=arm-linux-gnueabihf-
|
|
+ export KBUILD_OUTPUT=$OUT/.tmp/linux-arm
|
|
+ mkdir -p $KBUILD_OUTPUT $OUT/pc
|
|
+
|
|
+ make orangepi_defconfig
|
|
+ # or make pinephone_defconfig
|
|
+ make -C linux orangepi_defconfig
|
|
+ make -C linux -j5 clean
|
|
+ make -C linux -j5 zImage dtbs
|
|
+
|
|
+ cp -f $KBUILD_OUTPUT/arch/arm/boot/zImage $OUT/pc/
|
|
+ cp -f $KBUILD_OUTPUT/.config $OUT/pc/linux.config
|
|
+ cp -f $KBUILD_OUTPUT/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dtb $OUT/pc/board.dtb
|
|
+ # Or use sun8i-h3-orangepi-one.dtb for Orange Pi One
|
|
+
|
|
+
|
|
+PinePhone
|
|
+---------
|
|
+
|
|
+I don't run u-boot on PinePhone, so my pre-built kernel packages don't come
|
|
+with u-boot built for PinePhone.
|
|
+
|
|
+
|
|
+Kernel lockup issues
|
|
+--------------------
|
|
+
|
|
+*If you're getting lockups on boot or later during thermal regulation,
|
|
+you're missing an u-boot patch.*
|
|
+
|
|
+This patch is necessary to run this kernel!
|
|
+
|
|
+These lockups are caused by improper NKMP clock factors selection
|
|
+in u-boot for PLL_CPUX. (M divider should not be used. P divider
|
|
+should be used only for frequencies below 240MHz.)
|
|
+
|
|
+This patch for u-boot fixes it:
|
|
+
|
|
+ 0001-sunxi-h3-Fix-PLL1-setup-to-never-use-dividers.patch
|
|
+
|
|
+Kernel side is already fixed in this kernel tree.
|
|
--
|
|
2.35.3
|
|
|