added alarm/uboot-odroid

This commit is contained in:
Kevin Mihelich 2014-08-23 05:59:48 +00:00
parent c8bbf471c9
commit f339d62bc9
6 changed files with 2267 additions and 0 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,218 @@
From b6e6bb2392cbf8d2e21685ae7b7d818436d146f6 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Fri, 22 Aug 2014 17:51:41 -0600
Subject: [PATCH 2/2] arch linux arm modifications
---
include/configs/odroid.h | 163 ++++++++++++++++++-----------------------------
1 file changed, 62 insertions(+), 101 deletions(-)
diff --git a/include/configs/odroid.h b/include/configs/odroid.h
index c0d4157..da1957e 100644
--- a/include/configs/odroid.h
+++ b/include/configs/odroid.h
@@ -14,6 +14,7 @@
#include <configs/exynos4-dt.h>
+#define CONFIG_IDENT_STRING " Arch Linux ARM"
#define CONFIG_SYS_PROMPT "Odroid # " /* Monitor Command Prompt */
#undef CONFIG_DEFAULT_DEVICE_TREE
@@ -37,6 +38,7 @@
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_SDRAM_BASE + 0x5E00000)
#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x3E00000)
#define CONFIG_SYS_TEXT_BASE 0x43e00000
+#define CONFIG_LOADADDR 0x40007FC0
#include <linux/sizes.h>
/* Size of malloc() pool */
@@ -51,11 +53,12 @@
#define CONFIG_SYS_CONSOLE_IS_IN_ENV
#define CONFIG_CMD_BOOTZ
+#define CONFIG_CMD_FS_GENERIC
+#define CONFIG_SUPPORT_RAW_INITRD
#define CONFIG_FIT
#define CONFIG_FIT_VERBOSE
-#define CONFIG_BOOTARGS "Please use defined boot"
-#define CONFIG_BOOTCOMMAND "run autoboot"
-#define CONFIG_DEFAULT_CONSOLE "console=ttySAC1,115200n8\0"
+
+#define CONFIG_BOOTDELAY 3
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_LOAD_ADDR \
- GENERATED_GBL_DATA_SIZE)
@@ -70,35 +73,6 @@
#define CONFIG_ENV_OFFSET (SZ_1K * 1280) /* 1.25 MiB offset */
#define CONFIG_ENV_OVERWRITE
-/* Partitions name */
-#define PARTS_BOOT "boot"
-#define PARTS_ROOT "platform"
-
-#define CONFIG_DFU_ALT \
- "uImage fat 0 1;" \
- "zImage fat 0 1;" \
- "Image.itb fat 0 1;" \
- "uInitrd fat 0 1;" \
- "exynos4412-odroidu3.dtb fat 0 1;" \
- "exynos4412-odroidx2.dtb fat 0 1;" \
- ""PARTS_BOOT" part 0 1;" \
- ""PARTS_ROOT" part 0 2\0" \
-
-#define CONFIG_SET_DFU_ALT_INFO
-#define CONFIG_SET_DFU_ALT_BUF_LEN (SZ_1K)
-
-#define CONFIG_DFU_ALT_BOOT_EMMC \
- "u-boot raw 0x3e 0x800 mmcpart 1;" \
- "bl1 raw 0x0 0x1e mmcpart 1;" \
- "bl2 raw 0x1e 0x1d mmcpart 1;" \
- "tzsw raw 0x83e 0x138 mmcpart 1\0"
-
-#define CONFIG_DFU_ALT_BOOT_SD \
- "u-boot raw 0x3f 0x800;" \
- "bl1 raw 0x1 0x1e;" \
- "bl2 raw 0x1f 0x1d;" \
- "tzsw raw 0x83f 0x138\0"
-
/*
* Bootable media layout:
* dev: SD eMMC(part boot)
@@ -107,77 +81,64 @@
* UBOOT 63 62
* TZSW 2111 2110
* ENV 2560 2560(part user)
- *
- * MBR Primary partiions:
- * Num Name Size Offset
- * 1. BOOT: 100MiB 2MiB
- * 2. ROOT: -
*/
+
#define CONFIG_EXTRA_ENV_SETTINGS \
- "loadkernel=fatload mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} " \
- "${kernelname}\0" \
- "loadinitrd=fatload mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \
- "${initrdname}\0" \
- "loaddtb=fatload mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} " \
- "${fdtfile}\0" \
- "check_ramdisk=" \
- "if run loadinitrd; then " \
- "setenv ramdisk_addr ${initrdaddr};" \
- "else " \
- "setenv ramdisk_addr;" \
- "fi;\0" \
- "check_dtb=" \
- "if run loaddtb; then " \
- "setenv image_addr ${kerneladdr} - ${fdtaddr};" \
- "else " \
- "setenv image_addr ${kerneladdr};" \
- "fi;\0" \
- "kernel_args=" \
- "setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
- " rootwait ${console} ${opts}\0" \
- "boot_fit=" \
- "setenv kerneladdr 0x42000000;" \
- "setenv kernelname Image.itb;" \
- "run loadkernel;" \
- "run kernel_args;" \
- "bootm ${kerneladdr}#${boardname}\0" \
- "boot_uimg=" \
- "setenv kerneladdr 0x40007FC0;" \
- "setenv kernelname uImage;" \
- "run check_dtb;" \
- "run check_ramdisk;" \
- "run loadkernel;" \
- "run kernel_args;" \
- "bootm ${image_addr} ${ramdisk_addr};\0" \
- "boot_zimg=" \
- "setenv kerneladdr 0x40007FC0;" \
- "setenv kernelname zImage;" \
- "run check_dtb;" \
- "run check_ramdisk;" \
- "run loadkernel;" \
- "run kernel_args;" \
- "bootz ${image_addr} ${ramdisk_addr};\0" \
- "autoboot=" \
- "if test -e mmc 0 Image.itb; then; " \
- "run boot_fit;" \
- "elif test -e mmc 0 zImage; then; " \
- "run boot_zimg;" \
- "elif test -e mmc 0 uImage; then; " \
- "run boot_uimg;" \
- "fi;\0" \
- "console=" CONFIG_DEFAULT_CONSOLE \
- "mmcbootdev=0\0" \
- "mmcbootpart=1\0" \
- "mmcrootdev=0\0" \
- "mmcrootpart=2\0" \
- "bootdelay=0\0" \
- "dfu_alt_system="CONFIG_DFU_ALT \
- "dfu_alt_info=Please reset the board\0" \
- "consoleon=set console console=ttySAC1,115200n8; save; reset\0" \
- "consoleoff=set console console=ram; save; reset\0" \
- "initrdname=uInitrd\0" \
- "initrdaddr=42000000\0" \
- "fdtaddr=40800000\0"
+ "bootfile=zImage\0" \
+ "bootdir=/boot\0" \
+ "console=ttySAC1,115200\0" \
+ "rdaddr=42000000\0" \
+ "rdfile=initramfs-linux.img\0" \
+ "fdtaddr=40800000\0" \
+ "fdt_file=\0" /* rename to fdtfile when Odroid-X detection is available */ \
+ "fdtdir=/boot/dtbs\0" \
+ "optargs=\0" \
+ "mmcdev=0\0" \
+ "mmcroot=/dev/mmcblk0p1 rw rootwait\0" \
+ "mmcargs=setenv bootargs console=${console} " \
+ "${optargs} " \
+ "root=${mmcroot} " \
+ "video=${video}\0" \
+ "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
+ "loadrd=load mmc ${bootpart} ${rdaddr} ${bootdir}/${rdfile}\0" \
+ "loadfdt=echo loading ${fdtdir}/${fdt_file} ...; load mmc ${bootpart} ${fdtaddr} ${fdtdir}/${fdt_file}\0" \
+ "mmcboot=mmc dev ${mmcdev}; " \
+ "if mmc rescan; then " \
+ "echo SD/MMC found on device ${mmcdev};" \
+ "setenv bootpart ${mmcdev}:1; " \
+ "echo Checking for: ${bootdir}/uEnv.txt ...;" \
+ "if test -e mmc ${bootpart} ${bootdir}/uEnv.txt; then " \
+ "load mmc ${bootpart} ${loadaddr} ${bootdir}/uEnv.txt;" \
+ "env import -t ${loadaddr} ${filesize};" \
+ "echo Loaded environment from ${bootdir}/uEnv.txt;" \
+ "echo Checking if uenvcmd is set ...;" \
+ "if test -n ${uenvcmd}; then " \
+ "echo Running uenvcmd ...;" \
+ "run uenvcmd;" \
+ "fi;" \
+ "fi; " \
+ "if run loadimage; then " \
+ "run mmcargs;" \
+ "if run loadfdt; then " \
+ "if run loadrd; then " \
+ "bootz ${loadaddr} ${rdaddr}:${filesize} ${fdtaddr};" \
+ "else " \
+ "bootz ${loadaddr} - ${fdtaddr};" \
+ "fi;" \
+ "else " \
+ "if run loadrd; then " \
+ "bootz ${loadaddr} ${rdaddr}:${filesize};" \
+ "else " \
+ "bootz ${loadaddr};" \
+ "fi;" \
+ "fi;" \
+ "else " \
+ "echo No kernel found;" \
+ "fi;" \
+ "fi;\0"
+
+#define CONFIG_BOOTCOMMAND \
+ "run mmcboot;"
/* I2C */
#define CONFIG_CMD_I2C
--
1.9.0

