Merge pull request #637 from Kwiboo/c2-updates

Odroid_C2: CEC/IR wake-up and boot-logo.bmp.gz support
This commit is contained in:
Christian Hewitt 2016-08-25 18:31:57 +04:00 committed by GitHub
commit 389504983c
15 changed files with 1672 additions and 29 deletions

Binary file not shown.

View File

@ -16,14 +16,14 @@
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="gcc-linaro-aarch64-none-elf"
PKG_VERSION="4.9-2014.11-x86_64"
PKG_NAME="gcc-linaro-aarch64-elf"
PKG_VERSION="4.9-2016.02"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE=""
PKG_URL="https://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-none-elf/gcc-linaro-${PKG_VERSION}_aarch64-elf.tar.xz"
PKG_SOURCE_DIR="gcc-linaro-${PKG_VERSION}_aarch64-elf"
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_PRIORITY="optional"
PKG_SECTION="lang"
@ -38,6 +38,6 @@ make_host() {
}
makeinstall_host() {
mkdir -p $ROOT/$TOOLCHAIN/lib/gcc-linaro-aarch64-none-elf/
cp -a * $ROOT/$TOOLCHAIN/lib/gcc-linaro-aarch64-none-elf
mkdir -p $ROOT/$TOOLCHAIN/lib/gcc-linaro-aarch64-elf/
cp -a * $ROOT/$TOOLCHAIN/lib/gcc-linaro-aarch64-elf
}

View File

@ -0,0 +1,43 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016 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 <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="gcc-linaro-arm-eabi"
PKG_VERSION="4.9-2016.02"
PKG_REV="1"
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_PRIORITY="optional"
PKG_SECTION="lang"
PKG_SHORTDESC=""
PKG_LONGDESC=""
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
make_host() {
:
}
makeinstall_host() {
mkdir -p $ROOT/$TOOLCHAIN/lib/gcc-linaro-arm-eabi/
cp -a * $ROOT/$TOOLCHAIN/lib/gcc-linaro-arm-eabi
}

View File

@ -24,10 +24,10 @@ if [ "$UBOOT_VERSION" = "imx6-cuboxi" ]; then
# https://github.com/SolidRun/u-boot-imx6.git
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
elif [ "$UBOOT_VERSION" = "hardkernel" ]; then
PKG_VERSION="83bf8f0"
PKG_VERSION="61f29bb"
PKG_SITE="https://github.com/hardkernel/u-boot"
PKG_URL="https://github.com/hardkernel/u-boot/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET gcc-linaro-aarch64-none-elf:host"
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET gcc-linaro-aarch64-elf:host gcc-linaro-arm-eabi:host"
else
exit 0
fi
@ -67,10 +67,10 @@ make_target() {
for UBOOT_TARGET in $UBOOT_CONFIG; do
if [ "$PROJECT" = "Odroid_C2" ]; then
export PATH=$ROOT/$TOOLCHAIN/lib/gcc-linaro-aarch64-none-elf/bin/:$PATH
make CROSS_COMPILE=aarch64-none-elf- ARCH=arm mrproper
make CROSS_COMPILE=aarch64-none-elf- ARCH=arm $UBOOT_TARGET
make CROSS_COMPILE=aarch64-none-elf- ARCH=arm HOSTCC="$HOST_CC" HOSTSTRIP="true"
export PATH=$ROOT/$TOOLCHAIN/lib/gcc-linaro-aarch64-elf/bin/:$ROOT/$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_TARGET
CROSS_COMPILE=aarch64-elf- ARCH=arm CFLAGS="" LDFLAGS="" make HOSTCC="$HOST_CC" HOSTSTRIP="true"
else
make CROSS_COMPILE="$TARGET_PREFIX" ARCH=arm mrproper
make CROSS_COMPILE="$TARGET_PREFIX" ARCH=arm $UBOOT_TARGET
@ -129,8 +129,12 @@ makeinstall_target() {
case $PROJECT in
Odroid_C2)
cp -PRv $PKG_DIR/scripts/update-c2.sh $INSTALL/usr/share/bootloader/update.sh
cp -PRv $ROOT/$PKG_BUILD/sd_fuse/bl1.bin.hardkernel $INSTALL/usr/share/bootloader/bl1
cp -PRv $ROOT/$PKG_BUILD/sd_fuse/u-boot.bin $INSTALL/usr/share/bootloader/u-boot
cp -PRv $ROOT/$PKG_BUILD/u-boot.bin $INSTALL/usr/share/bootloader/u-boot
if [ -f $PROJECT_DIR/$PROJECT/splash/boot-logo.bmp.gz ]; then
cp -PRv $PROJECT_DIR/$PROJECT/splash/boot-logo.bmp.gz $INSTALL/usr/share/bootloader
elif [ -f $DISTRO_DIR/$DISTRO/splash/boot-logo.bmp.gz ]; then
cp -PRv $DISTRO_DIR/$DISTRO/splash/boot-logo.bmp.gz $INSTALL/usr/share/bootloader
fi
;;
imx6)
cp -PRv $PKG_DIR/scripts/update.sh $INSTALL/usr/share/bootloader

