diff options
Diffstat (limited to 'bootloader')
-rw-r--r-- | bootloader/SOURCES | 6 | ||||
-rw-r--r-- | bootloader/e200.c | 190 | ||||
-rw-r--r-- | bootloader/main-pp.c (renamed from bootloader/h10.c) | 26 |
3 files changed, 16 insertions, 206 deletions
diff --git a/bootloader/SOURCES b/bootloader/SOURCES index 94f5a60e6b..b86365b429 100644 --- a/bootloader/SOURCES +++ b/bootloader/SOURCES @@ -2,10 +2,8 @@ ipod.c #elif defined(GIGABEAT_F) gigabeat.c -#elif defined(SANSA_E200) -e200.c -#elif defined(IRIVER_H10) || defined(IRIVER_H10_5GB) -h10.c +#elif defined(IRIVER_H10) || defined(IRIVER_H10_5GB) || defined(SANSA_E200) +main-pp.c #elif defined(ELIO_TPJ1022) tpj1022.c #else diff --git a/bootloader/e200.c b/bootloader/e200.c deleted file mode 100644 index 27b1118a1c..0000000000 --- a/bootloader/e200.c +++ /dev/null @@ -1,190 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2006 Daniel Stenberg - * - * All files in this archive are subject to the GNU General Public License. - * See the file COPYING in the source tree root for full license agreement. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ -#include "config.h" - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include "cpu.h" -#include "system.h" -#include "lcd.h" -#include "kernel.h" -#include "thread.h" -#include "ata.h" -#include "fat.h" -#include "disk.h" -#include "font.h" -#include "adc.h" -#include "backlight.h" -#include "panic.h" -#include "power.h" -#include "file.h" - -static inline void blink(void) -{ - volatile unsigned int* ptr; - int i; - ptr = (volatile unsigned int*)0x70000020; - - *ptr &= ~(1 << 13); - for(i = 0; i < 0xfffff; i++) - { - } - *ptr |= (1 << 13); - for(i = 0; i < 0xfffff; i++) - { - } -} - -static inline void slow_blink(void) -{ - volatile unsigned int* ptr; - int i; - ptr = (volatile unsigned int*)0x70000020; - - *ptr &= ~(1 << 13); - for(i = 0; i < (0xfffff); i++) - { - } - for(i = 0; i < (0xfffff); i++) - { - } - for(i = 0; i < (0xfffff); i++) - { - } - - *ptr |= (1 << 13); - for(i = 0; i < (0xfffff); i++) - { - } - for(i = 0; i < (0xfffff); i++) - { - } - for(i = 0; i < (0xfffff); i++) - { - } -} - -static inline unsigned long get_pc(void) -{ - unsigned long pc; - asm volatile ( - "mov %0, pc\n" - : "=r"(pc) - ); - return pc; -} - -/* These functions are present in the firmware library, but we reimplement - them here because the originals do a lot more than we want */ - -void reset_poweroff_timer(void) -{ -} - -int dbg_ports(void) -{ - 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; - - char buf[128]; - int line; - - lcd_setmargins(0, 0); - lcd_clear_display(); - lcd_setfont(FONT_SYSFIXED); - - while(1) - { - 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; - - line = 0; - snprintf(buf, sizeof(buf), "GPIO_A: %02x GPIO_G: %02x", gpio_a, gpio_g); - lcd_puts(0, line++, buf); - snprintf(buf, sizeof(buf), "GPIO_B: %02x GPIO_H: %02x", gpio_b, gpio_h); - lcd_puts(0, line++, buf); - snprintf(buf, sizeof(buf), "GPIO_C: %02x GPIO_I: %02x", gpio_c, gpio_i); - lcd_puts(0, line++, buf); - line++; - - 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; - - snprintf(buf, sizeof(buf), "GPIO_D: %02x GPIO_J: %02x", gpio_d, gpio_j); - lcd_puts(0, line++, buf); - snprintf(buf, sizeof(buf), "GPIO_E: %02x GPIO_K: %02x", gpio_e, gpio_k); - lcd_puts(0, line++, buf); - snprintf(buf, sizeof(buf), "GPIO_F: %02x GPIO_L: %02x", gpio_f, gpio_l); - lcd_puts(0, line++, buf); - line++; - snprintf(buf, sizeof(buf), "ADC_1: %02x", adc_read(ADC_0)); - lcd_puts(0, line++, buf); - snprintf(buf, sizeof(buf), "ADC_2: %02x", adc_read(ADC_1)); - lcd_puts(0, line++, buf); - snprintf(buf, sizeof(buf), "ADC_3: %02x", adc_read(ADC_2)); - lcd_puts(0, line++, buf); - snprintf(buf, sizeof(buf), "ADC_4: %02x", adc_read(ADC_3)); - lcd_puts(0, line++, buf); - lcd_update(); - } - return 0; -} - -void mpeg_stop(void) -{ -} - -void usb_acknowledge(void) -{ -} - -void usb_wait_for_disconnect(void) -{ -} - -void sys_poweroff(void) -{ -} - -void system_reboot(void) -{ - -} - -void main(void) -{ - kernel_init(); - adc_init(); - lcd_init_device(); - - dbg_ports(); -} - diff --git a/bootloader/h10.c b/bootloader/main-pp.c index 0cfd64a96e..a533cc7044 100644 --- a/bootloader/h10.c +++ b/bootloader/main-pp.c @@ -40,8 +40,8 @@ #include "power.h" #include "file.h" -/* Size of the buffer to store the loaded Rockbox/iriver image */ -#define MAX_LOADSIZE (5*1024*1024) +/* Size of the buffer to store the loaded firmware image */ +#define MAX_LOADSIZE (10*1024*1024) /* A buffer to load the iriver firmware or Rockbox into */ unsigned char loadbuffer[MAX_LOADSIZE]; @@ -52,18 +52,18 @@ char version[] = APPSVERSION; int line=0; -/* Load original iriver firmware. This function expects a file called - "/System/Original.mi4" on the player. It should be decrypted - and have the header stripped using mi4code. It reads the file in to a memory +/* Load original mi4 firmware. This function expects a file called + "/System/OF.bin" on the player. It should be a mi4 firmware decrypted + and header stripped using mi4code. It reads the file in to a memory buffer called buf. The rest of the loading is done in main() and crt0.S */ -int load_iriver(unsigned char* buf) +int load_original_firmware(unsigned char* buf) { int fd; int rc; int len; - fd = open("/System/Original.mi4", O_RDONLY); + fd = open("/System/OF.bin", O_RDONLY); len = filesize(fd); @@ -78,7 +78,7 @@ int load_iriver(unsigned char* buf) return len; } -/* Load Rockbox firmware (rockbox.h10) */ +/* Load Rockbox firmware (rockbox.*) */ int load_rockbox(unsigned char* buf) { int fd; @@ -164,6 +164,7 @@ void* main(void) kernel_init(); lcd_init(); font_init(); + button_init(); line=0; @@ -172,7 +173,7 @@ void* main(void) lcd_puts(0, line++, "Rockbox boot loader"); snprintf(buf, sizeof(buf), "Version: 20%s", version); lcd_puts(0, line++, buf); - snprintf(buf, sizeof(buf), "iriver H10"); + snprintf(buf, sizeof(buf), MODEL_NAME); lcd_puts(0, line++, buf); lcd_update(); @@ -212,11 +213,11 @@ void* main(void) i=button_read_device(); if(i==BUTTON_LEFT) { - lcd_puts(0, line, "Loading iriver firmware..."); + lcd_puts(0, line++, "Loading original firmware..."); lcd_update(); - rc=load_iriver(loadbuffer); + rc=load_original_firmware(loadbuffer); } else { - lcd_puts(0, line, "Loading Rockbox..."); + lcd_puts(0, line++, "Loading Rockbox..."); lcd_update(); rc=load_rockbox(loadbuffer); } @@ -225,6 +226,7 @@ void* main(void) snprintf(buf, sizeof(buf), "Rockbox error: %d",rc); lcd_puts(0, line++, buf); lcd_update(); + while(1) {} } memcpy((void*)DRAM_START,loadbuffer,rc); |