Basic changes to add nano 2g to the build system, based on the Meizu M3 port. The bootloader builds, but does nothing due to lack of any drivers.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21828 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dave Chapman 2009-07-12 22:16:51 +00:00
parent 40c6e7d282
commit afe43d3fcb
9 changed files with 532 additions and 25 deletions

View File

@ -51,4 +51,6 @@ show_logo.c
#elif defined(LYRE_PROTO1)
lyre_proto1.c
show_logo.c
#elif defined(IPOD_NANO2G)
ipodnano2g.c
#endif

54
bootloader/ipodnano2g.c Normal file
View File

@ -0,0 +1,54 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2009 by ???? [to be completed by first author]
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include "config.h"
#include "inttypes.h"
#include "cpu.h"
#include "system.h"
#include "lcd.h"
#include "kernel.h"
#include "thread.h"
#include "storage.h"
#include "fat.h"
#include "disk.h"
#include "font.h"
#include "backlight.h"
#include "backlight-target.h"
#include "button.h"
#include "panic.h"
#include "power.h"
#include "file.h"
#include "common.h"
char version[] = APPSVERSION;
void main(void)
{
/* Do nothing... */
while(1);
}

View File

@ -1272,6 +1272,10 @@ target/arm/s5l8700/udacodec-meizu.c
#endif /* SIMULATOR */
#endif /* MEIZU_M3 */
#ifdef IPOD_NANO2G
target/arm/s5l8700/ipodnano2g/lcd-nano2g.c
#endif
#ifndef SIMULATOR
#if CONFIG_CPU == JZ4732
target/mips/ingenic_jz47xx/ata-nand-jz4740.c

View File

@ -0,0 +1,184 @@
/*
* This config file is for iPod Nano 2nd Generation
*/
#define TARGET_TREE /* this target is using the target tree system */
/* For Rolo and boot loader */
#define MODEL_NUMBER 62
#define MODEL_NAME "Apple iPod Nano 2g"
/* define this if you have recording possibility */
//#define HAVE_RECORDING
/* Define bitmask of input sources - recordable bitmask can be defined
explicitly if different */
#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_LINEIN | SRC_CAP_FMRADIO)
/* define the bitmask of hardware sample rates */
#define HW_SAMPR_CAPS (SAMPR_CAP_88 | SAMPR_CAP_44 | SAMPR_CAP_22 | SAMPR_CAP_11)
/* define the bitmask of recording sample rates */
#define REC_SAMPR_CAPS (SAMPR_CAP_88 | SAMPR_CAP_44 | SAMPR_CAP_22 | SAMPR_CAP_11)
/* define this if you have a bitmap LCD display */
#define HAVE_LCD_BITMAP
/* define this if you can flip your LCD */
//#define HAVE_LCD_FLIP
/* define this if you have a colour LCD */
#define HAVE_LCD_COLOR
/* 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 can invert the colours on your LCD */
//#define HAVE_LCD_INVERT
/* 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 a flash memory storage */
#define HAVE_FLASH_STORAGE
#define CONFIG_STORAGE STORAGE_NAND
#define CONFIG_NAND NAND_SAMSUNG
/* LCD dimensions */
#define LCD_WIDTH 176
#define LCD_HEIGHT 132
#define LCD_DEPTH 16 /* pseudo 262.144 colors */
#define LCD_PIXELFORMAT RGB565 /* rgb565 */
/* Define this if your LCD can be enabled/disabled */
//#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 CONFIG_KEYPAD IPOD_4G_PAD
//#define AB_REPEAT_ENABLE 1
//#define ACTION_WPSAB_SINGLE ACTION_WPS_BROWSE
/* Define this if you do software codec */
#define CONFIG_CODEC SWCODEC
/* define this if you have a real-time clock */
//#define CONFIG_RTC RTC_S5L8700
#define CONFIG_RTC RTC_S35390A
#define CONFIG_LCD LCD_NANO2G
/* Define the type of audio codec */
#define HAVE_UDA1380
/* Define this for LCD backlight available */
#define HAVE_BACKLIGHT
#define HAVE_BACKLIGHT_BRIGHTNESS
/* Define this if you have a software controlled poweroff */
#define HAVE_SW_POWEROFF
/* 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
/* FM Tuner */
#define CONFIG_TUNER TEA5760
#define CONFIG_TUNER_XTAL 32768
//#define HAVE_TLV320
/* TLV320 has no tone controls, so we use the software ones */
#define HAVE_SW_TONE_CONTROLS
#define BATTERY_CAPACITY_DEFAULT 700 /* default battery capacity */
#define BATTERY_CAPACITY_MIN 500 /* min. capacity selectable */
#define BATTERY_CAPACITY_MAX 2250 /* max. capacity selectable */
#define BATTERY_CAPACITY_INC 50 /* capacity increment */
#define BATTERY_TYPES_COUNT 1 /* only one type */
/* Hardware controlled charging? FIXME */
#define CONFIG_CHARGING CHARGING_SIMPLE
#ifndef SIMULATOR
/* Define this if your LCD can set contrast */
//#define HAVE_LCD_CONTRAST
/* Define this if you have a Motorola SCF5250 */
#define CONFIG_CPU S5L8700
/* Define this if you want to use coldfire's i2c interface */
#define CONFIG_I2C I2C_S5L8700
/* define this if the hardware can be powered off while charging */
#define HAVE_POWEROFF_WHILE_CHARGING
/* The size of the flash ROM */
#define FLASH_SIZE 0x400000
/* Define this to the CPU frequency */
#define CPU_FREQ 11289600
/* Define this if you have ATA power-off control */
//#define HAVE_ATA_POWER_OFF
/* Virtual LED (icon) */
#define CONFIG_LED LED_VIRTUAL
/* 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
/* USB On-the-go */
//#define CONFIG_USBOTG USBOTG_M5636
/* Define this if you have adjustable CPU frequency */
#define HAVE_ADJUSTABLE_CPU_FREQ
#define BOOTFILE_EXT "ipod"
#define BOOTFILE "rockbox." BOOTFILE_EXT
#define BOOTDIR "/.rockbox"
#define BOOTLOADER_ENTRYPOINT 0x001F0000
#define FLASH_ENTRYPOINT 0x00001000
#define FLASH_MAGIC 0xfbfbfbf1
#endif /* SIMULATOR */
/* Define this for FM radio input available */
#define HAVE_FMRADIO_IN
/** Port-specific settings **/
/* Main LCD contrast range and defaults */
#define MIN_CONTRAST_SETTING 1
#define MAX_CONTRAST_SETTING 30
#define DEFAULT_CONTRAST_SETTING 19 /* Match boot contrast */
/* Main LCD backlight brightness range and defaults */
#define MIN_BRIGHTNESS_SETTING 0
#define MAX_BRIGHTNESS_SETTING 15
#define DEFAULT_BRIGHTNESS_SETTING 10

