diff --git a/packages/linux/package.mk b/packages/linux/package.mk index e64aee0cb7..50778a1aad 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -21,7 +21,7 @@ PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="http://www.kernel.org" PKG_DEPENDS_HOST="ccache:host" -PKG_DEPENDS_TARGET="toolchain cpio:host kmod:host pciutils xz:host wireless-regdb keyutils" +PKG_DEPENDS_TARGET="toolchain cpio:host kmod:host pciutils xz:host wireless-regdb keyutils $KERNEL_EXTRA_DEPENDS_TARGET" PKG_DEPENDS_INIT="toolchain" PKG_NEED_UNPACK="$LINUX_DEPENDS" PKG_SECTION="linux" @@ -39,8 +39,8 @@ case "$LINUX" in PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET aml-dtbtools:host" ;; amlogic-3.14) - PKG_VERSION="7951748" - PKG_SHA256="d90709aae14ac0c2fc64fd8423caa695829dc012f65f42069d27d84095df8137" + PKG_VERSION="9c63c24" + PKG_SHA256="ca5c17921e554c75a63dd91f400ceaee3657d2b485db93909754891d68ea19d2" PKG_URL="https://github.com/LibreELEC/linux-amlogic/archive/$PKG_VERSION.tar.gz" PKG_SOURCE_DIR="$PKG_NAME-amlogic-$PKG_VERSION*" PKG_PATCH_DIRS="amlogic-3.14" @@ -223,8 +223,8 @@ makeinstall_target() { cp -v $dtb $INSTALL/usr/share/bootloader fi done - if [ -d arch/$TARGET_KERNEL_ARCH/boot/dts/amlogic -a -f "arch/$TARGET_KERNEL_ARCH/boot/dts/amlogic/$KERNEL_UBOOT_EXTRA_TARGET" ]; then - cp "arch/$TARGET_KERNEL_ARCH/boot/dts/amlogic/$KERNEL_UBOOT_EXTRA_TARGET" $INSTALL/usr/share/bootloader/dtb.img 2>/dev/null || : + if [ -d arch/$TARGET_KERNEL_ARCH/boot/dts/amlogic -a -f arch/$TARGET_KERNEL_ARCH/boot/dtb.img ]; then + cp arch/$TARGET_KERNEL_ARCH/boot/dtb.img $INSTALL/usr/share/bootloader/dtb.img 2>/dev/null || : fi elif [ "$BOOTLOADER" = "bcm2835-bootloader" ]; then mkdir -p $INSTALL/usr/share/bootloader/overlays diff --git a/projects/Amlogic/bootloader/mkimage b/projects/Amlogic/bootloader/mkimage index abddaf12a4..e17ce7b94b 100644 --- a/projects/Amlogic/bootloader/mkimage +++ b/projects/Amlogic/bootloader/mkimage @@ -25,3 +25,7 @@ for src in $INSTALL_SRC_DIR/*autoscript.src ; do mcopy "$LE_TMP/$(basename $src .src)" :: fi done + +# copy device trees to part1 +mmd device_trees + mcopy $RELEASE_DIR/3rdparty/bootloader/*.dtb ::/device_trees diff --git a/projects/Amlogic/bootloader/release b/projects/Amlogic/bootloader/release new file mode 100755 index 0000000000..a8336ecc01 --- /dev/null +++ b/projects/Amlogic/bootloader/release @@ -0,0 +1,25 @@ +#!/bin/sh + +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2018-present Team LibreELEC +# +# LibreELEC 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. +# +# LibreELEC 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. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +. config/options $1 + +mkdir -p $RELEASE_DIR/3rdparty/bootloader + cp -a $INSTALL/usr/share/bootloader/*.dtb $RELEASE_DIR/3rdparty/bootloader + cp $INSTALL/usr/share/bootloader/dtb.img $RELEASE_DIR/3rdparty/bootloader diff --git a/projects/Amlogic/filesystem/usr/share/bootloader/update.sh b/projects/Amlogic/bootloader/update.sh similarity index 96% rename from projects/Amlogic/filesystem/usr/share/bootloader/update.sh rename to projects/Amlogic/bootloader/update.sh index f5c35ca7cd..4c0e5afed4 100755 --- a/projects/Amlogic/filesystem/usr/share/bootloader/update.sh +++ b/projects/Amlogic/bootloader/update.sh @@ -99,6 +99,12 @@ for arg in $(cat /proc/cmdline); do esac done +if [ -d $BOOT_ROOT/device_trees ]; then + mount -o rw,remount $BOOT_ROOT + rm $BOOT_ROOT/device_trees/*.dtb + cp -p $SYSTEM_ROOT/usr/share/bootloader/*.dtb $BOOT_ROOT/device_trees/ +fi + if [ -f $SYSTEM_ROOT/usr/share/bootloader/boot.ini ]; then echo "*** updating boot.ini ..." mount -o rw,remount $BOOT_ROOT diff --git a/projects/Amlogic/devices/LePotato/options b/projects/Amlogic/devices/LePotato/options index e7e44771f4..714daeb5a7 100644 --- a/projects/Amlogic/devices/LePotato/options +++ b/projects/Amlogic/devices/LePotato/options @@ -9,3 +9,6 @@ # Kernel extra targets to build KERNEL_UBOOT_EXTRA_TARGET="gxl_p212_1g_lepotato.dtb gxl_p212_2g_lepotato.dtb" + + # Additional kernel dependencies + KERNEL_EXTRA_DEPENDS_TARGET="device-trees-amlogic" diff --git a/projects/Amlogic/devices/LePotato/patches/linux/linux-0001-lepotato-dtb-overlay.patch b/projects/Amlogic/devices/LePotato/patches/linux/linux-0001-lepotato-dtb-overlay.patch deleted file mode 100644 index f1adf5743a..0000000000 --- a/projects/Amlogic/devices/LePotato/patches/linux/linux-0001-lepotato-dtb-overlay.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff --git a/arch/arm64/boot/dts/amlogic/gxl_p212_1g_lepotato.dts b/arch/arm64/boot/dts/amlogic/gxl_p212_1g_lepotato.dts -new file mode 100644 -index 0000000..8272581 ---- /dev/null -+++ b/arch/arm64/boot/dts/amlogic/gxl_p212_1g_lepotato.dts -@@ -0,0 +1,25 @@ -+#include "gxl_p212_1g.dts" -+ -+/ { -+ leds: gpio_leds { -+ compatible = "gpio-leds"; -+ -+ system { -+ label = "librecomputer:system-status"; -+ gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ panic-indicator; -+ }; -+ -+ blue { -+ label = "librecomputer:blue"; -+ gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ }; -+ }; -+ -+ gpio_keypad { -+ status = "disabled"; -+ }; -+ -+}; -diff --git a/arch/arm64/boot/dts/amlogic/gxl_p212_2g_lepotato.dts b/arch/arm64/boot/dts/amlogic/gxl_p212_2g_lepotato.dts -new file mode 100644 -index 0000000..75f8bc7 ---- /dev/null -+++ b/arch/arm64/boot/dts/amlogic/gxl_p212_2g_lepotato.dts -@@ -0,0 +1,25 @@ -+#include "gxl_p212_2g.dts" -+ -+/ { -+ leds: gpio_leds { -+ compatible = "gpio-leds"; -+ -+ system { -+ label = "librecomputer:system-status"; -+ gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ panic-indicator; -+ }; -+ -+ blue { -+ label = "librecomputer:blue"; -+ gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ }; -+ }; -+ -+ gpio_keypad { -+ status = "disabled"; -+ }; -+ -+}; diff --git a/projects/Amlogic/devices/S905/options b/projects/Amlogic/devices/S905/options index 13a28c7fac..6f0250b69b 100644 --- a/projects/Amlogic/devices/S905/options +++ b/projects/Amlogic/devices/S905/options @@ -1,3 +1,6 @@ + # Additional kernel dependencies + KERNEL_EXTRA_DEPENDS_TARGET="device-trees-amlogic" + # additional drivers to install: # for a list of additinoal drivers see packages/linux-drivers # Space separated list is supported, diff --git a/projects/Amlogic/devices/S912/options b/projects/Amlogic/devices/S912/options index 177d31d8fa..6af65e3030 100644 --- a/projects/Amlogic/devices/S912/options +++ b/projects/Amlogic/devices/S912/options @@ -1,6 +1,9 @@ # Kernel extra targets to build KERNEL_UBOOT_EXTRA_TARGET="gxm_q200_2g.dtb gxm_q201_1g.dtb gxm_q201_2g.dtb" + # Additional kernel dependencies + KERNEL_EXTRA_DEPENDS_TARGET="device-trees-amlogic" + # OpenGL-ES implementation to use (no / bcm2835-driver / gpu-viv-bin-mx6q / opengl-meson) OPENGLES="opengl-meson-t82x" diff --git a/projects/Amlogic/options b/projects/Amlogic/options index c638ac569d..b92f22ca94 100644 --- a/projects/Amlogic/options +++ b/projects/Amlogic/options @@ -54,6 +54,9 @@ # Additional kernel make parameters (for example to specify the u-boot loadaddress) KERNEL_MAKE_EXTRACMD="" + # Additional kernel dependencies + KERNEL_EXTRA_DEPENDS_TARGET="" + # Kernel to use. values can be: # default: default mainline kernel LINUX="amlogic-3.14" @@ -61,7 +64,6 @@ # kernel image name KERNEL_NAME="kernel.img" - ################################################################################ # setup build defaults ################################################################################ diff --git a/projects/Amlogic/packages/device-trees-amlogic/package.mk b/projects/Amlogic/packages/device-trees-amlogic/package.mk new file mode 100644 index 0000000000..af6038cee8 --- /dev/null +++ b/projects/Amlogic/packages/device-trees-amlogic/package.mk @@ -0,0 +1,78 @@ +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2016-present Team LibreELEC +# +# LibreELEC 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. +# +# LibreELEC 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. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="device-trees-amlogic" +PKG_VERSION="8a3cfc7" +PKG_SHA256="377e43f346680ae93bb08120fefaa291ce9e4e7cc2947aae0aeba674d46674b8" +PKG_LICENSE="GPL" +PKG_URL="https://github.com/LibreELEC/device-trees-amlogic/archive/$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +make_target() { + # Enter kernel directory + pushd $BUILD/linux-$(kernel_version) > /dev/null + + # Device trees already present in kernel tree we want to include + EXTRA_TREES=(gxbb_p201 gxl_p212_1g gxl_p212_2g gxm_q200_2g gxm_q201_1g gxm_q201_2g gxl_p281_1g) + + # Add trees to the list + for f in ${EXTRA_TREES[@]}; do + DTB_LIST="$DTB_LIST $f.dtb" + done + + # Copy all device trees to kernel source folder and create a list + cp -f $PKG_BUILD/*.dts* arch/$TARGET_KERNEL_ARCH/boot/dts/amlogic/ + for f in $PKG_BUILD/*.dts; do + DTB_NAME="$(basename $f .dts).dtb" + DTB_LIST="$DTB_LIST $DTB_NAME" + done + + # Filter device tree list depending on project + case "$DEVICE" in + S905) + for f in ${DTB_LIST[@]}; do + [[ "$f" == gxbb* ]] || [[ "$f" == gxl* ]] && DTB_LIST_FILTERED="$DTB_LIST_FILTERED $f" + done + ;; + S912) + for f in ${DTB_LIST[@]}; do + [[ "$f" == gxm* ]] && DTB_LIST_FILTERED="$DTB_LIST_FILTERED $f" + done + ;; + *) + for f in ${DTB_LIST[@]}; do + if listcontains "$KERNEL_UBOOT_EXTRA_TARGET" "$f"; then + DTB_LIST_FILTERED="$DTB_LIST_FILTERED $f" + fi + done + ;; + esac + + # Compile device trees + LDFLAGS="" make $DTB_LIST_FILTERED + mv arch/$TARGET_KERNEL_ARCH/boot/dts/amlogic/*.dtb $PKG_BUILD + + popd > /dev/null +} + +makeinstall_target() { + mkdir -p $INSTALL/usr/share/bootloader + cp -a $PKG_BUILD/*.dtb $INSTALL/usr/share/bootloader +} diff --git a/projects/Generic/options b/projects/Generic/options index 56da7426e2..07c8bfc139 100644 --- a/projects/Generic/options +++ b/projects/Generic/options @@ -36,6 +36,9 @@ # Additional kernel make parameters (for example to specify the u-boot loadaddress) KERNEL_MAKE_EXTRACMD="" + # Additional kernel dependencies + KERNEL_EXTRA_DEPENDS_TARGET="" + # Kernel to use. values can be: # default: default mainline kernel LINUX="default" diff --git a/projects/RPi/options b/projects/RPi/options index a6d4792431..c117d17568 100644 --- a/projects/RPi/options +++ b/projects/RPi/options @@ -68,6 +68,9 @@ # Additional kernel make parameters (for example to specify the u-boot loadaddress) KERNEL_MAKE_EXTRACMD="dtbs" + # Additional kernel dependencies + KERNEL_EXTRA_DEPENDS_TARGET="" + # Kernel to use. values can be: # default: default mainline kernel LINUX="default" diff --git a/projects/WeTek_Core/options b/projects/WeTek_Core/options index 0ad46760aa..5ed088fd64 100644 --- a/projects/WeTek_Core/options +++ b/projects/WeTek_Core/options @@ -60,6 +60,9 @@ # Additional kernel make parameters (for example to specify the u-boot loadaddress) KERNEL_MAKE_EXTRACMD="" + # Additional kernel dependencies + KERNEL_EXTRA_DEPENDS_TARGET="" + # Kernel to use. values can be: # default: default mainline kernel LINUX="amlogic-3.10" diff --git a/projects/WeTek_Play/options b/projects/WeTek_Play/options index 7a91a5764f..105562a9d3 100644 --- a/projects/WeTek_Play/options +++ b/projects/WeTek_Play/options @@ -57,6 +57,9 @@ # Additional kernel make parameters (for example to specify the u-boot loadaddress) KERNEL_MAKE_EXTRACMD="" + # additional kernel dependencies + KERNEL_EXTRA_DEPENDS_TARGET="" + # Kernel to use. values can be: # default: default mainline kernel LINUX="amlogic-3.10"