Skip to content

Commit

Permalink
Add a new config for Fuze V2
Browse files Browse the repository at this point in the history
  • Loading branch information
Steven Price committed Jun 7, 2009
1 parent 8a9030b commit 3c3e32f
Show file tree
Hide file tree
Showing 15 changed files with 252 additions and 35 deletions.
2 changes: 1 addition & 1 deletion bootloader/sansa_as3525.c
Expand Up @@ -61,7 +61,7 @@ void main(void)
_backlight_on(); _backlight_on();


button_init_device(); button_init_device();
#ifndef SANSA_CLIPV2 #if !(defined(SANSA_CLIPV2) || defined(SANSA_FUZEV2))
int btn = button_read_device(); int btn = button_read_device();


#if !defined(SANSA_FUZE) && !defined(SANSA_CLIP) #if !defined(SANSA_FUZE) && !defined(SANSA_CLIP)
Expand Down
4 changes: 2 additions & 2 deletions firmware/SOURCES
Expand Up @@ -366,7 +366,7 @@ target/arm/pnx0101/system-pnx0101.c
#if CONFIG_CPU == AS3525 #if CONFIG_CPU == AS3525
target/arm/as3525/system-as3525.c target/arm/as3525/system-as3525.c
target/arm/as3525/kernel-as3525.c target/arm/as3525/kernel-as3525.c
#ifndef SANSA_CLIPV2 #if !(defined(SANSA_CLIPV2) || defined(SANSA_FUZEV2))
target/arm/as3525/ata_sd_as3525.c target/arm/as3525/ata_sd_as3525.c
#endif #endif
target/arm/as3525/power-as3525.c target/arm/as3525/power-as3525.c
Expand Down Expand Up @@ -1165,7 +1165,7 @@ target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c
#endif /* !SIMULATOR */ #endif /* !SIMULATOR */
#endif /* SANSA_M200V4 */ #endif /* SANSA_M200V4 */


#ifdef SANSA_FUZE #if defined(SANSA_FUZE) || defined(SANSA_FUZEV2)
#ifndef SIMULATOR #ifndef SIMULATOR
target/arm/as3525/sansa-fuze/button-fuze.c target/arm/as3525/sansa-fuze/button-fuze.c
target/arm/as3525/sansa-fuze/lcd-fuze.c target/arm/as3525/sansa-fuze/lcd-fuze.c
Expand Down
210 changes: 210 additions & 0 deletions firmware/export/config-fuzev2.h
@@ -0,0 +1,210 @@
/*
* This config file is for the Sandisk Sansa Fuze
*/
#define TARGET_TREE /* this target is using the target tree system */

/* For Rolo and boot loader */
#define MODEL_NUMBER 67
#define MODEL_NAME "Sandisk Sansa Fuze V2"

#define HW_SAMPR_CAPS (SAMPR_CAP_44)

#if 0
/* define this if you have recording possibility */
#define HAVE_RECORDING

#define REC_SAMPR_CAPS (SAMPR_CAP_22)
#define REC_FREQ_DEFAULT REC_FREQ_22 /* Default is not 44.1kHz */
#define REC_SAMPR_DEFAULT SAMPR_22

/* Default recording levels */
#define DEFAULT_REC_MIC_GAIN 23
#define DEFAULT_REC_LEFT_GAIN 23
#define DEFAULT_REC_RIGHT_GAIN 23

/* Define bitmask of input sources - recordable bitmask can be defined
explicitly if different */
#endif
#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_FMRADIO)

/* define this if you have a bitmap LCD display */
#define HAVE_LCD_BITMAP
/* define this if you have a colour LCD */
#define HAVE_LCD_COLOR

#ifndef BOOTLOADER/* define this if you want album art for this target */
#define HAVE_ALBUMART

/* define this to enable bitmap scaling */
#define HAVE_BMP_SCALING

/* define this to enable JPEG decoding */
#define HAVE_JPEG

