Nuke the never-functional iriver ifp-7xx port

It never worked, and hasn't compiled in something like a decade, Given
the HW capabilities (limited onboard flash, no expandability) there's
really no point in trying to fix/complete it.

Change-Id: I7d175089840396f8891645bd10010d730dd5bfdc
This commit is contained in:
Solomon Peachy 2021-04-23 11:31:58 -04:00
parent 3ba2f6e5c7
commit 7d0d32dbc6
58 changed files with 3 additions and 4087 deletions

View file

@ -197,8 +197,6 @@ keymaps/keymap-gigabeat.c
keymaps/keymap-gigabeat-s.c
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
keymaps/keymap-h10.c
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
keymaps/keymap-ifp7xx.c
#elif CONFIG_KEYPAD == SANSA_E200_PAD
keymaps/keymap-e200.c
#elif CONFIG_KEYPAD == SANSA_C200_PAD

View file

@ -1,185 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2006 Tomasz Malesinski
*
* 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.
*
****************************************************************************/
/* Button Code Definitions for iriver iFP7xx target */
#include "config.h"
#include "action.h"
#include "button.h"
/*
* The format of the list is as follows
* { Action Code, Button code, Prereq button code }
* if there's no need to check the previous button's value, use BUTTON_NONE
* Insert LAST_ITEM_IN_LIST at the end of each mapping
*/
static const struct button_mapping button_context_standard[] = {
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT },
{ ACTION_STD_QUICKSCREEN, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE },
{ ACTION_STD_MENU, BUTTON_MODE|BUTTON_REL, BUTTON_MODE },
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
{ ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_standard */
static const struct button_mapping button_context_wps[] = {
{ ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
{ ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
{ ACTION_WPS_ABSETB_NEXTDIR, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_PLAY },
{ ACTION_WPS_ABSETA_PREVDIR, BUTTON_PLAY|BUTTON_LEFT, BUTTON_PLAY },
{ ACTION_WPS_STOP, BUTTON_EQ, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
{ ACTION_WPS_QUICKSCREEN, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE },
{ ACTION_WPS_MENU, BUTTON_MODE|BUTTON_REL, BUTTON_MODE },
{ ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
{ ACTION_WPS_ABRESET, BUTTON_PLAY|BUTTON_SELECT, BUTTON_PLAY },
{ ACTION_WPS_HOTKEY, BUTTON_PLAY|BUTTON_MODE, BUTTON_PLAY },
LAST_ITEM_IN_LIST
}; /* button_context_wps */
static const struct button_mapping button_context_settings[] = {
{ ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings */
static const struct button_mapping button_context_settings_r_is_inc[] = {
{ ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settingsgraphical */
static const struct button_mapping button_context_yesno[] = {
{ ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings_yesno */
static const struct button_mapping button_context_bmark[] = {
{ ACTION_BMS_DELETE, BUTTON_MODE, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_settings_bmark */
static const struct button_mapping button_context_quickscreen[] = {
{ ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
{ ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_quickscreen */
static const struct button_mapping button_context_pitchscreen[] = {
{ ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
{ ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
{ ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
{ ACTION_PS_RESET, BUTTON_MODE, BUTTON_NONE },
{ ACTION_PS_EXIT, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_FASTER, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_pitchcreen */
static const struct button_mapping button_context_keyboard[] = {
{ ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
{ ACTION_KBD_DONE, BUTTON_MODE, BUTTON_NONE },
{ ACTION_KBD_ABORT, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_keyboard */
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
{
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
case CONTEXT_SETTINGS_EQ:
case CONTEXT_SETTINGS_COLOURCHOOSER:
case CONTEXT_SETTINGS_TIME:
return button_context_settings_r_is_inc;
case CONTEXT_SETTINGS:
return button_context_settings;
case CONTEXT_YESNOSCREEN:
return button_context_yesno;
case CONTEXT_BOOKMARKSCREEN:
return button_context_bmark;
case CONTEXT_QUICKSCREEN:
return button_context_quickscreen;
case CONTEXT_PITCHSCREEN:
return button_context_pitchscreen;
case CONTEXT_KEYBOARD:
return button_context_keyboard;
}
return button_context_standard;
}

View file

@ -57,7 +57,6 @@
# H120/H140 iriverh120
# H320/H340 iriverh300
# H10 iriverh10
# IFP 7XX iriverifp7xx
# iaudio/Cowon
# X5 iaudiox5
# M5 iaudiom5
@ -6069,12 +6068,10 @@
<source>
*: "Battery: %d%% %dh %dm"
ipodmini1g,ipodmini2g,iriverh10: "Batt: %d%% %dh %dm"
iriverifp7xx: "%d%% %dh %dm"
</source>
<dest>
*: "Battery: %d%% %dh %dm"
ipodmini1g,ipodmini2g,iriverh10: "Batt: %d%% %dh %dm"
iriverifp7xx: "%d%% %dh %dm"
</dest>
<voice>
*: "Battery level"

View file

@ -61,13 +61,6 @@
#define BATTERY_ON_TXT "SELECT - start"
#define BATTERY_OFF_TXT "POWER"
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define BATTERY_ON BUTTON_SELECT
#define BATTERY_OFF BUTTON_PLAY
#define BATTERY_ON_TXT "SELECT - start"
#define BATTERY_OFF_TXT "PLAY"
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD) || \
(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \

View file

@ -104,22 +104,6 @@ enum {
#define BJACK_RIGHT BUTTON_RIGHT
#define BJACK_LEFT BUTTON_LEFT
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define BJACK_SELECT_NAME "MODE"
#define BJACK_STAY_NAME "MODE"
#define BJACK_QUIT_NAME "PLAY"
#define BJACK_DOUBLE_NAME "SELECT"
#define BJACK_SELECT BUTTON_MODE
#define BJACK_QUIT BUTTON_PLAY
#define BJACK_MAX (BUTTON_EQ|BUTTON_UP)
#define BJACK_MIN (BUTTON_EQ|BUTTON_DOWN)
#define BJACK_STAY BUTTON_MODE
#define BJACK_DOUBLEDOWN BUTTON_SELECT
#define BJACK_UP BUTTON_UP
#define BJACK_DOWN BUTTON_DOWN
#define BJACK_RIGHT BUTTON_RIGHT
#define BJACK_LEFT BUTTON_LEFT
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define BJACK_SELECT_NAME "SELECT"
#define BJACK_STAY_NAME "VOL-"

View file

@ -68,16 +68,6 @@
#define CALENDAR_NEXT_MONTH BUTTON_VOL_DOWN
#define CALENDAR_PREV_MONTH BUTTON_VOL_UP
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define CALENDAR_QUIT BUTTON_PLAY
#define CALENDAR_SELECT BUTTON_SELECT
#define CALENDAR_NEXT_WEEK BUTTON_DOWN
#define CALENDAR_PREV_WEEK BUTTON_UP
#define CALENDAR_NEXT_DAY BUTTON_RIGHT
#define CALENDAR_PREV_DAY BUTTON_LEFT
#define CALENDAR_NEXT_MONTH BUTTON_MODE
#define CALENDAR_PREV_MONTH BUTTON_EQ
#elif CONFIG_KEYPAD == SANSA_E200_PAD
#define CALENDAR_QUIT BUTTON_POWER
#define CALENDAR_SELECT BUTTON_SELECT

View file

@ -70,20 +70,6 @@
#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define CB_SELECT BUTTON_SELECT
#define CB_UP BUTTON_UP
#define CB_DOWN BUTTON_DOWN
#define CB_LEFT BUTTON_LEFT
#define CB_RIGHT BUTTON_RIGHT
#define CB_PLAY BUTTON_PLAY
#define CB_LEVEL BUTTON_EQ
#define CB_MENU BUTTON_MODE
#define CB_SCROLL_UP (BUTTON_UP|BUTTON_REPEAT)
#define CB_SCROLL_DOWN (BUTTON_DOWN|BUTTON_REPEAT)
#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
#define CB_SELECT BUTTON_SELECT
#define CB_UP BUTTON_UP

View file

@ -46,16 +46,6 @@
#define CHC_SETTINGS_OK BUTTON_SELECT
#define CHC_SETTINGS_CANCEL BUTTON_MENU
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define CHC_QUIT BUTTON_PLAY
#define CHC_STARTSTOP BUTTON_MODE
#define CHC_RESET BUTTON_EQ
#define CHC_MENU BUTTON_SELECT
#define CHC_SETTINGS_INC BUTTON_RIGHT
#define CHC_SETTINGS_DEC BUTTON_LEFT
#define CHC_SETTINGS_OK BUTTON_SELECT
#define CHC_SETTINGS_CANCEL BUTTON_PLAY
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
#define CHC_QUIT BUTTON_REC
#define CHC_STARTSTOP BUTTON_PLAY

View file

@ -62,16 +62,6 @@
#define CUBE_HIGHSPEED_PRE BUTTON_SELECT
#define CUBE_HIGHSPEED (BUTTON_SELECT | BUTTON_REL)
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define CUBE_QUIT BUTTON_PLAY
#define CUBE_NEXT BUTTON_RIGHT
#define CUBE_PREV BUTTON_LEFT
#define CUBE_INC BUTTON_UP
#define CUBE_DEC BUTTON_DOWN
#define CUBE_MODE BUTTON_MODE
#define CUBE_PAUSE BUTTON_SELECT
#define CUBE_HIGHSPEED BUTTON_EQ
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
#define CUBE_QUIT BUTTON_POWER
#define CUBE_NEXT BUTTON_RIGHT

View file

@ -155,20 +155,6 @@
#define FRACTAL_PRECISION_DEC BUTTON_REW
#define FRACTAL_RESET (BUTTON_PLAY | BUTTON_REW)
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define FRACTAL_QUIT BUTTON_EQ
#define FRACTAL_UP BUTTON_UP
#define FRACTAL_DOWN BUTTON_DOWN
#define FRACTAL_LEFT BUTTON_LEFT
#define FRACTAL_RIGHT BUTTON_RIGHT
#define FRACTAL_ZOOM_IN_PRE BUTTON_SELECT
#define FRACTAL_ZOOM_IN (BUTTON_SELECT | BUTTON_REL)
#define FRACTAL_ZOOM_OUT_PRE BUTTON_SELECT
#define FRACTAL_ZOOM_OUT (BUTTON_SELECT | BUTTON_REPEAT)
#define FRACTAL_PRECISION_INC (BUTTON_PLAY | BUTTON_RIGHT)
#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_LEFT)
#define FRACTAL_RESET BUTTON_MODE
#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
#define FRACTAL_QUIT BUTTON_BACK
#define FRACTAL_UP BUTTON_UP

View file

@ -57,14 +57,6 @@
#define GREYSCALE_RIGHT BUTTON_RIGHT
#define GREYSCALE_OFF BUTTON_MENU
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define GREYSCALE_SHIFT BUTTON_PLAY
#define GREYSCALE_UP BUTTON_UP
#define GREYSCALE_DOWN BUTTON_DOWN
#define GREYSCALE_LEFT BUTTON_LEFT
#define GREYSCALE_RIGHT BUTTON_RIGHT
#define GREYSCALE_OFF BUTTON_EQ
#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
#define GREYSCALE_SHIFT BUTTON_RC_PLAY /* somewhat dangerous... */
#define GREYSCALE_UP BUTTON_RC_VOL_UP

View file

@ -63,16 +63,6 @@
#define HK_SELECT "SELECT"
#define HK_CANCEL "MENU"
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define JEWELS_UP BUTTON_UP
#define JEWELS_DOWN BUTTON_DOWN
#define JEWELS_LEFT BUTTON_LEFT
#define JEWELS_RIGHT BUTTON_RIGHT
#define JEWELS_SELECT BUTTON_SELECT
#define JEWELS_CANCEL BUTTON_PLAY
#define HK_SELECT "SELECT"
#define HK_CANCEL "PLAY"
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
#define JEWELS_UP BUTTON_UP
#define JEWELS_DOWN BUTTON_DOWN

View file

@ -294,7 +294,6 @@ static const unsigned char lcdlinear[256] = {
#define LCD_SCANRATE 73 /* Hz */
#else /* not yet calibrated targets - generic linear mapping */
/* TODO: calibrate iFP7xx */
static const unsigned char lcdlinear[256] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,

View file

@ -91,7 +91,6 @@ const struct button_mapping pla_main_ctx[] =
|| (CONFIG_KEYPAD == IRIVER_H300_PAD) \
|| (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \
|| (CONFIG_KEYPAD == GIGABEAT_PAD) \
|| (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \
|| (CONFIG_KEYPAD == SANSA_C200_PAD) \
|| (CONFIG_KEYPAD == GIGABEAT_S_PAD) \
|| (CONFIG_KEYPAD == MROBE100_PAD) \
@ -348,12 +347,6 @@ const struct button_mapping pla_main_ctx[] =
{PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
{PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD)
{PLA_CANCEL, BUTTON_EQ|BUTTON_REL, BUTTON_EQ},
{PLA_EXIT, BUTTON_EQ|BUTTON_REPEAT, BUTTON_NONE},
{PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
{PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == MROBE500_PAD)
{PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
{PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},

View file

@ -95,23 +95,6 @@
#define LVL_UP_TEXT "PLAY"
#define LVL_DOWN_TEXT "-"
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define PEGBOX_SELECT BUTTON_MODE
#define PEGBOX_QUIT BUTTON_PLAY
#define PEGBOX_RESTART (BUTTON_EQ|BUTTON_MODE)
#define PEGBOX_LVL_UP (BUTTON_EQ|BUTTON_UP)
#define PEGBOX_LVL_DOWN (BUTTON_EQ|BUTTON_DOWN)
#define PEGBOX_UP BUTTON_UP
#define PEGBOX_DOWN BUTTON_DOWN
#define PEGBOX_RIGHT BUTTON_RIGHT
#define PEGBOX_LEFT BUTTON_LEFT
#define SELECT_TEXT "MODE"
#define QUIT_TEXT "PLAY"
#define RESTART_TEXT "EQ+MODE"
#define LVL_UP_TEXT "EQ+UP"
#define LVL_DOWN_TEXT "EQ+DOWN"
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define PEGBOX_SELECT BUTTON_PLAY
#define PEGBOX_QUIT BUTTON_POWER

View file

@ -128,8 +128,6 @@ const struct button_mapping pf_context_buttons[] =
#endif
#elif CONFIG_KEYPAD == SANSA_E200_PAD
{PF_QUIT, BUTTON_POWER, BUTTON_NONE},
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
{PF_QUIT, BUTTON_EQ, BUTTON_NONE},
#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \
|| (CONFIG_KEYPAD == IPOD_3G_PAD) \
|| (CONFIG_KEYPAD == IPOD_4G_PAD) \

View file

@ -152,17 +152,6 @@
#define ROCKBLOX_DROP BUTTON_SELECT
#define ROCKBLOX_RESTART BUTTON_A
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define ROCKBLOX_OFF BUTTON_PLAY
#define ROCKBLOX_ROTATE_CCW BUTTON_UP
#define ROCKBLOX_ROTATE_CW BUTTON_SELECT
#define ROCKBLOX_DOWN BUTTON_DOWN
#define ROCKBLOX_LEFT BUTTON_LEFT
#define ROCKBLOX_RIGHT BUTTON_RIGHT
#define ROCKBLOX_DROP BUTTON_MODE
#define ROCKBLOX_RESTART BUTTON_EQ
#elif CONFIG_KEYPAD == MROBE500_PAD
#define ROCKBLOX_OFF BUTTON_POWER

View file

@ -122,16 +122,6 @@ static void setoptions (void)
options.SELECT = BUTTON_NONE;
options.MENU = (BUTTON_SELECT | BUTTON_REPEAT);
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
options.UP = BUTTON_UP;
options.DOWN = BUTTON_DOWN;
options.A = BUTTON_PLAY;
options.B = BUTTON_EQ;
options.START = BUTTON_MODE;
options.SELECT = (BUTTON_SELECT | BUTTON_REL);
options.MENU = (BUTTON_SELECT | BUTTON_REPEAT);
#elif CONFIG_KEYPAD == GIGABEAT_PAD
options.UP = BUTTON_UP;
options.DOWN = BUTTON_DOWN;

View file

@ -51,14 +51,6 @@
#define STOPWATCH_SCROLL_UP BUTTON_SCROLL_FWD
#define STOPWATCH_SCROLL_DOWN BUTTON_SCROLL_BACK
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define STOPWATCH_QUIT BUTTON_PLAY
#define STOPWATCH_START_STOP BUTTON_MODE
#define STOPWATCH_RESET_TIMER BUTTON_EQ
#define STOPWATCH_LAP_TIMER BUTTON_SELECT
#define STOPWATCH_SCROLL_UP BUTTON_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
#define STOPWATCH_QUIT BUTTON_POWER
#define STOPWATCH_START_STOP BUTTON_PLAY

View file

@ -75,17 +75,6 @@
#define TV_AUTOSCROLL BUTTON_PLAY
#define TV_BOOKMARK BUTTON_SELECT
/* iFP7xx keys */
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define TV_QUIT BUTTON_PLAY
#define TV_SCROLL_UP BUTTON_UP
#define TV_SCROLL_DOWN BUTTON_DOWN
#define TV_SCREEN_LEFT BUTTON_LEFT
#define TV_SCREEN_RIGHT BUTTON_RIGHT
#define TV_MENU BUTTON_MODE
#define TV_AUTOSCROLL BUTTON_SELECT
#define TV_BOOKMARK (BUTTON_LEFT|BUTTON_SELECT)
/* iAudio X5/M5 keys */
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
#define TV_QUIT BUTTON_POWER

View file

@ -47,14 +47,6 @@
#define ZX_SELECT BUTTON_SELECT
#define ZX_MENU BUTTON_PLAY
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define ZX_SELECT BUTTON_SELECT
#define ZX_MENU BUTTON_PLAY
#define ZX_LEFT BUTTON_LEFT
#define ZX_RIGHT BUTTON_RIGHT
#define ZX_UP BUTTON_UP
#define ZX_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define ZX_SELECT BUTTON_REW
#define ZX_MENU BUTTON_FF

View file

@ -32,17 +32,6 @@
#define KBD_UP BUTTON_SCROLL_BACK
#define KBD_DOWN BUTTON_SCROLL_FWD
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
/* TODO: Check keyboard mappings */
#define KBD_SELECT BUTTON_SELECT
#define KBD_ABORT BUTTON_PLAY
#define KBD_LEFT BUTTON_LEFT
#define KBD_RIGHT BUTTON_RIGHT
#define KBD_UP BUTTON_UP
#define KBD_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
/* TODO: Check keyboard mappings */

View file

@ -336,9 +336,6 @@ drivers/touchscreen.c
/* Storage */
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
#if (CONFIG_STORAGE & STORAGE_NAND) && (CONFIG_NAND == NAND_IFP7XX)
drivers/ata_flash.c
#endif
#if (CONFIG_STORAGE & STORAGE_NAND) && (CONFIG_NAND == NAND_TCC)
target/arm/ata-nand-telechips.c
#endif
@ -1039,12 +1036,9 @@ target/coldfire/iaudio/audio-iaudio.c
#endif
#endif /* IAUDIO_M3 */
#ifdef IRIVER_IFP7XX_SERIES
#ifdef STUB
ifp_usb_serial.c
libc/sscanf.c
#endif /* STUB */
#endif /* IRIVER_IFP7XX_SERIES */
#if defined(IRIVER_H300_SERIES) || defined(IRIVER_H100_SERIES)
target/coldfire/iriver/ata-iriver.c
@ -1349,19 +1343,6 @@ target/arm/ipod/button-mini1g.c
target/arm/ipod/button-clickwheel.c
#endif /* IPOD_MINI2G */
#ifdef IRIVER_IFP7XX
target/arm/pnx0101/iriver-ifp7xx/adc-ifp7xx.c
target/arm/pnx0101/iriver-ifp7xx/backlight-ifp7xx.c
target/arm/pnx0101/iriver-ifp7xx/button-ifp7xx.c
target/arm/pnx0101/iriver-ifp7xx/lcd-ifp7xx.c
target/arm/pnx0101/iriver-ifp7xx/power-ifp7xx.c
target/arm/pnx0101/iriver-ifp7xx/powermgmt-ifp7xx.c
target/arm/pnx0101/iriver-ifp7xx/usb-ifp7xx.c
#ifndef BOOTLOADER
target/arm/pnx0101/pcm-pnx0101.c
#endif /* BOOTLOADER */
#endif /* IRIVER_IFP7XX */
#ifdef SANSA_CLIPPLUS
target/arm/as3525/sansa-clipplus/lcd-clip-plus.c
target/arm/as3525/sansa-clipplus/button-clip.c

View file

@ -1,484 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2005 Tomasz Malesinski
*
* 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 "storage.h"
#include <stdbool.h>
#include <string.h>
#if CONFIG_CPU == PNX0101
#include "pnx0101.h"
#endif
/*
#include "kernel.h"
#include "thread.h"
#include "led.h"
#include "cpu.h"
#include "system.h"
#include "debug.h"
#include "panic.h"
#include "usb.h"
#include "power.h"
#include "string.h"
*/
#define SECTOR_SIZE (512)
static long last_disk_activity = -1;
#if CONFIG_FLASH == FLASH_IFP7XX
static unsigned char flash_ce[4] = {0x20, 0x02, 0x10, 0x08};
#define FLASH_IO_BASE 0x28000000
#define FLASH_REG_DATA (*((volatile unsigned char*)(FLASH_IO_BASE)))
#define FLASH_REG_CMD (*((volatile unsigned char*)(FLASH_IO_BASE + 4)))
#define FLASH_REG_ADDR (*((volatile unsigned char*)(FLASH_IO_BASE + 8)))
#define SEGMENT_SIZE 1000
#define MAX_N_SEGMENTS 8
#endif
#define FLASH_MODEL_NONE 0
#define FLASH_MODEL_256 1
#define FLASH_MODEL_512 2
struct flash_disk
{
unsigned short block_map[MAX_N_SEGMENTS][SEGMENT_SIZE];
short cur_block;
int cur_phblock_start;
int n_chips;
unsigned char chip_no[4];
unsigned char model;
};
static struct flash_disk flash_disk;
static void flash_select_chip(int no, int sel)
{
#if CONFIG_FLASH == FLASH_IFP7XX
if (sel)
GPIO5_CLR = flash_ce[no];
else
GPIO5_SET = flash_ce[no];
#endif
}
static inline unsigned char flash_read_data(void)
{
return FLASH_REG_DATA;
}
static inline void flash_write_data(unsigned char data)
{
FLASH_REG_DATA = data;
}
/* TODO: these two doesn't work when inlined, probably some
delay is required */
static void flash_write_cmd(unsigned char cmd)
{
FLASH_REG_CMD = cmd;
}
static void flash_write_addr(unsigned char addr)
{
FLASH_REG_ADDR = addr;
}
static void flash_wait_ready(void)
{
int i;
for (i = 0; i < 5; i++)
while ((GPIO6_READ & 8) == 0);
}
static unsigned char model_n_sectors_order[] = {0, 19, 20};
static int flash_map_sector(int sector, int* chip, int* chip_sector)
{
int ord, c;
if (flash_disk.model == FLASH_MODEL_NONE)
return -1;
ord = model_n_sectors_order[flash_disk.model];
c = sector >> ord;
*chip_sector = sector & ((1 << ord) - 1);
if (c >= flash_disk.n_chips)
return -1;
*chip = flash_disk.chip_no[c];
return 0;
}
static int flash_read_id(int no) {
int id;
flash_select_chip(no, 1);
flash_write_cmd(0x90);
flash_write_addr(0);
flash_read_data();
id = flash_read_data();
flash_select_chip(no, 0);
return id;
}
static int flash_read_sector(int sector, unsigned char* buf,
unsigned char* oob)
{
unsigned long *bufl = (unsigned long *)buf;
int chip, chip_sector;
int i;
if (flash_map_sector(sector, &chip, &chip_sector) < 0)
return -1;
flash_select_chip(chip, 1);
flash_write_cmd(0x00);
flash_write_addr(0);
flash_write_addr((chip_sector << 1) & 7);
flash_write_addr((chip_sector >> 2) & 0xff);
flash_write_addr((chip_sector >> 10) & 0xff);
flash_write_addr((chip_sector >> 18) & 0xff);
flash_write_cmd(0x30);
flash_wait_ready();
if ((unsigned long)buf & 3)
{
for (i = 0; i < 512; i++)
buf[i] = flash_read_data();
}
else
{
for (i = 0; i < 512 / 4; i++) {
unsigned long v;
#ifdef ROCKBOX_LITTLE_ENDIAN
v = flash_read_data();
v |= (unsigned long)flash_read_data() << 8;
v |= (unsigned long)flash_read_data() << 16;
v |= (unsigned long)flash_read_data() << 24;
#else
v = (unsigned long)flash_read_data() << 24;
v |= (unsigned long)flash_read_data() << 16;
v |= (unsigned long)flash_read_data() << 8;
v |= flash_read_data();
#endif
bufl[i] = v;
}
}
flash_write_cmd(0x05);
flash_write_addr((chip_sector & 3) * 0x10);
flash_write_addr(8);
flash_write_cmd(0xe0);
for (i = 0; i < 16; i++)
oob[i] = flash_read_data();
flash_select_chip(chip, 0);
return 0;
}
static int flash_read_sector_oob(int sector, unsigned char* oob)
{
int chip, chip_sector;
int i;
if (flash_map_sector(sector, &chip, &chip_sector) < 0)
return -1;
flash_select_chip(chip, 1);
flash_write_cmd(0x00);
flash_write_addr((chip_sector & 3) * 0x10);
flash_write_addr(8);
flash_write_addr((chip_sector >> 2) & 0xff);
flash_write_addr((chip_sector >> 10) & 0xff);
flash_write_addr((chip_sector >> 18) & 0xff);
flash_write_cmd(0x30);
flash_wait_ready();
for (i = 0; i < 16; i++)
oob[i] = flash_read_data();
flash_select_chip(chip, 0);
return 0;
}
static unsigned char model_n_segments[] = {0, 2, 4};
static inline int flash_get_n_segments(void)
{
return model_n_segments[flash_disk.model] * flash_disk.n_chips;
}
static inline int flash_get_n_phblocks(void)
{
return 1024;
}
static int model_n_sectors_in_block[] = {0, 256, 256};
static int flash_get_n_sectors_in_block(void)
{
return model_n_sectors_in_block[flash_disk.model];
}
static int flash_phblock_to_sector(int segment, int block)
{
return (segment * flash_get_n_phblocks() + block)
* flash_get_n_sectors_in_block();
}
static int flash_is_bad_block(unsigned char* oob)
{
/* TODO: should we check two pages? (see datasheet) */
return oob[0] != 0xff;
}
static int count_1(int n) {
int r = 0;
while (n != 0) {
r += (n & 1);
n >>= 1;
}
return r;
}
static int flash_get_logical_block_no(unsigned char* oob)
{
int no1, no2;
no1 = oob[6] + (oob[7] << 8);
no2 = oob[11] + (oob[12] << 8);
if (no1 == no2 && (no1 & 0xf000) == 0x1000)
return (no1 & 0xfff) >> 1;
if (count_1(no1 ^ no2) > 1)
return -1;
if ((no1 & 0xf000) == 0x1000
&& (count_1(no1) & 1) == 0)
return (no1 & 0xfff) >> 1;
if ((no2 & 0xf000) == 0x1000
&& (count_1(no2) & 1) == 0)
return (no2 & 0xfff) >> 1;
return -1;
}
static int flash_disk_scan(void)
{
int n_segments, n_phblocks;
unsigned char oob[16];
int s, b;
/* TODO: checking for double blocks */
n_segments = flash_get_n_segments();
n_phblocks = flash_get_n_phblocks();
flash_disk.cur_block = -1;
flash_disk.cur_phblock_start = -1;
for (s = 0; s < n_segments; s++)
{
for (b = 0; b < n_phblocks; b++)
{
int r;
r = flash_read_sector_oob(flash_phblock_to_sector(s, b),
oob);
if (r >= 0 && !flash_is_bad_block(oob))
{
int lb;
lb = flash_get_logical_block_no(oob);
if (lb >= 0 && lb < SEGMENT_SIZE)
flash_disk.block_map[s][lb] = b;
}
}
}
return 0;
}
static int flash_disk_find_block(int block)
{
int seg, bmod, phb;
unsigned char oob[16];
int r;
if (block >= SEGMENT_SIZE * flash_get_n_segments())
return -1;
if (block == flash_disk.cur_block)
return flash_disk.cur_phblock_start;
seg = block / SEGMENT_SIZE;
bmod = block % SEGMENT_SIZE;
phb = flash_disk.block_map[seg][bmod];
r = flash_read_sector_oob(flash_phblock_to_sector(seg, phb), oob);
if (r < 0)
return -1;
if (flash_is_bad_block(oob))
return -1;
if (flash_get_logical_block_no(oob) != bmod)
return -1;
flash_disk.cur_block = block;
flash_disk.cur_phblock_start = flash_phblock_to_sector(seg, phb);
return flash_disk.cur_phblock_start;
}
static int flash_disk_read_sectors(unsigned long start,
int count,
void* buf)
{
int block, secmod, done;
int phb;
char oob[16];
block = start / flash_get_n_sectors_in_block();
secmod = start % flash_get_n_sectors_in_block();
phb = flash_disk_find_block(block);
done = 0;
while (count > 0 && secmod < flash_get_n_sectors_in_block())
{
if (phb >= 0)
flash_read_sector(phb + secmod, buf, oob);
else
memset(buf, 0, SECTOR_SIZE);
buf += SECTOR_SIZE;
count--;
secmod++;
done++;
}
return done;
}
int nand_read_sectors(IF_MD(int drive,)
unsigned long start,
int incount,
void* inbuf)
{
while (incount > 0)
{
int done = flash_disk_read_sectors(start, incount, inbuf);
if (done < 0)
return -1;
start += done;
incount -= done;
inbuf += SECTOR_SIZE * done;
}
return 0;
}
int nand_write_sectors(IF_MD(int drive,)
unsigned long start,
int count,
const void* buf)
{
(void)start;
(void)count;
(void)buf;
return -1;
}
int nand_init(void)
{
int i, id, id2;
id = flash_read_id(0);
switch (id)
{
case 0xda:
flash_disk.model = FLASH_MODEL_256;
break;
case 0xdc:
flash_disk.model = FLASH_MODEL_512;
break;
default:
flash_disk.model = FLASH_MODEL_NONE;
return -1;
}
flash_disk.n_chips = 1;
flash_disk.chip_no[0] = 0;
for (i = 1; i < 4; i++)
{
id2 = flash_read_id(i);
if (id2 == id)
flash_disk.chip_no[flash_disk.n_chips++] = i;
}
if (flash_disk_scan() < 0)
return -2;
return 0;
}
long nand_last_disk_activity(void)
{
return last_disk_activity;
}
#ifdef STORAGE_GET_INFO
void nand_get_info(struct storage_info *info)
{
unsigned long blocks;
int i;
/* firmware version */
info->revision="0.00";
/* vendor field, need better name? */
info->vendor="Rockbox";
/* model field, need better name? */
info->product="TNFL";
/* blocks count */
info->num_sectors = 0;
info->sector_size=SECTOR_SIZE;
info->serial=0;
}
#endif
#ifdef CONFIG_STORAGE_MULTI
int nand_num_drives(int first_drive)
{
/* We don't care which logical drive number(s) we have been assigned */
(void)first_drive;
return 1;
}
#endif

View file

@ -101,7 +101,6 @@
#define IPOD_4G_PAD 7
#define IPOD_3G_PAD 8
#define IPOD_1G2G_PAD 9
#define IRIVER_IFP7XX_PAD 10
#define GIGABEAT_PAD 11
#define IRIVER_H10_PAD 12
#define SANSA_E200_PAD 13
@ -222,7 +221,6 @@
#define LCD_IPODVIDEO 8 /* as used by iPod Video */
#define LCD_IPOD2BPP 9 /* as used by all fullsize greyscale iPods */
#define LCD_IPODMINI 10 /* as used by iPod Mini g1/g2 */
#define LCD_IFP7XX 11 /* as used by iRiver iFP 7xx/8xx */
#define LCD_GIGABEAT 12
#define LCD_H10_20GB 13 /* as used by iriver H10 20Gb */
#define LCD_H10_5GB 14 /* as used by iriver H10 5Gb */
@ -322,7 +320,6 @@ Lyre prototype 1 */
/* else HW controlled LED (iRiver H1x0) */
/* CONFIG_NAND */
#define NAND_IFP7XX 1
#define NAND_TCC 2
#define NAND_SAMSUNG 3
#define NAND_CC 4 /* ChinaChip */
@ -410,8 +407,6 @@ Lyre prototype 1 */
#include "config/ipodnano2g.h"
#elif defined(IPOD_6G)
#include "config/ipod6g.h"
#elif defined(IRIVER_IFP7XX)
#include "config/iriverifp7xx.h"
#elif defined(GIGABEAT_F)
#include "config/gigabeatfx.h"
#elif defined(GIGABEAT_S)

View file

@ -1,129 +0,0 @@
/*
* This config file is for iriver iFP-799
*/
#define IRIVER_IFP7XX_SERIES 1
#define MODEL_NAME "iriver iFP-799"
/* For Rolo and boot loader */
#define MODEL_NUMBER 6
/* define this if you have recording possibility */
/*#define HAVE_RECORDING*/
/* define this if you would like tagcache to build on this target */
/* #define HAVE_TAGCACHE */
/* LCD dimensions */
#define LCD_WIDTH 128
#define LCD_HEIGHT 64
/* sqrt(128^2 + 64^2) / 1.0 = 143.1 */
#define LCD_DPI 143
#define LCD_DEPTH 1
#define LCD_PIXELFORMAT VERTICAL_PACKING
/* Display colours, for screenshots and sim (0xRRGGBB) */
#define LCD_DARKCOLOR 0x000000
#define LCD_BRIGHTCOLOR 0x5e6854
#define LCD_BL_DARKCOLOR 0x000000
#define LCD_BL_BRIGHTCOLOR 0x3ca0e6
#define CONFIG_KEYPAD IRIVER_IFP7XX_PAD
#define CONFIG_STORAGE STORAGE_NAND
#define CONFIG_NAND NAND_IFP7XX
#define HAVE_FAT16SUPPORT
/* Define this if you have a software controlled poweroff */
#define HAVE_SW_POWEROFF
/* The number of bytes reserved for loadable codecs */
#define CODEC_SIZE 0x38000
/* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0x10000
/* Define this if you have the WM8975 audio codec */
/* #define HAVE_WM8975 */
#define HAVE_LCD_CONTRAST
#define MIN_CONTRAST_SETTING 5
#define MAX_CONTRAST_SETTING 63
#define DEFAULT_CONTRAST_SETTING 40
/* define this if you have a flash memory storage */
#define HAVE_FLASH_STORAGE
#define BATTERY_CAPACITY_DEFAULT 1000 /* default battery capacity */
#define BATTERY_CAPACITY_MIN 500 /* min. capacity selectable */
#define BATTERY_CAPACITY_MAX 2800 /* max. capacity selectable */
#define BATTERY_CAPACITY_INC 50 /* capacity increment */
#define BATTERY_TYPES_COUNT 2 /* Alkalines or NiMH */
#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
/* define this if the unit should not shut down on low battery. */
#define NO_LOW_BATTERY_SHUTDOWN
/* Define this if you have a Philips PNX0101 */
#define CONFIG_CPU PNX0101
/* Define this if you want to use the PNX0101 i2c interface */
#define CONFIG_I2C I2C_PNX0101
/* The start address index for ROM builds */
#define ROM_START 0x00000000
/* Define this for LCD backlight available */
#define HAVE_BACKLIGHT
/* Define this to the CPU frequency */
#define CPU_FREQ 48000000
#define CONFIG_LCD LCD_IFP7XX
/* 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_ISP1582
#define HAVE_GDB_API
/* Define this if you have adjustable CPU frequency */
#define HAVE_ADJUSTABLE_CPU_FREQ
#define BOOTFILE_EXT "iriver"
#define BOOTFILE "rockbox." BOOTFILE_EXT
#define BOOTDIR "/.rockbox"
#define IBSS_ATTR_VOICE_STACK
#define ICODE_ATTR_TREMOR_NOT_MDCT
#define ICODE_ATTR_TREMOR_MDCT
#define ICODE_ATTR_FLAC
#define IBSS_ATTR_FLAC_DECODED0
#define ICONST_ATTR_MPA_HUFFMAN
#define IBSS_ATTR_MPC_SAMPLE_BUF
#define ICODE_ATTR_ALAC
#define IBSS_ATTR_SHORTEN_DECODED0
#define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */
/* Define this if a programmable hotkey is mapped */
#define HAVE_HOTKEY

View file

@ -25,9 +25,6 @@
#include "config.h"
#define GDB_API_MAGIC 0x6db570b
#ifdef IRIVER_IFP7XX_SERIES
#define GDB_API_ADDRESS 0xc06000
#endif
struct gdb_api
{

View file

@ -1,30 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2006 by Tomasz Malesinski
*
* 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 _USB_SERIAL_H_
#define _USB_SERIAL_H_
void usb_serial_init(void);
void usb_serial_put_byte(int b);
int usb_serial_get_byte(void);
int usb_serial_try_put_byte(int b);
int usb_serial_try_get_byte(void);
#endif

File diff suppressed because it is too large Load diff

View file

@ -69,9 +69,6 @@ extern int write_bootdata(unsigned char* buf, int len, unsigned int boot_volume
#include "backlight-target.h"
#endif
#if !defined(IRIVER_IFP7XX_SERIES)
/* FIX: this doesn't work on iFP */
#define IRQ0_EDGE_TRIGGER 0x80
static int rolo_handle;
@ -331,13 +328,3 @@ int rolo_load(const char* filename)
/* never reached */
return 0;
}
#else /* !defined(IRIVER_IFP7XX_SERIES) */
int rolo_load(const char* filename)
{
/* dummy */
(void)filename;
return 0;
}
#endif /* !defined(IRIVER_IFP7XX_SERIES) */

View file

@ -1,144 +0,0 @@
#include "config.h"
ENTRY(start)
OUTPUT_FORMAT(elf32-littlearm)
OUTPUT_ARCH(arm)
STARTUP(target/arm/pnx0101/crt0-pnx0101.o)
#define PLUGINSIZE PLUGIN_BUFFER_SIZE
#define CODECSIZE CODEC_SIZE
#ifdef DEBUG
#define STUBOFFSET 0x10000
#else
#define STUBOFFSET 0
#endif
#define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE - STUBOFFSET - CODECSIZE
#define DRAMORIG 0xc00000 + STUBOFFSET
#define IRAM0ORIG 0x000000
#define IRAM0SIZE 0x7000
#define IRAMORIG 0x400000
#define IRAMSIZE 0x7000
/* End of the audio buffer, where the codec buffer starts */
#define ENDAUDIOADDR (DRAMORIG + DRAMSIZE)
/* Where the codec buffer ends, and the plugin buffer starts */
#define ENDADDR (ENDAUDIOADDR + CODECSIZE)
MEMORY
{
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
IRAM0 : ORIGIN = IRAM0ORIG, LENGTH = IRAM0SIZE
}
SECTIONS
{
.text :
{
loadaddress = .;
_loadaddress = .;
. = ALIGN(0x200);
*(.init.text)
*(.text*)
*(.glue_7)
*(.glue_7t)
. = ALIGN(0x4);
} > DRAM
.rodata :
{
*(.rodata) /* problems without this, dunno why */
*(.rodata*)
*(.rodata.str1.1)
*(.rodata.str1.4)
. = ALIGN(0x4);
} > DRAM
.data :
{
*(.data*)
. = ALIGN(0x4);
} > DRAM
/DISCARD/ :
{
*(.eh_frame)
}
.vectors 0x0 :
{
_vectorsstart = .;
KEEP(*(.vectors));
_vectorsend = .;
*(.dmabuf)
} >IRAM0 AT> DRAM
_vectorscopy = LOADADDR(.vectors);
.iram IRAMORIG + SIZEOF(.vectors) :
{
_iramstart = .;
*(.icode)
*(.irodata)
*(.idata)
. = ALIGN(0x4);
_iramend = .;
} > IRAM AT> DRAM
_iramcopy = LOADADDR(.iram);
.ibss (NOLOAD) :
{
_iedata = .;
*(.ibss)
. = ALIGN(0x4);
_iend = .;
} > IRAM
.stack :
{
*(.stack)
stackbegin = .;
. += 0x2000;
stackend = .;
} > IRAM
.bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram) + SIZEOF(.vectors):
{
_edata = .;
*(.bss*)
*(COMMON)
. = ALIGN(0x4);
_end = .;
} > DRAM
.audiobuf ALIGN(4) :
{
_audiobuffer = .;
audiobuffer = .;
} > DRAM
.audiobufend ENDAUDIOADDR:
{
audiobufend = .;
_audiobufend = .;
} > DRAM
.codec ENDAUDIOADDR:
{
codecbuf = .;
_codecbuf = .;
}
.plugin ENDADDR:
{
_pluginbuf = .;
pluginbuf = .;
}
}

View file

@ -1,28 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id: backlight-target.h 13136 2007-04-12 22:12:13Z amiconn $
*
* 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 BACKLIGHT_TARGET_H
#define BACKLIGHT_TARGET_H
#define backlight_hw_init() true
void backlight_hw_on(void);
void backlight_hw_off(void);
#endif

View file

@ -1,225 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id: crt0.S 11850 2006-12-29 02:49:12Z markun $
*
* Copyright (C) 2002 by Linus Nielsen Feltzing
*
* 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.
*
****************************************************************************/
#define ASM /* do not include structure definitions from pnx0101.h */
#include "config.h"
#include "cpu.h"
.section .init.text,"ax",%progbits
.global start
start:
/* Arm bootloader and startup code based on startup.s from the iPodLinux loader
*
* Copyright (c) 2003, Daniel Palffy (dpalffy (at) rainstorm.org)
* Copyright (c) 2005, Bernard Leach <leachbj@bouncycastle.org>
*
*/
msr cpsr_c, #0xd3 /* enter supervisor mode, disable IRQ */
#ifndef BOOTLOADER
#ifndef DEBUG
ldr r0, =0x80105000
mov r1, #1
str r1, [r0, #4]
mov r1, #0
str r1, [r0, #4]
1: ldr r1, [r0]
cmp r1, #0
bne 1b
mov r1, #0x74
str r1, [r0, #8]
mov r1, #2
str r1, [r0, #0x18]
mov r1, #2
str r1, [r0, #0x20]
mov r1, #82
str r1, [r0, #0x28]
mov r1, #100
str r1, [r0, #0x2c]
mov r1, #0x120
str r1, [r0, #0x30]
mov r1, #6
str r1, [r0, #4]
ldr r0, =1f
mov r15, r0
1:
#endif /* !DEBUG */
#ifndef DEBUG
/* Copy exception handler code to address 0 */
ldr r2, =_vectorsstart
ldr r3, =_vectorsend
ldr r4, =_vectorscopy
1:
cmp r3, r2
ldrhi r5, [r4], #4
strhi r5, [r2], #4
bhi 1b
#else
ldr r1, =vectors
ldr r0, =irq_handler
str r0, [r1, #24]
ldr r0, =fiq_handler
str r0, [r1, #28]
#endif
#ifndef STUB
/* Zero out IBSS */
ldr r2, =_iedata
ldr r3, =_iend
mov r4, #0
1:
cmp r3, r2
strhi r4, [r2], #4
bhi 1b
/* Copy the IRAM */
ldr r2, =_iramcopy
ldr r3, =_iramstart
ldr r4, =_iramend
1:
cmp r4, r3
ldrhi r5, [r2], #4
strhi r5, [r3], #4
bhi 1b
#endif /* !STUB */
#endif /* !BOOTLOADER */
/* Initialise bss section to zero */
ldr r2, =_edata
ldr r3, =_end
mov r4, #0
1:
cmp r3, r2
strhi r4, [r2], #4
bhi 1b
/* Set up stack for IRQ mode */
msr cpsr_c, #0xd2
ldr sp, =irq_stack
/* Set up stack for FIQ mode */
msr cpsr_c, #0xd1
ldr sp, =fiq_stack
/* Let svc, abort and undefined modes use irq stack */
msr cpsr_c, #0xd3
ldr sp =irq_stack
msr cpsr_c, #0xd7
ldr sp, =irq_stack
msr cpsr_c, #0xdb
ldr sp, =irq_stack
/* Switch to sys mode */
msr cpsr_c, #0xdf
/* Set up some stack and munge it with 0xdeadbeef */
ldr sp, =stackend
mov r3, sp
ldr r2, =stackbegin
ldr r4, =0xdeadbeef
1:
cmp r3, r2
strhi r4, [r2], #4
bhi 1b
bl main
/* main() should never return */
/* Exception handlers. Will be copied to address 0 after memory remapping */
.section .vectors,"aw"
ldr pc, [pc, #24]
ldr pc, [pc, #24]
ldr pc, [pc, #24]
ldr pc, [pc, #24]
ldr pc, [pc, #24]
ldr pc, [pc, #24]
ldr pc, [pc, #24]
ldr pc, [pc, #24]
/* Exception vectors */
.global vectors
vectors:
.word start
.word undef_instr_handler
.word software_int_handler
.word prefetch_abort_handler
.word data_abort_handler
.word reserved_handler
.word irq_handler
.word fiq_handler
.text
/* All illegal exceptions call into UIE with exception address as first
parameter. This is calculated differently depending on which exception
we're in. Second parameter is exception number, used for a string lookup
in UIE.
*/
undef_instr_handler:
sub r0, lr, #4
mov r1, #0
b UIE
/* We run sys mode most of the time, and should never see a software
exception being thrown. Make it illegal and call UIE.
*/
software_int_handler:
reserved_handler:
sub r0, lr, #4
mov r1, #4
b UIE
prefetch_abort_handler:
sub r0, lr, #4
mov r1, #1
b UIE
fiq_handler:
@ Branch straight to FIQ handler in pcm_playback.c. This also handles the
@ the correct return sequence.
stmfd sp!, {r0-r7, r12, lr}
bl fiq
ldmfd sp!, {r0-r7, r12, lr}
subs pc, lr, #4
irq_handler:
#ifndef STUB
stmfd sp!, {r0-r11, r12, lr}
bl irq
ldmfd sp!, {r0-r11, r12, lr}
#endif
subs pc, lr, #4
#ifdef STUB
UIE:
b UIE
#endif
/* 256 words of IRQ stack */
.space 256*4
irq_stack:
/* 256 words of FIQ stack */
.space 256*4
fiq_stack:

View file

@ -1,5 +0,0 @@
#include <stdbool.h>
bool dbg_ports()
{
return false;
}

View file

@ -1,24 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2005 by Tomasz Malesinski
*
* 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.
*
****************************************************************************/
void i2c_init(void)
{
}

View file

@ -1,59 +0,0 @@
/***************************************************************************
* __________ __ ___.
* 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.
*
****************************************************************************/
#include "config.h"
#include "cpu.h"
#include "system.h"
#include "kernel.h"
#include "thread.h"
#include "adc.h"
static unsigned short adcdata[NUM_ADC_CHANNELS];
unsigned short adc_read(int channel)
{
return adcdata[channel];
}
static void adc_tick(void)
{
if (ADCST & 0x10) {
adcdata[0] = ADCCH0 & 0x3ff;
adcdata[1] = ADCCH1 & 0x3ff;
adcdata[2] = ADCCH2 & 0x3ff;
adcdata[3] = ADCCH3 & 0x3ff;
adcdata[4] = ADCCH4 & 0x3ff;
ADCST = 0xa;
}
}
void adc_init(void)
{
ADCR24 = 0xaaaaa;
ADCR28 = 0;
ADCST = 2;
ADCST = 0xa;
while (!(ADCST & 0x10));
adc_tick();
tick_add_task(adc_tick);
}

View file

@ -1,31 +0,0 @@
/***************************************************************************
* __________ __ ___.
* 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 _ADC_TARGET_H_
#define _ADC_TARGET_H_
#define NUM_ADC_CHANNELS 5
#define ADC_BUTTONS 0
#define ADC_BATTERY 1
#define ADC_BUTTON_PLAY 2
#define ADC_UNREG_POWER ADC_BATTERY /* For compatibility */
#endif

View file

@ -1,35 +0,0 @@
/***************************************************************************
* __________ __ ___.
* 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.
*
****************************************************************************/
#include "config.h"
#include "cpu.h"
#include "system.h"
#include "backlight.h"
#include "lcd.h"
void backlight_hw_on(void)
{
GPIO3_SET = 1;
}
void backlight_hw_off(void)
{
GPIO3_CLR = 1;
}

View file

@ -1,90 +0,0 @@
/***************************************************************************
* __________ __ ___.
* 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.
*
****************************************************************************/
#include <stdlib.h>
#include "config.h"
#include "cpu.h"
#include "system.h"
#include "button.h"
#include "kernel.h"
#include "backlight.h"
#include "adc.h"
void button_init_device(void)
{
}
bool button_hold(void)
{
return (GPIO5_READ & 4) ? false : true;
}
/*
* Get button pressed from hardware
*/
int button_read_device(void)
{
int btn = BUTTON_NONE;
int data;
static bool hold_button = false;
bool hold_button_old;
/* normal buttons */
hold_button_old = hold_button;
hold_button = button_hold();
if (hold_button != hold_button_old)
backlight_hold_changed(hold_button);
if (!button_hold())
{
data = adc_read(ADC_BUTTONS);
if (data < 0x35c)
{
if (data < 0x151)
if (data < 0xc7)
if (data < 0x41)
btn = BUTTON_LEFT;
else
btn = BUTTON_RIGHT;
else
btn = BUTTON_SELECT;
else
if (data < 0x268)
if (data < 0x1d7)
btn = BUTTON_UP;
else
btn = BUTTON_DOWN;
else
if (data < 0x2f9)
btn = BUTTON_EQ;
else
btn = BUTTON_MODE;
}
if (adc_read(ADC_BUTTON_PLAY) < 0x64)
btn |= BUTTON_PLAY;
}
return btn;
}

View file

@ -1,49 +0,0 @@
/***************************************************************************
* __________ __ ___.
* 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.
*
****************************************************************************/
/* Custom written for the ifp7xx */
#ifndef _BUTTON_TARGET_H_
#define _BUTTON_TARGET_H_
#define HAS_BUTTON_HOLD
/* iriver IFP7XX specific button codes */
#define BUTTON_PLAY 0x00000001
#define BUTTON_SELECT 0x00000002
#define BUTTON_LEFT 0x00000004
#define BUTTON_RIGHT 0x00000008
#define BUTTON_UP 0x00000010
#define BUTTON_DOWN 0x00000020
#define BUTTON_MODE 0x00000040
#define BUTTON_EQ 0x00000080
#define BUTTON_MAIN (BUTTON_PLAY|BUTTON_SELECT\
|BUTTON_LEFT|BUTTON_RIGHT|BUTTON_UP|BUTTON_DOWN\
|BUTTON_MODE|BUTTON_EQ)
#define POWEROFF_BUTTON BUTTON_PLAY
#define POWEROFF_COUNT 40
#endif /* _BUTTON_TARGET_H_ */

View file

@ -1,224 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Alan Korr
*
* 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 "kernel.h"
#include "lcd.h"
#include "system.h"
/*** definitions ***/
#define LCD_SET_LOWER_COLUMN_ADDRESS ((char)0x00)
#define LCD_SET_HIGHER_COLUMN_ADDRESS ((char)0x10)
#define LCD_SET_INTERNAL_REGULATOR_RESISTOR_RATIO ((char)0x20)
#define LCD_SET_POWER_CONTROL_REGISTER ((char)0x28)
#define LCD_SET_DISPLAY_START_LINE ((char)0x40)
#define LCD_SET_CONTRAST_CONTROL_REGISTER ((char)0x81)
#define LCD_SET_SEGMENT_REMAP ((char)0xA0)
#define LCD_SET_LCD_BIAS ((char)0xA2)
#define LCD_SET_ENTIRE_DISPLAY_OFF ((char)0xA4)
#define LCD_SET_ENTIRE_DISPLAY_ON ((char)0xA5)
#define LCD_SET_NORMAL_DISPLAY ((char)0xA6)
#define LCD_SET_REVERSE_DISPLAY ((char)0xA7)
#define LCD_SET_MULTIPLEX_RATIO ((char)0xA8)
#define LCD_SET_BIAS_TC_OSC ((char)0xA9)
#define LCD_SET_1OVER4_BIAS_RATIO ((char)0xAA)
#define LCD_SET_INDICATOR_OFF ((char)0xAC)
#define LCD_SET_INDICATOR_ON ((char)0xAD)
#define LCD_SET_DISPLAY_OFF ((char)0xAE)
#define LCD_SET_DISPLAY_ON ((char)0xAF)
#define LCD_SET_PAGE_ADDRESS ((char)0xB0)
#define LCD_SET_COM_OUTPUT_SCAN_DIRECTION ((char)0xC0)
#define LCD_SET_TOTAL_FRAME_PHASES ((char)0xD2)
#define LCD_SET_DISPLAY_OFFSET ((char)0xD3)
#define LCD_SET_READ_MODIFY_WRITE_MODE ((char)0xE0)
#define LCD_SOFTWARE_RESET ((char)0xE2)
#define LCD_NOP ((char)0xE3)
#define LCD_SET_END_OF_READ_MODIFY_WRITE_MODE ((char)0xEE)
/* LCD command codes */
#define LCD_CNTL_RESET 0xe2 /* Software reset */
#define LCD_CNTL_POWER 0x2f /* Power control */
#define LCD_CNTL_CONTRAST 0x81 /* Contrast */
#define LCD_CNTL_OUTSCAN 0xc8 /* Output scan direction */
#define LCD_CNTL_SEGREMAP 0xa1 /* Segment remap */
#define LCD_CNTL_DISPON 0xaf /* Display on */
#define LCD_CNTL_PAGE 0xb0 /* Page address */
#define LCD_CNTL_HIGHCOL 0x10 /* Upper column address */
#define LCD_CNTL_LOWCOL 0x00 /* Lower column address */
/*** driver routines ***/
void lcd_write_command(int cmd)
{
while ((LCDSTAT & 3) != 3);
LCDCMD = cmd;
}
void lcd_write_data( const unsigned char* data, int count )
{
int i;
for (i=0; i < count; i++) {
while ((LCDSTAT & 3) != 3);
LCDDATA = data[i];
}
}
/*** hardware configuration ***/
int lcd_default_contrast(void)
{
return 45;
}
void lcd_set_contrast(int val)
{
lcd_write_command(LCD_CNTL_CONTRAST);
lcd_write_command(val);
}
void lcd_set_invert_display(bool yesno)
{
if (yesno)
lcd_write_command(LCD_SET_REVERSE_DISPLAY);
else
lcd_write_command(LCD_SET_NORMAL_DISPLAY);
}
/* turn the display upside down (call lcd_update() afterwards) */
void lcd_set_flip(bool yesno)
{
if (yesno)
{
lcd_write_command(LCD_SET_SEGMENT_REMAP);
lcd_write_command(LCD_SET_COM_OUTPUT_SCAN_DIRECTION);
}
else
{
lcd_write_command(LCD_SET_SEGMENT_REMAP | 0x01);
lcd_write_command(LCD_SET_COM_OUTPUT_SCAN_DIRECTION | 0x08);
}
}
void lcd_init_device(void)
{
LCDREG10 = 0xf;
LCDREG04 = 0x4084;
/* inits like the original firmware */
lcd_write_command(LCD_SOFTWARE_RESET);
lcd_write_command(LCD_SET_INTERNAL_REGULATOR_RESISTOR_RATIO + 4);
lcd_write_command(LCD_SET_LCD_BIAS);
lcd_write_command(LCD_SET_POWER_CONTROL_REGISTER + 7);
/* power control register: op-amp=1, regulator=1, booster=1 */
lcd_write_command(LCD_SET_DISPLAY_ON);
lcd_write_command(LCD_SET_NORMAL_DISPLAY);
lcd_set_flip(false);
lcd_write_command(LCD_SET_DISPLAY_START_LINE + 0);
lcd_set_contrast(lcd_default_contrast());
lcd_write_command(LCD_SET_PAGE_ADDRESS);
lcd_write_command(LCD_SET_LOWER_COLUMN_ADDRESS + 0);
lcd_write_command(LCD_SET_HIGHER_COLUMN_ADDRESS + 0);
lcd_clear_display();
lcd_update();
}
/*** 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--)
{
lcd_write_command (LCD_CNTL_PAGE | (by++ & 0xf));
lcd_write_command (LCD_CNTL_HIGHCOL | (((x+4)>>4) & 0xf));
lcd_write_command (LCD_CNTL_LOWCOL | ((x+4) & 0xf));
lcd_write_data(data, width);
data += stride;
}
}
/* Performance function that works with an external buffer
note that by and bheight are in 8-pixel units! */
void lcd_blit_grey_phase(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++)
{
lcd_write_command (LCD_CNTL_PAGE | (y & 0xf));
lcd_write_command (LCD_CNTL_HIGHCOL);
lcd_write_command (LCD_CNTL_LOWCOL | 4);
lcd_write_data (FBADDR(0, y), LCD_WIDTH);
}
}
/* 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++)
{
lcd_write_command (LCD_CNTL_PAGE | (y & 0xf));
lcd_write_command (LCD_CNTL_HIGHCOL | (((x+4) >> 4) & 0xf));
lcd_write_command (LCD_CNTL_LOWCOL | ((x+4) & 0xf));
lcd_write_data (FBADDR(x,y), width);
}
}

View file

@ -1,76 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Linus Nielsen Feltzing
*
* 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 "cpu.h"
#include <stdbool.h>
#include "kernel.h"
#include "system.h"
#include "power.h"
#include "logf.h"
#include "usb.h"
#if CONFIG_TUNER
bool tuner_power(bool status)
{
(void)status;
return true;
}
#endif /* #if CONFIG_TUNER */
#ifndef SIMULATOR
void power_init(void)
{
}
void ide_power_enable(bool on)
{
(void)on;
/* no ide controller */
}
bool ide_powered(void)
{
return true; /* pretend always powered if not controlable */
}
void power_off(void)
{
disable_interrupt(IRQ_FIQ_STATUS);
GPIO1_CLR = 1 << 16;
GPIO2_SET = 1;
while(1);
}
#else
void power_off(void)
{
}
void ide_power_enable(bool on)
{
(void)on;
}
#endif /* SIMULATOR */

View file

@ -1,55 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Heikki Hannikainen, Uwe Freese
* Revisions copyright (C) 2005 by Gerald Van Baren
*
* 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 "adc.h"
#include "powermgmt.h"
const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
{
1050, 1150
};
const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] =
{
1050, 1150 /* FIXME: just copied from above, was missing in powermgmt.c */
};
/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */
const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
{
/* These values are the same as for Ondio divided by 3. */
/* May need recalibration. */
{ 930, 1080, 1140, 1180, 1210, 1250, 1280, 1320, 1360, 1420, 1580 }, /* alkaline */
{ 1030, 1180, 1210, 1230, 1240, 1250, 1260, 1270, 1280, 1290, 1350 } /* NiMH */
};
/* TODO: only roughly correct */
#define BATTERY_SCALE_FACTOR 3072
/* full-scale ADC readout (2^10) in millivolt */
/* Returns battery voltage from ADC [millivolts] */
int _battery_voltage(void)
{
return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
}

View file

@ -1,36 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Alan Korr
*
* 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 SYSTEM_TARGET_H
#define SYSTEM_TARGET_H
#include "system-arm.h"
#define CPUFREQ_DEFAULT 12000000
#define CPUFREQ_NORMAL 48000000
#define CPUFREQ_MAX 60000000
typedef void (*interrupt_handler_t)(void);
void irq_set_int_handler(int n, interrupt_handler_t handler);
void irq_enable_int(int n);
void irq_disable_int(int n);
#endif /* SYSTEM_TARGET_H */

View file

@ -1,49 +0,0 @@
/***************************************************************************
* __________ __ ___.
* 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.
*
****************************************************************************/
#include "config.h"
#include "cpu.h"
#include "kernel.h"
#include "thread.h"
#include "system.h"
#include "debug.h"
#include "ata.h"
#include "disk.h"
#include "panic.h"
#include "lcd.h"
#include "usb.h"
#include "button.h"
#include "string.h"
void usb_init_device(void)
{
}
int usb_detect(void)
{
/* TODO: Implement USB_ISP1582 */
return USB_EXTRACTED;
}
void usb_enable(bool on)
{
/* TODO: Implement USB_ISP1582 */
(void)on;
}

View file

@ -1,45 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2007 by Tomasz Malesinski
*
* 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 "system.h"
#include "kernel.h"
void timer_handler(void)
{
/* Run through the list of tick tasks */
call_tick_tasks();
TIMER0.clr = 0;
}
void tick_start(unsigned int interval_in_ms)
{
TIMER0.ctrl &= ~0x80; /* Disable the counter */
TIMER0.ctrl |= 0x40; /* Reload after counting down to zero */
TIMER0.load = 3000000 * interval_in_ms / 1000;
TIMER0.ctrl &= ~0xc; /* No prescaler */
TIMER0.clr = 1; /* Clear the interrupt request */
irq_set_int_handler(IRQ_TIMER0, timer_handler);
irq_enable_int(IRQ_TIMER0);
TIMER0.ctrl |= 0x80; /* Enable the counter */
}

View file

@ -1,207 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2006 by Tomek Malesinski
*
* 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 "system.h"
#include "audio.h"
#include "string.h"
#include "pcm-internal.h"
#define DMA_BUF_SAMPLES 0x100
short __attribute__((section(".dmabuf"))) dma_buf_left[DMA_BUF_SAMPLES];
short __attribute__((section(".dmabuf"))) dma_buf_right[DMA_BUF_SAMPLES];
const int16_t* p IBSS_ATTR;
size_t p_size IBSS_ATTR;
void pcm_play_lock(void)
{
}
void pcm_play_unlock(void)
{
}
void pcm_play_dma_start(const void *addr, size_t size)
{
p = addr;
p_size = size;
}
void pcm_play_dma_stop(void)
{
}
static inline void fill_dma_buf(int offset)
{
short *l, *r, *lend;
l = dma_buf_left + offset;
lend = l + DMA_BUF_SAMPLES / 2;
r = dma_buf_right + offset;
if (pcm_playing)
{
bool new_buffer =false;
do
{
int count;
const int16_t *tmp_p;
count = MIN(p_size / 4, (size_t)(lend - l));
tmp_p = p;
p_size -= count * 4;
if ((int)l & 3)
{
*l++ = *tmp_p++;
*r++ = *tmp_p++;
count--;
}
while (count >= 4)
{
asm("ldmia %0!, {r0, r1, r2, r3}\n\t"
"and r4, r0, %3\n\t"
"orr r4, r4, r1, lsl #16\n\t"
"and r5, r2, %3\n\t"
"orr r5, r5, r3, lsl #16\n\t"
"stmia %1!, {r4, r5}\n\t"
"bic r4, r1, %3\n\t"
"orr r4, r4, r0, lsr #16\n\t"
"bic r5, r3, %3\n\t"
"orr r5, r5, r2, lsr #16\n\t"
"stmia %2!, {r4, r5}"
: "+r" (tmp_p), "+r" (l), "+r" (r)
: "r" (0xffff)
: "r0", "r1", "r2", "r3", "r4", "r5", "memory");
count -= 4;
}
while (count > 0)
{
*l++ = *tmp_p++;
*r++ = *tmp_p++;
count--;
}
p = tmp_p;
if (new_buffer)
{
new_buffer = false;
pcm_play_dma_status_callback(PCM_DMAST_STARTED);
}
if (l >= lend)
return;
new_buffer = pcm_play_dma_complete_callback(PCM_DMAST_OK,
&p, &p_size);
}
while (p_size);
}
if (l < lend)
{
memset(l, 0, sizeof(short) * (lend - l));
memset(r, 0, sizeof(short) * (lend - l));
}
}
static void audio_irq(void)
{
unsigned long st = DMAINTSTAT & ~DMAINTEN;
int i;
for (i = 0; i < 2; i++)
if (st & (1 << i))
{
fill_dma_buf((i == 1) ? 0 : DMA_BUF_SAMPLES / 2);
DMAINTSTAT = 1 << i;
}
}
unsigned long physical_address(void *p)
{
unsigned long adr = (unsigned long)p;
return (MMUBLOCK((adr >> 21) & 0xf) << 21) | (adr & ((1 << 21) - 1));
}
void pcm_init(void)
{
int i;
memset(dma_buf_left, 0, sizeof(dma_buf_left));
memset(dma_buf_right, 0, sizeof(dma_buf_right));
for (i = 0; i < 8; i++)
{
DMASRC(i) = 0;
DMADEST(i) = 0;
DMALEN(i) = 0x1ffff;
DMAR0C(i) = 0;
DMAR10(i) = 0;
DMAR1C(i) = 0;
}
DMAINTSTAT = 0xc000ffff;
DMAINTEN = 0xc000ffff;
DMASRC(0) = physical_address(dma_buf_left);
DMADEST(0) = 0x80200280;
DMALEN(0) = 0xff;
DMAR1C(0) = 0;
DMAR0C(0) = 0x40408;
DMASRC(1) = physical_address(dma_buf_right);
DMADEST(1) = 0x80200284;
DMALEN(1) = 0xff;
DMAR1C(1) = 0;
DMAR0C(1) = 0x40409;
irq_set_int_handler(0x1b, audio_irq);
irq_enable_int(0x1b);
DMAINTSTAT = 1;
DMAINTSTAT = 2;
DMAINTEN &= ~3;
DMAR10(0) |= 1;
DMAR10(1) |= 1;
}
void pcm_play_dma_postinit(void)
{
audiohw_postinit();
}
void pcm_dma_apply_settings(void)
{
}
const void * pcm_play_dma_get_peak_buffer(int *count)
{
unsigned long addr = (unsigned long)p;
size_t cnt = p_size;
*count = cnt >> 2;
return (void *)((addr + 2) & ~3);
}
void audiohw_set_volume(int value)
{
int tmp = (60 - value * 4) & 0xff;
CODECVOL = tmp | (tmp << 8);
}

View file

@ -1,317 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id: $
*
* Copyright (C) 2007 by Tomasz Malesinski
*
* 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 "pnx0101.h"
#include "system.h"
static struct
{
unsigned char freq;
unsigned char sys_mult;
unsigned char sys_div;
}
perf_modes[3] ICONST_ATTR =
{
{12, 4, 4},
{48, 4, 1},
{60, 5, 1}
};
static int performance_mode, bus_divider;
static void cgu_set_sel_stage_input(int clock, int input)
{
int s = CGU.base_ssr[clock];
if (s & 1)
CGU.base_fs2[clock] = input;
else
CGU.base_fs1[clock] = input;
CGU.base_scr[clock] = (s & 3) ^ 3;
}
static void cgu_reset_sel_stage_clocks(int first_esr, int n_esr,
int first_div, int n_div)
{
int i;
for (i = 0; i < n_esr; i++)
CGU.clk_esr[first_esr + i] = 0;
for (i = 0; i < n_div; i++)
CGU.base_fdc[first_div + i] = 0;
}
static void cgu_configure_div(int div, int n, int m)
{
int msub, madd, div_size, max_n;
unsigned long cfg;
if (n == m)
{
CGU.base_fdc[div] = CGU.base_fdc[div] & ~1;
return;
}
msub = -n;
madd = m - n;
div_size = (div == PNX0101_HIPREC_FDC) ? 10 : 8;
max_n = 1 << div_size;
while ((madd << 1) < max_n && (msub << 1) >= -max_n)
{
madd <<= 1;
msub <<= 1;
}
cfg = (((msub << div_size) | madd) << 3) | 4;
CGU.base_fdc[div] = CGU.base_fdc[div] & ~1;
CGU.base_fdc[div] = cfg | 2;
CGU.base_fdc[div] = cfg;
CGU.base_fdc[div] = cfg | 1;
}
static void cgu_connect_div_to_clock(int rel_div, int esr)
{
CGU.clk_esr[esr] = (rel_div << 1) | 1;
}
static void cgu_enable_clock(int clock)
{
CGU.clk_pcr[clock] |= 1;
}
static void cgu_start_sel_stage_dividers(int bcr)
{
CGU.base_bcr[bcr] = 1;
}
/* Convert a pointer that points to IRAM (0x4xxxx) to a pointer that
points to the uncached page (0x0xxxx) that is also mapped to IRAM. */
static inline void *noncached(void *p)
{
return (void *)(((unsigned long)p) & 0xffff);
}
/* To avoid SRAM accesses while changing memory controller settings we
run this routine from uncached copy of IRAM. All times are in CPU
cycles. At CPU frequencies lower than 60 MHz we could use faster
settings, but since DMA may access SRAM at any time, changing
memory timings together with CPU frequency would be tricky. */
static void do_set_mem_timings(void) ICODE_ATTR;
static void do_set_mem_timings(void)
{
int old_irq = disable_irq_save();
while ((EMC.status & 3) != 0);
EMC.control = 5;
EMCSTATIC0.waitrd = 6;
EMCSTATIC0.waitwr = 5;
EMCSTATIC1.waitrd = 5;
EMCSTATIC1.waitwr = 4; /* OF uses 5 here */
EMCSTATIC2.waitrd = 4;
EMCSTATIC2.waitwr = 3;
EMCSTATIC0.waitoen = 1;
EMCSTATIC1.waitoen = 1;
EMCSTATIC2.waitoen = 1;
/* Enable write buffers for SRAM. */
#ifndef DEBUG
EMCSTATIC1.config = 0x80081;
#endif
EMC.control = 1;
restore_irq(old_irq);
}
static void emc_set_mem_timings(void)
{
void (*f)(void) = noncached(do_set_mem_timings);
(*f)();
}
static void cgu_set_sys_mult(int i)
{
cgu_set_sel_stage_input(PNX0101_SEL_STAGE_SYS, PNX0101_MAIN_CLOCK_FAST);
cgu_set_sel_stage_input(PNX0101_SEL_STAGE_APB3, PNX0101_MAIN_CLOCK_FAST);
PLL.lppdn = 1;
PLL.lpfin = 1;
PLL.lpmbyp = 0;
PLL.lpdbyp = 0;
PLL.lppsel = 1;
PLL.lpmsel = i - 1;
PLL.lppdn = 0;
while (!PLL.lplock);
cgu_configure_div(PNX0101_FIRST_DIV_SYS + 1, 1, (i == 5) ? 15 : 12);
cgu_connect_div_to_clock(1, 0x11);
cgu_enable_clock(0x11);
cgu_start_sel_stage_dividers(PNX0101_BCR_SYS);
cgu_set_sel_stage_input(PNX0101_SEL_STAGE_SYS,
PNX0101_MAIN_CLOCK_MAIN_PLL);
cgu_set_sel_stage_input(PNX0101_SEL_STAGE_APB3,
PNX0101_MAIN_CLOCK_MAIN_PLL);
}
static void pnx0101_set_performance_mode(int mode)
{
int old = performance_mode;
if (perf_modes[old].sys_mult != perf_modes[mode].sys_mult)
cgu_set_sys_mult(perf_modes[mode].sys_mult);
if (perf_modes[old].sys_div != perf_modes[mode].sys_div)
cgu_configure_div(bus_divider, 1, perf_modes[mode].sys_div);
performance_mode = mode;
}
static void pnx0101_init_clocks(void)
{
bus_divider = PNX0101_FIRST_DIV_SYS + (CGU.clk_esr[0] >> 1);
performance_mode = 0;
emc_set_mem_timings();
pnx0101_set_performance_mode(2);
cgu_set_sel_stage_input(PNX0101_SEL_STAGE_APB1,
PNX0101_MAIN_CLOCK_FAST);
cgu_reset_sel_stage_clocks(PNX0101_FIRST_ESR_APB1, PNX0101_N_ESR_APB1,
PNX0101_FIRST_DIV_APB1, PNX0101_N_DIV_APB1);
cgu_configure_div(PNX0101_FIRST_DIV_APB1, 1, 4);
cgu_connect_div_to_clock(0, PNX0101_ESR_APB1);
cgu_connect_div_to_clock(0, PNX0101_ESR_T0);
cgu_connect_div_to_clock(0, PNX0101_ESR_T1);
cgu_connect_div_to_clock(0, PNX0101_ESR_I2C);
cgu_enable_clock(PNX0101_CLOCK_APB1);
cgu_enable_clock(PNX0101_CLOCK_T0);
cgu_enable_clock(PNX0101_CLOCK_T1);
cgu_enable_clock(PNX0101_CLOCK_I2C);
}
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
void set_cpu_frequency(long frequency)
{
switch (frequency)
{
case CPUFREQ_MAX:
pnx0101_set_performance_mode(2);
cpu_frequency = CPUFREQ_MAX;
break;
case CPUFREQ_NORMAL:
pnx0101_set_performance_mode(1);
cpu_frequency = CPUFREQ_NORMAL;
break;
case CPUFREQ_DEFAULT:
default:
pnx0101_set_performance_mode(0);
cpu_frequency = CPUFREQ_DEFAULT;
break;
}
}
#endif
interrupt_handler_t interrupt_vector[0x1d] __attribute__ ((section(".idata")));
#define IRQ_READ(reg, dest) \
do { unsigned long v2; \
do { \
dest = (reg); \
v2 = (reg); \
} while ((dest != v2)); \
} while (0);
#define IRQ_WRITE_WAIT(reg, val, cond) \
do { unsigned long v, v2; \
do { \
(reg) = (val); \
v = (reg); \
v2 = (reg); \
} while ((v != v2) || !(cond)); \
} while (0);
static void undefined_int(void)
{
}
void irq(void)
{
unsigned long n;
IRQ_READ(INTVECTOR[0], n)
(*(interrupt_vector[n >> 3]))();
}
void fiq(void)
{
}
void irq_enable_int(int n)
{
IRQ_WRITE_WAIT(INTREQ[n], INTREQ_WEENABLE | INTREQ_ENABLE, v & 0x10000);
}
void irq_disable_int(int n)
{
IRQ_WRITE_WAIT(INTREQ[n], INTREQ_WEENABLE, (v & 0x10000) == 0);
}
void irq_set_int_handler(int n, interrupt_handler_t handler)
{
interrupt_vector[n] = handler;
}
void system_init(void)
{
int i;
/* turn off watchdog */
(*(volatile unsigned long *)0x80002804) = 0;
/*
IRQ_WRITE_WAIT(INTVECTOR[0], 0, v == 0);
IRQ_WRITE_WAIT(INTVECTOR[1], 0, v == 0);
IRQ_WRITE_WAIT(INTPRIOMASK[0], 0, v == 0);
IRQ_WRITE_WAIT(INTPRIOMASK[1], 0, v == 0);
*/
for (i = 1; i <= 0x1c; i++)
{
IRQ_WRITE_WAIT(INTREQ[i],
INTREQ_WEPRIO | INTREQ_WETARGET |
INTREQ_WEENABLE | INTREQ_WEACTVLO | 1,
(v & 0x3010f) == 1);
IRQ_WRITE_WAIT(INTREQ[i], INTREQ_WEENABLE, (v & 0x10000) == 0);
IRQ_WRITE_WAIT(INTREQ[i], INTREQ_WEPRIO | 1, (v & 0xf) == 1);
interrupt_vector[i] = undefined_int;
}
interrupt_vector[0] = undefined_int;
pnx0101_init_clocks();
}
void system_reboot(void)
{
(*(volatile unsigned long *)0x80002804) = 1;
while (1);
}
void system_exception_wait(void)
{
while (1);
}
int system_memory_guard(int newmode)
{
(void)newmode;
return 0;
}

View file

@ -1,81 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2007 Tomasz Malesinski
*
* 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 "system.h"
#include "timer.h"
static long cycles_new = 0;
void TIMER1_ISR(void)
{
if (cycles_new > 0)
{
TIMER1.load = cycles_new - 1;
cycles_new = 0;
}
if (pfn_timer != NULL)
{
cycles_new = -1;
/* "lock" the variable, in case timer_set_period()
* is called within pfn_timer() */
pfn_timer();
cycles_new = 0;
}
TIMER1.clr = 1; /* clear the interrupt */
}
bool timer_set(long cycles, bool start)
{
if (start)
{
if (pfn_unregister != NULL)
{
pfn_unregister();
pfn_unregister = NULL;
}
TIMER1.ctrl &= ~0x80; /* disable the counter */
TIMER1.ctrl |= 0x40; /* reload after counting down to zero */
TIMER1.ctrl &= ~0xc; /* no prescaler */
TIMER1.clr = 1; /* clear an interrupt event */
}
if (start || (cycles_new == -1)) /* within isr, cycles_new is "locked" */
{ /* enable timer */
TIMER1.load = cycles - 1;
TIMER1.ctrl |= 0x80; /* enable the counter */
}
else
cycles_new = cycles;
return true;
}
bool timer_start(void)
{
irq_set_int_handler(IRQ_TIMER1, TIMER1_ISR);
irq_enable_int(IRQ_TIMER1);
return true;
}
void timer_stop(void)
{
TIMER1.ctrl &= ~0x80; /* disable timer 1 */
irq_disable_int(IRQ_TIMER1);
}

View file

@ -203,13 +203,6 @@
#define UI_LCD_POSX 42 /* x position of lcd */
#define UI_LCD_POSY 35 /* y position of lcd */
#elif defined(IRIVER_IFP7XX)
#define UI_TITLE "iriver iFP7xx"
#define UI_WIDTH 425 /* width of GUI window */
#define UI_HEIGHT 183 /* height of GUI window */
#define UI_LCD_POSX 115 /* x position of lcd */
#define UI_LCD_POSY 54 /* y position of lcd */
#elif defined(MROBE_100)
#define UI_TITLE "Olympus M:Robe 100"
#define UI_WIDTH 247 /* width of GUI window */

View file

@ -7,7 +7,7 @@
# $Id$
#
ifeq ($(MODELNAME),ifp7xx)
ifeq ($(MODELNAME),EXAMPLE)
INCLUDES= -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I. -I$(OBJDIR) \
-I$(BUILDDIR)

View file

@ -21,9 +21,7 @@
#include <stdbool.h>
#include <string.h>
#include "ifp_usb_serial.h"
#include "sscanf.h"
#include "pnx0101.h"
#include "gdb_api.h"
#define BUFMAX 1024

View file

@ -8,7 +8,7 @@ OUTPUT_FORMAT(elf32-littlearm)
#error "Unsupported CPU!"
#endif
#ifdef IRIVER_IFP7XX_SERIES
#ifdef EXAMPLE
MEMORY
{
IRAM : ORIGIN = 0, LENGTH = 0x10000

View file

@ -187,10 +187,6 @@ $releasenotes="/wiki/ReleaseNotes315";
name => 'iriver H320/340',
status => 3,
},
'iriverifp7xx' => {
name => 'iriver iFP-7xx',
status => 1,
},
'lyreproto1' => {
name => 'Lyre Prototype 1',
status => 1,

41
tools/configure vendored
View file

@ -1554,7 +1554,7 @@ cat <<EOF
30) X5/X5V/X5L 10) H120/H140 20) Color/Photo
31) M5/M5L 11) H320/H340 21) Nano 1G
12) iHP-100/110/115 22) Video
33) D2 13) iFP-790 23) 3G
33) D2 23) 3G
34) M3/M3L 14) H10 20Gb 24) 4G Grayscale
15) H10 5/6Gb 25) Mini 1G
==Creative== 26) Mini 2G
@ -1733,27 +1733,6 @@ fi
t_model="h100"
;;
13|iriverifp7xx)
target_id=19
modelname="iriverifp7xx"
target="IRIVER_IFP7XX"
memory=1
arm7tdmicc short
tool="cp"
bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
bmp2rb_native="$rootdir/tools/bmp2rb -f 0"
output="rockbox.wma"
appextra="recorder:gui:radio"
plugins="yes"
# toolset is the tools within the tools directory that we build for
# this particular target.
toolset=$genericbitmaptools
t_cpu="arm"
t_manufacturer="pnx0101"
t_model="iriver-ifp7xx"
sysfont="08-Rockfont"
;;
14|iriverh10)
target_id=22
modelname="iriverh10"
@ -4198,12 +4177,7 @@ fi
# Figure out build "type"
#
# the ifp7x0 is the only platform that supports building a gdb stub like
# this
case $modelname in
iriverifp7xx)
gdbstub=", (G)DB stub"
;;
sansae200r|sansae200)
gdbstub=", (I)nstaller"
;;
@ -4280,19 +4254,6 @@ fi
echo "Advanced build selected"
whichadvanced $btype
;;
[Gg])
extradefines="$extradefines -DSTUB" # for target makefile symbol EXTRA_DEFINES
appsdir='$(ROOTDIR)/gdb'
apps="stub"
case $modelname in
iriverifp7xx)
output="stub.wma"
;;
*)
;;
esac
echo "GDB stub build selected"
;;
[Cc])
uname=`uname`
simcc "checkwps"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 KiB

View file

@ -15,8 +15,6 @@ ipod.c
iriver-h10.c
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
iriver-h100_h300.c
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
iriver-ifp7xx.c
#elif CONFIG_KEYPAD == SANSA_C200_PAD
sansa-c200.c
#elif CONFIG_KEYPAD == SANSA_CLIP_PAD

View file

@ -1,71 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2006 Dan Everton
*
* 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 <SDL.h>
#include "button.h"
#include "buttonmap.h"
int key_to_button(int keyboard_button)
{
int new_btn = BUTTON_NONE;
switch (keyboard_button)
{
case SDLK_KP4:
case SDLK_LEFT:
new_btn = BUTTON_LEFT;
break;
case SDLK_KP6:
case SDLK_RIGHT:
new_btn = BUTTON_RIGHT;
break;
case SDLK_KP8:
case SDLK_UP:
new_btn = BUTTON_UP;
break;
case SDLK_KP2:
case SDLK_DOWN:
new_btn = BUTTON_DOWN;
break;
case SDLK_KP_PLUS:
case SDLK_F8:
new_btn = BUTTON_PLAY;
break;
case SDLK_KP_ENTER:
case SDLK_RETURN:
case SDLK_a:
new_btn = BUTTON_EQ;
break;
case SDLK_KP5:
case SDLK_SPACE:
new_btn = BUTTON_SELECT;
break;
case SDLK_KP_PERIOD:
case SDLK_INSERT:
new_btn = BUTTON_MODE;
break;
}
return new_btn;
}
struct button_map bm[] = {
{ 0, 0, 0, 0, "None" }
};