Skip to content

megous/linux

orange-pi-6.3
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
This branch is 1881 commits ahead, 15180 commits behind torvalds:master.

Latest commit

* stable/linux-6.3.y: (128 commits)
  Linux 6.3.5
  Revert "arm64: dts: imx8mp: Drop simple-bus from fsl,imx8mp-media-blk-ctrl"
  net: phy: mscc: add VSC8502 to MODULE_DEVICE_TABLE
  net: ethernet: mtk_eth_soc: fix QoS on DSA MAC on non MTK_NETSYS_V2 SoCs
  page_pool: fix inconsistency for page_pool_ring_[un]lock()
  3c589_cs: Fix an error handling path in tc589_probe()
  net/smc: Reset connection when trying to use SMCRv2 fails.
  regulator: mt6359: add read check for PMIC MT6359
  firmware: arm_ffa: Set reserved/MBZ fields to zero in the memory descriptors
  arm64: dts: imx8mn-var-som: fix PHY detection bug by adding deassert delay
  net/mlx5: Devcom, serialize devcom registration
  net/mlx5: Devcom, fix error flow in mlx5_devcom_register_device
  net/mlx5: Collect command failures data only for known commands
  net/mlx5: Fix error message when failing to allocate device memory
  net/mlx5: DR, Check force-loopback RC QP capability independently from RoCE
  net/mlx5: Handle pairing of E-switch via uplink un/load APIs
  net/mlx5: DR, Fix crc32 calculation to work on big-endian (BE) CPUs
  net/mlx5e: do as little as possible in napi poll when budget is 0
  net/mlx5e: Use correct encap attribute during invalidation
  net/mlx5e: Fix deadlock in tc route query code
  ...
c4f66c9

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
May 24, 2023 17:30
September 28, 2022 09:02
May 30, 2023 14:17

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:

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.

Packages

No packages published

Languages

  • C 98.5%
  • Assembly 0.8%
  • Shell 0.3%
  • Makefile 0.2%
  • Python 0.1%
  • Perl 0.1%