/* define this if you have a light associated with the buttons */
#define HAVE_BUTTON_LIGHT

/* define this if you have access to the quickscreen */
#define HAVE_QUICKSCREEN

/* define this if you have access to the pitchscreen */
#define HAVE_PITCHSCREEN

/* define this if you would like tagcache to build on this target */
#define HAVE_TAGCACHE

/* define this if you have LCD enable function */
#define HAVE_LCD_ENABLE

/* Define this if your LCD can be put to sleep. HAVE_LCD_ENABLE
should be defined as well.
#define HAVE_LCD_SLEEP
#define HAVE_LCD_SLEEP_SETTING
*/

/* define this if you can flip your LCD */
//#define HAVE_LCD_FLIP

/* define this if you can invert the colours on your LCD */
//#define HAVE_LCD_INVERT


/* define this if you have a real-time clock */
#define CONFIG_RTC RTC_AS3514

/* There is no hardware tone control */
#define HAVE_SW_TONE_CONTROLS

#endif /* !BOOTLOADER */

/* put the lcd frame buffer in IRAM */
#define IRAM_LCDFRAMEBUFFER IBSS_ATTR

#define CONFIG_KEYPAD SANSA_FUZE_PAD

/* Define this if you do software codec */
#define CONFIG_CODEC SWCODEC


/* LCD dimensions */
#define LCD_WIDTH 220
#define LCD_HEIGHT 176
#define LCD_DEPTH 16 /* 65536 colours */
#define LCD_PIXELFORMAT RGB565 /* rgb565 */


/* We're working on the assumption that the AS3525 has something
similar to the AS3514 for audio codec etc */
#define HAVE_AS3514

/* Define this if you have a software controlled poweroff */
#define HAVE_SW_POWEROFF

/* Some Sansa Fuzes seem to be FAT16 formatted */
#define HAVE_FAT16SUPPORT

/* The number of bytes reserved for loadable codecs */
#define CODEC_SIZE 0x100000

/* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0x80000

#define AB_REPEAT_ENABLE 1

/* FM Tuner - suspected to be the SI4702 */
#define CONFIG_TUNER SI4700
/* #define HAVE_TUNER_PWR_CTRL */

/* Define this for LCD backlight available */
#define HAVE_BACKLIGHT
#define HAVE_BACKLIGHT_BRIGHTNESS

/* Main LCD backlight brightness range and defaults */
#define MIN_BRIGHTNESS_SETTING 1
#define MAX_BRIGHTNESS_SETTING 12
#define DEFAULT_BRIGHTNESS_SETTING 6

/* Which backlight fading type? */
#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING

/* define this if the unit uses a scrollwheel for navigation */
#define HAVE_SCROLLWHEEL
/* define to activate advanced wheel acceleration code */
#define HAVE_WHEEL_ACCELERATION
/* define from which rotation speed [degree/sec] on the acceleration starts */
#define WHEEL_ACCEL_START 540
/* define type of acceleration (1 = ^2, 2 = ^3, 3 = ^4) */
#define WHEEL_ACCELERATION 1

/* define this if you have a flash memory storage */
#define HAVE_FLASH_STORAGE

/* define this if the flash memory uses the SecureDigital Memory Card protocol */
#define CONFIG_STORAGE STORAGE_SD

#define BATTERY_CAPACITY_DEFAULT 550 /* default battery capacity */
#define BATTERY_CAPACITY_MIN 550 /* min. capacity selectable */
#define BATTERY_CAPACITY_MAX 550 /* max. capacity selectable */
#define BATTERY_CAPACITY_INC 0 /* capacity increment */
#define BATTERY_TYPES_COUNT 1 /* only one type */

/* Hardware controlled charging? FIXME */
#define CONFIG_CHARGING CHARGING_SIMPLE

/* define this if the unit can be powered or charged via USB */
#define HAVE_USB_POWER

/** Non-simulator section **/
#ifndef SIMULATOR

/* Define this if you have an AMS AS3525*/
#define CONFIG_CPU AS3525