View file

@ -0,0 +1,58 @@
# U-Boot: ODROID-X/X2/U2/U3
# Maintainer: Kevin Mihelich <kevin@archlinuxarm.org>
buildarch=4
pkgname=uboot-odroid
pkgver=2014.07
pkgrel=1
pkgdesc="U-Boot for ODROID-X/X2/U2/U3"
arch=('armv7h')
url="http://git.denx.de/u-boot.git/"
license=('GPL')
install=$pkgname.install
makedepends=('bc' 'dtc')
_commit=dd9a970aa4accf5d266d334c0f319c674e933027
source=("ftp://ftp.denx.de/pub/u-boot/u-boot-${pkgver}.tar.bz2"
"https://github.com/hardkernel/u-boot/raw/${_commit}/sd_fuse/bl1.HardKernel"
"https://github.com/hardkernel/u-boot/raw/${_commit}/sd_fuse/bl2.HardKernel"
"https://github.com/hardkernel/u-boot/raw/${_commit}/sd_fuse/tzsw.HardKernel"
"sd_fusing.sh"
'0001-support-for-odroid-4412-machines.patch'
'0002-arch-linux-arm-modifications.patch'
'uEnv.txt')
md5sums=('36d4bad687edcafa396fee607e505d4e'
'3ab6d3cc2061bc2590d60320254017c6'
'841502de02bd42f2898e36c89c260b0f'
'c38faafa02a6a1ae834457f378c82113'
'57f77df08bf8297df5e074f0d71374f7'
'b527876d561cc88cc0d6e077e831918b'
'70e0122f419416062e434c295670946c'
'db13b6e82ae36b916c826383b04fb9c2')
prepare() {
cd u-boot-${pkgver}
patch -p1 -i ../0001-support-for-odroid-4412-machines.patch
patch -p1 -i ../0002-arch-linux-arm-modifications.patch
}
build() {
cd u-boot-${pkgver}
unset CFLAGS
unset CXXFLAGS
make distclean
make odroid_config
make
}
package() {
cd u-boot-${pkgver}
mkdir -p ${pkgdir}/boot
cp u-boot-dtb.bin ${pkgdir}/boot/u-boot.bin
cp ../uEnv.txt ${pkgdir}/boot
cp ../{{bl1,bl2,tzsw}.HardKernel,sd_fusing.sh} ${pkgdir}/boot
chmod +x ${pkgdir}/boot/sd_fusing.sh
}

