diff options
| author | Dave Chapman <dave@dchapman.com> | 2006-02-05 18:25:41 +0000 |
|---|---|---|
| committer | Dave Chapman <dave@dchapman.com> | 2006-02-05 18:25:41 +0000 |
| commit | 2924a48ca55e0207d939998307d82e4b7f4502f8 (patch) | |
| tree | 5271d5b8917a5db9778a2cce6b35fe578c75b02b | |
| parent | 75a60fbf69fb7d7be5839b35efc8253d682a1c7d (diff) | |
| download | rockbox-2924a48ca55e0207d939998307d82e4b7f4502f8.zip rockbox-2924a48ca55e0207d939998307d82e4b7f4502f8.tar.gz rockbox-2924a48ca55e0207d939998307d82e4b7f4502f8.tar.bz2 rockbox-2924a48ca55e0207d939998307d82e4b7f4502f8.tar.xz | |
Create config file for iPod 4G greyscale and various iPod 3G/4G greyscale fixes
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8585 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/SOURCES | 2 | ||||
| -rw-r--r-- | firmware/boot.lds | 2 | ||||
| -rw-r--r-- | firmware/drivers/lcd-2bit-horz.c | 53 | ||||
| -rw-r--r-- | firmware/drivers/lcd-ipod.c | 13 | ||||
| -rw-r--r-- | firmware/drivers/power.c | 2 | ||||
| -rw-r--r-- | firmware/export/config-ipod4g.h | 95 | ||||
| -rw-r--r-- | firmware/export/config.h | 2 | ||||
| -rw-r--r-- | firmware/usb.c | 2 |
8 files changed, 151 insertions, 20 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES index ce7be4f..4e32266 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -112,7 +112,7 @@ drivers/mas.c #ifdef IRIVER_H300_SERIES drivers/pcf50606.c #endif -#if defined(APPLE_IPODCOLOR) || defined(APPLE_IPODNANO) || defined(APPLE_IPODVIDEO) || defined(APPLE_IPOD3G) +#if defined(APPLE_IPODCOLOR) || defined(APPLE_IPODNANO) || defined(APPLE_IPODVIDEO) || defined(APPLE_IPOD3G) || defined(APPLE_IPOD4G) drivers/pcf50605.c #endif #if (CONFIG_RTC == RTC_M41ST84W) || (CONFIG_RTC == RTC_PCF50606) diff --git a/firmware/boot.lds b/firmware/boot.lds index fc0d2c8..2f45941 100644 --- a/firmware/boot.lds +++ b/firmware/boot.lds @@ -52,7 +52,7 @@ INPUT(crt0.o) #define FLASHSIZE 256K - ROM_START #endif -#if (CONFIG_CPU!=PP5002) && (CONFIG_CPU!=PP5002) +#if (CONFIG_CPU!=PP5002) && (CONFIG_CPU!=PP5020) MEMORY { DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE diff --git a/firmware/drivers/lcd-2bit-horz.c b/firmware/drivers/lcd-2bit-horz.c index 01f5d93..de1af90 100644 --- a/firmware/drivers/lcd-2bit-horz.c +++ b/firmware/drivers/lcd-2bit-horz.c @@ -610,8 +610,27 @@ void lcd_putsxy(int x, int y, const unsigned char *str) /*** line oriented text output ***/ +/* put a string at a given char position */ +void lcd_puts(int x, int y, const unsigned char *str) +{ + lcd_puts_style_offset(x, y, str, STYLE_DEFAULT, 0); +} + void lcd_puts_style(int x, int y, const unsigned char *str, int style) { + lcd_puts_style_offset(x, y, str, style, 0); +} + +void lcd_puts_offset(int x, int y, const unsigned char *str, int offset) +{ + lcd_puts_style_offset(x, y, str, STYLE_DEFAULT, offset); +} + +/* put a string at a given char position, style, and pixel position, + * skipping first offset pixel columns */ +void lcd_puts_style_offset(int x, int y, const unsigned char *str, + int style, int offset) +{ int xpos,ypos,w,h; int lastmode = drawmode; @@ -624,23 +643,14 @@ void lcd_puts_style(int x, int y, const unsigned char *str, int style) lcd_getstringsize(str, &w, &h); xpos = xmargin + x*w / utf8length((char *)str); ypos = ymargin + y*h; - lcd_putsxy(xpos, ypos, str); - drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID); + drawmode = (style & STYLE_INVERT) ? + (DRMODE_SOLID|DRMODE_INVERSEVID) : DRMODE_SOLID; + lcd_putsxyofs(xpos, ypos, offset, str); + drawmode ^= DRMODE_INVERSEVID; lcd_fillrect(xpos + w, ypos, LCD_WIDTH - (xpos + w), h); - if (style & STYLE_INVERT) - { - drawmode = DRMODE_COMPLEMENT; - lcd_fillrect(xpos, ypos, LCD_WIDTH - xpos, h); - } drawmode = lastmode; } -/* put a string at a given char position */ -void lcd_puts(int x, int y, const unsigned char *str) -{ - lcd_puts_style(x, y, str, STYLE_DEFAULT); -} - /*** scrolling ***/ /* Reverse the invert setting of the scrolling line (if any) at given char @@ -687,6 +697,17 @@ void lcd_puts_scroll(int x, int y, const unsigned char *string) void lcd_puts_scroll_style(int x, int y, const unsigned char *string, int style) { + lcd_puts_scroll_style_offset(x, y, string, style, 0); +} + +void lcd_puts_scroll_offset(int x, int y, const unsigned char *string, int offset) +{ + lcd_puts_scroll_style_offset(x, y, string, STYLE_DEFAULT, offset); +} + +void lcd_puts_scroll_style_offset(int x, int y, const unsigned char *string, + int style, int offset) +{ struct scrollinfo* s; int w, h; @@ -696,10 +717,10 @@ void lcd_puts_scroll_style(int x, int y, const unsigned char *string, int style) s->invert = false; if (style & STYLE_INVERT) { s->invert = true; - lcd_puts_style(x,y,string,STYLE_INVERT); + lcd_puts_style_offset(x,y,string,STYLE_INVERT,offset); } else - lcd_puts(x,y,string); + lcd_puts_offset(x,y,string,offset); lcd_getstringsize(string, &w, &h); @@ -732,7 +753,7 @@ void lcd_puts_scroll_style(int x, int y, const unsigned char *string, int style) strncpy(end, (char *)string, LCD_WIDTH/2); s->len = utf8length((char *)string); - s->offset = 0; + s->offset = offset; s->startx = x; s->backward = false; scrolling_lines |= (1<<y); diff --git a/firmware/drivers/lcd-ipod.c b/firmware/drivers/lcd-ipod.c index 2d16555..529509f 100644 --- a/firmware/drivers/lcd-ipod.c +++ b/firmware/drivers/lcd-ipod.c @@ -156,6 +156,19 @@ void lcd_set_contrast(int val) lcd_contrast = val; } +void lcd_set_invert_display(bool yesno) +{ + /* TODO: Implement lcd_set_invert_display() */ + (void)yesno; +} + +/* turn the display upside down (call lcd_update() afterwards) */ +void lcd_set_flip(bool yesno) +{ + /* TODO: Implement lcd_set_flip() */ + (void)yesno; +} + void lcd_update_rect(int x, int y, int width, int height) { int cursor_pos, xx; diff --git a/firmware/drivers/power.c b/firmware/drivers/power.c index 2150040..5feece6 100644 --- a/firmware/drivers/power.c +++ b/firmware/drivers/power.c @@ -273,7 +273,7 @@ void power_off(void) and_l(~0x00080000, &GPIO1_OUT); #elif defined(IAUDIO_X5) and_l(~0x00000008, &GPIO_OUT); -#elif (CONFIG_CPU == PP5002) || (CONFIG_CPU == PP5002) +#elif (CONFIG_CPU == PP5002) || (CONFIG_CPU == PP5020) #ifndef BOOTLOADER /* We don't turn off the ipod, we put it in a deep sleep */ pcf50605_standby_mode(); diff --git a/firmware/export/config-ipod4g.h b/firmware/export/config-ipod4g.h new file mode 100644 index 0000000..de0388d --- /dev/null +++ b/firmware/export/config-ipod4g.h @@ -0,0 +1,95 @@ +/* + * This config file is for the Apple iPod Color/Photo + */ +#define APPLE_IPOD4G 1 + +/* For Rolo and boot loader */ +#define MODEL_NUMBER 8 + +/* define this if you have recording possibility */ +/*#define HAVE_RECORDING 1*/ + +/* define this if you have a bitmap LCD display */ +#define HAVE_LCD_BITMAP 1 + +/* LCD dimensions */ +#define LCD_WIDTH 160 +#define LCD_HEIGHT 128 +#define LCD_DEPTH 2 /* 4 colours - 2bpp */ + +#define CONFIG_KEYPAD IPOD_4G_PAD + +/* Define this if you do software codec */ +#define CONFIG_CODEC SWCODEC + +/* define this if you have a real-time clock */ +#ifndef BOOTLOADER +#define CONFIG_RTC RTC_PCF50605 +#endif + +/* Define this if you have a software controlled poweroff */ +#define HAVE_SW_POWEROFF + +/* The number of bytes reserved for loadable codecs */ +#define CODEC_SIZE 0x80000 + +/* The number of bytes reserved for loadable plugins */ +#define PLUGIN_BUFFER_SIZE 0x80000 + +/* Define this if you have the WM8975 audio codec */ +#define HAVE_WM8975 + +/* Define this for LCD backlight available */ +#define CONFIG_BACKLIGHT BL_IPOD4G /* port controlled */ + +#ifndef SIMULATOR + +/* Define this if you have a PortalPlayer PP5020 */ +#define CONFIG_CPU PP5020 + +/* Define this if you want to use the PP5020 i2c interface */ +#define CONFIG_I2C I2C_PP5020 + +/* Type of mobile power */ +//#define CONFIG_BATTERY BATT_LIPOL1300 + +#define BATTERY_SCALE_FACTOR 16665 /* FIX: this value is picked at random */ + +/* Define this if the platform can charge batteries */ +//#define HAVE_CHARGING 1 + +/* define this if the hardware can be powered off while charging */ +//#define HAVE_POWEROFF_WHILE_CHARGING + +/* The start address index for ROM builds */ +#define ROM_START 0x00000000 + +/* Define this to the CPU frequency */ +#define CPU_FREQ 11289600 + +#define CONFIG_LCD LCD_IPOD2BPP + +/* Offset ( in the firmware file's header ) to the file length */ +#define FIRMWARE_OFFSET_FILE_LENGTH 0 + +/* Offset ( in the firmware file's header ) to the file CRC */ +#define FIRMWARE_OFFSET_FILE_CRC 0 + +/* Offset ( in the firmware file's header ) to the real data */ +#define FIRMWARE_OFFSET_FILE_DATA 8 + +#define USB_IPODSTYLE + +/* define this if the unit can be powered or charged via USB */ +#define HAVE_USB_POWER + +/* Virtual LED (icon) */ +#define CONFIG_LED LED_VIRTUAL + +/* Define this if you have adjustable CPU frequency */ +//#define HAVE_ADJUSTABLE_CPU_FREQ + +#define BOOTFILE_EXT "ipod" +#define BOOTFILE "rockbox." BOOTFILE_EXT + +#endif diff --git a/firmware/export/config.h b/firmware/export/config.h index f451173..22352f5 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h @@ -153,6 +153,8 @@ #include "config-ipodvideo.h" #elif defined(IPOD_3G) #include "config-ipod3g.h" +#elif defined(IPOD_4G) +#include "config-ipod4g.h" #elif defined(IRIVER_IFP7XX) #include "config-ifp7xx.h" #else diff --git a/firmware/usb.c b/firmware/usb.c index 32e98ef..1c90d63 100644 --- a/firmware/usb.c +++ b/firmware/usb.c @@ -172,7 +172,7 @@ void usb_enable(bool on) if (on) { /* The following code is copied from ipodlinux */ -#if defined (APPLE_IPODCOLOR) || defined(APPLE_IPOD3G) +#if defined (APPLE_IPODCOLOR) || defined(APPLE_IPOD3G) || defined(APPLE_IPOD4G) unsigned char* storage_ptr = (unsigned char *)0x40017F00; #elif defined(APPLE_IPODNANO) || defined(APPLE_IPODVIDEO) unsigned char* storage_ptr = (unsigned char *)0x4001FF00; |