Index: rbutil/mkamsboot/dualboot.S =================================================================== --- rbutil/mkamsboot/dualboot.S (Revision 19488) +++ rbutil/mkamsboot/dualboot.S (Arbeitskopie) @@ -85,8 +85,11 @@ ldr r0, =GPIOA mov r1, #0 str r1, [r0, #0x400] +#ifndef SANSA_C200V2 ldr r1, [r0, #0x20] /* read pin A3 */ - +#else + ldr r1, [r0, #0x8] /* it's A1 on C200 */ +#endif cmp r1, #0 bne boot_of #endif @@ -118,6 +121,16 @@ cmp r1, #0 /* C3 = #0 means button pressed */ beq boot_of +#elif defined(SANSA_C200V2) + /* check for RIGHT on C6, should maybe changed to LEFT as soon as it + * known in which pin that is in order for consistency */ + ldr r0, =GPIOC + mov r1, #0 + str r1, [r0, #0x400] /* set pin to output */ + + ldr r1, [r0, #256] /* 1<<(6+2) */ + cmp r1, #1 /* C6 high means button pressed */ + beq boot_of #elif defined(SANSA_M200V4) /* LEFT button */ .set row, (1<<5) /* enable output on A5 */ Index: rbutil/mkamsboot/Makefile =================================================================== --- rbutil/mkamsboot/Makefile (Revision 19488) +++ rbutil/mkamsboot/Makefile (Arbeitskopie) @@ -8,8 +8,8 @@ # adding a new target. mkamsboot.c also needs to be edited to refer to these # new images. -BOOTIMAGES = dualboot_clip.o dualboot_e200v2.o dualboot_m200v4.o dualboot_fuze.o -BOOTHEADERS = dualboot_clip.h dualboot_e200v2.h dualboot_m200v4.h dualboot_fuze.h +BOOTIMAGES = dualboot_clip.o dualboot_e200v2.o dualboot_c200v2.o dualboot_m200v4.o dualboot_fuze.o +BOOTHEADERS = dualboot_clip.h dualboot_e200v2.h dualboot_c200v2.h dualboot_m200v4.h dualboot_fuze.h CLIPFILES = dualboot_clip.arm-o dualboot_clip.o dualboot_clip.c dualboot_clip.h @@ -19,6 +19,9 @@ M200V4FILES = dualboot_m200v4.arm-o dualboot_m200v4.o dualboot_m200v4.arm-bin \ dualboot_m200v4.c dualboot_m200v4.h +C200V2FILES = dualboot_c200v2.arm-o dualboot_c200v2.o dualboot_c200v2.c \ + dualboot_c200v2.h + FUZEFILES = dualboot_fuze.arm-o dualboot_fuze.o dualboot_fuze.c dualboot_fuze.h all: mkamsboot @@ -37,6 +40,9 @@ dualboot_m200v4.arm-o: dualboot.S arm-elf-gcc -DSANSA_M200V4 -c -o dualboot_m200v4.arm-o dualboot.S +dualboot_c200v2.arm-o: dualboot.S + arm-elf-gcc -DSANSA_C200V2 -c -o dualboot_c200v2.arm-o dualboot.S + # Rules for the ucl unpack function nrv2e_d8.arm-o: nrv2e_d8.S arm-elf-gcc -DPURE_THUMB -c -o nrv2e_d8.arm-o nrv2e_d8.S @@ -80,4 +86,5 @@ clean: rm -f mkamsboot mkamsboot.o nrv2e_d8.arm-o nrv2e_d8.arm-elf \ nrv2e_d8.arm-bin *~ bin2c nrv2e_d8.c nrv2e_d8.h nrv2e_d8.o md5.o \ - $(BOOTIMAGES) $(CLIPFILES) $(E200V2FILES) $(M200V4FILES) $(FUZEFILES) + $(BOOTIMAGES) $(CLIPFILES) $(E200V2FILES) $(M200V4FILES) $(FUZEFILES) \ + $(C200V2FILES) Index: rbutil/mkamsboot/mkamsboot.c =================================================================== --- rbutil/mkamsboot/mkamsboot.c (Revision 19488) +++ rbutil/mkamsboot/mkamsboot.c (Arbeitskopie) @@ -93,6 +93,7 @@ #include "dualboot_e200v2.h" #include "dualboot_fuze.h" #include "dualboot_m200v4.h" +#include "dualboot_c200v2.h" /* Win32 compatibility */ #ifndef O_BINARY @@ -109,9 +110,9 @@ MODEL_FUZE = 0, MODEL_CLIP, MODEL_CLIPV2, - MODEL_E200, - MODEL_M200, - MODEL_C200 + MODEL_E200V2, + MODEL_M200V4, + MODEL_C200V2, }; static const char* model_names[] = @@ -119,9 +120,9 @@ "Fuze", "Clip", "Clip V2", - "E200", - "M200", - "C200" + "E200 v2", + "M200 v4", + "C200 v2" }; static const unsigned char* bootloaders[] = @@ -131,7 +132,7 @@ NULL, dualboot_e200v2, dualboot_m200v4, - NULL + dualboot_c200v2, }; static const int bootloader_sizes[] = @@ -141,7 +142,7 @@ 0, sizeof(dualboot_e200v2), sizeof(dualboot_m200v4), - 0 + sizeof(dualboot_c200v2), }; /* Model names used in the Rockbox header in ".sansa" files - these match the @@ -152,8 +153,8 @@ "clip", NULL, "e2v2", - "m2v2", - NULL + "m2v4", + "c2v2", }; /* Model numbers used to initialise the checksum in the Rockbox header in @@ -165,7 +166,7 @@ 0, 41, 42, - 0 + 44 }; struct md5sums { @@ -180,19 +181,19 @@ static struct md5sums sansasums[] = { /* NOTE: Different regional versions of the firmware normally only differ in the filename - the md5sums are identical */ - { MODEL_E200, "3.01.11", 1, "e622ca8cb6df423f54b8b39628a1f0a3" }, - { MODEL_E200, "3.01.14", 1, "2c1d0383fc3584b2cc83ba8cc2243af6" }, - { MODEL_E200, "3.01.16", 1, "12563ad71b25a1034cf2092d1e0218c4" }, + { MODEL_E200V2, "3.01.11", 1, "e622ca8cb6df423f54b8b39628a1f0a3" }, + { MODEL_E200V2, "3.01.14", 1, "2c1d0383fc3584b2cc83ba8cc2243af6" }, + { MODEL_E200V2, "3.01.16", 1, "12563ad71b25a1034cf2092d1e0218c4" }, { MODEL_FUZE, "1.01.11", 1, "cac8ffa03c599330ac02c4d41de66166" }, { MODEL_FUZE, "1.01.15", 1, "df0e2c1612727f722c19a3c764cff7f2" }, { MODEL_FUZE, "1.01.22", 1, "5aff5486fe8dd64239cc71eac470af98" }, - { MODEL_C200, "3.02.05", 1, "b6378ebd720b0ade3fad4dc7ab61c1a5" }, + { MODEL_C200V2, "3.02.05", 1, "b6378ebd720b0ade3fad4dc7ab61c1a5" }, - { MODEL_M200, "4.00.45", 1, "82e3194310d1514e3bbcd06e84c4add3" }, - { MODEL_M200, "4.01.08-A", 1, "fc9dd6116001b3e6a150b898f1b091f0" }, - { MODEL_M200, "4.01.08-E", 1, "d3fb7d8ec8624ee65bc99f8dab0e2369" }, + { MODEL_M200V4, "4.00.45", 1, "82e3194310d1514e3bbcd06e84c4add3" }, + { MODEL_M200V4, "4.01.08-A", 1, "fc9dd6116001b3e6a150b898f1b091f0" }, + { MODEL_M200V4, "4.01.08-E", 1, "d3fb7d8ec8624ee65bc99f8dab0e2369" }, { MODEL_CLIP, "1.01.17", 1, "12caad785d506219d73f538772afd99e" }, { MODEL_CLIP, "1.01.18", 1, "d720b266bd5afa38a198986ef0508a45" }, @@ -267,11 +268,11 @@ case 0x22: return MODEL_CLIP; case 0x23: - return MODEL_C200; + return MODEL_C200V2; case 0x24: - return MODEL_E200; + return MODEL_E200V2; case 0x25: - return MODEL_M200; + return MODEL_M200V4; case 0x27: return MODEL_CLIPV2; }