View File

@ -302,6 +302,8 @@ Lyre prototype 1*/
#include "config-ipod3g.h"
#elif defined(IPOD_4G)
#include "config-ipod4g.h"
#elif defined(IPOD_NANO2G)
#include "config-ipodnano2g.h"
#elif defined(IRIVER_IFP7XX)
#include "config-ifp7xx.h"
#elif defined(GIGABEAT_F)

View File

@ -1,7 +1,11 @@
#include "config.h"
ENTRY(_start)
#ifdef ROCKBOX_LITTLE_ENDIAN
OUTPUT_FORMAT(elf32-littlearm)
#else
OUTPUT_FORMAT(elf32-bigarm)
#endif
OUTPUT_ARCH(arm)
STARTUP(target/arm/s5l8700/crt0.o)
@ -28,7 +32,12 @@ MEMORY
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE
}
#ifdef IPOD_NANO2G
#define LOAD_AREA IRAM
#else
#define LOAD_AREA FLASH
#endif
SECTIONS
{
@ -36,19 +45,19 @@ SECTIONS
_intvectstart = . ;
*(.intvect)
_intvectend = _newstart ;
} >IRAM AT> FLASH
} >IRAM AT> LOAD_AREA
_intvectcopy = LOADADDR(.intvect) ;
.text : {
*(.init.text)
*(.text*)
*(.glue_7*)
} > FLASH
} > LOAD_AREA
.rodata : {
*(.rodata*)
. = ALIGN(0x4);
} > FLASH
} > LOAD_AREA
.data : {
_datastart = . ;
@ -59,7 +68,7 @@ SECTIONS
*(.ncdata*);
. = ALIGN(0x4);
_dataend = . ;
} > IRAM AT> FLASH
} > IRAM AT> LOAD_AREA
_datacopy = LOADADDR(.data) ;
.stack :