/* Define how much SD sectors are reserved for OF */
#define AMS_OF_SIZE 0xF000

/* Define this if you want to use the AS2525 i2c interface */
#define CONFIG_I2C I2C_AS3525

/* Define this to the CPU frequency */
#define CPU_FREQ 250000000

/* Type of LCD */
#define CONFIG_LCD LCD_FUZE

/* Offset ( in the firmware file's header ) to the file CRC and data. These are
only used when loading the old format rockbox.e200 file */
#define FIRMWARE_OFFSET_FILE_CRC 0x0
#define FIRMWARE_OFFSET_FILE_DATA 0x8

#ifndef BOOTLOADER
#define HAVE_MULTIVOLUME
#define HAVE_HOTSWAP
#endif

#define USB_HANDLED_BY_OF

/* USB On-the-go */
#define CONFIG_USBOTG USBOTG_AS3525

/* enable these for the experimental usb stack */
//#define HAVE_USBSTACK
#define USB_VENDOR_ID 0x0781
#define USB_PRODUCT_ID 0x7423

/* Virtual LED (icon) */
#define CONFIG_LED LED_VIRTUAL

/* Define this if you have adjustable CPU frequency */
#define HAVE_ADJUSTABLE_CPU_FREQ

#define BOOTFILE_EXT "sansa"
#define BOOTFILE "rockbox." BOOTFILE_EXT
#define BOOTDIR "/.rockbox"

#define ICODE_ATTR_TREMOR_NOT_MDCT

#define INCLUDE_TIMEOUT_API

#endif /* SIMULATOR */

2 changes: 2 additions & 0 deletions firmware/export/config.h
Expand Up @@ -364,6 +364,8 @@ Lyre prototype 1*/
#include "config-m200v4.h" #include "config-m200v4.h"
#elif defined(SANSA_FUZE) #elif defined(SANSA_FUZE)
#include "config-fuze.h" #include "config-fuze.h"
#elif defined(SANSA_FUZEV2)
#include "config-fuzev2.h"
#elif defined(SANSA_C200V2) #elif defined(SANSA_C200V2)
#include "config-c200v2.h" #include "config-c200v2.h"
#elif defined(LYRE_PROTO1) #elif defined(LYRE_PROTO1)
Expand Down
2 changes: 1 addition & 1 deletion firmware/target/arm/as3525/boot.lds
Expand Up @@ -11,7 +11,7 @@ No need for DRAM in our bootloader
#define DRAMSIZE (MEMORYSIZE * 0x100000) - TTB_SIZE #define DRAMSIZE (MEMORYSIZE * 0x100000) - TTB_SIZE
#define DRAMORIG 0x30000000 #define DRAMORIG 0x30000000
*/ */
#ifdef SANSA_CLIPV2 #if defined(SANSA_CLIPV2) || defined(SANSA_FUZE)
#define IRAMORIG 0 /* in fact DRAM, but we don't care */ #define IRAMORIG 0 /* in fact DRAM, but we don't care */
#define IRAMSIZE (MEM*0x100000) #define IRAMSIZE (MEM*0x100000)
#else #else
Expand Down
4 changes: 2 additions & 2 deletions firmware/target/arm/as3525/clock-target.h
Expand Up @@ -53,7 +53,7 @@


/* PLL frequencies and settings*/ /* PLL frequencies and settings*/


#ifdef SANSA_CLIPV2 #if defined(SANSA_CLIPV2) || defined(SANSA_FUZEV2)
#define AS3525_PLLA_FREQ 240000000 /*124,82.7,62,49.6,41.3,35.4 */ #define AS3525_PLLA_FREQ 240000000 /*124,82.7,62,49.6,41.3,35.4 */
#else #else
#define AS3525_PLLA_FREQ 248000000 /*124,82.7,62,49.6,41.3,35.4 */ #define AS3525_PLLA_FREQ 248000000 /*124,82.7,62,49.6,41.3,35.4 */
Expand Down Expand Up @@ -115,7 +115,7 @@


