1
0
Fork 0
forked from len0rd/rockbox

Initial support for iPod mini 2G: Rockbox boots, LCD driver is working. No sound, no buttons, and hangs at the boot screen.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9363 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jens Arnold 2006-03-30 17:29:21 +00:00
parent 1ccc81bf8f
commit d3feb78e40
7 changed files with 148 additions and 12 deletions

View file

@ -109,6 +109,10 @@ PLUGIN_HEADER
#define FOOD_SIZE 3
#define ARGH_SIZE 4
#define SPEED 14
#elif (LCD_WIDTH == 138) && (LCD_HEIGHT == 110)
#define FOOD_SIZE 4
#define ARGH_SIZE 5
#define SPEED 10
#elif (LCD_WIDTH == 160) && (LCD_HEIGHT == 128)
#define FOOD_SIZE 4
#define ARGH_SIZE 5

View file

@ -76,20 +76,28 @@ static void lcd_wait_write(void)
static void lcd_send_data(int data_lo, int data_hi)
{
lcd_wait_write();
#ifdef IPOD_MINI2G
outl((inl(IPOD_LCD_BASE) & ~0x1f00000) | 0x1700000, IPOD_LCD_BASE);
outl(data_hi | (data_lo << 8) | 0x760000, IPOD_LCD_BASE+8);
#else
outl(data_lo, IPOD_LCD_BASE + LCD_DATA);
lcd_wait_write();
outl(data_hi, IPOD_LCD_BASE + LCD_DATA);
#endif
}
/* send LCD command */
static void lcd_prepare_cmd(int cmd)
{
lcd_wait_write();
#ifdef IPOD_MINI2G
outl((inl(IPOD_LCD_BASE) & ~0x1f00000) | 0x1700000, IPOD_LCD_BASE);
outl(cmd | 0x740000, IPOD_LCD_BASE+8);
#else
outl(0x0, IPOD_LCD_BASE + LCD_CMD);
lcd_wait_write();
outl(cmd, IPOD_LCD_BASE + LCD_CMD);
#endif
}
/* send LCD command and data */
@ -105,7 +113,8 @@ static void lcd_cmd_and_data(int cmd, int data_lo, int data_hi)
* LCD init
**/
void lcd_init_device(void){
#ifdef APPLE_IPODMINI
#if defined(IPOD_MINI) || defined(IPOD_MINI2G)
/* driver output control - 160x112 (ipod mini) */
lcd_cmd_and_data(0x1, 0x0, 0xd);
#else
/* driver output control - 160x128 */

View file

@ -1,5 +1,5 @@
/*
* This config file is for the Apple iPod Mini (1st & 2nd Gen)
* This config file is for the Apple iPod Mini (1st Gen)
*/
#define APPLE_IPODMINI 1

View file

@ -0,0 +1,99 @@
/*
* This config file is for the Apple iPod Mini 2nd Gen
*/
#define APPLE_IPODMINI 1
#define IPOD_ARCH 1
/* For Rolo and boot loader */
#define MODEL_NUMBER 11
/* 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 138
#define LCD_HEIGHT 110
#define LCD_DEPTH 2 /* 4 colours - 2bpp */
#define LCD_PIXELFORMAT HORIZONTAL_PACKING
#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_IPODMINI /* 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

View file

@ -170,6 +170,8 @@
#include "config-gigabeat.h"
#elif defined(IPOD_MINI)
#include "config-ipodmini.h"
#elif defined(IPOD_MINI2G)
#include "config-ipodmini2g.h"
#else
/* no known platform */
#endif

24
tools/configure vendored
View file

@ -465,9 +465,10 @@ toolsdir='\$(ROOTDIR)/tools'
echo "15 - iPod Video"
echo "16 - iPod 3G"
echo "17 - iPod 4G (Grayscale)"
echo "18 - iPod Mini (1G/2G)"
echo "18 - iPod Mini (1G)"
echo "19 - iriver iFP-790"
echo "20 - Toshiba Gigabeat F"
echo "21 - iPod Mini 2G"
target_id=`input`;
@ -870,6 +871,25 @@ toolsdir='\$(ROOTDIR)/tools'
toolset=$gigabeatbitmaptools
;;
21)
archos="ipodmini2g"
target="-DIPOD_MINI2G"
memory=32 # always
arm7tdmicc
tool="$rootdir/tools/scramble -add=mn2g"
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
;;
*)
echo "Please select an actual target platform!"
exit
@ -925,7 +945,7 @@ fi
case $option in
[Bb])
case $archos in
h100|h120|h300|x5|ipodcolor|ipodnano|ipodvideo|ipod3g|ipod4g|ipodmini)
h100|h120|h300|x5|ipodcolor|ipodnano|ipodvideo|ipod3g|ipod4g|ipodmini|ipodmini2g)
extradefines="-DBOOTLOADER" # for target makefile symbol EXTRA_DEFINES
appsdir='\$(ROOTDIR)/bootloader'
apps="bootloader"

View file

@ -183,6 +183,8 @@ int main (int argc, char** argv)
modelnum = 9;
else if(!strcmp(&argv[1][5], "iax5"))
modelnum = 10;
else if(!strcmp(&argv[1][5], "mn2g"))
modelnum = 11;
else {
fprintf(stderr, "unsupported model: %s\n", &argv[1][5]);
return 2;