View File

@ -0,0 +1,78 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2006 by Barry Wardell
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef _BUTTON_TARGET_H_
#define _BUTTON_TARGET_H_
#include <stdbool.h>
#include "config.h"
#define HAS_BUTTON_HOLD
bool button_hold(void);
void button_init_device(void);
int button_read_device(void);
void ipod_mini_button_int(void);
void ipod_3g_button_int(void);
void ipod_4g_button_int(void);
/* iPod specific button codes */
#define BUTTON_SELECT 0x00000001
#define BUTTON_MENU 0x00000002
#define BUTTON_LEFT 0x00000004
#define BUTTON_RIGHT 0x00000008
#define BUTTON_SCROLL_FWD 0x00000010
#define BUTTON_SCROLL_BACK 0x00000020
#define BUTTON_PLAY 0x00000040
#define BUTTON_MAIN (BUTTON_SELECT|BUTTON_MENU\
|BUTTON_LEFT|BUTTON_RIGHT|BUTTON_SCROLL_FWD\
|BUTTON_SCROLL_BACK|BUTTON_PLAY)
/* Remote control's buttons */
#ifdef IPOD_ACCESSORY_PROTOCOL
#define BUTTON_RC_PLAY 0x00100000
#define BUTTON_RC_STOP 0x00080000
#define BUTTON_RC_LEFT 0x00040000
#define BUTTON_RC_RIGHT 0x00020000
#define BUTTON_RC_VOL_UP 0x00010000
#define BUTTON_RC_VOL_DOWN 0x00008000
#define BUTTON_REMOTE (BUTTON_RC_PLAY|BUTTON_RC_STOP\
|BUTTON_RC_LEFT|BUTTON_RC_RIGHT\
|BUTTON_RC_VOL_UP|BUTTON_RC_VOL_DOWN)
#else
#define BUTTON_REMOTE 0
#endif
/* This is for later
#define BUTTON_SCROLL_TOUCH 0x00000200
*/
#define POWEROFF_BUTTON BUTTON_PLAY
#define POWEROFF_COUNT 40
#endif /* _BUTTON_TARGET_H_ */

View File

@ -0,0 +1,142 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2009 by ????
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "config.h"
#include "hwcompat.h"
#include "kernel.h"
#include "lcd.h"
#include "system.h"
#include "cpu.h"
/** globals **/
static int xoffset; /* needed for flip */
/*** hardware configuration ***/
int lcd_default_contrast(void)
{
return 0x1f;
}
void lcd_set_contrast(int val)
{
}
void lcd_set_invert_display(bool yesno)
{
}
/* turn the display upside down (call lcd_update() afterwards) */
void lcd_set_flip(bool yesno)
{
/* TODO: flip mode isn't working. The commands in the else part of
this function are how the original firmware inits the LCD */
if (yesno)
{
xoffset = 132 - LCD_WIDTH; /* 132 colums minus the 128 we have */
}
else
{
xoffset = 0;
}
}
void lcd_off(void)
{
}
void lcd_on(void)
{
}
/* LCD init */
void lcd_init_device(void)
{
}
/*** Update functions ***/
/* Performance function that works with an external buffer
note that by and bheight are in 8-pixel units! */
void lcd_blit_mono(const unsigned char *data, int x, int by, int width,
int bheight, int stride)
{
/* Copy display bitmap to hardware */
while (bheight--)
{
}
}
/* Performance function that works with an external buffer
note that by and bheight are in 8-pixel units! */
void lcd_blit_grey_phase_blit(unsigned char *values, unsigned char *phases,
int x, int by, int width, int bheight, int stride)
{
(void)values;
(void)phases;
(void)x;
(void)by;
(void)width;
(void)bheight;
(void)stride;
}
/* Update the display.
This must be called after all other LCD functions that change the display. */
void lcd_update(void) ICODE_ATTR;
void lcd_update(void)
{
int y;
/* Copy display bitmap to hardware */
for (y = 0; y < LCD_FBHEIGHT; y++)
{
}
}
/* Update a fraction of the display. */
void lcd_update_rect(int, int, int, int) ICODE_ATTR;
void lcd_update_rect(int x, int y, int width, int height)
{
int ymax;
/* The Y coordinates have to work on even 8 pixel rows */
ymax = (y + height-1) >> 3;
y >>= 3;
if(x + width > LCD_WIDTH)
width = LCD_WIDTH - x;
if (width <= 0)
return; /* nothing left to do, 0 is harmful to lcd_write_data() */
if(ymax >= LCD_FBHEIGHT)
ymax = LCD_FBHEIGHT-1;
/* Copy specified rectange bitmap to hardware */
for (; y <= ymax; y++)
{
}
}