#define AS3525_IDE_SEL AS3525_CLK_PLLA /* Input Source */ #define AS3525_IDE_SEL AS3525_CLK_PLLA /* Input Source */
#define AS3525_IDE_DIV (CLK_DIV(AS3525_PLLA_FREQ, AS3525_IDE_FREQ) - 1)/*div=1/(n+1)*/ #define AS3525_IDE_DIV (CLK_DIV(AS3525_PLLA_FREQ, AS3525_IDE_FREQ) - 1)/*div=1/(n+1)*/
#ifdef SANSA_CLIPV2 #if defined(SANSA_CLIPV2) || defined(SANSA_FUZEV2)
#define AS3525_MS_FREQ 120000000 #define AS3525_MS_FREQ 120000000
#define AS3525_IDE_FREQ 80000000 #define AS3525_IDE_FREQ 80000000
#else #else
Expand Down
2 changes: 1 addition & 1 deletion firmware/target/arm/as3525/fmradio-i2c-as3525.c
Expand Up @@ -49,7 +49,7 @@
#define I2C_SCL_PIN 7 #define I2C_SCL_PIN 7
#define I2C_SDA_PIN 6 #define I2C_SDA_PIN 6


#elif defined(SANSA_FUZE) || defined(SANSA_E200V2) #elif defined(SANSA_FUZE) || defined(SANSA_E200V2) || defined(SANSA_FUZEV2)
#define I2C_GPIO(x) GPIOA_PIN(x) #define I2C_GPIO(x) GPIOA_PIN(x)
#define I2C_GPIO_DIR GPIOA_DIR #define I2C_GPIO_DIR GPIOA_DIR
#define I2C_SCL_PIN 6 #define I2C_SCL_PIN 6
Expand Down
6 changes: 3 additions & 3 deletions firmware/target/arm/as3525/system-as3525.c
Expand Up @@ -189,7 +189,7 @@ static void sdram_init(void)
/* 16 bits external bus, low power SDRAM, 16 Mbits = 2 Mbytes */ /* 16 bits external bus, low power SDRAM, 16 Mbits = 2 Mbytes */
#define MEMORY_MODEL 0x21 #define MEMORY_MODEL 0x21


#elif defined(SANSA_E200V2) || defined(SANSA_FUZE) || defined(SANSA_CLIPV2) #elif defined(SANSA_E200V2) || defined(SANSA_FUZE) || defined(SANSA_CLIPV2) || defined(SANSA_FUZEV2)
/* 16 bits external bus, high performance SDRAM, 64 Mbits = 8 Mbytes */ /* 16 bits external bus, high performance SDRAM, 64 Mbits = 8 Mbytes */
#define MEMORY_MODEL 0x5 #define MEMORY_MODEL 0x5


Expand Down Expand Up @@ -218,7 +218,7 @@ static void sdram_init(void)