View File

@ -0,0 +1,23 @@
From 28c3064d6d3a89962e26f5c9ae3ee105d7377090 Mon Sep 17 00:00:00 2001
From: Jonas Karlman <jonas@kwiboo.se>
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/gxb/firmware/scp_task/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/cpu/armv8/gxb/firmware/scp_task/Makefile b/arch/arm/cpu/armv8/gxb/firmware/scp_task/Makefile
index 865d142..d905365 100644
--- a/arch/arm/cpu/armv8/gxb/firmware/scp_task/Makefile
+++ b/arch/arm/cpu/armv8/gxb/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

View File

@ -41,8 +41,12 @@ mkdir -p $RELEASE_DIR/3rdparty/bootloader
case $PROJECT in
Odroid_C2)
cp -PR $BUILD/$BOOTLOADER-*/sd_fuse/bl1.bin.hardkernel $RELEASE_DIR/3rdparty/bootloader/bl1
cp -PR $BUILD/$BOOTLOADER-*/sd_fuse/u-boot.bin $RELEASE_DIR/3rdparty/bootloader/u-boot
cp -PR $BUILD/$BOOTLOADER-*/u-boot.bin $RELEASE_DIR/3rdparty/bootloader/u-boot
cp -PR $PROJECT_DIR/$PROJECT/bootloader/boot.ini $RELEASE_DIR/3rdparty/bootloader
if [ -f $PROJECT_DIR/$PROJECT/splash/boot-logo.bmp.gz ]; then
cp -PR $PROJECT_DIR/$PROJECT/splash/boot-logo.bmp.gz $RELEASE_DIR/3rdparty/bootloader
elif [ -f $DISTRO_DIR/$DISTRO/splash/boot-logo.bmp.gz ]; then
cp -PR $DISTRO_DIR/$DISTRO/splash/boot-logo.bmp.gz $RELEASE_DIR/3rdparty/bootloader
fi
;;
esac

View File

@ -44,11 +44,15 @@ fi
fi
done
if [ -f $SYSTEM_ROOT/usr/share/bootloader/boot-logo.bmp.gz ]; then
echo "*** updating boot logo ..."
cp -p $SYSTEM_ROOT/usr/share/bootloader/boot-logo.bmp.gz $BOOT_ROOT
fi
echo "*** updating u-boot for Odroid on: $BOOT_DISK ..."
dd if=$SYSTEM_ROOT/usr/share/bootloader/bl1 of=$BOOT_DISK conv=fsync bs=1 count=442
dd if=$SYSTEM_ROOT/usr/share/bootloader/bl1 of=$BOOT_DISK conv=fsync bs=512 seek=1 skip=1
dd if=$SYSTEM_ROOT/usr/share/bootloader/u-boot of=$BOOT_DISK conv=fsync bs=512 seek=97
dd if=$SYSTEM_ROOT/usr/share/bootloader/u-boot of=$BOOT_DISK conv=fsync bs=1 count=112
dd if=$SYSTEM_ROOT/usr/share/bootloader/u-boot of=$BOOT_DISK conv=fsync bs=512 skip=1 seek=1
# monkey patch boot.ini for updated kernel
sed -i '/setenv bootcmd "${kernel}; ${dtb}; ${bootseq}"/i \setenv timer "fdt addr 0x1000000; fdt rm /timer"' /flash/boot.ini

View File

@ -163,7 +163,7 @@ setenv bootcmd "${kernel}; ${dtb}; ${timer}; ${bootseq}"
#------------------------------------------------------------------------------------------------------
# Prepare to boot
if test "${hdmi_cec}" = "1"; then setenv cec "hdmitx=cecf"; fi
if test "${hdmi_cec}" = "1"; then setenv cec "hdmitx=cec17"; fi
if test "${hdmi_hotplug}" = "0"; then setenv hpd "disablehpd=true"; fi
if test "${audio_dac}" = "1"; then setenv dac "enabledac"; fi
if test "${vpu}" = "0"; then fdt rm /mesonstream; fdt rm /vdec; fdt rm /ppmgr; fi

