add patches to support ext filesystems in exynos and omap SPL's

- drop bringing in arm-boot-config on arm systems
- build a highbank u-boot (intention is to use in qemu)
This commit is contained in:
Dennis Gilmore 2013-06-05 13:50:04 -05:00
parent e10f7e4ca6
commit 1669bbd6e5
3 changed files with 242 additions and 4 deletions

54
exynos-ext.patch Normal file
View File

@ -0,0 +1,54 @@
Index: u-boot-2013.04rc2/include/configs/origen.h
===================================================================
--- u-boot-2013.04rc2.orig/include/configs/origen.h
+++ u-boot-2013.04rc2/include/configs/origen.h
@@ -87,8 +87,11 @@
#define CONFIG_CMD_DHCP
#define CONFIG_CMD_MMC
#define CONFIG_CMD_FAT
+#define CONFIG_CMD_EXT2 /* EXT2 Support */
#undef CONFIG_CMD_NET
#undef CONFIG_CMD_NFS
+#define CONFIG_CMD_BOOTZ /* bootz zImage support */
+#define CONFIG_SUPPORT_RAW_INITRD /* bootz raw initrd support */
#define CONFIG_BOOTDELAY 3
#define CONFIG_ZERO_BOOTDELAY_CHECK
@@ -96,7 +99,35 @@
#define CONFIG_SPL
#define COPY_BL2_FNPTR_ADDR 0x02020030
-#define CONFIG_BOOTCOMMAND "fatload mmc 0 40007000 uImage; bootm 40007000"
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "loadaddr=0x40007000\0" \
+ "rdaddr=0x48000000\0" \
+ "kerneladdr=0x40007000\0" \
+ "ramdiskaddr=0x48000000\0" \
+ "console=ttySAC2,115200n8\0" \
+ "mmcdev=0\0" \
+ "bootenv=uEnv.txt\0" \
+ "loadbootenv=ext2load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
+ "importbootenv=echo Importing environment from mmc ...; " \
+ "env import -t $loadaddr $filesize\0" \
+ "loadbootscript=ext2load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
+ "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
+ "source ${loadaddr}\0"
+#define CONFIG_BOOTCOMMAND \
+ "if mmc rescan; then " \
+ "echo SD/MMC found on device ${mmcdev};" \
+ "if run loadbootenv; then " \
+ "echo Loaded environment from ${bootenv};" \
+ "run importbootenv;" \
+ "fi;" \
+ "if test -n $uenvcmd; then " \
+ "echo Running uenvcmd ...;" \
+ "run uenvcmd;" \
+ "fi;" \
+ "if run loadbootscript; then " \
+ "run bootscript; " \
+ "fi; " \
+ "fi;"
/* Miscellaneous configurable options */
#define CONFIG_SYS_LONGHELP /* undef to save memory */

157
mlo-ext.patch Normal file
View File

