Advertising
- Something
- Tuesday, December 12th, 2006 at 5:30:29pm MST
- Index: bootloader/SOURCES
- ===================================================================
- RCS file: /cvsroot/rockbox/bootloader/SOURCES,v
- retrieving revision 1.8
- diff -u -r1.8 SOURCES
- --- bootloader/SOURCES 31 Aug 2006 19:19:35 -0000 1.8
- +++ bootloader/SOURCES 13 Dec 2006 00:28:20 -0000
- @@ -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
- Index: bootloader/e200.c
- ===================================================================
- RCS file: bootloader/e200.c
- diff -N bootloader/e200.c
- --- bootloader/e200.c 16 Oct 2006 17:21:30 -0000 1.5
- +++ /dev/null 1 Jan 1970 00:00:00 -0000
- @@ -1,190 +0,0 @@
- -/***************************************************************************
- - * __________ __ ___.
- - * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- - * \/ \/ \/ \/ \/
- - * $Id: e200.c,v 1.5 2006-10-16 17:21:30 dan_a Exp $
- - *
- - * 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();
- -}
- -
- Index: bootloader/h10.c
- ===================================================================
- RCS file: bootloader/h10.c
- diff -N bootloader/h10.c
- --- bootloader/h10.c 28 Aug 2006 08:11:32 -0000 1.4
- +++ /dev/null 1 Jan 1970 00:00:00 -0000
- @@ -1,261 +0,0 @@
- -/***************************************************************************
- - * __________ __ ___.
- - * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- - * \/ \/ \/ \/ \/
- - * $Id: h10.c,v 1.4 2006-08-28 08:11:32 barrywardell Exp $
- - *
- - * Copyright (C) 2006 by Barry Wardell
- - *
- - * Based on Rockbox iriver bootloader by Linus Nielsen Feltzing
- - * and the ipodlinux bootloader by Daniel Palffy and Bernard Leach
- - *
- - * 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 "button.h"
- -#include "panic.h"
- -#include "power.h"
- -#include "file.h"
- -
- -/* Size of the buffer to store the loaded Rockbox/iriver image */
- -#define MAX_LOADSIZE (5*1024*1024)
- -
- -/* A buffer to load the iriver firmware or Rockbox into */
- -unsigned char loadbuffer[MAX_LOADSIZE];
- -
- -char version[] = APPSVERSION;
- -
- -#define DRAM_START 0x10000000
- -
- -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
- - buffer called buf. The rest of the loading is done in main() and crt0.S
- -*/
- -int load_iriver(unsigned char* buf)
- -{
- - int fd;
- - int rc;
- - int len;
- -
- - fd = open("/System/Original.mi4", O_RDONLY);
- -
- - len = filesize(fd);
- -
- - if (len > MAX_LOADSIZE)
- - return -6;
- -
- - rc = read(fd, buf, len);
- - if(rc < len)
- - return -4;
- -
- - close(fd);
- - return len;
- -}
- -
- -/* Load Rockbox firmware (rockbox.h10) */
- -int load_rockbox(unsigned char* buf)
- -{
- - int fd;
- - int rc;
- - int len;
- - unsigned long chksum;
- - char model[5];
- - unsigned long sum;
- - int i;
- - char str[80];
- -
- - fd = open("/.rockbox/" BOOTFILE, O_RDONLY);
- - if(fd < 0)
- - {
- - fd = open("/" BOOTFILE, O_RDONLY);
- - if(fd < 0)
- - return -1;
- - }
- -
- - len = filesize(fd) - 8;
- -
- - snprintf(str, sizeof(str), "Length: %x", len);
- - lcd_puts(0, line++ ,str);
- - lcd_update();
- -
- - if (len > MAX_LOADSIZE)
- - return -6;
- -
- - lseek(fd, FIRMWARE_OFFSET_FILE_CRC, SEEK_SET);
- -
- - rc = read(fd, &chksum, 4);
- - chksum=betoh32(chksum); /* Rockbox checksums are big-endian */
- - if(rc < 4)
- - return -2;
- -
- - snprintf(str, sizeof(str), "Checksum: %x", chksum);
- - lcd_puts(0, line++ ,str);
- - lcd_update();
- -
- - rc = read(fd, model, 4);
- - if(rc < 4)
- - return -3;
- -
- - model[4] = 0;
- -
- - snprintf(str, sizeof(str), "Model name: %s", model);
- - lcd_puts(0, line++ ,str);
- - lcd_update();
- -
- - lseek(fd, FIRMWARE_OFFSET_FILE_DATA, SEEK_SET);
- -
- - rc = read(fd, buf, len);
- - if(rc < len)
- - return -4;
- -
- - close(fd);
- -
- - sum = MODEL_NUMBER;
- -
- - for(i = 0;i < len;i++) {
- - sum += buf[i];
- - }
- -
- - snprintf(str, sizeof(str), "Sum: %x", sum);
- - lcd_puts(0, line++ ,str);
- - lcd_update();
- -
- - if(sum != chksum)
- - return -5;
- -
- - return len;
- -}
- -
- -void* main(void)
- -{
- - char buf[256];
- - int i;
- - int rc;
- - unsigned short* identify_info;
- - struct partinfo* pinfo;
- -
- - system_init();
- - kernel_init();
- - lcd_init();
- - font_init();
- -
- - line=0;
- -
- - lcd_setfont(FONT_SYSFIXED);
- -
- - 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");
- - lcd_puts(0, line++, buf);
- - lcd_update();
- -
- - i=ata_init();
- - if (i==0) {
- - identify_info=ata_get_identify();
- - /* Show model */
- - for (i=0; i < 20; i++) {
- - ((unsigned short*)buf)[i]=htobe16(identify_info[i+27]);
- - }
- - buf[40]=0;
- - for (i=39; i && buf[i]==' '; i--) {
- - buf[i]=0;
- - }
- - lcd_puts(0, line++, buf);
- - lcd_update();
- - } else {
- - snprintf(buf, sizeof(buf), "ATA: %d", i);
- - lcd_puts(0, line++, buf);
- - lcd_update();
- - }
- -
- - disk_init();
- - rc = disk_mount_all();
- - if (rc<=0)
- - {
- - lcd_puts(0, line++, "No partition found");
- - lcd_update();
- - }
- -
- - pinfo = disk_partinfo(0);
- - snprintf(buf, sizeof(buf), "Partition 0: 0x%02x %ld MB",
- - pinfo->type, pinfo->size / 2048);
- - lcd_puts(0, line++, buf);
- - lcd_update();
- -
- - i=button_read_device();
- - if(i==BUTTON_LEFT)
- - {
- - lcd_puts(0, line, "Loading iriver firmware...");
- - lcd_update();
- - rc=load_iriver(loadbuffer);
- - } else {
- - lcd_puts(0, line, "Loading Rockbox...");
- - lcd_update();
- - rc=load_rockbox(loadbuffer);
- - }
- -
- - if (rc < 0) {
- - snprintf(buf, sizeof(buf), "Rockbox error: %d",rc);
- - lcd_puts(0, line++, buf);
- - lcd_update();
- - }
- -
- - memcpy((void*)DRAM_START,loadbuffer,rc);
- -
- - return (void*)DRAM_START;
- -}
- -
- -/* 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)
- -{
- - return 0;
- -}
- -
- -void mpeg_stop(void)
- -{
- -}
- -
- -void usb_acknowledge(void)
- -{
- -}
- -
- -void usb_wait_for_disconnect(void)
- -{
- -}
- -
- -void sys_poweroff(void)
- -{
- -}
- Index: bootloader/main-pp.c
- ===================================================================
- RCS file: bootloader/main-pp.c
- diff -N bootloader/main-pp.c
- --- /dev/null 1 Jan 1970 00:00:00 -0000
- +++ bootloader/main-pp.c 13 Dec 2006 00:28:20 -0000
- @@ -0,0 +1,262 @@
- +/***************************************************************************
- + * __________ __ ___.
- + * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- + * \/ \/ \/ \/ \/
- + * $Id: h10.c,v 1.4 2006-08-28 08:11:32 barrywardell Exp $
- + *
- + * Copyright (C) 2006 by Barry Wardell
- + *
- + * Based on Rockbox iriver bootloader by Linus Nielsen Feltzing
- + * and the ipodlinux bootloader by Daniel Palffy and Bernard Leach
- + *
- + * 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 "button.h"
- +#include "panic.h"
- +#include "power.h"
- +#include "file.h"
- +
- +/* 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];
- +
- +char version[] = APPSVERSION;
- +
- +#define DRAM_START 0x10000000
- +
- +int line=0;
- +
- +/* 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_original_firmware(unsigned char* buf)
- +{
- + int fd;
- + int rc;
- + int len;
- +
- + fd = open("/System/OF.bin", O_RDONLY);
- +
- + len = filesize(fd);
- +
- + if (len > MAX_LOADSIZE)
- + return -6;
- +
- + rc = read(fd, buf, len);
- + if(rc < len)
- + return -4;
- +
- + close(fd);
- + return len;
- +}
- +
- +/* Load Rockbox firmware (rockbox.*) */
- +int load_rockbox(unsigned char* buf)
- +{
- + int fd;
- + int rc;
- + int len;
- + unsigned long chksum;
- + char model[5];
- + unsigned long sum;
- + int i;
- + char str[80];
- +
- + fd = open("/.rockbox/" BOOTFILE, O_RDONLY);
- + if(fd < 0)
- + {
- + fd = open("/" BOOTFILE, O_RDONLY);
- + if(fd < 0)
- + return -1;
- + }
- +
- + len = filesize(fd) - 8;
- +
- + snprintf(str, sizeof(str), "Length: %x", len);
- + lcd_puts(0, line++ ,str);
- + lcd_update();
- +
- + if (len > MAX_LOADSIZE)
- + return -6;
- +
- + lseek(fd, FIRMWARE_OFFSET_FILE_CRC, SEEK_SET);
- +
- + rc = read(fd, &chksum, 4);
- + chksum=betoh32(chksum); /* Rockbox checksums are big-endian */
- + if(rc < 4)
- + return -2;
- +
- + snprintf(str, sizeof(str), "Checksum: %x", chksum);
- + lcd_puts(0, line++ ,str);
- + lcd_update();
- +
- + rc = read(fd, model, 4);
- + if(rc < 4)
- + return -3;
- +
- + model[4] = 0;
- +
- + snprintf(str, sizeof(str), "Model name: %s", model);
- + lcd_puts(0, line++ ,str);
- + lcd_update();
- +
- + lseek(fd, FIRMWARE_OFFSET_FILE_DATA, SEEK_SET);
- +
- + rc = read(fd, buf, len);
- + if(rc < len)
- + return -4;
- +
- + close(fd);
- +
- + sum = MODEL_NUMBER;
- +
- + for(i = 0;i < len;i++) {
- + sum += buf[i];
- + }
- +
- + snprintf(str, sizeof(str), "Sum: %x", sum);
- + lcd_puts(0, line++ ,str);
- + lcd_update();
- +
- + if(sum != chksum)
- + return -5;
- +
- + return len;
- +}
- +
- +void* main(void)
- +{
- + char buf[256];
- + int i;
- + int rc;
- + unsigned short* identify_info;
- + struct partinfo* pinfo;
- +
- + system_init();
- + kernel_init();
- + lcd_init();
- + font_init();
- +
- + line=0;
- +
- + lcd_setfont(FONT_SYSFIXED);
- +
- + lcd_puts(0, line++, "Rockbox boot loader");
- + snprintf(buf, sizeof(buf), "Version: 20%s", version);
- + lcd_puts(0, line++, buf);
- + snprintf(buf, sizeof(buf), MODEL_NAME);
- + lcd_puts(0, line++, buf);
- + lcd_update();
- +
- + i=ata_init();
- + if (i==0) {
- + identify_info=ata_get_identify();
- + /* Show model */
- + for (i=0; i < 20; i++) {
- + ((unsigned short*)buf)[i]=htobe16(identify_info[i+27]);
- + }
- + buf[40]=0;
- + for (i=39; i && buf[i]==' '; i--) {
- + buf[i]=0;
- + }
- + lcd_puts(0, line++, buf);
- + lcd_update();
- + } else {
- + snprintf(buf, sizeof(buf), "ATA: %d", i);
- + lcd_puts(0, line++, buf);
- + lcd_update();
- + }
- +
- + disk_init();
- + rc = disk_mount_all();
- + if (rc<=0)
- + {
- + lcd_puts(0, line++, "No partition found");
- + lcd_update();
- + }
- +
- + pinfo = disk_partinfo(0);
- + snprintf(buf, sizeof(buf), "Partition 0: 0x%02x %ld MB",
- + pinfo->type, pinfo->size / 2048);
- + lcd_puts(0, line++, buf);
- + lcd_update();
- +
- + i=button_read_device();
- + if(i==BUTTON_LEFT)
- + {
- + lcd_puts(0, line++, "Loading original firmware...");
- + lcd_update();
- + rc=load_original_firmware(loadbuffer);
- + } else {
- + lcd_puts(0, line++, "Loading Rockbox...");
- + lcd_update();
- + rc=load_rockbox(loadbuffer);
- + }
- +
- + if (rc < 0) {
- + snprintf(buf, sizeof(buf), "Rockbox error: %d",rc);
- + lcd_puts(0, line++, buf);
- + lcd_update();
- + while(1) {}
- + }
- +
- + memcpy((void*)DRAM_START,loadbuffer,rc);
- +
- + return (void*)DRAM_START;
- +}
- +
- +/* 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)
- +{
- + return 0;
- +}
- +
- +void mpeg_stop(void)
- +{
- +}
- +
- +void usb_acknowledge(void)
- +{
- +}
- +
- +void usb_wait_for_disconnect(void)
- +{
- +}
- +
- +void sys_poweroff(void)
- +{
- +}
- Index: firmware/SOURCES
- ===================================================================
- RCS file: /cvsroot/rockbox/firmware/SOURCES,v
- retrieving revision 1.146
- diff -u -r1.146 SOURCES
- --- firmware/SOURCES 9 Dec 2006 19:18:16 -0000 1.146
- +++ firmware/SOURCES 13 Dec 2006 00:28:21 -0000
- @@ -262,7 +262,11 @@
- /* no i2c driver yet */
- #endif
- #if defined(CPU_PP)
- +#ifdef BOOTLOADER
- +target/arm/crt0-pp-bl.S
- +#else
- target/arm/crt0-pp.S
- +#endif
- #elif defined(CPU_ARM)
- target/arm/crt0.S
- #endif /* defined(CPU_*) */
- Index: firmware/boot.lds
- ===================================================================
- RCS file: /cvsroot/rockbox/firmware/boot.lds,v
- retrieving revision 1.26
- diff -u -r1.26 boot.lds
- --- firmware/boot.lds 10 Dec 2006 13:33:12 -0000 1.26
- +++ firmware/boot.lds 13 Dec 2006 00:28:21 -0000
- @@ -8,7 +8,7 @@
- OUTPUT_FORMAT(elf32-littlearm)
- OUTPUT_ARCH(arm)
- #ifdef CPU_PP
- -INPUT(target/arm/crt0-pp.o)
- +INPUT(target/arm/crt0-pp-bl.o)
- #else
- INPUT(target/arm/crt0.o)
- #endif
- Index: firmware/rolo.c
- ===================================================================
- RCS file: /cvsroot/rockbox/firmware/rolo.c,v
- retrieving revision 1.35
- diff -u -r1.35 rolo.c
- --- firmware/rolo.c 10 Dec 2006 15:53:26 -0000 1.35
- +++ firmware/rolo.c 13 Dec 2006 00:28:22 -0000
- @@ -31,9 +31,8 @@
- #include "buffer.h"
- #if !defined(IRIVER_IFP7XX_SERIES) && \
- - (CONFIG_CPU != PP5002) && !defined(IRIVER_H10) && \
- - !defined(IRIVER_H10_5GB) && (CONFIG_CPU != S3C2440)
- -/* FIX: this doesn't work on iFP, 3rd Gen ipods, or H10 yet */
- + (CONFIG_CPU != PP5002) && (CONFIG_CPU != S3C2440)
- +/* FIX: this doesn't work on iFP, 3rd Gen ipods */
- #define IRQ0_EDGE_TRIGGER 0x80
- Index: firmware/system.c
- ===================================================================
- RCS file: /cvsroot/rockbox/firmware/system.c,v
- retrieving revision 1.131
- diff -u -r1.131 system.c
- --- firmware/system.c 5 Dec 2006 20:01:45 -0000 1.131
- +++ firmware/system.c 13 Dec 2006 00:28:22 -0000
- @@ -26,6 +26,7 @@
- #include "timer.h"
- #include "inttypes.h"
- #include "string.h"
- +#include "logf.h"
- #ifndef SIMULATOR
- long cpu_frequency = CPU_FREQ;
- @@ -574,12 +575,18 @@
- /* TODO: this should really be in the target tree, but moving it there caused
- crt0.S not to find it while linking */
- /* TODO: Even if it isn't in the target tree, this should be the default case */
- +extern void e200_button_int(void);
- +
- void irq(void)
- {
- if (CPU_INT_STAT & TIMER1_MASK)
- TIMER1();
- else if (CPU_INT_STAT & TIMER2_MASK)
- TIMER2();
- + else if (CPU_HI_INT_STAT & GPIO_MASK){
- + e200_button_int();
- + logf("button interrupt");
- + }
- }
- #else
- extern void ipod_4g_button_int(void);
- Index: firmware/export/config-e200.h
- ===================================================================
- RCS file: /cvsroot/rockbox/firmware/export/config-e200.h,v
- retrieving revision 1.6
- diff -u -r1.6 config-e200.h
- --- firmware/export/config-e200.h 10 Dec 2006 23:12:58 -0000 1.6
- +++ firmware/export/config-e200.h 13 Dec 2006 00:28:22 -0000
- @@ -5,6 +5,7 @@
- /* For Rolo and boot loader */
- #define MODEL_NUMBER 16
- +#define MODEL_NAME "Sandisk Sansa e200"
- /* define this if you have recording possibility */
- /*#define HAVE_RECORDING 1*/ /* TODO: add support for this */
- Index: firmware/export/config-h10.h
- ===================================================================
- RCS file: /cvsroot/rockbox/firmware/export/config-h10.h,v
- retrieving revision 1.20
- diff -u -r1.20 config-h10.h
- --- firmware/export/config-h10.h 9 Nov 2006 22:33:24 -0000 1.20
- +++ firmware/export/config-h10.h 13 Dec 2006 00:28:23 -0000
- @@ -6,6 +6,7 @@
- /* For Rolo and boot loader */
- #define MODEL_NUMBER 13
- +#define MODEL_NAME "iriver H10 20GB"
- /* define this if you have recording possibility */
- /*#define HAVE_RECORDING 1*/ /* TODO: add support for this */
- Index: firmware/export/config-h10_5gb.h
- ===================================================================
- RCS file: /cvsroot/rockbox/firmware/export/config-h10_5gb.h,v
- retrieving revision 1.14
- diff -u -r1.14 config-h10_5gb.h
- --- firmware/export/config-h10_5gb.h 9 Nov 2006 22:33:24 -0000 1.14
- +++ firmware/export/config-h10_5gb.h 13 Dec 2006 00:28:23 -0000
- @@ -6,6 +6,7 @@
- /* For Rolo and boot loader */
- #define MODEL_NUMBER 14
- +#define MODEL_NAME "iriver H10 5/6GB"
- /* define this if you have recording possibility */
- /*#define HAVE_RECORDING 1*/ /* TODO: add support for this */
- Index: firmware/target/arm/crt0-pp-bl.S
- ===================================================================
- RCS file: firmware/target/arm/crt0-pp-bl.S
- diff -N firmware/target/arm/crt0-pp-bl.S
- --- /dev/null 1 Jan 1970 00:00:00 -0000
- +++ firmware/target/arm/crt0-pp-bl.S 13 Dec 2006 00:28:23 -0000
- @@ -0,0 +1,179 @@
- +/***************************************************************************
- + * __________ __ ___.
- + * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- + * \/ \/ \/ \/ \/
- + * $Id: crt0-pp.S,v 1.2 2006/11/22 00:49:16 dan_a Exp $
- + *
- + * Copyright (C) 2002 by Linus Nielsen Feltzing
- + *
- + * 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 "cpu.h"
- +
- + .section .init.text,"ax",%progbits
- +
- + .global start
- +start:
- +
- +/* PortalPlayer bootloader and startup code based on startup.s from the iPodLinux
- + * loader
- + *
- + * Copyright (c) 2003, Daniel Palffy (dpalffy (at) rainstorm.org)
- + * Copyright (c) 2005, Bernard Leach <leachbj@bouncycastle.org>
- + *
- + */
- +#if CONFIG_CPU == PP5002
- + .equ PROC_ID, 0xc4000000
- + .equ COP_CTRL, 0xcf004058
- + .equ COP_STATUS, 0xcf004050
- + .equ IIS_CONFIG, 0xc0002500
- + .equ SLEEP, 0xca
- + .equ WAKE, 0xce
- + .equ SLEEPING, 0x4000
- +#else
- + .equ PROC_ID, 0x60000000
- + .equ COP_CTRL, 0x60007004
- + .equ COP_STATUS, 0x60007004
- + .equ IIS_CONFIG, 0x70002800
- + .equ SLEEP, 0x80000000
- + .equ WAKE, 0x0
- + .equ SLEEPING, 0x80000000
- + .equ CACHE_CTRL, 0x6000c000
- +#endif
- +
- + msr cpsr_c, #0xd3 /* enter supervisor mode, disable IRQ */
- +
- +/* 1 - Copy the bootloader to IRAM */
- + /* get the high part of our execute address */
- + ldr r7, =0xffffff00
- + and r4, pc, r7
- +
- + /* Copy bootloader to safe area - 0x40000000 (IRAM) */
- + mov r5, #0x40000000
- + ldr r6, = _dataend
- +1:
- + cmp r5, r6
- + ldrcc r2, [r4], #4
- + strcc r2, [r5], #4
- + bcc 1b
- +
- +#ifndef IPOD_ARCH
- + /* For builds on targets with mi4 firmware, scramble writes data to
- + 0xe0-0xeb, so jump past that.*/
- + b pad_skip
- +
- +.space 60*4
- +
- +pad_skip:
- +#endif
- +
- +
- +/* 2 - Jump both CPU and COP there */
- + ldr pc, =start_loc /* jump to the relocated start_loc: */
- +
- +start_loc:
- +
- + /* Find out which processor we are */
- + ldr r0, =PROC_ID
- + ldr r0, [r0]
- + and r0, r0, #0xff
- + cmp r0, #0x55
- + beq cpu
- +
- + /* put us (co-processor) to sleep */
- + ldr r4, =COP_CTRL
- + mov r3, #SLEEP
- + str r3, [r4]
- + ldr pc, =cop_wake_start
- +
- +cop_wake_start:
- +#if CONFIG_CPU != PP5002
- + /* COP: Invalidate cache */
- + ldr r0, =0xf000f044
- + ldr r1, [r0]
- + orr r1, r1, #0x6
- + str r1, [r0]
- +
- + ldr r0, =CACHE_CTRL
- +1:
- + ldr r1, [r0]
- + tst r1, #0x8000
- + bne 1b
- +#endif
- +
- + ldr r0, =startup_loc
- + ldr pc, [r0]
- +
- +cpu:
- + /* Wait for COP to be sleeping */
- + ldr r4, =COP_STATUS
- +1:
- + ldr r3, [r4]
- + ands r3, r3, #SLEEPING
- + beq 1b
- +
- + /* Initialise bss section to zero */
- + ldr r2, =_edata
- + ldr r3, =_end
- + mov r4, #0
- +1:
- + cmp r3, r2
- + strhi r4, [r2], #4
- + bhi 1b
- +
- + /* Set up some stack and munge it with 0xdeadbeef */
- + ldr sp, =stackend
- + mov r3, sp
- + ldr r2, =stackbegin
- + ldr r4, =0xdeadbeef
- +1:
- + cmp r3, r2
- + strhi r4, [r2], #4
- + bhi 1b
- +
- + /* execute the loader - this will load an image to 0x10000000 */
- + bl main
- +
- + ldr r1, =startup_loc
- + str r0, [r1]
- +
- +#if CONFIG_CPU != PP5002
- + /* Flush cache */
- + ldr r3, =0xf000f044
- + ldr r4, [r3]
- + orr r4, r4, #0x2
- + str r4, [r3]
- +
- + ldr r3, =CACHE_CTRL
- +1:
- + ldr r4, [r3]
- + tst r4, #0x8000
- + bne 1b
- +#endif
- +
- + /* Wake up the coprocessor before executing the firmware */
- + ldr r4, =COP_CTRL
- + mov r3, #WAKE
- + str r3, [r4]
- +
- + mov pc, r0
- +
- +startup_loc:
- + .word 0x0
- +
- +#ifdef IPOD_ARCH
- +.align 8 /* starts at 0x100 */
- +.global boot_table
- +boot_table:
- + /* here comes the boot table, don't move its offset */
- + .space 400
- +#endif
- Index: firmware/target/arm/crt0-pp.S
- ===================================================================
- RCS file: /cvsroot/rockbox/firmware/target/arm/crt0-pp.S,v
- retrieving revision 1.2
- diff -u -r1.2 crt0-pp.S
- --- firmware/target/arm/crt0-pp.S 22 Nov 2006 00:49:16 -0000 1.2
- +++ firmware/target/arm/crt0-pp.S 13 Dec 2006 00:28:23 -0000
- @@ -5,7 +5,7 @@
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- - * $Id: crt0-pp.S,v 1.2 2006-11-22 00:49:16 dan_a Exp $
- + * $Id: crt0-pp.S,v 1.2 2006/11/22 00:49:16 dan_a Exp $
- *
- * Copyright (C) 2002 by Linus Nielsen Feltzing
- *
- @@ -52,15 +52,9 @@
- msr cpsr_c, #0xd3 /* enter supervisor mode, disable IRQ */
- -#ifndef BOOTLOADER
- b pad_skip
- -#if defined(SANSA_E200)
- -/* mi4tool writes junk between 0xe0 and 0xeb. Avoid this. */
- -.space 60*4 /* (more than enough) space for exception vectors */
- -#else
- -.space 50*4
- -#endif
- +.space 50*4 /* (more than enough) space for exception vectors */
- pad_skip:
- #ifdef SANSA_E200
- @@ -108,11 +102,13 @@
- /* After doing the remapping, send the COP to sleep.
- On wakeup it will go to cop_init */
- +
- + /* Find out which processor we are */
- ldr r0, =PROC_ID
- ldr r0, [r0]
- and r0, r0, #0xff
- cmp r0, #0x55
- - beq 1f
- + beq cpu_init
- /* put us (co-processor) to sleep */
- ldr r4, =COP_CTRL
- @@ -121,9 +117,15 @@
- ldr pc, =cop_init
- -1:
- -#ifndef DEBUG
- +cpu_init:
- + /* Wait for COP to be sleeping */
- + ldr r4, =COP_STATUS
- +1:
- + ldr r3, [r4]
- + ands r3, r3, #SLEEPING
- + beq 1b
- +
- /* Copy exception handler code to address 0 */
- ldr r2, =_vectorsstart
- ldr r3, =_vectorsend
- @@ -133,15 +135,7 @@
- ldrhi r5, [r4], #4
- strhi r5, [r2], #4
- bhi 1b
- -#else
- - ldr r1, =vectors
- - ldr r0, =irq_handler
- - str r0, [r1, #24]
- - ldr r0, =fiq_handler
- - str r0, [r1, #28]
- -#endif
- -#ifndef STUB
- /* Zero out IBSS */
- ldr r2, =_iedata
- ldr r3, =_iend
- @@ -160,8 +154,6 @@
- ldrhi r5, [r2], #4
- strhi r5, [r3], #4
- bhi 1b
- -#endif /* !STUB */
- -#endif /* !BOOTLOADER */
- /* Initialise bss section to zero */
- ldr r2, =_edata
- @@ -181,90 +173,6 @@
- cmp r3, r2
- strhi r4, [r2], #4
- bhi 1b
- -
- -#ifdef BOOTLOADER
- - /* TODO: the high part of the address is probably dependent on CONFIG_CPU.
- - Since we tend to use ifdefs for each chipset target
- - anyway, we might as well just hardcode it here.
- - */
- -
- - /* get the high part of our execute address */
- - ldr r0, =0xff000000
- - and r8, pc, r0 @ r8 is used later
- -
- - /* Find out which processor we are */
- - mov r0, #PROC_ID
- - ldr r0, [r0]
- - and r0, r0, #0xff
- - cmp r0, #0x55
- - beq 1f
- -
- - /* put us (co-processor) to sleep */
- - ldr r4, =COP_CTRL
- - mov r3, #SLEEP
- - str r3, [r4]
- - ldr pc, =cop_wake_start
- -
- -cop_wake_start:
- - /* jump the COP to startup */
- - ldr r0, =startup_loc
- - ldr pc, [r0]
- -
- -1:
- -
- - /* get the high part of our execute address */
- - ldr r2, =0xffffff00
- - and r4, pc, r2
- -
- - /* Copy bootloader to safe area - 0x40000000 */
- - mov r5, #0x40000000
- - ldr r6, = _dataend
- - sub r0, r6, r5 /* length of loader */
- - add r0, r4, r0 /* r0 points to start of loader */
- -1:
- - cmp r5, r6
- - ldrcc r2, [r4], #4
- - strcc r2, [r5], #4
- - bcc 1b
- -
- - ldr pc, =start_loc /* jump to the relocated start_loc: */
- -
- -start_loc:
- -
- - /* execute the loader - this will load an image to 0x10000000 */
- - bl main
- -
- - /* Wake up the coprocessor before executing the firmware */
- -
- - /* save the startup address for the COP */
- - ldr r1, =startup_loc
- - str r0, [r1]
- -
- - /* make sure COP is sleeping */
- - ldr r4, =COP_STATUS
- -1:
- - ldr r3, [r4]
- - ands r3, r3, #SLEEPING
- - beq 1b
- -
- - /* wake up COP */
- - ldr r4, =COP_CTRL
- - mov r3, #WAKE
- - str r3, [r4]
- -
- - /* jump to start location */
- - mov pc, r0
- -
- -startup_loc:
- - .word 0x0
- -
- -.align 8 /* starts at 0x100 */
- -.global boot_table
- -boot_table:
- - /* here comes the boot table, don't move its offset */
- - .space 400
- -
- -#else /* BOOTLOADER */
- /* Set up stack for IRQ mode */
- msr cpsr_c, #0xd2
- @@ -290,6 +198,21 @@
- /* main() should never return */
- cop_init:
- +#if CONFIG_CPU != PP5002
- + /* COP: Invalidate cache */
- + ldr r0, =0xf000f044
- + ldr r1, [r0]
- + orr r1, r1, #0x6
- + str r1, [r0]
- +
- + ldr r0, =0x6000c000
- +1:
- + ldr r1, [r0]
- + tst r1, #0x8000
- + bne 1b
- +#endif
- +
- + /* Setup stack for COP */
- ldr sp, =cop_stackend
- mov r3, sp
- ldr r2, =cop_stackbegin
- @@ -300,6 +223,8 @@
- bhi 2b
- ldr sp, =cop_stackend
- +
- + /* Run cop_main() in apps/main.c */
- bl cop_main
- /* Exception handlers. Will be copied to address 0 after memory remapping */
- @@ -385,5 +310,3 @@
- /* 256 words of FIQ stack */
- .space 256*4
- fiq_stack:
- -
- -#endif /* BOOTLOADER */
- Index: firmware/target/arm/sandisk/sansa-e200/button-e200.c
- ===================================================================
- RCS file: /cvsroot/rockbox/firmware/target/arm/sandisk/sansa-e200/button-e200.c,v
- retrieving revision 1.2
- diff -u -r1.2 button-e200.c
- --- firmware/target/arm/sandisk/sansa-e200/button-e200.c 16 Oct 2006 00:18:49 -0000 1.2
- +++ firmware/target/arm/sandisk/sansa-e200/button-e200.c 13 Dec 2006 00:28:24 -0000
- @@ -28,16 +28,125 @@
- #include "backlight.h"
- #include "system.h"
- +static unsigned int old_wheel_value = 0;
- +int int_btn = BUTTON_NONE;
- +static bool hold_button = false;
- -void button_init_device(void)
- +static int e200_button_read(void)
- {
- - /* Enable all buttons except the wheel */
- - GPIOF_ENABLE |= 0xff;
- + unsigned char source, wheel_source, state, wheel_state;
- + int btn = BUTTON_NONE;
- +
- + /* get source(s) of interupt */
- + source = GPIOA_INT_STAT & 0x3f;
- + wheel_source = GPIOB_INT_STAT & 0x30;
- +
- + if (source == 0 && wheel_source == 0) {
- + return BUTTON_NONE; /* not for us */
- + }
- +
- + /* get current keypad & wheel status */
- + state = GPIOF_INPUT_VAL & 0xff;
- + wheel_state = GPIOH_INPUT_VAL & 0xc0;
- +
- + /* toggle interrupt level */
- + GPIOA_INT_LEV = ~state;
- + GPIOB_INT_LEV = ~wheel_state;
- +
- + /* device buttons */
- + //if (!hold_button)
- + {
- + /* Read normal buttons */
- + if ((state & 0x1) == 0) btn |= BUTTON_REC;
- + if ((state & 0x2) == 0) btn |= BUTTON_DOWN;
- + if ((state & 0x4) == 0) btn |= BUTTON_RIGHT;
- + if ((state & 0x8) == 0) btn |= BUTTON_LEFT;
- + if ((state & 0x10) == 0) btn |= BUTTON_SELECT; /* The centre button */
- + if ((state & 0x20) == 0) btn |= BUTTON_UP; /* The "play" button */
- + if ((state & 0x40) != 0) btn |= BUTTON_POWER;
- +
- + /* Read wheel
- + * Bits 6 and 7 of GPIOH change as follows:
- + * Clockwise rotation 01 -> 00 -> 10 -> 11
- + * Counter-clockwise 11 -> 10 -> 00 -> 01
- + *
- + * This is equivalent to wheel_value of:
- + * Clockwise rotation 0x40 -> 0x00 -> 0x80 -> 0xc0
- + * Counter-clockwise 0xc0 -> 0x80 -> 0x00 -> 0x40
- + */
- + wheel_state = GPIOH_INPUT_VAL & 0xc0;
- + switch(wheel_state){
- + case 0x00:
- + if(old_wheel_value==0x80)
- + btn |= BUTTON_SCROLL_UP;
- + else if (old_wheel_value==0x40)
- + btn |= BUTTON_SCROLL_DOWN;
- + break;
- + case 0x40:
- + if(old_wheel_value==0x00)
- + btn |= BUTTON_SCROLL_UP;
- + else if (old_wheel_value==0xc0)
- + btn |= BUTTON_SCROLL_DOWN;
- + break;
- + case 0x80:
- + if(old_wheel_value==0xc0)
- + btn |= BUTTON_SCROLL_UP;
- + else if (old_wheel_value==0x00)
- + btn |= BUTTON_SCROLL_DOWN;
- + break;
- + case 0xc0:
- + if(old_wheel_value==0x40)
- + btn |= BUTTON_SCROLL_UP;
- + else if (old_wheel_value==0x80)
- + btn |= BUTTON_SCROLL_DOWN;
- + break;
- + }
- + old_wheel_value = wheel_state;
- + }
- +
- + /* ack any active interrupts */
- + if (source)
- + GPIOF_INT_CLR = source;
- + if (wheel_source)
- + GPIOH_INT_CLR = wheel_source;
- +
- + return btn;
- }
- -bool button_hold(void)
- +void e200_button_int(void)
- {
- - return (GPIOF_INPUT_VAL & 0x80)?true:false;
- + CPU_HI_INT_CLR = GPIO_MASK;
- + int_btn = e200_button_read();
- + //CPU_INT_EN = 0x40000000;
- + CPU_HI_INT_EN = GPIO_MASK;
- +}
- +
- +void button_init_device(void)
- +{
- + /* Enable all buttons except the wheel */
- + GPIOF_ENABLE |= 0xff;
- +
- + /* Enable scroll wheel */
- + GPIOH_ENABLE |= 0xc0;
- +
- + /* buttons - set interrupt levels */
- + GPIOF_INT_LEV = ~(GPIOF_INPUT_VAL & 0xff);
- + GPIOF_INT_CLR = GPIOF_INT_STAT & 0xff;
- +
- + /* scroll wheel - set interrupt levels */
- + GPIOH_INT_LEV = ~(GPIOH_INPUT_VAL & 0xc0);
- + GPIOH_INT_CLR = GPIOH_INT_STAT & 0xc0;
- +
- + /* enable interrupts */
- + GPIOF_INT_EN = 0xff;
- + GPIOH_INT_EN = 0xc0;
- +
- + /* unmask interrupt */
- + CPU_INT_EN = 0x40000000;
- + CPU_HI_INT_EN = GPIO_MASK;
- +
- + /* Read initial wheel value (bit 6-7 of GPIOH) */
- + old_wheel_value = GPIOH_INPUT_VAL & 0xc0;
- }
- /*
- @@ -45,9 +154,6 @@
- */
- int button_read_device(void)
- {
- - int btn = BUTTON_NONE;
- - unsigned char state;
- - static bool hold_button = false;
- bool hold_button_old;
- /* Hold */
- @@ -64,19 +170,11 @@
- #endif
- #endif
- - /* device buttons */
- - if (!hold_button)
- - {
- - /* Read normal buttons */
- - state = GPIOF_INPUT_VAL & 0xff;
- - if ((state & 0x1) == 0) btn |= BUTTON_REC;
- - if ((state & 0x2) == 0) btn |= BUTTON_DOWN;
- - if ((state & 0x4) == 0) btn |= BUTTON_RIGHT;
- - if ((state & 0x8) == 0) btn |= BUTTON_LEFT;
- - if ((state & 0x10) == 0) btn |= BUTTON_SELECT; /* The centre button */
- - if ((state & 0x20) == 0) btn |= BUTTON_UP; /* The "play" button */
- - if ((state & 0x40) != 0) btn |= BUTTON_POWER;
- - }
- + /* The int_btn variable is set in the button interrupt handler */
- + return int_btn;
- +}
- - return btn;
- +bool button_hold(void)
- +{
- + return (GPIOF_INPUT_VAL & 0x80)?true:false;
- }
- Index: firmware/target/arm/sandisk/sansa-e200/button-target.h
- ===================================================================
- RCS file: /cvsroot/rockbox/firmware/target/arm/sandisk/sansa-e200/button-target.h,v
- retrieving revision 1.3
- diff -u -r1.3 button-target.h
- --- firmware/target/arm/sandisk/sansa-e200/button-target.h 14 Oct 2006 12:16:29 -0000 1.3
- +++ firmware/target/arm/sandisk/sansa-e200/button-target.h 13 Dec 2006 00:28:24 -0000
- @@ -28,6 +28,7 @@
- bool button_hold(void);
- void button_init_device(void);
- int button_read_device(void);
- +void e200_button_int(void);
- /* Sandisk Sansa E200 button codes */
- Index: tools/configure
- ===================================================================
- RCS file: /cvsroot/rockbox/tools/configure,v
- retrieving revision 1.245
- diff -u -r1.245 configure
- --- tools/configure 27 Nov 2006 02:15:39 -0000 1.245
- +++ tools/configure 13 Dec 2006 00:28:28 -0000
- @@ -1115,10 +1115,10 @@
- target="-DSANSA_E200"
- memory=32 # supposedly
- arm7tdmicc
- - tool="$rootdir/tools/scramble -mi4v3"
- + tool="$rootdir/tools/scramble -add=e200"
- bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
- bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
- - output="PP5022.mi4"
- + output="rockbox.e200"
- appextra="recorder:gui"
- archosrom=""
- flash=""
- Index: tools/scramble.c
- ===================================================================
- RCS file: /cvsroot/rockbox/tools/scramble.c,v
- retrieving revision 1.35
- diff -u -r1.35 scramble.c
- --- tools/scramble.c 31 Aug 2006 19:19:35 -0000 1.35
- +++ tools/scramble.c 13 Dec 2006 00:28:29 -0000
- @@ -89,7 +89,7 @@
- "\t-mi4v3 PortalPlayer .mi4 format (revision 010301)\n"
- "\t-add=X Rockbox generic \"add-up\" checksum format\n"
- "\t (X values: h100, h120, h140, h300, ipco, nano, ipvd\n"
- - "\t ip3g, ip4g, mini, x5, h10, h10_5gb)\n"
- + "\t ip3g, ip4g, mini, x5, h10, h10_5gb, tpj2, e200)\n"
- "\nNo option results in Archos standard player/recorder format.\n");
- exit(1);
- @@ -207,6 +207,8 @@
- modelnum = 14;
- else if(!strcmp(&argv[1][5], "tpj2"))
- modelnum = 15;
- + else if(!strcmp(&argv[1][5], "e200"))
- + modelnum = 16;
- else {
- fprintf(stderr, "unsupported model: %s\n", &argv[1][5]);
- return 2;
advertising
Update the Post
Either update this post and resubmit it with changes, or make a new post.
You may also comment on this post.
Please note that information posted here will expire by default in one month. If you do not want it to expire, please set the expiry time above. If it is set to expire, web search engines will not be allowed to index it prior to it expiring. Items that are not marked to expire will be indexable by search engines. Be careful with your passwords. All illegal activities will be reported and any information will be handed over to the authorities, so be good.