View File

@ -19,10 +19,6 @@ common_display_setup() {
echo $M > /sys/class/graphics/fb0/window_axis
echo 0 > /sys/class/graphics/fb1/free_scale
echo 1 > /sys/class/video/disable_video
if [ "$bpp" = "32" ]; then
echo d01068b4 0x7fc0 > /sys/kernel/debug/aml_reg/paddr
fi
}
case $mode in

View File

@ -5,7 +5,7 @@
# The TARGET_CPU variable controls which processor should be targeted for
# generated code.
case $TARGET_ARCH in
arm64)
aarch64)
# TARGET_CPU:
# arm2 arm250 arm3 arm6 arm60 arm600 arm610 arm620 arm7 arm7m arm7d
# arm7dm arm7di arm7dmi arm70 arm700 arm700i arm710 arm710c

View File

@ -0,0 +1,13 @@
diff --git a/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp b/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp
index 4e5bcc6..ad5847d 100644
--- a/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp
+++ b/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp
@@ -53,7 +53,7 @@ CLogindUPowerSyscall::CLogindUPowerSyscall()
m_canPowerdown = LogindCheckCapability("CanPowerOff");
m_canReboot = LogindCheckCapability("CanReboot");
m_canHibernate = LogindCheckCapability("CanHibernate");
- m_canSuspend = LogindCheckCapability("CanSuspend");
+ m_canSuspend = false;
InhibitDelayLock();

View File