@ -0,0 +1,157 @@
Index: u-boot-2013.04/drivers/mmc/spl_mmc.c
===================================================================
--- u-boot-2013.04.orig/drivers/mmc/spl_mmc.c
+++ u-boot-2013.04/drivers/mmc/spl_mmc.c
@@ -67,6 +67,59 @@ end:
}
#ifdef CONFIG_SPL_FAT_SUPPORT
+static void mmc_load_image_ext2(struct mmc *mmc)
+{
+ s32 err;
+ struct image_header *header;
+ char *payloadname;
+ int filelen;
+ disk_partition_t part_info = {};
+
+ header = (struct image_header *)(CONFIG_SYS_TEXT_BASE -
+ sizeof(struct image_header));
+
+ if (get_partition_info(&mmc->block_dev,
+ CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION, &part_info)) {
+ printf("spl: no partition table found\n");
+ hang();
+ }
+
+ err = ext4fs_set_blk_dev(&mmc->block_dev, &part_info);
+ if (!err) {
+ printf("spl: ext4fs register err - %d\n", err);
+ hang();
+ }
+
+ err = ext4fs_mount(0);
+ if (!err) {
+ printf("spl: ext4fs mount err - %d\n", err);
+ hang();
+ }
+
+
+ payloadname = "u-boot.img";
+
+ filelen = err = ext4fs_open(payloadname);
+ if (err < 0) {
+ goto end;
+ }
+ err = ext4fs_read((u8 *)header, sizeof(struct image_header));
+ if (err <= 0) {
+ goto end;
+ }
+
+ spl_parse_image_header(header);
+
+ err = ext4fs_read((u8 *)spl_image.load_addr, filelen);
+
+end:
+ if (err <= 0) {
+ printf("spl: error reading image %s, err - %d\n",
+ payloadname, err);
+ hang();
+ }
+}
+
static void mmc_load_image_fat(struct mmc *mmc)
{
s32 err;
@@ -127,7 +180,8 @@ void spl_mmc_load_image(void)
#ifdef CONFIG_SPL_FAT_SUPPORT
} else if (boot_mode == MMCSD_MODE_FAT) {
debug("boot mode - FAT\n");
- mmc_load_image_fat(mmc);
+// mmc_load_image_fat(mmc);
+ mmc_load_image_ext2(mmc);
#endif
} else {
puts("spl: wrong MMC boot mode\n");
Index: u-boot-2013.04/include/configs/omap3_beagle.h
===================================================================
--- u-boot-2013.04.orig/include/configs/omap3_beagle.h
+++ u-boot-2013.04/include/configs/omap3_beagle.h
@@ -55,6 +55,7 @@
#define CONFIG_OF_LIBFDT
#define CONFIG_CMD_BOOTZ
+#define CONFIG_SUPPORT_RAW_INITRD /* bootz raw initrd support */
#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
#define CONFIG_SETUP_MEMORY_TAGS 1
@@ -255,7 +256,7 @@
"root=${nandroot} " \
"rootfstype=${nandrootfstype}\0" \
"bootenv=uEnv.txt\0" \
- "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
+ "loadbootenv=ext2load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
"importbootenv=echo Importing environment from mmc ...; " \
"env import -t $loadaddr $filesize\0" \
"ramargs=setenv bootargs console=${console} " \
@@ -267,8 +268,8 @@
"omapdss.def_disp=${defaultdisplay} " \
"root=${ramroot} " \
"rootfstype=${ramrootfstype}\0" \
- "loadramdisk=fatload mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \
- "loaduimagefat=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \
+ "loadramdisk=ext2load mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \
+ "loaduimagefat=ext2load mmc ${mmcdev} ${loadaddr} uImage\0" \
"loaduimage=ext2load mmc ${mmcdev}:2 ${loadaddr} /boot/uImage\0" \
"mmcboot=echo Booting from mmc ...; " \
"run mmcargs; " \
Index: u-boot-2013.04/include/configs/omap4_common.h
===================================================================
--- u-boot-2013.04.orig/include/configs/omap4_common.h
+++ u-boot-2013.04/include/configs/omap4_common.h
@@ -126,6 +126,7 @@
#define CONFIG_CMD_FAT /* FAT support */
#define CONFIG_CMD_I2C /* I2C serial bus support */
#define CONFIG_CMD_MMC /* MMC support */
+#define CONFIG_SUPPORT_RAW_INITRD /* bootz raw initrd support */
/* Disabled commands */
#undef CONFIG_CMD_NET
@@ -162,10 +163,10 @@
"vram=${vram} " \
"root=${mmcroot} " \
"rootfstype=${mmcrootfstype}\0" \
- "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \
+ "loadbootscript=ext2load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
"bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
"source ${loadaddr}\0" \
- "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} uEnv.txt\0" \
+ "loadbootenv=ext2load mmc ${mmcdev} ${loadaddr} uEnv.txt\0" \
"importbootenv=echo Importing environment from mmc${mmcdev} ...; " \
"env import -t ${loadaddr} ${filesize}\0" \
"loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
Index: u-boot-2013.04/spl/Makefile
===================================================================
--- u-boot-2013.04.orig/spl/Makefile
+++ u-boot-2013.04/spl/Makefile
@@ -72,6 +72,7 @@ LIBS-$(CONFIG_SPL_SERIAL_SUPPORT) += dri
LIBS-$(CONFIG_SPL_SPI_FLASH_SUPPORT) += drivers/mtd/spi/libspi_flash.o
LIBS-$(CONFIG_SPL_SPI_SUPPORT) += drivers/spi/libspi.o
LIBS-$(CONFIG_SPL_FAT_SUPPORT) += fs/fat/libfat.o
+LIBS-$(CONFIG_SPL_FAT_SUPPORT) += fs/ext4/libext4fs.o
LIBS-$(CONFIG_SPL_LIBGENERIC_SUPPORT) += lib/libgeneric.o
LIBS-$(CONFIG_SPL_POWER_SUPPORT) += drivers/power/libpower.o
LIBS-$(CONFIG_SPL_NAND_SUPPORT) += drivers/mtd/nand/libnand.o
Index: u-boot-2013.04/arch/arm/cpu/armv7/omap3/board.c
===================================================================
--- u-boot-2013.04.orig/arch/arm/cpu/armv7/omap3/board.c
+++ u-boot-2013.04/arch/arm/cpu/armv7/omap3/board.c
@@ -77,6 +77,8 @@ u32 omap3_boot_device = BOOT_DEVICE_NAND
/* auto boot mode detection is not possible for OMAP3 - hard code */
u32 spl_boot_mode(void)
{
+ return MMCSD_MODE_FAT;
+
switch (spl_boot_device()) {
case BOOT_DEVICE_MMC2:
return MMCSD_MODE_RAW;

View File

@ -2,7 +2,7 @@
Name: uboot-tools
Version: 2013.04
Release: 4%{?candidate:.%{candidate}}%{?dist}
Release: 5%{?candidate:.%{candidate}}%{?dist}
Summary: U-Boot utilities
Group: Development/Tools
@ -18,6 +18,8 @@ Source6: uEnv.txt.panda_es
Source7: uEnv.txt.uevm
Patch1: u-boot-fat.patch
Patch2: uboot-omap-fit.patch
Patch3: mlo-ext.patch
Patch4: exynos-ext.patch
# Beagle Bone Black support
Patch10: 0001-beaglebone-default-to-beaglebone-black-for-unknown-E.patch
@ -36,9 +38,6 @@ Patch22: 0013-beaglebone-enable-CONFIG_SUPPORT_RAW_INITRD-option.patch
Patch23: 0014-mmc-Add-RSTN-enable-for-emmc.patch
Requires: dtc
%ifarch %{arm}
Requires: arm-boot-config
%endif
# build the tool for manipulation with environment only on arm
%ifarch %{arm}
@ -64,6 +63,14 @@ Requires: uboot-tools
%description -n uboot-beaglebone
u-boot bootloader binaries for beaglebone
%package -n uboot-highbank
Summary: u-boot bootloader binaries for calxeda highbank
Requires: uboot-tools
BuildArch: noarch
%description -n uboot-highbank
u-boot bootloader binaries for calxeda highbank
%package -n uboot-panda
Summary: u-boot bootloader binaries for pandaboard
Requires: uboot-tools
@ -119,6 +126,8 @@ u-boot bootloader binaries for vexpress
%setup -q -n u-boot-%{version}%{?candidate:-%{candidate}}
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
# Beagle Bone Black support
%patch10 -p1
@ -159,6 +168,11 @@ cp -p u-boot.img builds/u-boot.img.beagle
cp -p u-boot.bin builds/u-boot.bin.beagle
make distclean
make CROSS_COMPILE="" highbank_config
make HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE=""
cp -p u-boot.bin builds/u-boot.bin.highbank
make distclean
make CROSS_COMPILE="" omap4_panda_config
make HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE=""
cp -p MLO builds/MLO.panda
@ -214,6 +228,7 @@ mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot-panda/
mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot-beagle/
mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot-beaglebone/
mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot-highbank/
mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot-origen/
mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot-smdkv310/
mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot-imx6dl/
@ -228,6 +243,8 @@ install -p -m 0644 builds/u-boot.img.$(echo $board) $RPM_BUILD_ROOT%{_datadir}/u
install -p -m 0644 builds/MLO.$(echo $board) $RPM_BUILD_ROOT%{_datadir}/uboot-$(echo $board)/MLO
done
install -p -m 0644 builds/u-boot.bin.highbank $RPM_BUILD_ROOT%{_datadir}/uboot-highbank/u-boot.bin
install -p -m 0644 builds/origen-spl.bin.origen $RPM_BUILD_ROOT%{_datadir}/uboot-origen/origen-spl.bin
install -p -m 0644 builds/u-boot.bin.origen $RPM_BUILD_ROOT%{_datadir}/uboot-origen/u-boot.bin
@ -238,6 +255,7 @@ install -p -m 0644 builds/u-boot.imx.dl $RPM_BUILD_ROOT%{_datadir}/uboot-imx6dl/
install -p -m 0644 builds/u-boot.imx.solo $RPM_BUILD_ROOT%{_datadir}/uboot-imx6solo/u-boot.bin
install -p -m 0644 builds/u-boot.bin.vexpress $RPM_BUILD_ROOT%{_datadir}/uboot-vexpress/u-boot.bin
install -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/uboot-beagle/uEnv.txt.beagle
install -p -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/uboot-beaglebone/uEnv.txt.beaglebone
install -p -m 0644 %{SOURCE3} $RPM_BUILD_ROOT%{_datadir}/uboot-beagle/uEnv.txt.beagle_xm
@ -280,6 +298,10 @@ rm -rf $RPM_BUILD_ROOT
%defattr(-,root,root,-)
%{_datadir}/uboot-beagle/
%files -n uboot-highbank
%defattr(-,root,root,-)
%{_datadir}/uboot-highbank/
%files -n uboot-panda
%defattr(-,root,root,-)
%{_datadir}/uboot-panda/
@ -310,6 +332,11 @@ rm -rf $RPM_BUILD_ROOT
%endif
%changelog
* Wed Jun 05 2013 Dennis Gilmore <dennis@ausil.us> - 2013.04-5
- add patches to support ext filesystems in exynos and omap SPL's
- drop bringing in arm-boot-config on arm systems
- build a highbank u-boot (intention is to use in qemu)
* Wed May 22 2013 Dennis Gilmore <dennis@ausil.us> - 2013.04-4
- build vexpress image
- add uEnv.txt files for various supported omap systems