diff --git a/firmware/SOURCES b/firmware/SOURCES index 43e48780c9..2b3e632ed7 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -1,24 +1,43 @@ -common/unicode.c -#ifdef ROCKBOX_HAS_LOGF -logf.c -#endif +ata_idle_notify.c backlight.c buffer.c -general.c +id3.c +powermgmt.c +system.c +usb.c +#ifdef ROCKBOX_HAS_LOGF +logf.c +#endif /* ROCKBOX_HAS_LOGF */ +#ifndef SIMULATOR +#ifdef RB_PROFILE +profile.c +#endif /* RB_PROFILE */ +hwcompat.c +kernel.c +rolo.c +thread.c +timer.c +#endif /* SIMULATOR */ +#if !defined(WIN32) || defined(SDL) +panic.c +debug.c +#endif /* !defined(WIN32) || defined(SDL) */ + +/* Common */ common/atoi.c common/crc32.c common/ctype.c #ifndef SIMULATOR common/dir.c common/file.c -#endif +#endif /* SIMULATOR */ #ifdef HAVE_DIRCACHE common/dircache.c -#endif +#endif /* HAVE_DIRCACHE */ common/disk.c #if !defined(SIMULATOR) || defined(__MINGW32__) || defined(__CYGWIN__) common/errno.c -#endif +#endif /* !defined(SIMULATOR) || defined(__MINGW32__) || defined(__CYGWIN__) */ common/memcmp.c common/memchr.c common/qsort.c @@ -30,190 +49,114 @@ common/strcat.c common/strchr.c common/strcmp.c common/strcpy.c -#if (CONFIG_CPU == SH7034) && !defined(SIMULATOR) -target/sh/strlen-sh.S -#else -common/strlen.c -#endif common/strncmp.c common/strncpy.c common/strrchr.c common/strtok.c common/timefuncs.c +common/unicode.c -#ifdef CPU_COLDFIRE -target/coldfire/memcpy-coldfire.S -target/coldfire/memmove-coldfire.S -target/coldfire/memset-coldfire.S -target/coldfire/memset16-coldfire.S -#ifndef SIMULATOR -#ifndef BOOTLOADER -target/coldfire/pcm-coldfire.c -#endif -target/coldfire/system-coldfire.c -#endif -#elif (CONFIG_CPU == SH7034) -target/sh/memcpy-sh.S -target/sh/memmove-sh.S -target/sh/memset-sh.S -#elif defined(CPU_ARM) -common/memcpy.c -common/memmove.c -target/arm/memset-arm.S -target/arm/memset16-arm.S -#else -common/memcpy.c -common/memmove.c -common/memset.c -common/memset16.c -#endif +/* Display */ #ifdef HAVE_LCD_CHARCELLS drivers/lcd-player-charset.c drivers/lcd-player.c -#endif +#endif /* HAVE_LCD_CHARCELLS */ + #ifdef HAVE_LCD_BITMAP arabjoin.c bidi.c +font_cache.c +font.c hangul.c +lru.c #if LCD_DEPTH == 1 drivers/lcd-recorder.c #elif LCD_DEPTH == 2 -#if (LCD_PIXELFORMAT == HORIZONTAL_PACKING) +#if LCD_PIXELFORMAT == HORIZONTAL_PACKING drivers/lcd-2bit-horz.c -#else -drivers/lcd-h100.c -#endif +#endif /* LCD_PIXELFORMAT == HORIZONTAL_PACKING */ #elif LCD_DEPTH == 16 drivers/lcd-16bit.c -#endif -#endif +#endif /* LCD_DEPTH */ +#endif /* HAVE_LCD_BITMAP */ + #ifdef HAVE_REMOTE_LCD #if LCD_REMOTE_DEPTH == 1 drivers/lcd-h100-remote.c #elif LCD_REMOTE_DEPTH == 2 drivers/lcd-remote-2bit-vi.c -#endif -#endif -#if CONFIG_LCD==LCD_H300 -drivers/lcd-h300.c -#endif -#ifndef TARGET_TREE -drivers/power.c -#endif +#endif /* LCD_REMOTE_DEPTH */ +#endif /* HAVE_REMOTE_LCD */ + +/* Misc. */ drivers/led.c -#ifndef SIMULATOR #ifndef TARGET_TREE drivers/adc.c -#endif -#ifdef HAVE_MMC -drivers/ata_mmc.c -#else -#ifdef HAVE_FLASH_DISK -drivers/ata_flash.c -#else -#ifndef SANSA_E200 -drivers/ata.c -#endif -#endif -#endif +drivers/power.c +#endif /* TARGET_TREE */ +#ifndef SIMULATOR drivers/button.c drivers/dac.c +drivers/serial.c +#endif /* SIMULATOR */ + +/* Storage */ +#ifndef SIMULATOR +#ifdef HAVE_MMC +drivers/ata_mmc.c +#else /* !HAVE_MMC */ +#ifdef HAVE_FLASH_DISK +drivers/ata_flash.c +#else /* !HAVE_FLASH_DISK */ +#ifndef SANSA_E200 +drivers/ata.c +#endif /* SANSA_E200 */ +#endif /* HAVE_FLASH_DISK */ +#endif /* HAVE_MMC */ drivers/fat.c -#ifdef CONFIG_TUNER -#if (CONFIG_TUNER & S1A0903X01) -drivers/fmradio.c -tuner_samsung.c -#endif -#if (CONFIG_TUNER & TEA5767) -drivers/fmradio_i2c.c -tuner_philips.c -#endif -#endif -#if CONFIG_I2C == I2C_COLDFIRE -drivers/i2c-coldfire.c -#elif CONFIG_I2C == I2C_PP5020 -drivers/i2c-pp5020.c -#elif CONFIG_I2C == I2C_PP5002 -drivers/i2c-pp5002.c -#elif CONFIG_I2C == I2C_PNX0101 -drivers/i2c-pnx0101.c -#elif CONFIG_I2C == I2C_S3C2440 -/* no i2c driver yet */ -#else -drivers/i2c.c -#endif -#if CONFIG_CODEC != SWCODEC -drivers/mas.c -#endif +#endif /* SIMULATOR */ + +/* EEPROM */ #ifdef HAVE_EEPROM drivers/eeprom_24cxx.c #ifdef HAVE_EEPROM_SETTINGS eeprom_settings.c -#endif -#endif -#if (CONFIG_RTC == RTC_M41ST84W) || (CONFIG_RTC == RTC_PCF50606) \ - || (CONFIG_RTC == RTC_PCF50605) || (CONFIG_RTC == RTC_E8564) -drivers/rtc.c -#endif -drivers/serial.c -#endif /* !SIMULATOR */ -#ifdef HAVE_LCD_BITMAP -lru.c -font_cache.c -font.c -#endif -id3.c -ata_idle_notify.c +#endif /* HAVE_EEPROM_SETTINGS */ +#endif /* HAVE_EEPROM */ + +/* RTC */ +#if (CONFIG_RTC == RTC_M41ST84W) \ + || (CONFIG_RTC == RTC_PCF50606) \ + || (CONFIG_RTC == RTC_PCF50605) \ + || (CONFIG_RTC == RTC_E8564) #ifndef SIMULATOR -#ifdef RB_PROFILE -profile.c -#endif /* RB_PROFILE */ -hwcompat.c -kernel.c -rolo.c -thread.c -timer.c -#ifdef CPU_PP -target/arm/crt0-pp.S -#elif defined(CPU_ARM) -target/arm/crt0.S -#elif defined(CPU_COLDFIRE) -target/coldfire/crt0.S -#elif CONFIG_CPU == SH7034 -target/sh/crt0.S -#else -crt0.S -#endif -drivers/lcd.S -#endif +drivers/rtc.c +#endif /* SIMULATOR */ +#endif /* (CONFIG_RTC == RTC_*) + +/* Tuner */ +#ifdef CONFIG_TUNER +#ifndef SIMULATOR +#if (CONFIG_TUNER & S1A0903X01) +drivers/fmradio.c +tuner_samsung.c +#endif /* (CONFIG_TUNER & S1A0903X01) */ +#if (CONFIG_TUNER & TEA5767) +drivers/fmradio_i2c.c +tuner_philips.c +#endif /* (CONFIG_TUNER & TEA5767) */ +#endif /*SIMULATOR */ +#endif /* CONFIG_TUNER */ + +/* Sound */ mp3_playback.c mp3data.c -#if CONFIG_CODEC != SWCODEC -mpeg.c -#endif -#if !defined(WIN32) || defined(SDL) -panic.c -debug.c -#endif -powermgmt.c -system.c -usb.c -#if (CONFIG_CPU == SH7034) && !defined(SIMULATOR) -bitswap.S -descramble.S -#endif -#if defined(HAVE_UDA1380) && !defined(SIMULATOR) -drivers/uda1380.c -#elif (defined(HAVE_WM8975) || defined(HAVE_WM8751)) && !defined(SIMULATOR) -drivers/wm8975.c -#elif defined(HAVE_WM8758) && !defined(SIMULATOR) -drivers/wm8758.c -#elif (defined(HAVE_WM8731) || defined(HAVE_WM8721)) && !defined(SIMULATOR) -drivers/wm8731l.c -#elif defined(HAVE_TLV320) && !defined(SIMULATOR) -drivers/tlv320.c -#endif -#if (CONFIG_CODEC == SWCODEC) && !defined(BOOTLOADER) +sound.c + +#if CONFIG_CODEC == SWCODEC + +#ifndef BOOTLOADER +general.c pcm_sampr.c replaygain.c #ifndef SIMULATOR @@ -221,51 +164,155 @@ pcm_playback.c #endif /* SIMULATOR */ #ifdef HAVE_RECORDING enc_base.c -#if defined(CPU_COLDFIRE) #ifndef SIMULATOR pcm_record.c #endif /* SIMULATOR */ -#endif /* CPU_COLDFIRE */ #endif /* HAVE_RECORDING */ -#endif /* SWCODEC && !BOOTLOADER */ -sound.c -#if defined(IRIVER_IFP7XX_SERIES) && defined(STUB) -common/sscanf.c -usb_serial.c -#endif +#endif /* BOOTLOADER */ + +#else /* !SWCODEC */ + +#ifndef BOOTLOADER +mpeg.c +#ifndef SIMULATOR +drivers/mas.c +#endif /* SIMULATOR */ +#endif /* BOOTLOADER */ + +#endif /* SWCODEC */ + +/* Audio codec */ +#ifndef SIMULATOR +#if defined(HAVE_UDA1380) +drivers/uda1380.c +#elif defined(HAVE_WM8975) || defined(HAVE_WM8751) +drivers/wm8975.c +#elif defined(HAVE_WM8758) +drivers/wm8758.c +#elif defined(HAVE_WM8731) || defined(HAVE_WM8721) +drivers/wm8731l.c +#elif defined(HAVE_TLV320) +drivers/tlv320.c +#endif /* defined(HAVE_*) */ +#endif /* SIMULATOR */ + +/* USBOTG */ +#if !defined(SIMULATOR) && !defined(BOOTLOADER) #if CONFIG_USBOTG == USBOTG_ISP1362 drivers/isp1362.c -#endif -#if CONFIG_USBOTG == USBOTG_M5636 +#elif CONFIG_USBOTG == USBOTG_M5636 drivers/m5636.c +#endif /* CONFIG_USBOTG */ +#endif /* !defined(SIMULATOR) && !defined(BOOTLOADER) */ + +/* CPU Specific - By class then particular chip if applicable */ +#if defined(CPU_SH) + +#ifndef SIMULATOR +bitswap.S +crt0.S +descramble.S +drivers/i2c.c +drivers/lcd.S +target/sh/crt0.S +target/sh/memcpy-sh.S +target/sh/memmove-sh.S +target/sh/memset-sh.S +target/sh/strlen-sh.S +#endif /* SIMULATOR */ + +#elif defined(CPU_COLDFIRE) + +common/strlen.c +#ifndef SIMULATOR +target/coldfire/crt0.S +target/coldfire/memcpy-coldfire.S +target/coldfire/memmove-coldfire.S +target/coldfire/memset-coldfire.S +#ifdef HAVE_LCD_COLOR +target/coldfire/memset16-coldfire.S +#endif /* HAVE_LCD_COLOR */ +target/coldfire/system-coldfire.c +#ifndef BOOTLOADER +target/coldfire/pcm-coldfire.c +#endif /* BOOTLOADER */ +#if CONFIG_I2C == I2C_COLDFIRE +target/coldfire/i2c-coldfire.c +#endif /* CONFIG_I2C == I2C_COLDFIRE */ +#endif /* SIMULATOR */ + +#elif defined(CPU_PP) || defined(CPU_ARM) +/* CPU_PP => CPU_ARM, CPU_ARM !=> CPU_PP */ +common/memcpy.c +common/memmove.c +common/strlen.c +drivers/lcd.S +#ifndef SIMULATOR +target/arm/memset-arm.S +target/arm/memset16-arm.S +#if CONFIG_I2C == I2C_PP5020 +drivers/i2c-pp5020.c +#elif CONFIG_I2C == I2C_PP5002 +drivers/i2c-pp5002.c +#elif CONFIG_I2C == I2C_PNX0101 +drivers/i2c-pnx0101.c +#elif CONFIG_I2C == I2C_S3C2440 +/* no i2c driver yet */ #endif +#if defined(CPU_PP) +target/arm/crt0-pp.S +#elif defined(CPU_ARM) +target/arm/crt0.S +#endif /* defined(CPU_*) */ +#endif /* SIMULATOR */ + +#else + +common/memcpy.c +common/memmove.c +common/memset.c +common/memset16.c +common/strlen.c +#ifndef SIMULATOR +crt0.S +drivers/i2c.c +#endif /* SIMULATOR */ + +#endif /* defined(CPU_*) */ #ifdef SANSA_E200 #ifndef SIMULATOR +target/arm/wmcodec-pp.c target/arm/sandisk/sansa-e200/ata-e200.c target/arm/sandisk/sansa-e200/lcd-e200.c target/arm/sandisk/sansa-e200/adc-e200.c -target/arm/wmcodec-pp.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* SANSA_E200 */ #ifdef IAUDIO_X5 target/coldfire/iaudio/x5/power-x5.c #ifndef SIMULATOR -target/coldfire/iaudio/x5/button-x5.c -target/coldfire/iaudio/x5/lcd-as-x5.S -target/coldfire/iaudio/x5/lcd-x5.c target/coldfire/pcf50606-coldfire.c -target/coldfire/iaudio/x5/pcf50606-x5.c target/coldfire/iaudio/x5/adc-x5.c target/coldfire/iaudio/x5/ata-x5.c +target/coldfire/iaudio/x5/backlight-x5.c +target/coldfire/iaudio/x5/button-x5.c +target/coldfire/iaudio/x5/lcd-as-x5.S +target/coldfire/iaudio/x5/lcd-remote-x5.c +target/coldfire/iaudio/x5/lcd-x5.c +target/coldfire/iaudio/x5/m5636-x5.c +target/coldfire/iaudio/x5/pcf50606-x5.c target/coldfire/iaudio/x5/system-x5.c target/coldfire/iaudio/x5/usb-x5.c -target/coldfire/iaudio/x5/backlight-x5.c -target/coldfire/iaudio/x5/m5636-x5.c -target/coldfire/iaudio/x5/lcd-remote-x5.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IAUDIO_X5 */ + +#ifdef IRIVER_IFP7XX_SERIES +#ifdef STUB +usb_serial.c +common/sscanf.c +#endif /* STUB */ +#endif /* IRIVER_IFP7XX_SERIES */ #ifdef IRIVER_H300_SERIES target/coldfire/iriver/h300/power-h300.c @@ -276,13 +323,15 @@ target/coldfire/iriver/system-iriver.c target/coldfire/iriver/h300/adc-h300.c target/coldfire/iriver/h300/backlight-h300.c target/coldfire/iriver/h300/button-h300.c -target/coldfire/iriver/h300/lcd-as-h300.S target/coldfire/iriver/h300/pcf50606-h300.c +target/coldfire/iriver/h300/lcd-as-h300.S +target/coldfire/iriver/h300/lcd-h300.c target/coldfire/iriver/h300/usb-h300.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IRIVER_H300_SERIES */ #ifdef IRIVER_H100_SERIES +target/coldfire/iriver/h100/lcd-h100.c target/coldfire/iriver/h100/power-h100.c #ifndef SIMULATOR target/coldfire/iriver/ata-iriver.c @@ -290,160 +339,160 @@ target/coldfire/iriver/system-iriver.c target/coldfire/iriver/h100/adc-h100.c target/coldfire/iriver/h100/backlight-h100.c target/coldfire/iriver/h100/button-h100.c +target/coldfire/iriver/h100/lcd-as-h100.S target/coldfire/iriver/h100/usb-h100.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IRIVER_H100_SERIES */ #ifdef IRIVER_H10 #ifndef SIMULATOR +target/arm/ata-pp5020.c +target/arm/wmcodec-pp.c +target/arm/iriver/h10/adc-h10.c target/arm/iriver/h10/backlight-h10.c target/arm/iriver/h10/button-h10.c -target/arm/ata-pp5020.c +target/arm/iriver/h10/lcd-h10_20gb.c target/arm/iriver/h10/power-h10.c target/arm/iriver/h10/usb-h10.c -target/arm/iriver/h10/lcd-h10_20gb.c -target/arm/iriver/h10/adc-h10.c -target/arm/wmcodec-pp.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IRIVER_H10 */ #ifdef IRIVER_H10_5GB #ifndef SIMULATOR +target/arm/ata-pp5020.c +target/arm/wmcodec-pp.c +target/arm/iriver/h10/adc-h10.c target/arm/iriver/h10/backlight-h10.c target/arm/iriver/h10/button-h10.c -target/arm/ata-pp5020.c +target/arm/iriver/h10/lcd-h10_5gb.c target/arm/iriver/h10/power-h10.c target/arm/iriver/h10/usb-h10.c -target/arm/iriver/h10/lcd-h10_5gb.c -target/arm/iriver/h10/adc-h10.c -target/arm/wmcodec-pp.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IRIVER_H10_5GB */ #ifdef GIGABEAT_F #ifndef SIMULATOR +drivers/generic_i2c.c +target/arm/gigabeat/meg-fx/adc-meg-fx.c +target/arm/gigabeat/meg-fx/ata-meg-fx.c target/arm/gigabeat/meg-fx/backlight-meg-fx.c target/arm/gigabeat/meg-fx/button-meg-fx.c -target/arm/gigabeat/meg-fx/ata-meg-fx.c -target/arm/gigabeat/meg-fx/power-meg-fx.c -target/arm/gigabeat/meg-fx/usb-meg-fx.c -target/arm/gigabeat/meg-fx/lcd-meg-fx.c -target/arm/gigabeat/meg-fx/sc606-meg-fx.c -target/arm/gigabeat/meg-fx/adc-meg-fx.c -drivers/generic_i2c.c target/arm/gigabeat/meg-fx/i2c-meg-fx.c +target/arm/gigabeat/meg-fx/lcd-meg-fx.c +target/arm/gigabeat/meg-fx/power-meg-fx.c +target/arm/gigabeat/meg-fx/sc606-meg-fx.c +target/arm/gigabeat/meg-fx/usb-meg-fx.c target/arm/gigabeat/meg-fx/wmcodec-meg-fx.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* GIGABEAT_F */ #ifdef ELIO_TPJ1022 #ifndef SIMULATOR +target/arm/ata-pp5020.c +target/arm/wmcodec-pp.c +target/arm/tatung/tpj1022/adc-tpj1022.c target/arm/tatung/tpj1022/backlight-tpj1022.c target/arm/tatung/tpj1022/button-tpj1022.c -target/arm/ata-pp5020.c +target/arm/tatung/tpj1022/lcd-tpj1022.c target/arm/tatung/tpj1022/power-tpj1022.c target/arm/tatung/tpj1022/usb-tpj1022.c -target/arm/tatung/tpj1022/lcd-tpj1022.c -target/arm/tatung/tpj1022/adc-tpj1022.c -target/arm/wmcodec-pp.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* ELIO_TPJ1022 */ #ifdef IPOD_4G #ifndef SIMULATOR drivers/lcd-ipod.c drivers/pcf50605.c +target/arm/wmcodec-pp.c target/arm/ata-pp5020.c target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-4g_color.c target/arm/ipod/button-clickwheel.c target/arm/ipod/power-ipod.c target/arm/ipod/usb-ipod.c -target/arm/wmcodec-pp.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IPOD_4G */ #ifdef IPOD_COLOR #ifndef SIMULATOR drivers/lcd-ipod.c drivers/pcf50605.c target/arm/ata-pp5020.c +target/arm/wmcodec-pp.c target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-4g_color.c target/arm/ipod/button-clickwheel.c target/arm/ipod/power-ipod.c target/arm/ipod/usb-ipod.c -target/arm/wmcodec-pp.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IPOD_COLOR */ #ifdef IPOD_NANO #ifndef SIMULATOR drivers/lcd-ipod.c drivers/pcf50605.c target/arm/ata-pp5020.c +target/arm/wmcodec-pp.c target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-nano_video.c target/arm/ipod/button-clickwheel.c target/arm/ipod/power-ipod.c target/arm/ipod/usb-ipod.c -target/arm/wmcodec-pp.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IPOD_NANO */ #ifdef IPOD_VIDEO #ifndef SIMULATOR +drivers/lcd-ipodvideo.c drivers/pcf50605.c target/arm/ata-pp5020.c +target/arm/wmcodec-pp.c target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-nano_video.c target/arm/ipod/button-clickwheel.c target/arm/ipod/power-ipod.c target/arm/ipod/usb-ipod.c -drivers/lcd-ipodvideo.c -target/arm/wmcodec-pp.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IPOD_VIDEO */ #ifdef IPOD_3G #ifndef SIMULATOR drivers/lcd-ipod.c drivers/pcf50605.c target/arm/ata-pp5002.c +target/arm/wmcodec-pp.c target/arm/ipod/adc-ipod.c target/arm/ipod/3g/backlight-3g.c target/arm/ipod/3g/button-3g.c target/arm/ipod/power-ipod.c target/arm/ipod/usb-ipod.c -target/arm/wmcodec-pp.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IPOD_3G */ #ifdef IPOD_MINI #ifndef SIMULATOR drivers/lcd-ipod.c drivers/pcf50605.c target/arm/ata-pp5020.c +target/arm/wmcodec-pp.c target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-mini1g_mini2g.c target/arm/ipod/button-mini1g.c target/arm/ipod/power-ipod.c target/arm/ipod/usb-ipod.c -target/arm/wmcodec-pp.c -#endif -#endif - +#endif /* SIMULATOR */ +#endif /* IPOD_MINI */ #ifdef IPOD_MINI2G #ifndef SIMULATOR drivers/lcd-ipod.c drivers/pcf50605.c target/arm/ata-pp5020.c +target/arm/wmcodec-pp.c target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-mini1g_mini2g.c target/arm/ipod/button-clickwheel.c target/arm/ipod/power-ipod.c target/arm/ipod/usb-ipod.c -target/arm/wmcodec-pp.c -#endif -#endif +#endif /* SIMULATOR */ +#endif /* IPOD_MINI2G */ diff --git a/firmware/drivers/lcd.S b/firmware/drivers/lcd.S index d9e7092c94..ed0bc8d15b 100755 --- a/firmware/drivers/lcd.S +++ b/firmware/drivers/lcd.S @@ -48,23 +48,23 @@ * - DS -> Data Selection line, latched at the rising edge * of the 8th serial clock (*) : * 0 : instruction register, - * 1 : data register; + * 1 : data register; * - SC -> Serial Clock line (SDA). * - SD -> Serial Data line (SCK), latched at the rising edge - * of each serial clock (*). + * of each serial clock (*). * * _ _ * /CS \ / * \______________________________________________________/ - * _____ ____ ____ ____ ____ ____ ____ ____ ____ _____ + * _____ ____ ____ ____ ____ ____ ____ ____ ____ _____ * SD \/ D7 \/ D6 \/ D5 \/ D4 \/ D3 \/ D2 \/ D1 \/ D0 \/ * _____/\____/\____/\____/\____/\____/\____/\____/\____/\_____ * - * _____ _ _ _ _ _ _ _ ________ + * _____ _ _ _ _ _ _ _ ________ * SC \ * \ * \ * \ * \ * \ * \ * \ * * \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ - * _ _________________________________________________________ - * DS \/ + * _ _________________________________________________________ + * DS \/ * _/\_________________________________________________________ * */ @@ -93,14 +93,14 @@ _lcd_write_command: mov.l .lcdr,r3 /* put lcd data port address in r3 */ mov r4,r1 /* copy data byte to r1 */ mov #1,r5 /* set byte count to 1 (!) */ - + /* This code will fail if an interrupt changes the contents of PBDRL. * If so, we must disable the interrupt here. */ mov.b @r3,r0 /* r0 = PBDRL */ or #(LCD_SD),r0 /* r0 |= LCD_SD */ and #(~(LCD_CS|LCD_DS|LCD_SC)),r0 /* r0 &= ~(LCD_CS|LCD_DS|LCD_SC) */ - + bra .single_transfer /* jump into the transfer loop */ neg r0,r2 /* r2 = 0 - r0 */ @@ -131,7 +131,7 @@ _lcd_write_data: /* This code will fail if an interrupt changes the contents of PBDRL. * If so, we must disable the interrupt here. If disabling interrupts - * for a long time (~9200 clks = ~830 µs for transferring 112 bytes on + * for a long time (~9200 clks = ~830 µs for transferring 112 bytes on * recorders)is undesirable, the loop has to be rewritten to * disable/precalculate/transfer/enable for each iteration. However, * this would significantly decrease performance. */ @@ -148,7 +148,7 @@ _lcd_write_data: .multi_transfer: mov.b @r4+,r1 /* load data byte from memory */ -.single_transfer: +.single_transfer: shll16 r1 /* shift data to most significant byte */ shll8 r1 @@ -157,85 +157,85 @@ _lcd_write_data: /* uses neg here for compatibility with recorder version */ bt 1f /* data bit = 1? */ and #(~LCD_SD),r0 /* no: r0 &= ~LCD_SD */ - 1: + 1: shll r1 /* next shift here for alignment */ mov.b r0,@r3 /* set data to port */ or #(LCD_SC),r0 /* rise SC (independent of SD level) */ mov.b r0,@r3 /* set to port */ - + neg r2,r0 - bt 1f - and #(~LCD_SD),r0 - 1: - mov.b r0,@r3 - or #(LCD_SC),r0 - mov.b r0,@r3 - - shll r1 - neg r2,r0 - bt 1f - and #(~LCD_SD),r0 - 1: - shll r1 - mov.b r0,@r3 - or #(LCD_SC),r0 - mov.b r0,@r3 - - neg r2,r0 - bt 1f - and #(~LCD_SD),r0 - 1: - mov.b r0,@r3 - or #(LCD_SC),r0 - mov.b r0,@r3 - - shll r1 - neg r2,r0 bt 1f and #(~LCD_SD),r0 - 1: - shll r1 - mov.b r0,@r3 - or #(LCD_SC),r0 - mov.b r0,@r3 - - neg r2,r0 - bt 1f - and #(~LCD_SD),r0 - 1: - mov.b r0,@r3 - or #(LCD_SC),r0 - mov.b r0,@r3 - - shll r1 - neg r2,r0 - bt 1f - and #(~LCD_SD),r0 - 1: - shll r1 + 1: mov.b r0,@r3 or #(LCD_SC),r0 - mov.b r0,@r3 + mov.b r0,@r3 - neg r2,r0 - bt 1f + shll r1 + neg r2,r0 + bt 1f and #(~LCD_SD),r0 - 1: - mov.b r0,@r3 + 1: + shll r1 + mov.b r0,@r3 or #(LCD_SC),r0 - mov.b r0,@r3 + mov.b r0,@r3 + + neg r2,r0 + bt 1f + and #(~LCD_SD),r0 + 1: + mov.b r0,@r3 + or #(LCD_SC),r0 + mov.b r0,@r3 + + shll r1 + neg r2,r0 + bt 1f + and #(~LCD_SD),r0 + 1: + shll r1 + mov.b r0,@r3 + or #(LCD_SC),r0 + mov.b r0,@r3 + + neg r2,r0 + bt 1f + and #(~LCD_SD),r0 + 1: + mov.b r0,@r3 + or #(LCD_SC),r0 + mov.b r0,@r3 + + shll r1 + neg r2,r0 + bt 1f + and #(~LCD_SD),r0 + 1: + shll r1 + mov.b r0,@r3 + or #(LCD_SC),r0 + mov.b r0,@r3 + + neg r2,r0 + bt 1f + and #(~LCD_SD),r0 + 1: + mov.b r0,@r3 + or #(LCD_SC),r0 + mov.b r0,@r3 #else /* HAVE_LCD_CHARCELLS */ /* further optimized version, exploits that SD is on bit 0 for recorders */ - .align 2 -.multi_transfer: + .align 2 +.multi_transfer: mov.b @r4+,r1 /* load data byte from memory */ - nop + nop .single_transfer: shll16 r1 /* shift data to most significant byte */ - shll8 r1 + shll8 r1 not r1,r1 /* and invert for use with negc */ shll r1 /* shift the MSB into carry */ @@ -245,46 +245,46 @@ _lcd_write_data: or #(LCD_SC),r0 /* rise SC (independent of SD level) */ mov.b r0,@r3 /* set to port */ - negc r2,r0 - mov.b r0,@r3 - or #(LCD_SC),r0 - mov.b r0,@r3 - - shll r1 - negc r2,r0 - shll r1 - mov.b r0,@r3 - or #(LCD_SC),r0 - mov.b r0,@r3 - - negc r2,r0 - mov.b r0,@r3 - or #(LCD_SC),r0 - mov.b r0,@r3 - - shll r1 - negc r2,r0 - shll r1 - mov.b r0,@r3 + negc r2,r0 + mov.b r0,@r3 or #(LCD_SC),r0 mov.b r0,@r3 - negc r2,r0 - mov.b r0,@r3 + shll r1 + negc r2,r0 + shll r1 + mov.b r0,@r3 or #(LCD_SC),r0 - mov.b r0,@r3 + mov.b r0,@r3 - shll r1 - negc r2,r0 - shll r1 - mov.b r0,@r3 + negc r2,r0 + mov.b r0,@r3 or #(LCD_SC),r0 - mov.b r0,@r3 + mov.b r0,@r3 - negc r2,r0 - mov.b r0,@r3 + shll r1 + negc r2,r0 + shll r1 + mov.b r0,@r3 or #(LCD_SC),r0 - mov.b r0,@r3 + mov.b r0,@r3 + + negc r2,r0 + mov.b r0,@r3 + or #(LCD_SC),r0 + mov.b r0,@r3 + + shll r1 + negc r2,r0 + shll r1 + mov.b r0,@r3 + or #(LCD_SC),r0 + mov.b r0,@r3 + + negc r2,r0 + mov.b r0,@r3 + or #(LCD_SC),r0 + mov.b r0,@r3 #endif /* HAVE_LCD_CHARCELLS */ @@ -293,7 +293,7 @@ _lcd_write_data: bf .multi_transfer /* no: next iteration */ or #(LCD_CS|LCD_DS|LCD_SD|LCD_SC),r0 /* restore port */ - rts + rts mov.b r0,@r3 /* This is the place to reenable the interrupts, if we have disabled @@ -305,70 +305,4 @@ _lcd_write_data: .end: .size _lcd_write_command,.end-_lcd_write_command -#elif defined(IRIVER_H100_SERIES) - .section .icode,"ax",@progbits - - .align 2 - .global lcd_write_command - .type lcd_write_command,@function - -lcd_write_command: - move.l (4,%sp),%d0 - lea MBAR2,%a1 - move.l #~8,%d1 - and.l %d1,(0xb4,%a1) - move.w %d0,0xf0000000 - rts - - .align 2 - .global lcd_write_command_ex - .type lcd_write_command_ex,@function - -lcd_write_command_ex: - lea MBAR2,%a1 - - move.l (4,%sp),%d0 /* Command */ - - move.l #~8,%d1 /* Set A0 = 0 */ - and.l %d1,(0xb4,%a1) - move.w %d0,0xf0000000 /* Write to LCD */ - - not.l %d1 /* Set A0 = 1 */ - or.l %d1,(0xb4,%a1) - - move.l (8,%sp),%d0 /* Data */ - cmp.l #0xffffffff,%d0 /* -1? */ - beq.b .last - move.w %d0,0xf0000000 /* Write to LCD */ - - move.l (12,%sp),%d0 /* Data */ - cmp.l #0xffffffff,%d0 /* -1? */ - beq.b .last - move.w %d0,0xf0000000 /* Write to LCD */ - -.last: - rts - - .align 2 - .global lcd_write_data - .type lcd_write_data,@function - -lcd_write_data: - move.l (4,%sp),%a0 /* Data pointer */ - move.l (8,%sp),%d0 /* Length */ - lea MBAR2,%a1 - moveq #8,%d1 - or.l %d1,(0xb4,%a1) - - lea 0xf0000000,%a1 -.loop: - /* When running in IRAM, this loop takes 7 cycles plus the LCD write. - The 7 cycles are necessary to follow the LCD timing specs - at 140MHz */ - move.b (%a0)+,%d1 /* 3(1/0) */ - move.w %d1,(%a1) /* 1(0/1) */ - subq.l #1,%d0 /* 1(0/0) */ - nop /* 1(0/0) */ - bne .loop /* 2(0/0) */ - rts #endif diff --git a/firmware/drivers/power.c b/firmware/drivers/power.c index af70ac8ef2..e48993c2aa 100644 --- a/firmware/drivers/power.c +++ b/firmware/drivers/power.c @@ -65,26 +65,6 @@ bool radio_power(bool status) void power_init(void) { -#if CONFIG_CPU == MCF5249 -#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES) - or_l(0x00080000, &GPIO1_OUT); - or_l(0x00080000, &GPIO1_ENABLE); - or_l(0x00080000, &GPIO1_FUNCTION); - -#ifndef BOOTLOADER - /* The boot loader controls the power */ - ide_power_enable(true); -#endif - or_l(0x80000000, &GPIO_ENABLE); - or_l(0x80000000, &GPIO_FUNCTION); -#ifdef HAVE_SPDIF_POWER - spdif_power_enable(false); -#endif -#ifdef IRIVER_H300_SERIES - pcf50606_init(); -#endif -#endif -#else #ifdef HAVE_POWEROFF_ON_PB5 PBCR2 &= ~0x0c00; /* GPIO for PB5 */ or_b(0x20, &PBIORL); @@ -100,19 +80,14 @@ void power_init(void) or_b(0x04, &PADRL); /* drive PA2 high for tuner disable */ or_b(0x04, &PAIORL); /* output for PA2 */ #endif -#endif } #ifdef CONFIG_CHARGING bool charger_inserted(void) { -#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES) - return (GPIO1_READ & 0x00400000)?true:false; -#elif defined(GMINI_ARCH) +#if defined(GMINI_ARCH) return (P7 & 0x80) == 0; -#elif defined(IAUDIO_X5) - return (GPIO1_READ & 0x01000000)?true:false; #elif CONFIG_CHARGING == CHARGING_CONTROL /* Recorder */ return adc_read(ADC_EXT_POWER) > 0x100; @@ -155,44 +130,16 @@ bool charging_state(void) { charge. My tests show that ADC readings below about 0x80 means that the LTC1734 is only maintaining the charge. */ return adc_read(ADC_EXT_POWER) >= 0x80; -#elif defined(IRIVER_H100_SERIES) /* FIXME */ - return charger_inserted(); -#elif defined IRIVER_H300_SERIES - return (GPIO_READ & 0x00800000)?true:false; #endif } #endif -#ifdef HAVE_SPDIF_POWER -void spdif_power_enable(bool on) -{ - or_l(0x01000000, &GPIO1_FUNCTION); - or_l(0x01000000, &GPIO1_ENABLE); - -#ifdef SPDIF_POWER_INVERTED - if(!on) -#else - if(on) -#endif - and_l(~0x01000000, &GPIO1_OUT); - else - or_l(0x01000000, &GPIO1_OUT); -} -#endif - #ifndef HAVE_MMC void ide_power_enable(bool on) { (void)on; -#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES) - if(on) - and_l(~0x80000000, &GPIO_OUT); - else - or_l(0x80000000, &GPIO_OUT); -#elif defined(IAUDIO_X5) - /* X5 TODO */ -#elif defined(GMINI_ARCH) +#if defined(GMINI_ARCH) if(on) P1 |= 0x08; else @@ -244,11 +191,7 @@ void ide_power_enable(bool on) bool ide_powered(void) { -#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES) - return (GPIO_OUT & 0x80000000)?false:true; -#elif defined(IAUDIO_X5) - return false; /* X5 TODO */ -#elif defined(GMINI_ARCH) +#if defined(GMINI_ARCH) return (P1 & 0x08?true:false); #elif defined(TOSHIBA_GIGABEAT_F) return false; @@ -279,10 +222,7 @@ bool ide_powered(void) void power_off(void) { set_irq_level(HIGHEST_IRQ_LEVEL); -#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES) - and_l(~0x00080000, &GPIO1_OUT); - asm("halt"); -#elif CONFIG_CPU == PNX0101 +#if CONFIG_CPU == PNX0101 GPIO1_CLR = 1 << 16; GPIO2_SET = 1; #elif defined(GMINI_ARCH) diff --git a/firmware/export/config.h b/firmware/export/config.h index 765bcfdb07..18c0ef7d17 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h @@ -228,6 +228,11 @@ #define HAVE_SCHEDULER_BOOSTCTRL #endif +/* define for all cpus from SH family */ +#if (CONFIG_CPU == SH7034) +#define CPU_SH +#endif + /* define for all cpus from coldfire family */ #if (CONFIG_CPU == MCF5249) || (CONFIG_CPU == MCF5250) #define CPU_COLDFIRE diff --git a/firmware/drivers/i2c-coldfire.c b/firmware/target/coldfire/i2c-coldfire.c similarity index 100% rename from firmware/drivers/i2c-coldfire.c rename to firmware/target/coldfire/i2c-coldfire.c diff --git a/firmware/drivers/lcd-h100.c b/firmware/target/coldfire/iriver/h100/lcd-h100.c similarity index 100% rename from firmware/drivers/lcd-h100.c rename to firmware/target/coldfire/iriver/h100/lcd-h100.c diff --git a/firmware/drivers/lcd-h300.c b/firmware/target/coldfire/iriver/h300/lcd-h300.c similarity index 100% rename from firmware/drivers/lcd-h300.c rename to firmware/target/coldfire/iriver/h300/lcd-h300.c diff --git a/firmware/target/coldfire/system-target.h b/firmware/target/coldfire/system-target.h index 24e3fb8705..d885e7551d 100644 --- a/firmware/target/coldfire/system-target.h +++ b/firmware/target/coldfire/system-target.h @@ -147,6 +147,10 @@ static inline void invalidate_icache(void) #endif void coldfire_set_pllcr_audio_bits(long bits); +#ifdef HRIVER_H100_SERIES +bool detect_flashed_rockbox(void); +#endif + /* 11.2896 MHz */ #define CPUFREQ_DEFAULT_MULT 1 #define CPUFREQ_DEFAULT (CPUFREQ_DEFAULT_MULT * CPU_FREQ)