diff options
author | Hristo Kovachev <bger@rockbox.org> | 2006-08-11 09:51:04 +0000 |
---|---|---|
committer | Hristo Kovachev <bger@rockbox.org> | 2006-08-11 09:51:04 +0000 |
commit | 1204136632777e84eac790811fb074552ef2e6b7 (patch) | |
tree | 0261c054c38a06a2e0f3b9cc869a774650eb3ce9 /bootloader/h10.c | |
parent | 79f60d4054fdf0e97dca9817c778c74847d18ba0 (diff) |
Some indent/c99 style cleanup by Barry Wardell
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10524 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'bootloader/h10.c')
-rw-r--r-- | bootloader/h10.c | 252 |
1 files changed, 127 insertions, 125 deletions
diff --git a/bootloader/h10.c b/bootloader/h10.c index e80e28fe5b..d7942c9583 100644 --- a/bootloader/h10.c +++ b/bootloader/h10.c @@ -66,10 +66,10 @@ static void memmove16(void *dest, const void *src, unsigned count) } -/* Load original iriver firmware. This function expects a file called "H10_20GC.mi4" in - the root directory of the player. It should be decrypted and have the header stripped - using mi4code. It reads the file in to a memory buffer called buf. The rest of the - loading is done in main() +/* Load original iriver firmware. This function expects a file called + "H10_20GC.mi4" in the root directory of the player. It should be decrypted + and have the header stripped using mi4code. It reads the file in to a memory + buffer called buf. The rest of the loading is done in main() */ int load_iriver(unsigned char* buf) { @@ -93,144 +93,146 @@ unsigned char loadbuffer[MAX_LOADSIZE]; void main(void) { - /* Attempt to load original iriver firmware. Successfully starts loading the iriver - firmware but then locks up once the "System Initialising" screen is displayed. - - The iriver firmware was decrypted and the header removed. It was then appended to - the end of bootloader.bin and an mi4 file was created from the resulting file. - - The original firmware starts at 0xd800 in the file and is of length 0x47da00. - - The whole file (bootloader.bin + decrypted mi4) are loaded to memory by the - original iriver bootloader on startup. This copies the mi4 part to the start - of DRAM and passes execution to there. - - memmove16((void*)DRAMORIG, (void*)(DRAMORIG + 0xd800), 0x47da00); - asm volatile( - "mov r0, #" SC(DRAMORIG) "\n" - "mov pc, r0 \n" - ); - */ + /* Attempt to load original iriver firmware. Successfully starts loading the + iriver firmware but then locks up once the "System Initialising" screen + is displayed. + + The iriver firmware was decrypted and the header removed. It was then + appended to the end of bootloader.bin and an mi4 file was created from + the resulting file. + + The original firmware starts at 0xd800 in the file and is of length + 0x47da00. + + The whole file (bootloader.bin + decrypted mi4) are loaded to memory by + the original iriver bootloader on startup. This copies the mi4 part to + the start of DRAM and passes execution to there. + + memmove16((void*)DRAMORIG, (void*)(DRAMORIG + 0xd800), 0x47da00); + asm volatile( + "mov r0, #" SC(DRAMORIG) "\n" + "mov pc, r0 \n" + ); + */ int i; int rc; - int btn; + int btn; + int fd; + char buffer[24]; i=ata_init(); disk_init(); rc = disk_mount_all(); - /* Load original iriver firmware. Uses load_iriver(buf) to load the decrypted mi4 file from - disk to DRAM. This then copies that part of DRAM to the start of DRAM and passes - execution to there. - - rc=load_iriver(loadbuffer); - memcpy((void*)DRAMORIG,loadbuffer,rc); - asm volatile( - "mov r0, #" SC(DRAMORIG) "\n" - "mov pc, r0 \n" - );*/ - - - /* This assumes that /test.txt exists */ - int fd; - char buffer[24]; - fd=open("/test.txt",O_RDWR); - - - /* WARNING: Running this code on the H10 caused permanent damage to my H10's hdd - I strongly recommend against trying it. - - for(i=0;i<100;i++){ - btn = button_read_device(); - switch(btn){ - case BUTTON_LEFT: - snprintf(buffer, sizeof(buffer), "Left"); - write(fd,buffer,sizeof(buffer)); - break; - case BUTTON_RIGHT: - break; - case BUTTON_REW: - break; - case BUTTON_FF: - break; - case BUTTON_PLAY: - break; - default: - break; - } - + /* Load original iriver firmware. Uses load_iriver(buf) to load the + decrypted mi4 file from disk to DRAM. This then copies that part of DRAM + to the start of DRAM and passes + execution to there. + + rc=load_iriver(loadbuffer); + memcpy((void*)DRAMORIG,loadbuffer,rc); + asm volatile( + "mov r0, #" SC(DRAMORIG) "\n" + "mov pc, r0 \n" + );*/ + + + /* This assumes that /test.txt exists */ + fd=open("/test.txt",O_RDWR); + + + /* + for(i=0;i<100;i++){ + btn = button_read_device(); + switch(btn){ + case BUTTON_LEFT: + snprintf(buffer, sizeof(buffer), "Left"); + write(fd,buffer,sizeof(buffer)); + break; + case BUTTON_RIGHT: + break; + case BUTTON_REW: + break; + case BUTTON_FF: + break; + case BUTTON_PLAY: + break; + default: + break; + } + - } - */ - - - + } + */ + + + /* Investigate gpio - - unsigned int gpio_a, gpio_b, gpio_c, gpio_d; + + unsigned int gpio_a, gpio_b, gpio_c, gpio_d; unsigned int gpio_e, gpio_f, gpio_g, gpio_h; unsigned int gpio_i, gpio_j, gpio_k, gpio_l; - gpio_a = GPIOA_INPUT_VAL; - gpio_b = GPIOB_INPUT_VAL; - gpio_c = GPIOC_INPUT_VAL; + gpio_a = GPIOA_INPUT_VAL; + gpio_b = GPIOB_INPUT_VAL; + gpio_c = GPIOC_INPUT_VAL; - gpio_g = GPIOG_INPUT_VAL; - gpio_h = GPIOH_INPUT_VAL; - gpio_i = GPIOI_INPUT_VAL; + gpio_g = GPIOG_INPUT_VAL; + gpio_h = GPIOH_INPUT_VAL; + gpio_i = GPIOI_INPUT_VAL; - snprintf(buffer, sizeof(buffer), "GPIO_A: %02x GPIO_G: %02x\n", gpio_a, gpio_g); - write(fd,buffer,sizeof(buffer)); - snprintf(buffer, sizeof(buffer), "GPIO_B: %02x GPIO_H: %02x\n", gpio_b, gpio_h); - write(fd,buffer,sizeof(buffer)); - snprintf(buffer, sizeof(buffer), "GPIO_C: %02x GPIO_I: %02x\n", gpio_c, gpio_i); - write(fd,buffer,sizeof(buffer)); - - gpio_d = GPIOD_INPUT_VAL; - gpio_e = GPIOE_INPUT_VAL; - gpio_f = GPIOF_INPUT_VAL; + snprintf(buffer,sizeof(buffer),"GPIO_A: %02x GPIO_G: %02x\n",gpio_a,gpio_g); + write(fd,buffer,sizeof(buffer)); + snprintf(buffer,sizeof(buffer),"GPIO_B: %02x GPIO_H: %02x\n",gpio_b,gpio_h); + write(fd,buffer,sizeof(buffer)); + snprintf(buffer,sizeof(buffer),"GPIO_C: %02x GPIO_I: %02x\n",gpio_c,gpio_i); + write(fd,buffer,sizeof(buffer)); + + gpio_d = GPIOD_INPUT_VAL; + gpio_e = GPIOE_INPUT_VAL; + gpio_f = GPIOF_INPUT_VAL; - gpio_j = GPIOJ_INPUT_VAL; - gpio_k = GPIOK_INPUT_VAL; - gpio_l = GPIOL_INPUT_VAL; + gpio_j = GPIOJ_INPUT_VAL; + gpio_k = GPIOK_INPUT_VAL; + gpio_l = GPIOL_INPUT_VAL; - snprintf(buffer, sizeof(buffer), "GPIO_D: %02x GPIO_J: %02x\n", gpio_d, gpio_j); - write(fd,buffer,sizeof(buffer)); - snprintf(buffer, sizeof(buffer), "GPIO_E: %02x GPIO_K: %02x\n", gpio_e, gpio_k); - write(fd,buffer,sizeof(buffer)); - snprintf(buffer, sizeof(buffer), "GPIO_F: %02x GPIO_L: %02x\n", gpio_f, gpio_l); - write(fd,buffer,sizeof(buffer)); - */ - - - - /* Detect the scroller being touched - - int j = 0; - for(j=0;j<1000;j++){ - if(gpio_c!=0xF7){ - snprintf(buffer, sizeof(buffer), "GPIO_C: %02x\n", gpio_c); - write(fd,buffer,sizeof(buffer)); - } - if(gpio_d!=0xDD){ - snprintf(buffer, sizeof(buffer), "GPIO_D: %02x\n", gpio_d); - write(fd,buffer,sizeof(buffer)); - } - }*/ - - - /* Apparently necessary for the data to be actually written to file */ - fsync(fd); - udelay(1000000); - - /* This causes the device to shut off instantly - - GPIOF_OUTPUT_VAL = 0; - */ - - close(fd); - udelay(1000000); + snprintf(buffer,sizeof(buffer),"GPIO_D: %02x GPIO_J: %02x\n",gpio_d,gpio_j); + write(fd,buffer,sizeof(buffer)); + snprintf(buffer,sizeof(buffer),"GPIO_E: %02x GPIO_K: %02x\n",gpio_e,gpio_k); + write(fd,buffer,sizeof(buffer)); + snprintf(buffer,sizeof(buffer),"GPIO_F: %02x GPIO_L: %02x\n",gpio_f,gpio_l); + write(fd,buffer,sizeof(buffer)); + */ + + + + /* Detect the scroller being touched + + int j = 0; + for(j=0;j<1000;j++){ + if(gpio_c!=0xF7){ + snprintf(buffer, sizeof(buffer), "GPIO_C: %02x\n", gpio_c); + write(fd,buffer,sizeof(buffer)); + } + if(gpio_d!=0xDD){ + snprintf(buffer, sizeof(buffer), "GPIO_D: %02x\n", gpio_d); + write(fd,buffer,sizeof(buffer)); + } + }*/ + + + /* Apparently necessary for the data to be actually written to file */ + fsync(fd); + udelay(1000000); + + /* This causes the device to shut off instantly + + GPIOF_OUTPUT_VAL = 0; + */ + + close(fd); + udelay(1000000); } /* These functions are present in the firmware library, but we reimplement |