summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2009-03-17 20:05:03 +0000
committerNils Wallménius <nils@rockbox.org>2009-03-17 20:05:03 +0000
commit6ce98bda11c26f209c8319213677dd411a9713b7 (patch)
treeb58c1068e4d5f26c0b6741fc15233eabda9b571a
parent877efe1123d85ed60e54cd214ef044f64c06c735 (diff)
downloadrockbox-6ce98bda11c26f209c8319213677dd411a9713b7.tar.gz
rockbox-6ce98bda11c26f209c8319213677dd411a9713b7.zip
FS#10018 general pp bootloader: start the OF if loading rockbox fails. Resolves a bug where the c200 bootloader would loop flashing the logo if loading rockbox failed and drop support for loading old .e200 and .h10 rockbox main binaries for the e200 resp h10, affects e200, c200, h10 (both kinds) and mrobe 100.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20342 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--bootloader/main-pp.c55
-rw-r--r--firmware/export/config-e200.h1
-rw-r--r--firmware/export/config-h10.h1
-rw-r--r--firmware/export/config-h10_5gb.h1
4 files changed, 19 insertions, 39 deletions
diff --git a/bootloader/main-pp.c b/bootloader/main-pp.c
index 8381aa2d8a..b26807dd62 100644
--- a/bootloader/main-pp.c
+++ b/bootloader/main-pp.c
@@ -543,6 +543,25 @@ void* main(void)
543 i, pinfo->type, pinfo->size / 2048); 543 i, pinfo->type, pinfo->size / 2048);
544 } 544 }
545 545
546 /* Try loading Rockbox, if that fails, fall back to the OF */
547 if((btn & BOOTLOADER_BOOT_OF) == 0)
548 {
549 printf("Loading Rockbox...");
550 rc = load_mi4(loadbuffer, BOOTFILE, MAX_LOADSIZE);
551 if (rc < EOK)
552 {
553 bool old_verbose = verbose;
554 verbose = true;
555 printf("Can't load " BOOTFILE ": ");
556 printf(strerror(rc));
557 verbose = old_verbose;
558 btn |= BOOTLOADER_BOOT_OF;
559 sleep(5*HZ);
560 }
561 else
562 return (void*)loadbuffer;
563 }
564
546 if(btn & BOOTLOADER_BOOT_OF) 565 if(btn & BOOTLOADER_BOOT_OF)
547 { 566 {
548 /* Load original mi4 firmware in to a memory buffer called loadbuffer. 567 /* Load original mi4 firmware in to a memory buffer called loadbuffer.
@@ -602,42 +621,6 @@ void* main(void)
602 } 621 }
603 622
604 error(0, 0); 623 error(0, 0);
605
606 } else {
607#if 0 /* e200: enable to be able to dump the hidden partition */
608 if(btn & BUTTON_UP)
609 {
610 int fd;
611 pinfo = disk_partinfo(1);
612 fd = open("/part.bin", O_CREAT|O_RDWR);
613 char sector[512];
614 for(i=0; i<40960; i++){
615 if (!(i%100))
616 {
617 printf("dumping sector %d", i);
618 }
619 storage_read_sectors(IF_MV2(0,) pinfo->start + i, 1, sector);
620 write(fd,sector,512);
621 }
622 close(fd);
623 }
624#endif
625 printf("Loading Rockbox...");
626 rc=load_mi4(loadbuffer, BOOTFILE, MAX_LOADSIZE);
627 if (rc < EOK) {
628 printf("Can't load " BOOTFILE ": ");
629 printf(strerror(rc));
630
631#ifdef OLD_BOOTFILE
632 /* Try loading rockbox from old rockbox.e200/rockbox.h10 format */
633 rc=load_firmware(loadbuffer, OLD_BOOTFILE, MAX_LOADSIZE);
634 if (rc < EOK) {
635 printf("Can't load " OLD_BOOTFILE" : ");
636 error(EBOOTFILE, rc);
637 }
638#endif
639 }
640 } 624 }
641
642 return (void*)loadbuffer; 625 return (void*)loadbuffer;
643} 626}
diff --git a/firmware/export/config-e200.h b/firmware/export/config-e200.h
index e4d4b739bc..fd481d9e63 100644
--- a/firmware/export/config-e200.h
+++ b/firmware/export/config-e200.h
@@ -187,7 +187,6 @@
187#define MI4_FORMAT 187#define MI4_FORMAT
188#define BOOTFILE_EXT "mi4" 188#define BOOTFILE_EXT "mi4"
189#define BOOTFILE "rockbox." BOOTFILE_EXT 189#define BOOTFILE "rockbox." BOOTFILE_EXT
190#define OLD_BOOTFILE "rockbox.e200"
191#define BOOTDIR "/.rockbox" 190#define BOOTDIR "/.rockbox"
192 191
193#define ICODE_ATTR_TREMOR_NOT_MDCT 192#define ICODE_ATTR_TREMOR_NOT_MDCT
diff --git a/firmware/export/config-h10.h b/firmware/export/config-h10.h
index 756b4da0ea..011c1316de 100644
--- a/firmware/export/config-h10.h
+++ b/firmware/export/config-h10.h
@@ -177,7 +177,6 @@
177#define MI4_FORMAT 177#define MI4_FORMAT
178#define BOOTFILE_EXT "mi4" 178#define BOOTFILE_EXT "mi4"
179#define BOOTFILE "rockbox." BOOTFILE_EXT 179#define BOOTFILE "rockbox." BOOTFILE_EXT
180#define OLD_BOOTFILE "rockbox.h10"
181#define BOOTDIR "/.rockbox" 180#define BOOTDIR "/.rockbox"
182 181
183#define ICODE_ATTR_TREMOR_NOT_MDCT 182#define ICODE_ATTR_TREMOR_NOT_MDCT
diff --git a/firmware/export/config-h10_5gb.h b/firmware/export/config-h10_5gb.h
index 3a52823fd5..ef53e02ab4 100644
--- a/firmware/export/config-h10_5gb.h
+++ b/firmware/export/config-h10_5gb.h
@@ -157,7 +157,6 @@
157#define MI4_FORMAT 157#define MI4_FORMAT
158#define BOOTFILE_EXT "mi4" 158#define BOOTFILE_EXT "mi4"
159#define BOOTFILE "rockbox." BOOTFILE_EXT 159#define BOOTFILE "rockbox." BOOTFILE_EXT
160#define OLD_BOOTFILE "rockbox.h10"
161#define BOOTDIR "/.rockbox" 160#define BOOTDIR "/.rockbox"
162 161
163#define ICODE_ATTR_TREMOR_NOT_MDCT 162#define ICODE_ATTR_TREMOR_NOT_MDCT