@ -0,0 +1,85 @@
diff --git a/drivers/amlogic/cec/hdmi_ao_cec.c b/drivers/amlogic/cec/hdmi_ao_cec.c
index 21ca8bb..9f4686f 100644
--- a/drivers/amlogic/cec/hdmi_ao_cec.c
+++ b/drivers/amlogic/cec/hdmi_ao_cec.c
@@ -225,14 +225,13 @@ unsigned int aocec_rd_reg(unsigned long addr)
{
unsigned int data32;
unsigned long flags;
- waiting_aocec_free();
spin_lock_irqsave(&cec_dev->cec_reg_lock, flags);
+ waiting_aocec_free();
data32 = 0;
data32 |= 0 << 16; /* [16] cec_reg_wr */
data32 |= 0 << 8; /* [15:8] cec_reg_wrdata */
- data32 |= addr << 0; /* [7:0] cec_reg_addr */
+ data32 |= (addr & 0xff) << 0; /* [7:0] cec_reg_addr */
writel(data32, cec_dev->cec_reg + AO_CEC_RW_REG);
-
waiting_aocec_free();
data32 = ((readl(cec_dev->cec_reg + AO_CEC_RW_REG)) >> 24) & 0xff;
spin_unlock_irqrestore(&cec_dev->cec_reg_lock, flags);
@@ -241,15 +240,16 @@ unsigned int aocec_rd_reg(unsigned long addr)
void aocec_wr_reg(unsigned long addr, unsigned long data)
{
- unsigned long data32;
+ unsigned int data32;
unsigned long flags;
- waiting_aocec_free();
spin_lock_irqsave(&cec_dev->cec_reg_lock, flags);
+ waiting_aocec_free();
data32 = 0;
data32 |= 1 << 16; /* [16] cec_reg_wr */
- data32 |= data << 8; /* [15:8] cec_reg_wrdata */
- data32 |= addr << 0; /* [7:0] cec_reg_addr */
+ data32 |= (data & 0xff) << 8; /* [15:8] cec_reg_wrdata */
+ data32 |= (addr & 0xff) << 0; /* [7:0] cec_reg_addr */
writel(data32, cec_dev->cec_reg + AO_CEC_RW_REG);
+ waiting_aocec_free();
spin_unlock_irqrestore(&cec_dev->cec_reg_lock, flags);
} /* aocec_wr_only_reg */
@@ -737,6 +737,8 @@ static void cec_pre_init(void)
{
ao_cec_init();
+ cec_config(cec_dev->tx_dev->cec_func_config, 1);
+
cec_arbit_bit_time_set(3, 0x118, 0);
cec_arbit_bit_time_set(5, 0x000, 0);
cec_arbit_bit_time_set(7, 0x2aa, 0);
@@ -1452,8 +1454,6 @@ static int hdmitx_cec_open(struct inode *inode, struct file *file)
cec_dev->cec_info.open_count++;
if (cec_dev->cec_info.open_count) {
cec_dev->cec_info.hal_ctl = 1;
- /* enable all cec features */
- cec_config(0x2f, 1);
}
return 0;
}
@@ -1463,8 +1463,6 @@ static int hdmitx_cec_release(struct inode *inode, struct file *file)
cec_dev->cec_info.open_count--;
if (!cec_dev->cec_info.open_count) {
cec_dev->cec_info.hal_ctl = 0;
- /* disable all cec features */
- cec_config(0x0, 1);
}
return 0;
}
diff --git a/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c b/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c
index 57105b6..0a7f914 100644
--- a/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c
+++ b/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c
@@ -2467,9 +2467,9 @@ static int __init hdmitx_boot_para_setup(char *s)
init_flag |= INIT_FLAG_NOT_LOAD;
} else if (strncmp(token, "cec", 3) == 0) {
ret = kstrtoul(token+3, 16, &list);
- if ((list >= 0) && (list <= 0x2f))
+ if ((list >= 0) && (list <= 0xff))
hdmitx_device.cec_func_config = list;
- hdmi_print(INF, CEC "HDMI hdmi_cec_func_config:0x%x\n",
+ hdmi_print(IMP, CEC "HDMI hdmi_cec_func_config:0x%x\n",
hdmitx_device.cec_func_config);
} else if (strcmp(token, "forcergb") == 0) {
hdmitx_output_rgb();

View File

@ -11,7 +11,7 @@ diff -Naur a/include/configs/odroidc2.h b/include/configs/odroidc2.h
- "console=ttyS0,115200 " \
- "hdmimode=1080p60hz hdmitx=cecf " \
- "logo=osd1,loaded,0x3f800000,1080p60hz " \
- "androidboot.hardware=odroidc2 " \
- "androidboot.hardware=odroidc2 androidboot.serialno=${fbt_id#} " \
- "androidboot.selinux=disabled \0" \
- "bootcmd=cfgload; showlogo ${hdmimode}; movi read dtb 0 ${dtbaddr}; movi read boot 0 ${loadaddr}; booti ${loadaddr} - ${dtbaddr}\0"
+ "bootcmd=cfgload\0"

File diff suppressed because it is too large Load Diff

View File

@ -230,9 +230,8 @@ elif [ "$BOOTLOADER" = "u-boot" ]; then
# allow custom dd script for vendor specific fusing
. $RELEASE_DIR/3rdparty/bootloader/u-boot-fuse
elif [ -f "$RELEASE_DIR/3rdparty/bootloader/u-boot" ]; then
dd if="$RELEASE_DIR/3rdparty/bootloader/bl1" of="$DISK" conv=fsync,notrunc bs=1 count=442 >"$SAVE_ERROR" 2>&1 || show_error
dd if="$RELEASE_DIR/3rdparty/bootloader/bl1" of="$DISK" conv=fsync,notrunc bs=512 skip=1 seek=1 >"$SAVE_ERROR" 2>&1 || show_error
dd if="$RELEASE_DIR/3rdparty/bootloader/u-boot" of="$DISK" conv=fsync,notrunc bs=512 seek=97 >"$SAVE_ERROR" 2>&1 || show_error
dd if="$RELEASE_DIR/3rdparty/bootloader/u-boot" of="$DISK" conv=fsync,notrunc bs=1 count=112 >"$SAVE_ERROR" 2>&1 || show_error
dd if="$RELEASE_DIR/3rdparty/bootloader/u-boot" of="$DISK" conv=fsync,notrunc bs=512 skip=1 seek=1 >"$SAVE_ERROR" 2>&1 || show_error
fi
echo "image: copying files to part1..."
@ -247,6 +246,10 @@ elif [ "$BOOTLOADER" = "u-boot" ]; then
mcopy $RELEASE_DIR/3rdparty/bootloader/u-boot.img ::
fi
if [ -f $RELEASE_DIR/3rdparty/bootloader/boot-logo.bmp.gz ]; then
mcopy $RELEASE_DIR/3rdparty/bootloader/boot-logo.bmp.gz ::
fi
for dtb in $RELEASE_DIR/3rdparty/bootloader/*.dtb ; do
if [ -f $dtb ] ; then
mcopy "$dtb" ::/$(basename "$dtb")