summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2006-02-21 15:01:25 +0000
committerDave Chapman <dave@dchapman.com>2006-02-21 15:01:25 +0000
commit8b1297a0b683c03f320b502652113633032411a7 (patch)
treed6d4104d8b7519c2edb56fa6b83e61a41615b4fd
parentc7fd0fee7ad2581889e84748ab64e10003d9d526 (diff)
downloadrockbox-8b1297a0b683c03f320b502652113633032411a7.tar.gz
rockbox-8b1297a0b683c03f320b502652113633032411a7.zip
Patch #1435744 from Andrew Scott - initial iPod Mini support
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8764 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/bitmaps/native/SOURCES2
-rw-r--r--apps/plugins/SOURCES10
-rw-r--r--bootloader/ipod.c4
-rw-r--r--docs/CREDITS1
-rw-r--r--firmware/backlight.c6
-rw-r--r--firmware/drivers/lcd-ipod.c5
-rw-r--r--firmware/export/config.h3
-rw-r--r--firmware/usb.c3
-rwxr-xr-xtools/configure24
-rw-r--r--tools/scramble.c4
10 files changed, 55 insertions, 7 deletions
diff --git a/apps/bitmaps/native/SOURCES b/apps/bitmaps/native/SOURCES
index 4b2ed5a6bb..c83bad5ebd 100644
--- a/apps/bitmaps/native/SOURCES
+++ b/apps/bitmaps/native/SOURCES
@@ -3,6 +3,8 @@
/* Rockbox logo */
#if (LCD_DEPTH == 1)
rockboxlogo.112x37x1.bmp
+#elif (LCD_WIDTH == 138) && (LCD_DEPTH == 2)
+rockboxlogo.112x37x1.bmp
#elif (LCD_WIDTH == 160) && (LCD_DEPTH == 2)
rockboxlogo.160x53x2.bmp
#elif (LCD_WIDTH == 160) && (LCD_DEPTH == 16)
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES
index c8939c6214..ad056630b0 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -33,10 +33,14 @@ mandelbrot.c
#endif
solitaire.c
+#if (LCD_WIDTH != 138)
+/* These need adjusting for the Mini's screen */
bejeweled.c
+#endif
bounce.c
/* H300, H100 and iPod Nano/Color/Video only */
-#if ((LCD_WIDTH >= 176) && (LCD_HEIGHT >= 132) && (LCD_DEPTH == 16)) || ((LCD_WIDTH == 160) && (LCD_HEIGHT == 128) && (LCD_DEPTH==2))
+#if ((LCD_WIDTH >= 176) && (LCD_HEIGHT >= 132) && (LCD_DEPTH == 16)) || \
+ ((LCD_WIDTH == 160) && (LCD_HEIGHT == 128) && (LCD_DEPTH==2))
brickmania.c
#endif
calculator.c
@@ -59,8 +63,8 @@ snake2.c
sokoban.c
star.c
starfield.c
-#if (LCD_WIDTH != 176)
-/* These need adjusting for the Nano's screen */
+#if (LCD_WIDTH != 176) && (LCD_WIDTH != 138)
+/* These need adjusting for the iPod Nano and Mini */
sudoku.c
#endif
#if CONFIG_LCD == LCD_SSD1815
diff --git a/bootloader/ipod.c b/bootloader/ipod.c
index 63b7b2207b..2728529dce 100644
--- a/bootloader/ipod.c
+++ b/bootloader/ipod.c
@@ -325,6 +325,10 @@ void* main(void)
/* set port B03 on */
outl(((0x100 | 1) << 3), 0x6000d824);
+#elif CONFIG_BACKLIGHT==BL_IPODMINI
+ /* set port B03 on */
+ outl(((0x100 | 1) << 3), 0x6000d824);
+
#elif CONFIG_BACKLIGHT==BL_IPODNANO
/* set port B03 on */
diff --git a/docs/CREDITS b/docs/CREDITS
index 4d3e9728a7..447c7ae143 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -170,3 +170,4 @@ Nikolaj Christensen
Mikael Magnusson
Dominik Wenger
Henrico Witvliet
+Andrew Scott
diff --git a/firmware/backlight.c b/firmware/backlight.c
index daf987791d..0049f78607 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -236,6 +236,9 @@ static void __backlight_on(void)
/* set port b bit 3 on */
outl(((0x100 | 1) << 3), 0x6000d824);
+#elif CONFIG_BACKLIGHT==BL_IPODMINI
+ /* set port B03 on */
+ outl(((0x100 | 1) << 3), 0x6000d824);
#elif CONFIG_BACKLIGHT==BL_IPODNANO
/* set port B03 on */
outl(((0x100 | 1) << 3), 0x6000d824);
@@ -287,6 +290,9 @@ static void __backlight_off(void)
GPIO3_CLR = 1;
#elif CONFIG_BACKLIGHT==BL_IPOD3G
lcd_enable(false);
+#elif CONFIG_BACKLIGHT==BL_IPODMINI
+ /* set port B03 off */
+ outl(((0x100 | 0) << 3), 0x6000d824);
#endif
}
diff --git a/firmware/drivers/lcd-ipod.c b/firmware/drivers/lcd-ipod.c
index d1d63b9911..4df47f9f20 100644
--- a/firmware/drivers/lcd-ipod.c
+++ b/firmware/drivers/lcd-ipod.c
@@ -105,8 +105,13 @@ static void lcd_cmd_and_data(int cmd, int data_lo, int data_hi)
* LCD init
**/
void lcd_init_device(void){
+#ifdef APPLE_IPODMINI
+ lcd_cmd_and_data(0x1, 0x0, 0xd);
+#else
/* driver output control - 160x128 */
lcd_cmd_and_data(0x1, 0x1, 0xf);
+#endif
+
lcd_cmd_and_data(0x5, 0x0, 0x10);
#ifdef APPLE_IPOD4G
diff --git a/firmware/export/config.h b/firmware/export/config.h
index b1cca7b288..0e673cb988 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -98,6 +98,7 @@
#define BL_IPOD3G 7 /* Apple iPod 3g with dock */
#define BL_IRIVER_H300 8 /* IRiver PWM */
#define BL_IRIVER_IFP7XX 9 /* IRiver GPIO */
+#define BL_IPODMINI 10 /* Apple iPod Mini */
/* CONFIG_I2C */
#define I2C_PLAYREC 0 /* Archos Player/Recorder style */
@@ -159,6 +160,8 @@
#include "config-ipod4g.h"
#elif defined(IRIVER_IFP7XX)
#include "config-ifp7xx.h"
+#elif defined(IPOD_MINI)
+#include "config-ipodmini.h"
#else
/* no known platform */
#endif
diff --git a/firmware/usb.c b/firmware/usb.c
index 5157eeec63..f98bfa39b1 100644
--- a/firmware/usb.c
+++ b/firmware/usb.c
@@ -172,7 +172,8 @@ void usb_enable(bool on)
if (on)
{
/* The following code is copied from ipodlinux */
-#if defined (APPLE_IPODCOLOR) || defined(APPLE_IPOD3G) || defined(APPLE_IPOD4G)
+#if defined(APPLE_IPODCOLOR) || defined(APPLE_IPOD3G) || \
+ defined(APPLE_IPOD4G) || defined(APPLE_IPODMINI)
unsigned char* storage_ptr = (unsigned char *)0x40017F00;
#elif defined(APPLE_IPODNANO) || defined(APPLE_IPODVIDEO)
unsigned char* storage_ptr = (unsigned char *)0x4001FF00;
diff --git a/tools/configure b/tools/configure
index 6ffd640398..9a919b3286 100755
--- a/tools/configure
+++ b/tools/configure
@@ -455,7 +455,8 @@ toolsdir='\$(ROOTDIR)/tools'
echo "15 - iPod Video"
echo "16 - iPod 3G"
echo "17 - iPod 4G (Grayscale)"
- echo "18 - iriver iFP-790"
+ echo "18 - iPod Mini (1G/2G)"
+ echo "19 - iriver iFP-790"
target_id=`input`;
@@ -799,6 +800,25 @@ toolsdir='\$(ROOTDIR)/tools'
;;
18)
+ archos="ipodmini"
+ target="-DIPOD_MINI"
+ memory=32 # always
+ arm7tdmicc
+ tool="$rootdir/tools/scramble -add=mini"
+ bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
+ bmp2rb_native="$rootdir/tools/bmp2rb -f 6"
+ output="rockbox.ipod"
+ appextra="recorder:gui"
+ archosrom=""
+ flash=""
+ plugins="yes"
+ codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a"
+ # toolset is the tools within the tools directory that we build for
+ # this particular target.
+ toolset=$ipodbitmaptools
+ ;;
+
+ 19)
archos="ifp7xx"
target="-DIRIVER_IFP7XX"
memory=1
@@ -872,7 +892,7 @@ fi
case $option in
[Bb])
case $archos in
- h100|h120|h300|x5|ipodcolor|ipodnano|ipodvideo|ipod3g|ipod4g)
+ h100|h120|h300|x5|ipodcolor|ipodnano|ipodvideo|ipod3g|ipod4g|ipodmini)
extradefines="-DBOOTLOADER" # for target makefile symbol EXTRA_DEFINES
appsdir='\$(ROOTDIR)/bootloader'
apps="bootloader"
diff --git a/tools/scramble.c b/tools/scramble.c
index ee5df56dc7..642080e699 100644
--- a/tools/scramble.c
+++ b/tools/scramble.c
@@ -72,7 +72,7 @@ void usage(void)
"\t-iaudio iAudio format\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)\n"
+ "\t ip3g, ip4g, mini)\n"
"\nNo option results in Archos standard player/recorder format.\n");
exit(1);
@@ -178,6 +178,8 @@ int main (int argc, char** argv)
modelnum = 7;
else if(!strcmp(&argv[1][5], "ip4g"))
modelnum = 8;
+ else if(!strcmp(&argv[1][5], "mini"))
+ modelnum = 9;
else {
fprintf(stderr, "unsupported model: %s\n", &argv[1][5]);
return 2;