summaryrefslogtreecommitdiffstats
path: root/mlo-ext.patch
blob: b1204eb97cbd0fbc66320bd5306bc8d887867b70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
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;