From 3a71ac29dd0af96389e0c9b2c7d458b598ce93bd Mon Sep 17 00:00:00 2001 From: Adam Green Date: Thu, 4 Jan 2018 23:43:15 +0000 Subject: [PATCH] projects/Amlogic: add support for LePotato device --- .../devices/LePotato/bootloader/boot.ini | 114 ++++++++++++++++++ .../devices/LePotato/bootloader/mkimage | 34 ++++++ .../devices/LePotato/bootloader/release | 26 ++++ projects/Amlogic/devices/LePotato/initramfs | 1 + projects/Amlogic/devices/LePotato/linux | 1 + projects/Amlogic/devices/LePotato/options | 23 ++++ .../gcc-linaro-aarch64-elf/package.mk | 36 ++++++ .../packages/gcc-linaro-arm-eabi/package.mk | 36 ++++++ .../LePotato/packages/u-boot/package.mk | 65 ++++++++++ ...0001-remove-hardcoded-toolchain-path.patch | 11 ++ ...-boot-0002-add-linux-compiler-gcc5.h.patch | 90 ++++++++++++++ ...0003-use-arm-eabi-for-bl301-scp_task.patch | 23 ++++ .../patches/u-boot-0004-faster-boot.patch | 53 ++++++++ .../linux-0001-lepotato-dtb-overlay.patch | 62 ++++++++++ 14 files changed, 575 insertions(+) create mode 100644 projects/Amlogic/devices/LePotato/bootloader/boot.ini create mode 100644 projects/Amlogic/devices/LePotato/bootloader/mkimage create mode 100755 projects/Amlogic/devices/LePotato/bootloader/release create mode 120000 projects/Amlogic/devices/LePotato/initramfs create mode 120000 projects/Amlogic/devices/LePotato/linux create mode 100644 projects/Amlogic/devices/LePotato/options create mode 100644 projects/Amlogic/devices/LePotato/packages/gcc-linaro-aarch64-elf/package.mk create mode 100644 projects/Amlogic/devices/LePotato/packages/gcc-linaro-arm-eabi/package.mk create mode 100644 projects/Amlogic/devices/LePotato/packages/u-boot/package.mk create mode 100644 projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0001-remove-hardcoded-toolchain-path.patch create mode 100644 projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0002-add-linux-compiler-gcc5.h.patch create mode 100644 projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0003-use-arm-eabi-for-bl301-scp_task.patch create mode 100644 projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0004-faster-boot.patch create mode 100644 projects/Amlogic/devices/LePotato/patches/linux/linux-0001-lepotato-dtb-overlay.patch diff --git a/projects/Amlogic/devices/LePotato/bootloader/boot.ini b/projects/Amlogic/devices/LePotato/bootloader/boot.ini new file mode 100644 index 0000000000..3c13ef83d8 --- /dev/null +++ b/projects/Amlogic/devices/LePotato/bootloader/boot.ini @@ -0,0 +1,114 @@ +#------------------------------------------------------------------------------------------------------ +# +# boot.ini identification +# +#------------------------------------------------------------------------------------------------------ +LIBRETECH-UBOOT-CONFIG + +#------------------------------------------------------------------------------------------------------ +# +# Boot Specific Stuff +# +#------------------------------------------------------------------------------------------------------ +setenv bootrootfs "BOOT_IMAGE=kernel.img boot=LABEL=LIBREELEC disk=LABEL=STORAGE" + +#------------------------------------------------------------------------------------------------------ +# +# Console Setup +# +#------------------------------------------------------------------------------------------------------ +setenv console "console=ttyS0,115200" + +#------------------------------------------------------------------------------------------------------ +# +# Video +# Setup the video output (default is 1080p60hz) +# 480 Lines (720x480) +# setenv hdmimode "480i60hz" # Interlaced 60Hz +# setenv hdmimode "480i_rpt" # Interlaced for Rear Projection Televisions 60Hz +# setenv hdmimode "480p60hz" # 480 Progressive 60Hz +# setenv hdmimode "480p_rpt" # 480 Progressive for Rear Projection Televisions 60Hz +# 576 Lines (720x576) +# setenv hdmimode "576i50hz" # Interlaced 50Hz +# setenv hdmimode "576i_rpt" # Interlaced for Rear Projection Televisions 50Hz +# setenv hdmimode "576p50hz" # Progressive 50Hz +# setenv hdmimode "576p_rpt" # Progressive for Rear Projection Televisions 50Hz +# 720 Lines (1280x720) +# setenv hdmimode "720p60hz" # Progressive 60Hz +# setenv hdmimode "720p50hz" # Progressive 50Hz +# 1080 Lines (1920x1080) +# setenv hdmimode "1080i60hz" # Interlaced 60Hz +# setenv hdmimode "1080p60hz" # Progressive 60Hz +# setenv hdmimode "1080i50hz" # Interlaced 50Hz +# setenv hdmimode "1080p50hz" # Progressive 50Hz +# setenv hdmimode "1080p30hz" # Progressive 30Hz +# setenv hdmimode "1080p25hz" # Progressive 25Hz +# setenv hdmimode "1080p24hz" # Progressive 24Hz +# 4K (3840x2160) +# setenv hdmimode "2160p60hz" # Progressive 60Hz +# setenv hdmimode "2160p50hz" # Progressive 50Hz +# setenv hdmimode "2160p30hz" # Progressive 30Hz +# setenv hdmimode "2160p25hz" # Progressive 25Hz +# setenv hdmimode "2160p24hz" # Progressive 24Hz +# setenv hdmimode "2160p60hz420" # Progressive 60Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) +# setenv hdmimode "2160p50hz420" # Progressive 50Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) +# 4K2K (4096x2160) +# setenv hdmimode "smpte60hz" # Progressive 60Hz SMPTE +# setenv hdmimode "smpte50hz" # Progressive 50Hz SMPTE +# setenv hdmimode "smpte30hz" # Progressive 30Hz SMPTE +# setenv hdmimode "smpte25hz" # Progressive 25Hz SMPTE +# setenv hdmimode "smpte24hz" # Progressive 24Hz SMPTE +# setenv hdmimode "smpte60hz420" # Progressive 60Hz SMPTE with YCbCr 4:2:0 (Requires TV/Monitor that supports it) +# setenv hdmimode "smpte50hz420" # Progressive 50Hz SMPTE with YCbCr 4:2:0 (Requires TV/Monitor that supports it) +# +#------------------------------------------------------------------------------------------------------ +setenv hdmimode "1080p60hz" + +#------------------------------------------------------------------------------------------------------ +# +# LibreELEC variables +# +# Setup the LibreELEC options +# valid values are: textmode debugging progress nofsck nosplash noram overlay quiet ssh +#------------------------------------------------------------------------------------------------------ +setenv libreelec "" + +#------------------------------------------------------------------------------------------------------ +# +# Amremote +# +#------------------------------------------------------------------------------------------------------ +setenv amremote "0" + +#------------------------------------------------------------------------------------------------------ +# +# Enable|Disable HDMI CEC Control +# setenv hdmi_cec "0" # Disabled +# setenv hdmi_cec "1" # Enabled +# +#------------------------------------------------------------------------------------------------------ +setenv hdmi_cec "1" + +#------------------------------------------------------------------------------------------------------ +# +# Board specific +# +#------------------------------------------------------------------------------------------------------ +setenv libretech "no_console_suspend logo=osd1,loaded,0x3f800000,${hdmimode} vout=${hdmimode},enable hdmimode=${hdmimode} cvbsmode=nocvbs consoleblank=0" +if test "${hdmi_cec}" = "1"; then setenv cec "hdmitx=cec17"; fi +setenv bootargs "${console} ${bootrootfs} ${libretech} ${cec} ${libreelec}" + +# Prepare to boot +fatload mmc 0:1 ${loadaddr} kernel.img + +# Device tree modifications +bootm start ${loadaddr} +bootm loados +bootm fdt +if test "${amremote}" = "0"; then fdt set /meson-ir status okay; fdt set /meson-remote status disabled; fi +# Remove Android partitions from device tree +fdt rm /partitions +bootm prep + +# Boot the board +bootm go diff --git a/projects/Amlogic/devices/LePotato/bootloader/mkimage b/projects/Amlogic/devices/LePotato/bootloader/mkimage new file mode 100644 index 0000000000..56446f20bf --- /dev/null +++ b/projects/Amlogic/devices/LePotato/bootloader/mkimage @@ -0,0 +1,34 @@ +#!/bin/bash + +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2017-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 . +################################################################################ + +if [ -f "$RELEASE_DIR/3rdparty/bootloader/u-boot.bin" ]; then + echo "Writing u-boot to $(basename $DISK)" + dd if="$RELEASE_DIR/3rdparty/bootloader/u-boot.bin" of="$DISK" conv=fsync,notrunc bs=1 count=112 >"$SAVE_ERROR" 2>&1 || show_error + dd if="$RELEASE_DIR/3rdparty/bootloader/u-boot.bin" of="$DISK" conv=fsync,notrunc bs=512 skip=1 seek=1 >"$SAVE_ERROR" 2>&1 || show_error +fi + +if [ -f "$RELEASE_DIR/3rdparty/bootloader/boot.ini" ]; then + mcopy $RELEASE_DIR/3rdparty/bootloader/boot.ini :: +fi + +# this is done by scripts/mkimage +#if [ -f "$RELEASE_DIR/3rdparty/bootloader/dtb.img" ]; then +# mcopy $RELEASE_DIR/3rdparty/bootloader/dtb.img :: +#fi diff --git a/projects/Amlogic/devices/LePotato/bootloader/release b/projects/Amlogic/devices/LePotato/bootloader/release new file mode 100755 index 0000000000..dd811a4f66 --- /dev/null +++ b/projects/Amlogic/devices/LePotato/bootloader/release @@ -0,0 +1,26 @@ +#!/bin/sh + +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2017-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 $(get_build_dir linux)/arch/$TARGET_KERNEL_ARCH/boot/dtb.img $RELEASE_DIR/3rdparty/bootloader + cp -a $(get_build_dir $BOOTLOADER)/fip/u-boot.bin.sd.bin $RELEASE_DIR/3rdparty/bootloader/u-boot.bin + cp -a $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/boot.ini $RELEASE_DIR/3rdparty/bootloader diff --git a/projects/Amlogic/devices/LePotato/initramfs b/projects/Amlogic/devices/LePotato/initramfs new file mode 120000 index 0000000000..5950e0a696 --- /dev/null +++ b/projects/Amlogic/devices/LePotato/initramfs @@ -0,0 +1 @@ +../S905/initramfs/ \ No newline at end of file diff --git a/projects/Amlogic/devices/LePotato/linux b/projects/Amlogic/devices/LePotato/linux new file mode 120000 index 0000000000..16416f4d03 --- /dev/null +++ b/projects/Amlogic/devices/LePotato/linux @@ -0,0 +1 @@ +../S905/linux \ No newline at end of file diff --git a/projects/Amlogic/devices/LePotato/options b/projects/Amlogic/devices/LePotato/options new file mode 100644 index 0000000000..02bb537187 --- /dev/null +++ b/projects/Amlogic/devices/LePotato/options @@ -0,0 +1,23 @@ + # u-boot version to use (default) + UBOOT_VERSION="vendor" + + # Configuration for u-boot + UBOOT_CONFIG="libretech_cc_defconfig" + + # Target Configfile for u-boot + UBOOT_CONFIGFILE="boot.ini" + + # Kernel extra targets to build + KERNEL_UBOOT_EXTRA_TARGET="gxl_p212_1g_lepotato.dtb gxl_p212_2g_lepotato.dtb" + + # additional drivers to install: + # for a list of additinoal drivers see packages/linux-drivers + # Space separated list is supported, + # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" + ADDITIONAL_DRIVERS="gpu-aml" + + # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) + # Space separated list is supported, + # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" + FIRMWARE="" + diff --git a/projects/Amlogic/devices/LePotato/packages/gcc-linaro-aarch64-elf/package.mk b/projects/Amlogic/devices/LePotato/packages/gcc-linaro-aarch64-elf/package.mk new file mode 100644 index 0000000000..fe0fbb989c --- /dev/null +++ b/projects/Amlogic/devices/LePotato/packages/gcc-linaro-aarch64-elf/package.mk @@ -0,0 +1,36 @@ +################################################################################ +# 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="gcc-linaro-aarch64-elf" +PKG_VERSION="4.9-2016.02" +PKG_SHA256="67b8d6d3c764a5b2e21bf4a9cc990f6d6db691df5fcc814e34051c521346ec10" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="" +PKG_URL="https://releases.linaro.org/components/toolchain/binaries/${PKG_VERSION}/aarch64-elf/gcc-linaro-${PKG_VERSION}-x86_64_aarch64-elf.tar.xz" +PKG_SOURCE_DIR="gcc-linaro-${PKG_VERSION}-x86_64_aarch64-elf" +PKG_DEPENDS_HOST="toolchain" +PKG_SECTION="lang" +PKG_SHORTDESC="" +PKG_LONGDESC="" +PKG_TOOLCHAIN="manual" + +makeinstall_host() { + mkdir -p $TOOLCHAIN/lib/gcc-linaro-aarch64-elf/ + cp -a * $TOOLCHAIN/lib/gcc-linaro-aarch64-elf +} diff --git a/projects/Amlogic/devices/LePotato/packages/gcc-linaro-arm-eabi/package.mk b/projects/Amlogic/devices/LePotato/packages/gcc-linaro-arm-eabi/package.mk new file mode 100644 index 0000000000..44cb6e04d2 --- /dev/null +++ b/projects/Amlogic/devices/LePotato/packages/gcc-linaro-arm-eabi/package.mk @@ -0,0 +1,36 @@ +################################################################################ +# 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="gcc-linaro-arm-eabi" +PKG_VERSION="4.9-2016.02" +PKG_SHA256="b46f97e1eea542e98ed7e4278a4ea98c750e679b816d5a8c66286cd4fdc42448" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="" +PKG_URL="https://releases.linaro.org/components/toolchain/binaries/${PKG_VERSION}/arm-eabi/gcc-linaro-${PKG_VERSION}-x86_64_arm-eabi.tar.xz" +PKG_SOURCE_DIR="gcc-linaro-${PKG_VERSION}-x86_64_arm-eabi" +PKG_DEPENDS_HOST="toolchain" +PKG_SECTION="lang" +PKG_SHORTDESC="" +PKG_LONGDESC="" +PKG_TOOLCHAIN="manual" + +makeinstall_host() { + mkdir -p $TOOLCHAIN/lib/gcc-linaro-arm-eabi/ + cp -a * $TOOLCHAIN/lib/gcc-linaro-arm-eabi +} diff --git a/projects/Amlogic/devices/LePotato/packages/u-boot/package.mk b/projects/Amlogic/devices/LePotato/packages/u-boot/package.mk new file mode 100644 index 0000000000..6b111862d1 --- /dev/null +++ b/projects/Amlogic/devices/LePotato/packages/u-boot/package.mk @@ -0,0 +1,65 @@ +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) +# Copyright (C) 2017-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="u-boot" +PKG_VERSION="a43076c" +PKG_ARCH="arm aarch64" +PKG_SITE="https://www.denx.de/wiki/U-Boot" +PKG_URL="https://github.com/BayLibre/u-boot/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="u-boot-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain dtc:host gcc-linaro-aarch64-elf:host gcc-linaro-arm-eabi:host" +PKG_LICENSE="GPL" +PKG_SECTION="tools" +PKG_SHORTDESC="u-boot: Universal Bootloader project" +PKG_LONGDESC="Das U-Boot is a cross-platform bootloader for embedded systems, used as the default boot loader by several board vendors. It is intended to be easy to port and to debug, and runs on many supported architectures, including PPC, ARM, MIPS, x86, m68k, NIOS, and Microblaze." +PKG_IS_KERNEL_PKG="yes" + +PKG_NEED_UNPACK="$PROJECT_DIR/$PROJECT/bootloader" +[ -n "$DEVICE" ] && PKG_NEED_UNPACK+=" $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader" + +make_target() { + export PATH=$TOOLCHAIN/lib/gcc-linaro-aarch64-elf/bin/:$TOOLCHAIN/lib/gcc-linaro-arm-eabi/bin/:$PATH + CROSS_COMPILE=aarch64-elf- ARCH=arm CFLAGS="" LDFLAGS="" make mrproper + CROSS_COMPILE=aarch64-elf- ARCH=arm CFLAGS="" LDFLAGS="" make $UBOOT_CONFIG + CROSS_COMPILE=aarch64-elf- ARCH=arm CFLAGS="" LDFLAGS="" make HOSTCC="$HOST_CC" HOSTSTRIP="true" +} + +makeinstall_target() { + mkdir -p $INSTALL/usr/share/bootloader + + # Only install u-boot.img et al when building a board specific image + if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/install ]; then + . $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/install + elif [ -f $PROJECT_DIR/$PROJECT/bootloader/install ]; then + . $PROJECT_DIR/$PROJECT/bootloader/install + fi + + # Always install the update script + if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/update.sh ]; then + cp -av $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/update.sh $INSTALL/usr/share/bootloader + elif [ -f $PROJECT_DIR/$PROJECT/bootloader/update.sh ]; then + cp -av $PROJECT_DIR/$PROJECT/bootloader/update.sh $INSTALL/usr/share/bootloader + fi + + cp $PKG_BUILD/fip/u-boot.bin.sd.bin $INSTALL/usr/share/bootloader/u-boot + + if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/boot.ini ]; then + cp -av $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/boot.ini $INSTALL/usr/share/bootloader + fi +} diff --git a/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0001-remove-hardcoded-toolchain-path.patch b/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0001-remove-hardcoded-toolchain-path.patch new file mode 100644 index 0000000000..f12139f4b8 --- /dev/null +++ b/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0001-remove-hardcoded-toolchain-path.patch @@ -0,0 +1,11 @@ +--- a/Makefile ++++ b/Makefile +@@ -246,8 +246,6 @@ + CROSS_COMPILE ?= + endif + +-export CROSS_COMPILE=aarch64-none-elf- +- + KCONFIG_CONFIG ?= .config + export KCONFIG_CONFIG + diff --git a/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0002-add-linux-compiler-gcc5.h.patch b/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0002-add-linux-compiler-gcc5.h.patch new file mode 100644 index 0000000000..790eb2008b --- /dev/null +++ b/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0002-add-linux-compiler-gcc5.h.patch @@ -0,0 +1,90 @@ +From d6fe7444c27b35599f1bbae3ab321507a246dce0 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Sat, 7 Feb 2015 22:52:40 +0100 +Subject: [PATCH] Add linux/compiler-gcc5.h to fix builds with gcc5 + +Add linux/compiler-gcc5/h from the kernel sources at: + +commit 5631b8fba640a4ab2f8a954f63a603fa34eda96b +Author: Steven Noonan +Date: Sat Oct 25 15:09:42 2014 -0700 + + compiler/gcc4+: Remove inaccurate comment about 'asm goto' miscompiles + +Signed-off-by: Hans de Goede +--- + include/linux/compiler-gcc5.h | 65 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 65 insertions(+) + create mode 100644 include/linux/compiler-gcc5.h + +diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h +new file mode 100644 +index 0000000000..c8c5659525 +--- /dev/null ++++ b/include/linux/compiler-gcc5.h +@@ -0,0 +1,65 @@ ++#ifndef __LINUX_COMPILER_H ++#error "Please don't include directly, include instead." ++#endif ++ ++#define __used __attribute__((__used__)) ++#define __must_check __attribute__((warn_unused_result)) ++#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) ++ ++/* Mark functions as cold. gcc will assume any path leading to a call ++ to them will be unlikely. This means a lot of manual unlikely()s ++ are unnecessary now for any paths leading to the usual suspects ++ like BUG(), printk(), panic() etc. [but let's keep them for now for ++ older compilers] ++ ++ Early snapshots of gcc 4.3 don't support this and we can't detect this ++ in the preprocessor, but we can live with this because they're unreleased. ++ Maketime probing would be overkill here. ++ ++ gcc also has a __attribute__((__hot__)) to move hot functions into ++ a special section, but I don't see any sense in this right now in ++ the kernel context */ ++#define __cold __attribute__((__cold__)) ++ ++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ++ ++#ifndef __CHECKER__ ++# define __compiletime_warning(message) __attribute__((warning(message))) ++# define __compiletime_error(message) __attribute__((error(message))) ++#endif /* __CHECKER__ */ ++ ++/* ++ * Mark a position in code as unreachable. This can be used to ++ * suppress control flow warnings after asm blocks that transfer ++ * control elsewhere. ++ * ++ * Early snapshots of gcc 4.5 don't support this and we can't detect ++ * this in the preprocessor, but we can live with this because they're ++ * unreleased. Really, we need to have autoconf for the kernel. ++ */ ++#define unreachable() __builtin_unreachable() ++ ++/* Mark a function definition as prohibited from being cloned. */ ++#define __noclone __attribute__((__noclone__)) ++ ++/* ++ * Tell the optimizer that something else uses this function or variable. ++ */ ++#define __visible __attribute__((externally_visible)) ++ ++/* ++ * GCC 'asm goto' miscompiles certain code sequences: ++ * ++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 ++ * ++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. ++ * ++ * (asm goto is automatically volatile - the naming reflects this.) ++ */ ++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ++ ++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP ++#define __HAVE_BUILTIN_BSWAP32__ ++#define __HAVE_BUILTIN_BSWAP64__ ++#define __HAVE_BUILTIN_BSWAP16__ ++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ diff --git a/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0003-use-arm-eabi-for-bl301-scp_task.patch b/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0003-use-arm-eabi-for-bl301-scp_task.patch new file mode 100644 index 0000000000..84d8810514 --- /dev/null +++ b/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0003-use-arm-eabi-for-bl301-scp_task.patch @@ -0,0 +1,23 @@ +From 28c3064d6d3a89962e26f5c9ae3ee105d7377090 Mon Sep 17 00:00:00 2001 +From: Jonas Karlman +Date: Mon, 8 Aug 2016 01:59:07 +0200 +Subject: [PATCH] Use arm-eabi for bl301/scp_task + +For use with Linaro toolchain 4.9-2016.02 +--- + arch/arm/cpu/armv8/gxl/firmware/scp_task/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/cpu/armv8/gxl/firmware/scp_task/Makefile b/arch/arm/cpu/armv8/gxl/firmware/scp_task/Makefile +index 865d142..d905365 100644 +--- a/arch/arm/cpu/armv8/gxl/firmware/scp_task/Makefile ++++ b/arch/arm/cpu/armv8/gxl/firmware/scp_task/Makefile +@@ -6,7 +6,7 @@ include $(buildtree)/include/autoconf.mk + include $(buildtree)/.config + + # Select ARMv7-m bare-metal toolchain +-CROSS_COMPILE=arm-none-eabi- ++CROSS_COMPILE=arm-eabi- + ASM=$(CROSS_COMPILE)as + CC=$(CROSS_COMPILE)gcc + CPP=$(CROSS_COMPILE)cpp diff --git a/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0004-faster-boot.patch b/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0004-faster-boot.patch new file mode 100644 index 0000000000..ad5ee6b877 --- /dev/null +++ b/projects/Amlogic/devices/LePotato/packages/u-boot/patches/u-boot-0004-faster-boot.patch @@ -0,0 +1,53 @@ +diff --git a/board/amlogic/configs/libretech_cc.h b/board/amlogic/configs/libretech_cc.h +index b3ccfae..9934acf 100644 +--- a/board/amlogic/configs/libretech_cc.h ++++ b/board/amlogic/configs/libretech_cc.h +@@ -45,10 +45,10 @@ + #define CONFIG_CEC_OSD_NAME "LibreTech-CC" + #define CONFIG_CEC_WAKEUP + +-#define CONFIG_INSTABOOT ++// #define CONFIG_INSTABOOT + #define CONFIG_CMD_CFGLOAD + /* configs for dtb in boot.img */ +-//#define DTB_BIND_KERNEL ++#define DTB_BIND_KERNEL + + /* SMP Definitinos */ + #define CPU_RELEASE_ADDR secondary_boot_func +@@ -236,15 +236,8 @@ + "\0"\ + + #define CONFIG_PREBOOT \ +- "run bcb_cmd; "\ +- "run factory_reset_poweroff_protect;"\ +- "run upgrade_check;"\ +- "run init_display;"\ +- "run storeargs;"\ +- "run upgrade_key;" \ +- "run switch_bootmode;" \ +- "cfgload;" +-#define CONFIG_BOOTCOMMAND "run storeboot" ++ "run init_display;" ++#define CONFIG_BOOTCOMMAND "cfgload" + + //#define CONFIG_ENV_IS_NOWHERE 1 + #define CONFIG_ENV_SIZE (64*1024) +@@ -298,7 +291,7 @@ + /* support for mtd */ + //#define CONFIG_AML_MTD 1 + /* support for nftl */ +-#define CONFIG_AML_NAND 1 ++//#define CONFIG_AML_NAND 1 + + #if defined(CONFIG_AML_NAND) && defined(CONFIG_AML_MTD) + #error CONFIG_AML_NAND/CONFIG_AML_MTD can not support at the sametime; +@@ -390,7 +383,7 @@ + #endif //#if defined(CONFIG_CMD_USB) + + //UBOOT fastboot config +-#define CONFIG_CMD_FASTBOOT 1 ++// #define CONFIG_CMD_FASTBOOT 1 + #define CONFIG_FASTBOOT_FLASH_MMC_DEV 1 + #define CONFIG_FASTBOOT_FLASH 1 + #define CONFIG_USB_GADGET 1 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 new file mode 100644 index 0000000000..f1adf5743a --- /dev/null +++ b/projects/Amlogic/devices/LePotato/patches/linux/linux-0001-lepotato-dtb-overlay.patch @@ -0,0 +1,62 @@ +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"; ++ }; ++ ++};