summaryrefslogtreecommitdiff
path: root/libre-testing/uboot4grub-omap3_beagle/0001-parabola-arm-modifications+grub-support.patch
blob: 2a795a70b499211e639f73175211ea8e68cc0db6 (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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
diff -Nur u-boot-2015.04.orig/board/ti/beagle/beagle.c u-boot-2015.04/board/ti/beagle/beagle.c
--- u-boot-2015.04.orig/board/ti/beagle/beagle.c	2015-04-13 11:53:03.000000000 -0300
+++ u-boot-2015.04/board/ti/beagle/beagle.c	2015-10-16 17:55:32.598948802 -0300
@@ -56,6 +56,7 @@
 #define BBTOYS_WIFI			0x01000B00
 #define BBTOYS_VGA			0x02000B00
 #define BBTOYS_LCD			0x03000B00
+#define BBTOYS_ULCD			0x04000B00
 #define BCT_BRETTL3			0x01000F00
 #define BCT_BRETTL4			0x02000F00
 #define LSR_COM6L_ADPT			0x01001300
@@ -211,25 +212,25 @@
  *		bus 1 for the availability of an AT24C01B serial EEPROM.
  *		returns the device_vendor field from the EEPROM
  */
-static unsigned int get_expansion_id(void)
+static unsigned int get_expansion_id(int eeprom_address)
 {
 	i2c_set_bus_num(EXPANSION_EEPROM_I2C_BUS);
 
 	/* return BEAGLE_NO_EEPROM if eeprom doesn't respond */
-	if (i2c_probe(EXPANSION_EEPROM_I2C_ADDRESS) == 1) {
+	if (i2c_probe(eeprom_address) == 1) {
 		i2c_set_bus_num(TWL4030_I2C_BUS);
 		return BEAGLE_NO_EEPROM;
 	}
 
 	/* read configuration data */
-	i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config,
+	i2c_read(eeprom_address, 0, 1, (u8 *)&expansion_config,
 		 sizeof(expansion_config));
 
 	/* retry reading configuration data with 16bit addressing */
 	if ((expansion_config.device_vendor == 0xFFFFFF00) ||
 	    (expansion_config.device_vendor == 0xFFFFFFFF)) {
 		printf("EEPROM is blank or 8bit addressing failed: retrying with 16bit:\n");
-		i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 2, (u8 *)&expansion_config,
+		i2c_read(eeprom_address, 0, 2, (u8 *)&expansion_config,
 			 sizeof(expansion_config));
 	}
 
@@ -341,15 +342,18 @@
 	case REVISION_AXBX:
 		printf("Beagle Rev Ax/Bx\n");
 		setenv("beaglerev", "AxBx");
+		setenv("musb", "musb_hdrc.fifo_mode=5");
 		break;
 	case REVISION_CX:
 		printf("Beagle Rev C1/C2/C3\n");
 		setenv("beaglerev", "Cx");
+		setenv("musb", "musb_hdrc.fifo_mode=5");
 		MUX_BEAGLE_C();
 		break;
 	case REVISION_C4:
 		printf("Beagle Rev C4\n");
 		setenv("beaglerev", "C4");
+		setenv("musb", "musb_hdrc.fifo_mode=5");
 		MUX_BEAGLE_C();
 		/* Set VAUX2 to 1.8V for EHCI PHY */
 		twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED,
@@ -390,7 +394,7 @@
 		generate_fake_mac = true;
 	}
 
-	switch (get_expansion_id()) {
+	switch (get_expansion_id(EXPANSION_EEPROM_I2C_ADDRESS)) {
 	case TINCANTOOLS_ZIPPY:
 		printf("Recognized Tincantools Zippy board (rev %d %s)\n",
 			expansion_config.revision,
@@ -471,6 +475,30 @@
 	}
 
 	if (expansion_config.content == 1)
+		setenv(expansion_config.env_var, expansion_config.env_setting);
+
+	/* Scan 0x51 as well for loop-thru boards */
+	switch (get_expansion_id(EXPANSION_EEPROM_I2C_ADDRESS + 1)) {
+	case BBTOYS_ULCD:
+		printf("Recognized BeagleBoardToys uLCD-lite board\n");
+		setenv("buddy2", "bbtoys-ulcd");
+		setenv("defaultdisplay", "dvi");
+		setenv("dvimode", "800x480MR-16@60");
+		setenv("lcd1", "i2c mw 40 00 00; i2c mw 40 04 80; i2c mw 40 0d 05");
+		setenv("lcdcmd", "i2c dev 1 ; run lcd1; i2c dev 0");
+		setenv("kmsmode", "video=DVI-D-1:800x480");
+		break;
+	case BEAGLE_NO_EEPROM:
+		printf("No EEPROM on expansion board\n");
+		setenv("buddy2", "none");
+		break;
+	default:
+		printf("Unrecognized expansion board: %x\n",
+			expansion_config.device_vendor);
+		setenv("buddy2", "unknown");
+	}
+
+	if (expansion_config.content == 1)
 		setenv(expansion_config.env_var, expansion_config.env_setting);
 
 	twl4030_power_init();
diff -Nur u-boot-2015.04.orig/include/configs/omap3_beagle.h u-boot-2015.04/include/configs/omap3_beagle.h
--- u-boot-2015.04.orig/include/configs/omap3_beagle.h	2015-04-13 11:53:03.000000000 -0300
+++ u-boot-2015.04/include/configs/omap3_beagle.h	2015-10-16 18:38:50.576704443 -0300
@@ -90,6 +90,16 @@
 #define CONFIG_USB_ETHER_MCS7830
 #define CONFIG_USB_ETHER_SMSC95XX
 
+/* GRUB support */
+#define CONFIG_API
+#define CONFIG_SYS_MMC_MAX_DEVICE	1
+
+/* Parabola GNU/Linux-libre extras */
+#define CONFIG_IDENT_STRING " Parabola GNU/Linux-libre"
+#define CONFIG_SUPPORT_RAW_INITRD
+#define CONFIG_CMD_PART
+#define CONFIG_PARTITION_UUIDS
+
 /* GPIO banks */
 #define CONFIG_OMAP3_GPIO_5		/* GPIO128..159 is in GPIO bank 5 */
 #define CONFIG_OMAP3_GPIO_6		/* GPIO160..191 is in GPIO bank 6 */
@@ -129,137 +139,51 @@
 							/* devices */
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
-	"loadaddr=0x80200000\0" \
-	"rdaddr=0x81000000\0" \
-	"fdt_high=0xffffffff\0" \
-	"fdtaddr=0x80f80000\0" \
-	"usbtty=cdc_acm\0" \
-	"bootfile=uImage\0" \
-	"ramdisk=ramdisk.gz\0" \
-	"bootdir=/boot\0" \
-	"bootpart=0:2\0" \
+	"loadaddr=0x82000000\0" \
 	"console=ttyO2,115200n8\0" \
-	"mpurate=auto\0" \
-	"buddy=none\0" \
-	"optargs=\0" \
-	"camera=none\0" \
-	"vram=12M\0" \
-	"dvimode=640x480MR-16@60\0" \
-	"defaultdisplay=dvi\0" \
+	"fdtfile=undefined\0" \
+	"bootpart=0:1\0" \
+	"bootdir=/\0" \
+	"grubfile=core.img\0" \
 	"mmcdev=0\0" \
-	"mmcroot=/dev/mmcblk0p2 rw\0" \
-	"mmcrootfstype=ext3 rootwait\0" \
-	"nandroot=ubi0:rootfs ubi.mtd=4\0" \
-	"nandrootfstype=ubifs\0" \
-	"ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=0x81000000,64M\0" \
-	"ramrootfstype=ext2\0" \
+	"optargs=\0" \
 	"mmcargs=setenv bootargs console=${console} " \
 		"${optargs} " \
-		"mpurate=${mpurate} " \
-		"buddy=${buddy} "\
-		"camera=${camera} "\
-		"vram=${vram} " \
-		"omapfb.mode=dvi:${dvimode} " \
-		"omapdss.def_disp=${defaultdisplay} " \
-		"root=${mmcroot} " \
-		"rootfstype=${mmcrootfstype}\0" \
-	"nandargs=setenv bootargs console=${console} " \
-		"${optargs} " \
-		"mpurate=${mpurate} " \
-		"buddy=${buddy} "\
-		"camera=${camera} "\
-		"vram=${vram} " \
-		"omapfb.mode=dvi:${dvimode} " \
-		"omapdss.def_disp=${defaultdisplay} " \
-		"root=${nandroot} " \
-		"rootfstype=${nandrootfstype}\0" \
-	"findfdt=" \
-		"if test $beaglerev = AxBx; then " \
-			"setenv fdtfile omap3-beagle.dtb; fi; " \
-		"if test $beaglerev = Cx; then " \
-			"setenv fdtfile omap3-beagle.dtb; fi; " \
-		"if test $beaglerev = C4; then " \
-			"setenv fdtfile omap3-beagle.dtb; fi; " \
-		"if test $beaglerev = xMAB; then " \
-			"setenv fdtfile omap3-beagle-xm-ab.dtb; fi; " \
-		"if test $beaglerev = xMC; then " \
-			"setenv fdtfile omap3-beagle-xm.dtb; fi; " \
-		"if test $fdtfile = undefined; then " \
-			"echo WARNING: Could not determine device tree to use; fi; \0" \
-	"validatefdt=" \
-		"if test $beaglerev = xMAB; then " \
-			"if test ! -e mmc ${bootpart} ${bootdir}/${fdtfile}; then " \
-				"setenv fdtfile omap3-beagle-xm.dtb; " \
-			"fi; " \
-		"fi; \0" \
-	"bootenv=uEnv.txt\0" \
-	"loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
-	"importbootenv=echo Importing environment from mmc ...; " \
-		"env import -t -r $loadaddr $filesize\0" \
-	"ramargs=setenv bootargs console=${console} " \
-		"${optargs} " \
-		"mpurate=${mpurate} " \
-		"buddy=${buddy} "\
-		"vram=${vram} " \
-		"omapfb.mode=dvi:${dvimode} " \
-		"omapdss.def_disp=${defaultdisplay} " \
-		"root=${ramroot} " \
-		"rootfstype=${ramrootfstype}\0" \
-	"loadramdisk=load mmc ${bootpart} ${rdaddr} ${bootdir}/${ramdisk}\0" \
-	"loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
-	"loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
-	"bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
-		"source ${loadaddr}\0" \
-	"loadfdt=run validatefdt; load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
-	"mmcboot=echo Booting from mmc ...; " \
-		"run mmcargs; " \
-		"bootm ${loadaddr}\0" \
-	"mmcbootz=echo Booting with DT from mmc${mmcdev} ...; " \
-		"run mmcargs; " \
-		"bootz ${loadaddr} - ${fdtaddr}\0" \
-	"nandboot=echo Booting from nand ...; " \
-		"run nandargs; " \
-		"nand read ${loadaddr} 280000 400000; " \
-		"bootm ${loadaddr}\0" \
-	"ramboot=echo Booting from ramdisk ...; " \
-		"run ramargs; " \
-		"bootm ${loadaddr}\0" \
-	"userbutton=if gpio input 173; then run userbutton_xm; " \
-		"else run userbutton_nonxm; fi;\0" \
-	"userbutton_xm=gpio input 4;\0" \
-	"userbutton_nonxm=gpio input 7;\0"
-/* "run userbutton" will return 1 (false) if pressed and 0 (true) if not */
+		"root=${root} " \
+		"${musb} " \
+		"${cmdline}\0" \
+	"loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${grubfile}\0" \
+	"mmcboot=usb start;" \
+		"for devtype in mmc usb; do " \
+			"setenv devnum 0;" \
+			"while ${devtype} dev ${devnum}; do " \
+				"echo ${devtype} found on device ${devnum};" \
+				"setenv bootpart ${devnum}:1;" \
+				"if test ${devtype} = mmc; then part uuid mmc ${devnum}:2 uuid; else part uuid ${devtype} ${devnum}:1 uuid; fi;" \
+				"part uuid ${devtype} ${rootpart} uuid;" \
+				"setenv root PARTUUID=${uuid} rw rootwait;" \
+				"echo Checking for: ${bootdir}/uEnv.txt ...;" \
+				"if test -e ${devtype} ${bootpart} ${bootdir}/uEnv.txt; then " \
+					"load ${devtype} ${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;" \
+				"else " \
+					"echo No GRUB found;" \
+				"fi;" \
+				"setexpr devnum ${devnum} + 1;" \
+			"done;" \
+		"done;\0" \
+
 #define CONFIG_BOOTCOMMAND \
-	"run findfdt; " \
-	"mmc dev ${mmcdev}; if mmc rescan; then " \
-		"if run userbutton; then " \
-			"setenv bootenv uEnv.txt;" \
-		"else " \
-			"setenv bootenv user.txt;" \
-		"fi;" \
-		"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; " \
-		"else " \
-			"if run loadimage; then " \
-				"run mmcboot;" \
-			"fi;" \
-		"fi; " \
-	"fi;" \
-	"run nandboot;" \
-	"setenv bootfile zImage;" \
-	"if run loadimage; then " \
-		"run loadfdt;" \
-		"run mmcbootz; " \
-	"fi; " \
+	"run mmcboot"
 
 /*
  * OMAP3 has 12 GP timers, they can be driven by the system clock