72
tools/configure vendored
View File

@ -275,6 +275,14 @@ arm940tbecc () {
gccchoice="4.0.3"
}
arm940tcc () {
prefixtools arm-elf-
GCCOPTS="$CCOPTS -mcpu=arm940t -mlong-calls"
GCCOPTIMIZE="-fomit-frame-pointer"
endian="little"
gccchoice="4.0.3"
}
arm946cc () {
prefixtools arm-elf-
GCCOPTS="$CCOPTS -mcpu=arm9e -mlong-calls"
@ -769,27 +777,27 @@ cat <<EOF
5) Ondio FM 15) H10 5/6Gb 25) Mini 1G
6) AV300 26) Mini 2G
==Toshiba== 27) 1G, 2G
==Cowon/iAudio== 40) Gigabeat F
30) X5/X5V/X5L 41) Gigabeat S ==SanDisk==
31) M5/M5L 50) Sansa e200
32) 7 ==Olympus= 51) Sansa e200R
33) D2 70) M:Robe 500 52) Sansa c200
34) M3/M3L 71) M:Robe 100 53) Sansa m200
54) Sansa c100
==Creative== ==Philips== 55) Sansa Clip
90) Zen Vision:M 30GB 100) GoGear SA9200 56) Sansa e200v2
91) Zen Vision:M 60GB 101) GoGear HDD1630/ 57) Sansa m200v4
92) Zen Vision HDD1830 58) Sansa Fuze
59) Sansa c200v2
==Onda== ==Meizu== 60) Sansa Clipv2
120) VX747 110) M6SL
121) VX767 111) M6SP ==Logik==
122) VX747+ 112) M3 80) DAX 1GB MP3/DAB
123) VX777
==Cowon/iAudio== 40) Gigabeat F 28) Nano 2G
30) X5/X5V/X5L 41) Gigabeat S
31) M5/M5L ==SanDisk==
32) 7 ==Olympus= 50) Sansa e200
33) D2 70) M:Robe 500 51) Sansa e200R
34) M3/M3L 71) M:Robe 100 52) Sansa c200
53) Sansa m200
==Creative== ==Philips== 54) Sansa c100
90) Zen Vision:M 30GB 100) GoGear SA9200 55) Sansa Clip
91) Zen Vision:M 60GB 101) GoGear HDD1630/ 56) Sansa e200v2
92) Zen Vision HDD1830 57) Sansa m200v4
58) Sansa Fuze
==Onda== ==Meizu== 59) Sansa c200v2
120) VX747 110) M6SL 60) Sansa Clipv2
121) VX767 111) M6SP
122) VX747+ 112) M3 ==Logik==
123) VX777 80) DAX 1GB MP3/DAB
==Samsung== ==Tatung== ==Lyre project==
140) YH-820 150) Elio TPJ-1022 130) Lyre proto 1
141) YH-920
==Samsung== ==Tatung==
140) YH-820 150) Elio TPJ-1022 ==Lyre project==
141) YH-920 130) Lyre proto 1
142) YH-925
EOF
@ -1329,6 +1337,30 @@ fi
t_model="1g2g"
;;
28|ipodnano2g)
target_id=62
modelname="ipodnano2g"
target="-DIPOD_NANO2G"
memory=32 # always
arm940tcc
tool="$rootdir/tools/scramble -add=nn2g"
bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
bmp2rb_native="$rootdir/tools/bmp2rb -f 6"
output="rockbox.ipod"
appextra="recorder:gui"
plugins="yes"
swcodec="yes"
boottool="cp"
bootoutput="bootloader-$modelname.bin"
# toolset is the tools within the tools directory that we build for
# this particular target.
toolset=$ipodbitmaptools
# architecture, manufacturer and model for the target-tree build
t_cpu="arm"
t_manufacturer="s5l8700"
t_model="ipodnano2g"
;;
30|x5)
target_id=12
modelname="x5"