summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorJörg Hohensohn <hohensoh@rockbox.org>2004-12-29 22:10:24 +0000
committerJörg Hohensohn <hohensoh@rockbox.org>2004-12-29 22:10:24 +0000
commit1a5962f2be995b669f2cc3a49be33b3ecd8dede0 (patch)
treedd9f407265826fa02ed08cc12f9fd54a093e4ad8 /apps
parent5c631a1222c81bb075ec241621aa3626bd44c31a (diff)
downloadrockbox-1a5962f2be995b669f2cc3a49be33b3ecd8dede0.tar.gz
rockbox-1a5962f2be995b669f2cc3a49be33b3ecd8dede0.zip
Shared mounting code, also more general. It will mount multiple HD partitions, too, once HAVE_MULTIVOLUME is enabled.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5518 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/main.c48
1 files changed, 3 insertions, 45 deletions
diff --git a/apps/main.c b/apps/main.c
index 572e0a3114..fece06a587 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -156,7 +156,6 @@ void init(void)
156void init(void) 156void init(void)
157{ 157{
158 int rc, i; 158 int rc, i;
159 struct partinfo* pinfo;
160 /* if nobody initialized ATA before, I consider this a cold start */ 159 /* if nobody initialized ATA before, I consider this a cold start */
161 bool coldstart = (PACR2 & 0x4000) != 0; /* starting from Flash */ 160 bool coldstart = (PACR2 & 0x4000) != 0; /* starting from Flash */
162 161
@@ -240,12 +239,12 @@ void init(void)
240 usb_start_monitoring(); 239 usb_start_monitoring();
241 240
242 /* FixMe: the same kind of mounting happens in usb.c, share the code. */ 241 /* FixMe: the same kind of mounting happens in usb.c, share the code. */
243 pinfo = disk_init(IF_MV(0)); 242 rc = disk_mount_all();
244 if (!pinfo) 243 if (rc<=0)
245 { 244 {
246 lcd_clear_display(); 245 lcd_clear_display();
247 lcd_puts(0, 0, "No partition"); 246 lcd_puts(0, 0, "No partition");
248 lcd_puts(0, 1, "table."); 247 lcd_puts(0, 1, "found.");
249#ifdef HAVE_LCD_BITMAP 248#ifdef HAVE_LCD_BITMAP
250 lcd_puts(0, 2, "Insert USB cable"); 249 lcd_puts(0, 2, "Insert USB cable");
251 lcd_puts(0, 3, "and fix it."); 250 lcd_puts(0, 3, "and fix it.");
@@ -256,47 +255,6 @@ void init(void)
256 system_reboot(); 255 system_reboot();
257 } 256 }
258 257
259 fat_init();
260 for ( i=0; i<4; i++ ) {
261 if (!fat_mount(IF_MV2(0,) IF_MV2(0,) pinfo[i].start))
262 break; /* only one partition gets mounted as of now */
263 }
264
265 if ( i==4 ) {
266 DEBUGF("No partition found, trying to mount sector 0.\n");
267 rc = fat_mount(IF_MV2(0,) IF_MV2(0,) 0);
268 if(rc) {
269 lcd_clear_display();
270 lcd_puts(0,0,"No FAT32");
271 lcd_puts(0,1,"partition!");
272 lcd_update();
273 sleep(HZ);
274 /* Don't leave until we have been in USB mode */
275 while(!dbg_partitions());
276
277 /* The USB thread will panic if the drive still can't be mounted */
278 }
279 }
280#ifdef HAVE_MULTIVOLUME
281 /* mount partition on the optional volume */
282#ifdef HAVE_MMC
283 if (mmc_detect()) /* for Ondio, only if card detected */
284#endif
285 {
286 pinfo = disk_init(1);
287 if (pinfo)
288 {
289 for ( i=0; i<4; i++ ) {
290 if (!fat_mount(1, 1, pinfo[i].start))
291 break; /* only one partition gets mounted as of now */
292 }
293
294 if ( i==4 ) {
295 rc = fat_mount(1, 1, 0);
296 }
297 }
298 }
299#endif /* #ifdef HAVE_MULTIVOLUME */
300 settings_calc_config_sector(); 258 settings_calc_config_sector();
301 settings_load(SETTINGS_ALL); 259 settings_load(SETTINGS_ALL);
302 settings_apply(); 260 settings_apply();