Thank you to anyone who has already donated - your generous donations helped make three months of treatment possible.
My brother Nate continues to fight stage IV Hodgkin's lymphoma. He's just 31, with a wife and baby girl. They have no active income (since he's been unable to return to work), no insurance, and cannot afford the treatment he needs. Nate and his family need your help. Please consider a donation, every dollar helps. Thanks.
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 |
diff --git a/rbutil/mkamsboot/dualboot/Makefile b/rbutil/mkamsboot/dualboot/Makefile index 06b90c7..604a351 100644 @@ -4,8 +4,8 @@ CC=gcc # adding a new target. mkamsboot.c also needs to be edited to refer to these # new images. -BOOTOBJS = nrv2e_d8.o dualboot_clip.o dualboot_e200v2.o dualboot_c200v2.o dualboot_m200v4.o dualboot_fuze.o dualboot_clipv2.o -BOOTBINS = nrv2e_d8.arm-bin dualboot_clip.arm-bin dualboot_e200v2.arm-bin dualboot_c200v2.arm-bin dualboot_m200v4.arm-bin dualboot_fuze.arm-bin dualboot_clipv2.arm-bin +BOOTOBJS = nrv2e_d8.o dualboot_clip.o dualboot_e200v2.o dualboot_c200v2.o dualboot_m200v4.o dualboot_fuze.o dualboot_clipv2.o dualboot_fuzev2.o +BOOTBINS = nrv2e_d8.arm-bin dualboot_clip.arm-bin dualboot_e200v2.arm-bin dualboot_c200v2.arm-bin dualboot_m200v4.arm-bin dualboot_fuze.arm-bin dualboot_clipv2.arm-bin dualboot_fuzev2.arm-bin all: dualboot.h @@ -31,6 +31,9 @@ dualboot_c200v2.o: dualboot.S dualboot_clipv2.o: dualboot.S arm-elf-gcc -DSANSA_CLIPV2 -c -o dualboot_clipv2.o dualboot.S +dualboot_fuzev2.o: dualboot.S + arm-elf-gcc -DSANSA_FUZEV2 -c -o dualboot_fuzev2.o dualboot.S + # Rules for the ucl unpack function nrv2e_d8.o: nrv2e_d8.S arm-elf-gcc -DPURE_THUMB -c -o nrv2e_d8.o nrv2e_d8.S diff --git a/rbutil/mkamsboot/dualboot/dualboot.S b/rbutil/mkamsboot/dualboot/dualboot.S index 5210ba5..fc5049c 100644 @@ -180,6 +180,19 @@ uclcopy: /* check value read (1 means button pressed) */ cmp r2, #0 bne boot_of +#elif defined(SANSA_FUZEV2) + ldr r0, =GPIOC + mov r1, #0 + str r1, [r0, #0x400] + + ldr r0, [r0, #0x20] + cmp r0, #0 + beq boot_of @ if the pin is unset, boot immediately + @ else, boot after a noticeable delay + +delay: mov r0, #0x3000000 +1: subs r0, r0, #1 + bne 1b #else #error No target-specific key check defined! #endif diff --git a/rbutil/mkamsboot/mkamsboot.c b/rbutil/mkamsboot/mkamsboot.c index fb0e3cb..eff99cf 100644 @@ -117,6 +117,7 @@ static const unsigned short hw_revisions[] = { [MODEL_E200V2] = 2, [MODEL_M200V4] = 4, [MODEL_C200V2] = 2, + [MODEL_FUZEV2] = 2, }; /* version 2 is used in Clipv2 and Fuzev2 firmwares */ @@ -127,6 +128,7 @@ static const unsigned short fw_revisions[] = { [MODEL_E200V2] = 1, [MODEL_M200V4] = 1, [MODEL_C200V2] = 1, + [MODEL_FUZEV2] = 2, }; /* Descriptive name of these models */ @@ -137,6 +139,7 @@ static const char* model_names[] = { [MODEL_E200V2] = "e200", [MODEL_M200V4] = "m200", [MODEL_C200V2] = "c200", + [MODEL_FUZEV2] = "Fuze", }; /* Dualboot functions for these models */ @@ -147,6 +150,7 @@ static const unsigned char* bootloaders[] = { [MODEL_E200V2] = dualboot_e200v2, [MODEL_M200V4] = dualboot_m200v4, [MODEL_C200V2] = dualboot_c200v2, + [MODEL_FUZEV2] = dualboot_fuzev2, }; /* Size of dualboot functions for these models */ @@ -157,6 +161,7 @@ static const int bootloader_sizes[] = { [MODEL_E200V2] = sizeof(dualboot_e200v2), [MODEL_M200V4] = sizeof(dualboot_m200v4), [MODEL_C200V2] = sizeof(dualboot_c200v2), + [MODEL_FUZEV2] = sizeof(dualboot_fuzev2), }; /* Model names used in the Rockbox header in ".sansa" files - these match the @@ -168,6 +173,7 @@ static const char* rb_model_names[] = { [MODEL_E200V2] = "e2v2", [MODEL_M200V4] = "m2v4", [MODEL_C200V2] = "c2v2", + [MODEL_FUZEV2] = "fzv2", }; /* Model numbers used to initialise the checksum in the Rockbox header in @@ -179,6 +185,7 @@ static const int rb_model_num[] = { [MODEL_E200V2] = 41, [MODEL_M200V4] = 42, [MODEL_C200V2] = 44 + [MODEL_FUZEV2] = 99, }; /* Checksums of unmodified original firmwares - for safety, and device @@ -211,7 +218,9 @@ static struct md5sums sansasums[] = { { MODEL_CLIP, "1.01.32", "d835d12342500732ffb9c4ee54abec15" }, { MODEL_CLIPV2, "2.01.16", "c57fb3fcbe07c2c9b360f060938f80cb" }, - { MODEL_CLIPV2, "2.01.32", "0ad3723e52022509089d938d0fbbf8c5" } + { MODEL_CLIPV2, "2.01.32", "0ad3723e52022509089d938d0fbbf8c5" }, + + { MODEL_FUZEV2, "2.02.26", "d4f6f85c3e4a8ea8f2e5acc421641801" }, }; #define NUM_MD5S (sizeof(sansasums)/sizeof(sansasums[0])) @@ -287,6 +296,8 @@ static int get_model(int model_id) return MODEL_M200V4; case 0x27: return MODEL_CLIPV2; + case 0x70: + return MODEL_FUZEV2; } return MODEL_UNKNOWN; diff --git a/rbutil/mkamsboot/mkamsboot.h b/rbutil/mkamsboot/mkamsboot.h index a14b320..6b50160 100644 @@ -37,6 +37,7 @@ enum { MODEL_E200V2, MODEL_M200V4, MODEL_C200V2, + MODEL_FUZEV2, }; |