void system_init(void) void system_init(void)
{ {
#ifndef SANSA_CLIPV2 #if !(defined(SANSA_CLIPV2) || defined(SANSA_FUZEV2))
unsigned int reset_loops = 640; unsigned int reset_loops = 640;


CCU_SRC = 0x1fffff0 CCU_SRC = 0x1fffff0
Expand Down Expand Up @@ -266,7 +266,7 @@ void system_init(void)
CGU_PERI &= ~0x7f; /* pclk 24 MHz */ CGU_PERI &= ~0x7f; /* pclk 24 MHz */
CGU_PERI |= ((CLK_DIV(AS3525_PLLA_FREQ, AS3525_PCLK_FREQ) - 1) << 2) CGU_PERI |= ((CLK_DIV(AS3525_PLLA_FREQ, AS3525_PCLK_FREQ) - 1) << 2)
| 1; /* clk_in = PLLA */ | 1; /* clk_in = PLLA */
#endif /* SANSA_CLIPV2 */ #endif /* SANSA_CLIPV2 || SANSA_FUZEV2 */


#if 0 /* the GPIO clock is already enabled by the dualboot function */ #if 0 /* the GPIO clock is already enabled by the dualboot function */
CGU_PERI |= CGU_GPIO_CLOCK_ENABLE; CGU_PERI |= CGU_GPIO_CLOCK_ENABLE;
Expand Down
2 changes: 1 addition & 1 deletion firmware/target/arm/as3525/usb-as3525.c
Expand Up @@ -29,7 +29,7 @@
#if defined(SANSA_CLIP) #if defined(SANSA_CLIP)
#define USB_DETECT_PIN 6 #define USB_DETECT_PIN 6


#elif defined(SANSA_FUZE) || defined(SANSA_E200V2) #elif defined(SANSA_FUZE) || defined(SANSA_E200V2) || defined(SANSA_FUZEV2)
#define USB_DETECT_PIN 3 #define USB_DETECT_PIN 3


#elif defined(SANSA_C200V2) #elif defined(SANSA_C200V2)
Expand Down
2 changes: 1 addition & 1 deletion firmware/target/arm/crt0.S
Expand Up @@ -59,7 +59,7 @@ newstart:


#if CONFIG_CPU==AS3525 && !defined(BOOTLOADER) #if CONFIG_CPU==AS3525 && !defined(BOOTLOADER)


#ifndef SANSA_CLIPV2 #if !(defined(SANSA_CLIPV2) || defined(SANSA_FUZEV2))
/* relocate vectors */ /* relocate vectors */
mov r1, #0 @ destination mov r1, #0 @ destination
ldr r2, =_vectorscopy @ source ldr r2, =_vectorscopy @ source
Expand Down
18 changes: 1 addition & 17 deletions rbutil/mkamsboot/dualboot.S
Expand Up @@ -136,23 +136,7 @@ uclcopy:


cmp r1, #0 cmp r1, #0
beq boot_of beq boot_of
#elif defined(SANSA_FUZEV2) #elif defined(SANSA_E200V2) || defined(SANSA_FUZE) || 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

b boot_of
#elif defined(SANSA_E200V2) || defined(SANSA_FUZE)
/* LEFT button */ /* LEFT button */
ldr r0, =GPIOC ldr r0, =GPIOC
mov r1, #0 mov r1, #0
Expand Down
7 changes: 3 additions & 4 deletions rbutil/mkamsboot/mkamsboot.c
Expand Up @@ -175,8 +175,7 @@ static const int rb_model_num[] =
41, 41,
42, 42,
44, 44,
67, 67
0 // Unknown
}; };


struct md5sums { struct md5sums {
Expand Down Expand Up @@ -393,7 +392,7 @@ static unsigned char* load_rockbox_file(char* filename, int model, off_t* bufsiz
if (memcmp(rb_model_names[model],header + 4,4)!=0) { if (memcmp(rb_model_names[model],header + 4,4)!=0) {
fprintf(stderr,"[ERR] Model name \"%s\" not found in %s\n", fprintf(stderr,"[ERR] Model name \"%s\" not found in %s\n",
rb_model_names[model],filename); rb_model_names[model],filename);
//return NULL; return NULL;
} }


*bufsize = filesize(fd) - sizeof(header); *bufsize = filesize(fd) - sizeof(header);
Expand Down Expand Up @@ -421,7 +420,7 @@ static unsigned char* load_rockbox_file(char* filename, int model, off_t* bufsiz
if (sum != get_uint32be(header)) { if (sum != get_uint32be(header)) {
fprintf(stderr,"[ERR] Checksum mismatch in %s\n",filename); fprintf(stderr,"[ERR] Checksum mismatch in %s\n",filename);
fprintf(stderr, "%x %x\n", sum, get_uint32be(header)); fprintf(stderr, "%x %x\n", sum, get_uint32be(header));
//return NULL; return NULL;
} }
return buf; return buf;
} }
Expand Down

0 comments on commit 3c3e32f

Please sign in to comment.