75
alarm/uboot-odroid/sd_fusing.sh Executable file
View file

@ -0,0 +1,75 @@
#!/usr/bin/bash
####################################
#
# Copyright (C) 2011 Samsung Electronics Co., Ltd.
# http://www.samsung.com/
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
####################################
#
# Modified for Arch Linux ARM package uboot-odroid
#
####################################
if [ -z $1 ]
then
echo "usage: ./sd_fusing.sh <SD Reader's device file>"
exit 0
fi
if [ -b $1 ]
then
echo "$1 reader is identified."
else
echo "$1 is NOT identified."
exit 0
fi
if [ -d /sys/block/${1##*/}boot0 ]; then
echo "$1 is an eMMC card, disabling ${1##*/}boot0 ro"
if ! echo 0 > /sys/block/${1##*/}boot0/force_ro; then
echo "Enabling r/w for $1boot0 failed"
exit 1
fi
emmc=1
fi
####################################
# fusing images
if [ -n "$emmc" ]; then
signed_bl1_position=0
bl2_position=30
uboot_position=62
tzsw_position=2110
device=$1boot0
else
signed_bl1_position=1
bl2_position=31
uboot_position=63
tzsw_position=2111
device=$1
fi
#<BL1 fusing>
echo "BL1 fusing"
dd iflag=dsync oflag=dsync if=/boot/bl1.HardKernel of=$device seek=$signed_bl1_position
#<BL2 fusing>
echo "BL2 fusing"
dd iflag=dsync oflag=dsync if=/boot/bl2.HardKernel of=$device seek=$bl2_position
#<u-boot fusing>
echo "u-boot fusing"
dd iflag=dsync oflag=dsync if=/boot/u-boot.bin of=$device seek=$uboot_position
#<TrustZone S/W fusing>
echo "TrustZone S/W fusing"
dd iflag=dsync oflag=dsync if=/boot/tzsw.HardKernel of=$device seek=$tzsw_position
####################################
#<Message Display>
echo "U-boot image is fused successfully."

View file

@ -0,0 +1,37 @@
# Use this file to make modifications to the U-Boot environment.
# Defaults in the environment are provided below, uncomment and modify to change them.
### Kernel
# bootdir=/boot
# bootfile=zImage
### root filesystem device
# mmcroot=/dev/mmcblk0p1 rw rootwait
### optargs (extra options to pass to the kernel)
# optargs=
### Flattened Device Tree file (specify for mainline kernel use)
# fdtdir=/boot/dtbs
# fdtfile=exynos4412-odroidu3.dtb
# fdtfile=exynos4412-odroidx.dtb
# fdtfile=exynos4412-odroidx2.dtb
### initramfs
# rdfile=initramfs-linux.img
### video
## 1920x1080 (1080P) with monitor provided EDID information. (1080p-edid)
# video=HDMI-A-1:1920x1080@60
## 1920x1080 (1080P) without monitor data using generic information (1080p-noedid)
# optargs=drm_kms_helper.edid_firmware=edid/1920x1080.bin
## 1280x720 (720P) with monitor provided EDID information. (720p-edid)
# video=HDMI-A-1:1280x720@60
## 1280x720 (720P) without monitor data using generic information (720p-noedid)
# optargs=drm_kms_helper.edid_firmware=edid/1280x720.bin
## 1024x768 without monitor data using generic information
# optargs=drm_kms_helper.edid_firmware=edid/1024x768.bin

View file

@ -0,0 +1,54 @@
sd_fuse() {
if [ ! -b /dev/mmcblk0 ]; then
echo "No MMC device to flash, exiting."
exit 0
fi
if [ -d /sys/block/mmcblk0boot0 ]; then
echo "/dev/mmcblk0 is an eMMC card, disabling read-only.."
if ! echo 0 > /sys/block/mmcblk0boot0/force_ro; then
echo "Disabling read-only for /dev/mmcblk0boot0 failed."
exit 1
fi
signed_bl1_position=0
bl2_position=30
uboot_position=62
tzsw_position=2110
device=/dev/mmcblk0boot0
else
signed_bl1_position=1
bl2_position=31
uboot_position=63
tzsw_position=2111
device=/dev/mmcblk0
fi
echo "BL1 fusing"
dd iflag=dsync oflag=dsync if=/boot/bl1.HardKernel of=$device seek=$signed_bl1_position
echo "BL2 fusing"
dd iflag=dsync oflag=dsync if=/boot/bl2.HardKernel of=$device seek=$bl2_position
echo "u-boot fusing"
dd iflag=dsync oflag=dsync if=/boot/u-boot.bin of=$device seek=$uboot_position
echo "TrustZone S/W fusing"
dd iflag=dsync oflag=dsync if=/boot/tzsw.HardKernel of=$device seek=$tzsw_position
}
flash_uboot() {
echo "A new U-Boot version needs to be flashed onto /dev/mmcblk0."
echo "Do you want to do this now? [y|N]"
read -r shouldwe
if [[ $shouldwe =~ ^([yY][eE][sS]|[yY])$ ]]; then
sd_fuse
else
echo "You can do this later by running:"
echo "# /boot/sd_fusing.sh /dev/mmcblk0"
fi
}
post_install() {
flash_uboot
}
post_upgrade() {
flash_uboot
}