Remove Creative Zen Vision and Vision:M ports

They haven't seen development activity for the better part
of two decades and apparently were never able to even boot
to Rockbox, although the Rockbox bootloader could load the
original firmware.

Change-Id: I5cfa5909c21feaf2825aa685a05e78044b893a13
This commit is contained in:
Aidan MacDonald 2026-02-04 11:45:07 +00:00 committed by Solomon Peachy
parent 5a21f049dc
commit 58b186d6de
104 changed files with 59 additions and 10413 deletions

View file

@ -215,10 +215,6 @@ keymaps/keymap-mr500.c
keymaps/keymap-mr100.c
#elif CONFIG_KEYPAD == COWON_D2_PAD
keymaps/keymap-cowond2.c
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
keymaps/keymap-creativezvm.c
#elif CONFIG_KEYPAD == CREATIVEZV_PAD
keymaps/keymap-creativezv.c
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI2_PAD
keymaps/keymap-zenxfi2.c
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD

View file

@ -2601,31 +2601,6 @@ static bool dbg_isp1583(void)
}
#endif
#if defined(CREATIVE_ZVx) && !defined(SIMULATOR)
extern int pic_dbg_num_items(void);
extern const char* pic_dbg_item(int selected_item, void *data,
char *buffer, size_t buffer_len);
static int pic_action_callback(int action, struct gui_synclist *lists)
{
(void)lists;
if (action == ACTION_NONE)
action = ACTION_REDRAW;
return action;
}
static bool dbg_pic(void)
{
struct simplelist_info pic;
pic.scroll_all = true;
simplelist_info_init(&pic, "PIC", pic_dbg_num_items(), NULL);
pic.timeout = HZ/100;
pic.get_name = pic_dbg_item;
pic.action_callback = pic_action_callback;
return simplelist_show_list(&pic);
}
#endif
#if defined(HAVE_BOOTDATA) && !defined(SIMULATOR)
static bool dbg_boot_data(void)
{
@ -2942,9 +2917,6 @@ static const struct {
#if CONFIG_USBOTG == USBOTG_ISP1583
{ "View ISP1583 info", dbg_isp1583 },
#endif
#if defined(CREATIVE_ZVx) && !defined(SIMULATOR)
{ "View PIC info", dbg_pic },
#endif
#ifdef ROCKBOX_HAS_LOGF
{"Show Log File", logfdisplay },
{"Dump Log File", logfdump },

View file

@ -1,256 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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 the Creative Zen Vision target */
/* Copied from ZVM target for now... */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.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
*/
/* CONTEXT_CUSTOM's used in this file...
CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
CONTEXT_CUSTOM|CONTEXT_SETTINGS = the direction keys for the eq/col picker screens
i.e where up/down is inc/dec
CONTEXT_SETTINGS = up/down is prev/next, l/r is inc/dec
*/
static const struct button_mapping button_context_standard[] = {
{ ACTION_STD_PREV, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
{ ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ 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_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ 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_RIGHT, BUTTON_CUSTOM },
//{ ACTION_WPS_ABSETA_PREVDIR,BUTTON_LEFT, BUTTON_CUSTOM },
//{ ACTION_WPS_ABRESET, BUTTON_CUSTOM|BUTTON_REPEAT, 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_PITCHSCREEN, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
{ ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE },
{ ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_WPS_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
{ ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_BACK },
LAST_ITEM_IN_LIST
}; /* button_context_wps */
static const struct button_mapping button_context_list[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_list */
static const struct button_mapping button_context_tree[] = {
{ ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE },
{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_TREE_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
}; /* button_context_tree */
static const struct button_mapping button_context_listtree_scroll_without_combo[] = {
{ ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
{ ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
};
static const struct button_mapping button_context_settings[] = {
{ ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
{ ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
{ ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
{ ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings */
static const struct button_mapping button_context_settings_right_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_colorchooser[] = {
{ ACTION_STD_OK, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_colorchooser */
static const struct button_mapping button_context_eq[] = {
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_eq */
/** Bookmark Screen **/
static const struct button_mapping button_context_bmark[] = {
{ ACTION_BMS_DELETE, BUTTON_BACK, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_bmark */
static const struct button_mapping button_context_time[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
}; /* button_context_time */
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 },
{ ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_quickscreen */
static const struct button_mapping button_context_pitchscreen[] = {
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_CURSOR_LEFT, BUTTON_CUSTOM, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_CUSTOM|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
{ ACTION_KBD_PAGE_FLIP, BUTTON_BACK|BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_KBD_ABORT, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU|BUTTON_REPEAT, 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 },
{ ACTION_KBD_MORSE_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_keyboard */
const struct button_mapping* get_context_mapping(int context)
{
switch (context&~CONTEXT_REMOTE)
{
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU:
case CONTEXT_TREE:
return button_context_listtree_scroll_without_combo;
case CONTEXT_CUSTOM|CONTEXT_TREE:
return button_context_tree;
case CONTEXT_SETTINGS:
return button_context_settings;
case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
return button_context_settings_right_is_inc;
case CONTEXT_SETTINGS_COLOURCHOOSER:
return button_context_colorchooser;
case CONTEXT_SETTINGS_EQ:
return button_context_eq;
case CONTEXT_SETTINGS_TIME:
return button_context_time;
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:
case CONTEXT_MORSE_INPUT:
return button_context_keyboard;
}
return button_context_standard;
}

View file

@ -1,255 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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 the Creative Zen Vision:M target */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.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
*/
/* CONTEXT_CUSTOM's used in this file...
CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
CONTEXT_CUSTOM|CONTEXT_SETTINGS = the direction keys for the eq/col picker screens
i.e where up/down is inc/dec
CONTEXT_SETTINGS = up/down is prev/next, l/r is inc/dec
*/
static const struct button_mapping button_context_standard[] = {
{ ACTION_STD_PREV, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
{ ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ 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_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ 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_RIGHT, BUTTON_CUSTOM },
//{ ACTION_WPS_ABSETA_PREVDIR,BUTTON_LEFT, BUTTON_CUSTOM },
//{ ACTION_WPS_ABRESET, BUTTON_CUSTOM|BUTTON_REPEAT, 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_PITCHSCREEN, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
{ ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE },
{ ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_WPS_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
{ ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_BACK },
LAST_ITEM_IN_LIST
}; /* button_context_wps */
static const struct button_mapping button_context_list[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_list */
static const struct button_mapping button_context_tree[] = {
{ ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE },
{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_TREE_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
}; /* button_context_tree */
static const struct button_mapping button_context_listtree_scroll_without_combo[] = {
{ ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
{ ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
};
static const struct button_mapping button_context_settings[] = {
{ ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
{ ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
{ ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
{ ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings */
static const struct button_mapping button_context_settings_right_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_colorchooser[] = {
{ ACTION_STD_OK, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_colorchooser */
static const struct button_mapping button_context_eq[] = {
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_eq */
/** Bookmark Screen **/
static const struct button_mapping button_context_bmark[] = {
{ ACTION_BMS_DELETE, BUTTON_BACK, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_bmark */
static const struct button_mapping button_context_time[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
}; /* button_context_time */
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 },
{ ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_quickscreen */
static const struct button_mapping button_context_pitchscreen[] = {
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_CURSOR_LEFT, BUTTON_CUSTOM, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_CUSTOM|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
{ ACTION_KBD_PAGE_FLIP, BUTTON_BACK|BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_KBD_ABORT, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU|BUTTON_REPEAT, 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 },
{ ACTION_KBD_MORSE_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_keyboard */
const struct button_mapping* get_context_mapping(int context)
{
switch (context&~CONTEXT_REMOTE)
{
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU:
case CONTEXT_TREE:
return button_context_listtree_scroll_without_combo;
case CONTEXT_CUSTOM|CONTEXT_TREE:
return button_context_tree;
case CONTEXT_SETTINGS:
return button_context_settings;
case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
return button_context_settings_right_is_inc;
case CONTEXT_SETTINGS_COLOURCHOOSER:
return button_context_colorchooser;
case CONTEXT_SETTINGS_EQ:
return button_context_eq;
case CONTEXT_SETTINGS_TIME:
return button_context_time;
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:
case CONTEXT_MORSE_INPUT:
return button_context_keyboard;
}
return button_context_standard;
}

View file

@ -14919,7 +14919,7 @@
user: core
<source>
*: "Press LEFT to cancel."
android,hifietma*,zenvision: "Press BACK to cancel."
android,hifietma*: "Press BACK to cancel."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel."
ihifi760,ihifi960: "Double tap RETURN to cancel."
ihifi770,ihifi770c,ihifi800: "Press HOME to cancel."
@ -14934,7 +14934,7 @@
</source>
<dest>
*: "Press LEFT to cancel."
android,hifietma*,zenvision: "Press BACK to cancel."
android,hifietma*: "Press BACK to cancel."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel."
ihifi760,ihifi960: "Double tap RETURN to cancel."
ihifi770,ihifi770c,ihifi800: "Press HOME to cancel."
@ -14949,7 +14949,7 @@
</dest>
<voice>
*: "Press LEFT to cancel."
android,hifietma*,zenvision: "Press BACK to cancel."
android,hifietma*: "Press BACK to cancel."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel."
ihifi760,ihifi960: "Double tap RETURN to cancel."
ihifi770,ihifi770c,ihifi800: "Press HOME to cancel."

View file

@ -150,12 +150,6 @@ struct battery_tables_t {
#define BATTERY_OFF BUTTON_POWER
#define BATTERY_OFF_TXT "POWER"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_ON_TXT "PLAY - start"
#define BATTERY_OFF BUTTON_BACK
#define BATTERY_OFF_TXT "BACK"
#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
#define BATTERY_ON BUTTON_MENU

View file

@ -237,22 +237,6 @@ enum {
#define BJACK_QUIT BUTTON_POWER
#define BJACK_DOUBLEDOWN BUTTON_MINUS
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define BJACK_SELECT_NAME "SELECT"
#define BJACK_STAY_NAME "PLAY"
#define BJACK_QUIT_NAME "POWER"
#define BJACK_DOUBLE_NAME "CUSTOM"
#define BJACK_SELECT BUTTON_SELECT
#define BJACK_QUIT BUTTON_POWER
#define BJACK_STAY BUTTON_PLAY
#define BJACK_MAX (BUTTON_CUSTOM|BUTTON_UP)
#define BJACK_MIN (BUTTON_CUSTOM|BUTTON_DOWN)
#define BJACK_DOUBLEDOWN BUTTON_CUSTOM
#define BJACK_UP BUTTON_UP
#define BJACK_DOWN BUTTON_DOWN
#define BJACK_RIGHT BUTTON_RIGHT
#define BJACK_LEFT BUTTON_LEFT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define BJACK_SELECT_NAME "PLAY"
#define BJACK_STAY_NAME "MENU"

View file

@ -169,14 +169,6 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define DOWN BUTTON_RC_VOL_DOWN
#define RC_QUIT BUTTON_REC
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define QUIT BUTTON_BACK
#define LEFT BUTTON_LEFT
#define RIGHT BUTTON_RIGHT
#define SELECT BUTTON_SELECT
#define UP BUTTON_UP
#define DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_BACK
@ -1504,8 +1496,7 @@ static int brickmania_help(void)
"Releases", "the", "ball/Fire!", "", /* 30 */
#if CONFIG_KEYPAD == IAUDIO_M3_PAD
"REC:",
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) || \
(CONFIG_KEYPAD == CREATIVEZVM_PAD)
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
"BACK:",
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \

View file

@ -269,17 +269,6 @@ F3: equal to "="
#define CALCULATOR_QUIT BUTTON_POWER
#define CALCULATOR_CLEAR BUTTON_MENU
#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD)
#define CALCULATOR_LEFT BUTTON_LEFT
#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_BACK
#define CALCULATOR_INPUT BUTTON_SELECT
#define CALCULATOR_CALC BUTTON_MENU
#define CALCULATOR_CLEAR BUTTON_PLAY
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CALCULATOR_LEFT (BUTTON_BACK|BUTTON_REL)

View file

@ -149,16 +149,6 @@
#define CALENDAR_PREV_MONTH BUTTON_BOTTOMLEFT
#define CALENDAR_EVENT_MENU_NAME "menu"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CALENDAR_QUIT BUTTON_BACK
#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_CUSTOM
#define CALENDAR_PREV_MONTH BUTTON_PLAY
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CALENDAR_QUIT BUTTON_POWER
#define CALENDAR_SELECT BUTTON_PLAY

View file

@ -222,20 +222,6 @@
#define CB_RESTART BUTTON_MINUS
#define CB_MENU (BUTTON_MENU|BUTTON_REL)
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CB_SELECT BUTTON_PLAY
#define CB_UP BUTTON_UP
#define CB_DOWN BUTTON_DOWN
#define CB_LEFT BUTTON_LEFT
#define CB_RIGHT BUTTON_RIGHT
#define CB_PLAY BUTTON_SELECT
#define CB_LEVEL BUTTON_CUSTOM
#define CB_MENU BUTTON_MENU
#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 == CREATIVE_ZENXFI3_PAD
#define CB_SELECT (BUTTON_PLAY|BUTTON_REL)
#define CB_UP BUTTON_UP

View file

@ -147,16 +147,6 @@
#define CHC_SETTINGS_DEC BUTTON_MINUS
#define CHC_SETTINGS_CANCEL BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CHC_QUIT BUTTON_BACK
#define CHC_STARTSTOP BUTTON_PLAY
#define CHC_RESET BUTTON_CUSTOM
#define CHC_MENU BUTTON_MENU
#define CHC_SETTINGS_INC BUTTON_UP
#define CHC_SETTINGS_DEC BUTTON_DOWN
#define CHC_SETTINGS_OK BUTTON_SELECT
#define CHC_SETTINGS_CANCEL BUTTON_BACK
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CHC_QUIT BUTTON_POWER
#define CHC_STARTSTOP BUTTON_PLAY

View file

@ -1048,16 +1048,6 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#elif (CONFIG_KEYPAD == COWON_D2_PAD)
#define CHIP8_OFF BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CHIP8_OFF BUTTON_BACK
#define CHIP8_KEY1 BUTTON_MENU
#define CHIP8_KEY2 BUTTON_UP
#define CHIP8_KEY3 BUTTON_CUSTOM
#define CHIP8_KEY4 BUTTON_LEFT
#define CHIP8_KEY5 BUTTON_PLAY
#define CHIP8_KEY6 BUTTON_RIGHT
#define CHIP8_KEY8 BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CHIP8_OFF BUTTON_POWER
#define CHIP8_KEY1 BUTTON_VOL_UP

View file

@ -108,12 +108,6 @@ Still To do:
#define QUIT BUTTON_POWER
#define ACTION2 BUTTON_PLUS
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define QUIT BUTTON_BACK
#define ACTION BUTTON_UP
#define ACTION2 BUTTON_MENU
#define ACTIONTEXT "UP"
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define QUIT BUTTON_POWER
#define ACTION BUTTON_UP

View file

@ -114,14 +114,6 @@
#define CLIX_BUTTON_UP BUTTON_UP
#define CLIX_BUTTON_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CLIX_BUTTON_QUIT BUTTON_BACK
#define CLIX_BUTTON_LEFT BUTTON_LEFT
#define CLIX_BUTTON_RIGHT BUTTON_RIGHT
#define CLIX_BUTTON_CLICK BUTTON_SELECT
#define CLIX_BUTTON_UP BUTTON_UP
#define CLIX_BUTTON_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CLIX_BUTTON_QUIT BUTTON_POWER
#define CLIX_BUTTON_LEFT BUTTON_BACK

View file

@ -163,16 +163,6 @@
#elif CONFIG_KEYPAD == COWON_D2_PAD
#define CUBE_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CUBE_QUIT BUTTON_BACK
#define CUBE_NEXT BUTTON_RIGHT
#define CUBE_PREV BUTTON_LEFT
#define CUBE_INC BUTTON_UP
#define CUBE_DEC BUTTON_DOWN
#define CUBE_MODE BUTTON_MENU
#define CUBE_PAUSE BUTTON_PLAY
#define CUBE_HIGHSPEED BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CUBE_QUIT BUTTON_POWER
#define CUBE_NEXT BUTTON_UP

View file

@ -316,18 +316,6 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_ENTER BUTTON_MENU
#define DOOMBUTTON_WEAPON BUTTON_DISPLAY
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define DOOMBUTTON_UP BUTTON_UP
#define DOOMBUTTON_DOWN BUTTON_DOWN
#define DOOMBUTTON_LEFT BUTTON_LEFT
#define DOOMBUTTON_RIGHT BUTTON_RIGHT
#define DOOMBUTTON_SHOOT BUTTON_SELECT
#define DOOMBUTTON_OPEN BUTTON_PLAY
#define DOOMBUTTON_ESC BUTTON_BACK
#define DOOMBUTTON_ENTER BUTTON_PLAY
#define DOOMBUTTON_WEAPON BUTTON_MENU
#define DOOMBUTTON_MAP BUTTON_CUSTOM
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define DOOMBUTTON_UP BUTTON_UP
#define DOOMBUTTON_DOWN BUTTON_DOWN

View file

@ -226,18 +226,6 @@
#define FLIPIT_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define FLIPIT_LEFT BUTTON_LEFT
#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_BACK
#define FLIPIT_SHUFFLE BUTTON_CUSTOM
#define FLIPIT_SOLVE BUTTON_PLAY
#define FLIPIT_STEP_BY_STEP BUTTON_MENU
#define FLIPIT_TOGGLE BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define FLIPIT_LEFT BUTTON_BACK
#define FLIPIT_RIGHT BUTTON_MENU

View file

@ -200,18 +200,6 @@
#elif CONFIG_KEYPAD == COWON_D2_PAD
#define FRACTAL_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define FRACTAL_QUIT BUTTON_BACK
#define FRACTAL_UP BUTTON_UP
#define FRACTAL_DOWN BUTTON_DOWN
#define FRACTAL_LEFT BUTTON_LEFT
#define FRACTAL_RIGHT BUTTON_RIGHT
#define FRACTAL_ZOOM_IN BUTTON_PLAY
#define FRACTAL_ZOOM_OUT BUTTON_MENU
#define FRACTAL_PRECISION_INC (BUTTON_UP | BUTTON_CUSTOM)
#define FRACTAL_PRECISION_DEC (BUTTON_DOWN | BUTTON_CUSTOM)
#define FRACTAL_RESET BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define FRACTAL_QUIT BUTTON_POWER
#define FRACTAL_UP BUTTON_UP

View file

@ -150,20 +150,6 @@
#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_NEXT
#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD) \
|| (CONFIG_KEYPAD == CREATIVEZV_PAD)
#define GBN_BUTTON_UP BUTTON_UP
#define GBN_BUTTON_DOWN BUTTON_DOWN
#define GBN_BUTTON_LEFT BUTTON_LEFT
#define GBN_BUTTON_RIGHT BUTTON_RIGHT
#define GBN_BUTTON_RETREAT BUTTON_BACK
#define GBN_BUTTON_ADVANCE BUTTON_CUSTOM
#define GBN_BUTTON_MENU BUTTON_MENU
#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL
#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_PLAY
#elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD)
#define GBN_BUTTON_UP BUTTON_UP | BUTTON_REL
#define GBN_BUTTON_DOWN BUTTON_DOWN

View file

@ -209,18 +209,6 @@
#elif CONFIG_KEYPAD == COWON_D2_PAD
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define IMGVIEW_ZOOM_IN BUTTON_PLAY
#define IMGVIEW_ZOOM_OUT BUTTON_CUSTOM
#define IMGVIEW_UP BUTTON_UP
#define IMGVIEW_DOWN BUTTON_DOWN
#define IMGVIEW_LEFT BUTTON_LEFT
#define IMGVIEW_RIGHT BUTTON_RIGHT
#define IMGVIEW_NEXT BUTTON_SELECT
#define IMGVIEW_PREVIOUS BUTTON_BACK
#define IMGVIEW_MENU BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define IMGVIEW_ZOOM_IN (BUTTON_VOL_UP|BUTTON_REL)
#define IMGVIEW_ZOOM_OUT (BUTTON_VOL_DOWN|BUTTON_REL)

View file

@ -155,13 +155,6 @@
#define RIGHT BUTTON_PLUS
#define FIRE BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define QUIT BUTTON_BACK
#define LEFT BUTTON_LEFT
#define RIGHT BUTTON_RIGHT
#define FIRE BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define QUIT BUTTON_POWER

View file

@ -191,16 +191,6 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define JEWELS_CANCEL BUTTON_POWER
#define HK_CANCEL "POWER"
#elif CONFIG_KEYPAD == CREATIVEZVM_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_BACK
#define HK_SELECT "MIDDLE"
#define HK_CANCEL "BACK"
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define JEWELS_UP BUTTON_UP
#define JEWELS_DOWN BUTTON_DOWN

View file

@ -56,7 +56,6 @@
(CONFIG_KEYPAD == IAUDIO_X5M5_PAD) || \
(CONFIG_KEYPAD == CREATIVE_ZEN_PAD) || \
(CONFIG_KEYPAD == SONY_NWZ_PAD) || \
(CONFIG_KEYPAD == CREATIVEZVM_PAD) || \
(CONFIG_KEYPAD == SAMSUNG_YPR0_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD) || \
(CONFIG_KEYPAD == HM801_PAD) || \
@ -128,10 +127,6 @@
#define BTN_FIRE BUTTON_SELECT
#define BTN_PAUSE BUTTON_BACK
#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD)
#define BTN_FIRE BUTTON_PLAY
#define BTN_PAUSE BUTTON_MENU
#elif (CONFIG_KEYPAD == SAMSUNG_YPR0_PAD)
#define BTN_FIRE BUTTON_USER
#define BTN_PAUSE BUTTON_MENU

View file

@ -96,7 +96,6 @@ const struct button_mapping pla_main_ctx[] =
|| (CONFIG_KEYPAD == MROBE100_PAD) \
|| (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) \
|| (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
|| (CONFIG_KEYPAD == CREATIVEZVM_PAD) \
|| (CONFIG_KEYPAD == SANSA_M200_PAD)\
|| (CONFIG_KEYPAD == SANSA_E200_PAD) \
|| (CONFIG_KEYPAD == SANSA_FUZE_PAD) \
@ -405,12 +404,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 == CREATIVEZVM_PAD)
{PLA_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK},
{PLA_EXIT, BUTTON_BACK|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 == ONDAVX747_PAD)
{PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
{PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},

View file

@ -140,14 +140,6 @@
#elif CONFIG_KEYPAD == COWON_D2_PAD
#define MIDI_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define MIDI_QUIT BUTTON_BACK
#define MIDI_FFWD BUTTON_RIGHT
#define MIDI_REWIND BUTTON_LEFT
#define MIDI_VOL_UP BUTTON_UP
#define MIDI_VOL_DOWN BUTTON_DOWN
#define MIDI_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define MIDI_QUIT (BUTTON_PLAY|BUTTON_REPEAT)
#define MIDI_FFWD BUTTON_MENU

View file

@ -165,16 +165,6 @@ enum minesweeper_status {
#elif (CONFIG_KEYPAD == COWON_D2_PAD)
# define MINESWP_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
# define MINESWP_LEFT BUTTON_LEFT
# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_BACK
# define MINESWP_TOGGLE BUTTON_SELECT
# define MINESWP_DISCOVER BUTTON_PLAY
# define MINESWP_INFO BUTTON_MENU
#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
# define MINESWP_LEFT BUTTON_LEFT
# define MINESWP_RIGHT BUTTON_RIGHT

View file

@ -2446,12 +2446,6 @@ static void get_mp3_filename(const char *wav_name)
#elif CONFIG_KEYPAD == COWON_D2_PAD
#define MP3ENC_DONE BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define MP3ENC_PREV BUTTON_UP
#define MP3ENC_NEXT BUTTON_DOWN
#define MP3ENC_DONE BUTTON_BACK
#define MP3ENC_SELECT BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define MP3ENC_PREV BUTTON_UP
#define MP3ENC_NEXT BUTTON_DOWN

View file

@ -142,16 +142,6 @@ struct mpeg_settings settings;
#elif CONFIG_KEYPAD == COWON_D2_PAD
#define MPEG_START_TIME_EXIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define MPEG_START_TIME_SELECT BUTTON_SELECT
#define MPEG_START_TIME_LEFT BUTTON_LEFT
#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
#define MPEG_START_TIME_UP BUTTON_UP
#define MPEG_START_TIME_DOWN BUTTON_DOWN
#define MPEG_START_TIME_LEFT2 BUTTON_PLAY
#define MPEG_START_TIME_RIGHT2 BUTTON_MENU
#define MPEG_START_TIME_EXIT BUTTON_BACK
#elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD)
#define MPEG_START_TIME_SELECT (BUTTON_PLAY|BUTTON_REL)
#define MPEG_START_TIME_LEFT BUTTON_BACK

View file

@ -254,15 +254,6 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define MPEG_VOLDOWN BUTTON_MINUS
#define MPEG_VOLUP BUTTON_PLUS
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define MPEG_MENU BUTTON_MENU
#define MPEG_STOP BUTTON_BACK
#define MPEG_PAUSE BUTTON_PLAY
#define MPEG_VOLDOWN BUTTON_UP
#define MPEG_VOLUP BUTTON_DOWN
#define MPEG_RW BUTTON_LEFT
#define MPEG_FF BUTTON_RIGHT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define MPEG_MENU BUTTON_MENU
#define MPEG_STOP (BUTTON_PLAY|BUTTON_REPEAT)

View file

@ -223,20 +223,6 @@
#define OSCILLOSCOPE_VOL_UP BUTTON_PLUS
#define OSCILLOSCOPE_VOL_DOWN BUTTON_MINUS
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define OSCILLOSCOPE_QUIT BUTTON_BACK
#define OSCILLOSCOPE_DRAWMODE BUTTON_SELECT
#define OSCILLOSCOPE_ADVMODE BUTTON_CUSTOM
#define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_MENU
#define OSCILLOSCOPE_ORIENTATION (BUTTON_MENU | BUTTON_REL)
#define OSCILLOSCOPE_GRAPHMODE_PRE BUTTON_MENU
#define OSCILLOSCOPE_GRAPHMODE (BUTTON_MENU | BUTTON_REPEAT)
#define OSCILLOSCOPE_PAUSE BUTTON_PLAY
#define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT
#define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT
#define OSCILLOSCOPE_VOL_UP BUTTON_UP
#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define OSCILLOSCOPE_QUIT BUTTON_POWER
#define OSCILLOSCOPE_DRAWMODE (BUTTON_MENU | BUTTON_UP)

View file

@ -169,17 +169,6 @@
#define PACMAN_MENU (BUTTON_MENU|BUTTON_REL)
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define PACMAN_UP BUTTON_UP
#define PACMAN_DOWN BUTTON_DOWN
#define PACMAN_LEFT BUTTON_LEFT
#define PACMAN_RIGHT BUTTON_RIGHT
#define PACMAN_1UP BUTTON_CUSTOM
#define PACMAN_2UP BUTTON_PLAY
#define PACMAN_COIN BUTTON_SELECT
#define PACMAN_MENU BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define PACMAN_UP BUTTON_UP

View file

@ -271,23 +271,6 @@
#define QUIT_TEXT "POWER"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define PEGBOX_SELECT BUTTON_CUSTOM
#define PEGBOX_QUIT BUTTON_BACK
#define PEGBOX_RESTART BUTTON_SELECT
#define PEGBOX_LVL_UP BUTTON_PLAY
#define PEGBOX_LVL_DOWN BUTTON_MENU
#define PEGBOX_UP BUTTON_UP
#define PEGBOX_DOWN BUTTON_DOWN
#define PEGBOX_RIGHT BUTTON_RIGHT
#define PEGBOX_LEFT BUTTON_LEFT
#define SELECT_TEXT "CUSTOM"
#define QUIT_TEXT "BACK"
#define RESTART_TEXT "MIDDLE"
#define LVL_UP_TEXT "SELECT"
#define LVL_DOWN_TEXT "MENU"
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define PEGBOX_SELECT (BUTTON_PLAY|BUTTON_REL)
#define PEGBOX_QUIT BUTTON_POWER

View file

@ -126,8 +126,7 @@ const struct button_mapping pf_context_buttons[] =
{PF_SELECT, BUTTON_CENTER, BUTTON_NONE},
{PF_BACK, BUTTON_BOTTOMRIGHT, BUTTON_NONE},
#endif
#if CONFIG_KEYPAD == CREATIVEZV_PAD || CONFIG_KEYPAD == CREATIVEZVM_PAD || \
CONFIG_KEYPAD == PHILIPS_HDD1630_PAD || \
#if CONFIG_KEYPAD == PHILIPS_HDD1630_PAD || \
CONFIG_KEYPAD == GIGABEAT_PAD || CONFIG_KEYPAD == GIGABEAT_S_PAD || \
CONFIG_KEYPAD == MROBE100_PAD || CONFIG_KEYPAD == MROBE500_PAD || \
CONFIG_KEYPAD == PHILIPS_SA9200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD || \

View file

@ -139,13 +139,6 @@
#elif (CONFIG_KEYPAD == COWON_D2_PAD)
#define PONG_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define PONG_QUIT BUTTON_BACK
#define PONG_LEFT_UP BUTTON_UP
#define PONG_LEFT_DOWN BUTTON_DOWN
#define PONG_RIGHT_UP BUTTON_PLAY
#define PONG_RIGHT_DOWN BUTTON_MENU
#elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD)
#define PONG_QUIT BUTTON_POWER
#define PONG_PAUSE BUTTON_PLAY

View file

@ -136,15 +136,6 @@
#define REVERSI_BUTTON_QUIT BUTTON_POWER
#define REVERSI_BUTTON_MENU BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define REVERSI_BUTTON_QUIT BUTTON_BACK
#define REVERSI_BUTTON_UP BUTTON_UP
#define REVERSI_BUTTON_DOWN BUTTON_DOWN
#define REVERSI_BUTTON_LEFT BUTTON_LEFT
#define REVERSI_BUTTON_RIGHT BUTTON_RIGHT
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_SELECT
#define REVERSI_BUTTON_MENU BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define REVERSI_BUTTON_QUIT BUTTON_POWER
#define REVERSI_BUTTON_UP BUTTON_UP

View file

@ -195,16 +195,6 @@
#define ROCKBLOX_OFF BUTTON_POWER
#define ROCKBLOX_RESTART BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define ROCKBLOX_OFF BUTTON_BACK
#define ROCKBLOX_ROTATE_CCW BUTTON_UP
#define ROCKBLOX_ROTATE_CW BUTTON_PLAY
#define ROCKBLOX_DOWN BUTTON_DOWN
#define ROCKBLOX_LEFT BUTTON_LEFT
#define ROCKBLOX_RIGHT BUTTON_RIGHT
#define ROCKBLOX_DROP BUTTON_SELECT
#define ROCKBLOX_RESTART BUTTON_CUSTOM
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define ROCKBLOX_OFF BUTTON_POWER
#define ROCKBLOX_ROTATE_CCW BUTTON_VOL_DOWN

View file

@ -210,16 +210,6 @@ static void setoptions (void)
options.SELECT = BUTTON_SELECT;
options.MENU = BUTTON_MENU;
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
options.UP = BUTTON_UP;
options.DOWN = BUTTON_DOWN;
options.A = BUTTON_CUSTOM;
options.B = BUTTON_PLAY;
options.START = BUTTON_BACK;
options.SELECT = BUTTON_SELECT;
options.MENU = BUTTON_MENU;
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
options.UP = BUTTON_UP;
options.DOWN = BUTTON_DOWN;

View file

@ -134,17 +134,6 @@
#define ROCKPAINT_QUIT BUTTON_POWER
#define ROCKPAINT_MENU BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define ROCKPAINT_QUIT BUTTON_BACK
#define ROCKPAINT_DRAW BUTTON_SELECT
#define ROCKPAINT_MENU BUTTON_MENU
#define ROCKPAINT_TOOLBAR BUTTON_PLAY
#define ROCKPAINT_TOOLBAR2 ( BUTTON_PLAY | BUTTON_LEFT )
#define ROCKPAINT_UP BUTTON_UP
#define ROCKPAINT_DOWN BUTTON_DOWN
#define ROCKPAINT_LEFT BUTTON_LEFT
#define ROCKPAINT_RIGHT BUTTON_RIGHT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define ROCKPAINT_QUIT BUTTON_POWER
#define ROCKPAINT_DRAW BUTTON_VOL_UP

View file

@ -140,15 +140,6 @@
#define PUZZLE_QUIT BUTTON_POWER
#define PUZZLE_QUIT_TEXT "[POWER]"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define PUZZLE_QUIT BUTTON_BACK
#define PUZZLE_LEFT BUTTON_LEFT
#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
#define PUZZLE_SHUFFLE BUTTON_PLAY
#define PUZZLE_PICTURE BUTTON_MENU
#elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD)
#define PUZZLE_QUIT BUTTON_POWER
#define PUZZLE_LEFT BUTTON_BACK

View file

@ -133,14 +133,6 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
#define SNAKE_RC_QUIT BUTTON_REC
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define SNAKE_QUIT BUTTON_BACK
#define SNAKE_LEFT BUTTON_LEFT
#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define SNAKE_QUIT BUTTON_POWER
#define SNAKE_LEFT BUTTON_BACK

View file

@ -265,15 +265,6 @@ Head and Tail are stored
#elif (CONFIG_KEYPAD == COWON_D2_PAD)
#define SNAKE2_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define SNAKE2_LEFT BUTTON_LEFT
#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_BACK
#define SNAKE2_PLAYPAUSE BUTTON_PLAY
#define SNAKE2_PLAYPAUSE_TEXT "Play"
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define SNAKE2_LEFT BUTTON_BACK
#define SNAKE2_RIGHT BUTTON_MENU

View file

@ -312,21 +312,6 @@
#define SOKOBAN_LEVEL_UP BUTTON_PLUS
#define SOKOBAN_MENU_NAME "[MENU]"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define SOKOBAN_LEFT BUTTON_LEFT
#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_UP
#define SOKOBAN_DOWN BUTTON_DOWN
#define SOKOBAN_MENU BUTTON_MENU
#define SOKOBAN_UNDO BUTTON_BACK
#define SOKOBAN_REDO (BUTTON_BACK | BUTTON_PLAY)
#define SOKOBAN_LEVEL_DOWN (BUTTON_SELECT | BUTTON_DOWN)
#define SOKOBAN_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_RIGHT)
#define SOKOBAN_LEVEL_UP (BUTTON_SELECT | BUTTON_UP)
#define SOKOBAN_PAUSE BUTTON_PLAY
#define BUTTON_SAVE BUTTON_CUSTOM
#define BUTTON_SAVE_NAME "CUSTOM"
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define SOKOBAN_LEFT BUTTON_BACK
#define SOKOBAN_RIGHT BUTTON_MENU

View file

@ -295,24 +295,6 @@
#elif (CONFIG_KEYPAD == COWON_D2_PAD)
# define SOL_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
# define SOL_QUIT BUTTON_BACK
# define SOL_UP BUTTON_UP
# define SOL_DOWN BUTTON_DOWN
# define SOL_LEFT BUTTON_LEFT
# define SOL_RIGHT BUTTON_RIGHT
# define SOL_MOVE_PRE BUTTON_SELECT
# define SOL_MOVE (BUTTON_SELECT | BUTTON_REL)
# define SOL_DRAW BUTTON_MENU
# define SOL_REM2CUR (BUTTON_LEFT | BUTTON_SELECT)
# define SOL_CUR2STACK (BUTTON_SELECT | BUTTON_REPEAT)
# define SOL_REM2STACK (BUTTON_RIGHT | BUTTON_SELECT)
# define HK_MOVE "MIDDLE"
# define HK_DRAW "MENU"
# define HK_REM2CUR "PLAY+LEFT"
# define HK_CUR2STACK "PLAY.."
# define HK_REM2STACK "PLAY+RIGHT"
#elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD)
# define SOL_QUIT BUTTON_POWER
# define SOL_UP BUTTON_UP

View file

@ -152,15 +152,6 @@
#elif (CONFIG_KEYPAD == COWON_D2_PAD)
#define AST_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define AST_PAUSE BUTTON_PLAY
#define AST_QUIT BUTTON_BACK
#define AST_THRUST BUTTON_UP
#define AST_HYPERSPACE BUTTON_DOWN
#define AST_LEFT BUTTON_LEFT
#define AST_RIGHT BUTTON_RIGHT
#define AST_FIRE BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define AST_PAUSE (BUTTON_PLAY | BUTTON_REL)
#define AST_QUIT BUTTON_POWER

View file

@ -242,23 +242,6 @@
#define STAR_QUIT BUTTON_POWER
#define STAR_QUIT_NAME "POWER"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define STAR_QUIT BUTTON_BACK
#define STAR_LEFT BUTTON_LEFT
#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_UP
#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_PLAY
#define STAR_LEVEL_UP (BUTTON_CUSTOM | BUTTON_UP)
#define STAR_LEVEL_DOWN (BUTTON_CUSTOM | BUTTON_DOWN)
#define STAR_LEVEL_REPEAT (BUTTON_CUSTOM | BUTTON_RIGHT)
#define STAR_TOGGLE_CONTROL_NAME "PLAY"
#define STAR_QUIT_NAME "BACK"
#define STAR_LEVEL_UP_NAME "CUSTOM+UP"
#define STAR_LEVEL_DOWN_NAME "CUSTOM+DOWN"
#define STAR_LEVEL_REPEAT_NAME "CUSTOM+RIGHT"
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define STAR_QUIT BUTTON_POWER

View file

@ -123,14 +123,6 @@
#elif CONFIG_KEYPAD == COWON_D2_PAD
#define STOPWATCH_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define STOPWATCH_QUIT BUTTON_BACK
#define STOPWATCH_START_STOP BUTTON_PLAY
#define STOPWATCH_RESET_TIMER BUTTON_SELECT
#define STOPWATCH_LAP_TIMER BUTTON_CUSTOM
#define STOPWATCH_SCROLL_UP BUTTON_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define STOPWATCH_QUIT BUTTON_POWER
#define STOPWATCH_START_STOP (BUTTON_PLAY|BUTTON_REL)

View file

@ -181,16 +181,6 @@
#define SUDOKU_BUTTON_QUIT BUTTON_POWER
#define SUDOKU_BUTTON_MENU BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define SUDOKU_BUTTON_QUIT BUTTON_BACK
#define SUDOKU_BUTTON_UP BUTTON_UP
#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT
#define SUDOKU_BUTTON_MENU BUTTON_MENU
#define SUDOKU_BUTTON_POSSIBLE BUTTON_PLAY
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define SUDOKU_BUTTON_QUIT BUTTON_POWER
#define SUDOKU_BUTTON_UP BUTTON_UP

View file

@ -236,17 +236,6 @@
#define TV_SCROLL_DOWN BUTTON_PLUS
#define TV_BOOKMARK (BUTTON_MENU|BUTTON_PLUS)
/* Creative Zen Vision:M keys */
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define TV_QUIT BUTTON_BACK
#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_MENU
#define TV_AUTOSCROLL BUTTON_SELECT
#define TV_BOOKMARK BUTTON_PLAY
/* Creative Zen X-Fi3 keys */
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define TV_QUIT BUTTON_POWER

View file

@ -181,17 +181,6 @@
#define LABEL_QUIT "POWER"
#define LABEL_MENU "MENU"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define VUMETER_QUIT BUTTON_BACK
#define VUMETER_HELP BUTTON_SELECT
#define VUMETER_MENU BUTTON_MENU
#define VUMETER_UP BUTTON_UP
#define VUMETER_DOWN BUTTON_DOWN
#define LABEL_HELP "MIDDLE"
#define LABEL_QUIT "BACK"
#define LABEL_MENU "MENU"
#define LABEL_VOLUME "UP/DOWN"
#elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD)
#define VUMETER_QUIT BUTTON_POWER
#define VUMETER_HELP BUTTON_MENU|BUTTON_REPEAT

View file

@ -175,16 +175,6 @@ static long max_cycle;
#define BTN_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define BTN_DIR_UP BUTTON_UP
#define BTN_DIR_DOWN BUTTON_DOWN
#define BTN_DIR_LEFT BUTTON_LEFT
#define BTN_DIR_RIGHT BUTTON_RIGHT
#define BTN_STARTPAUSE BUTTON_PLAY
#define BTN_QUIT BUTTON_BACK
#define BTN_STOPRESET BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define BTN_DIR_UP BUTTON_UP

View file

@ -146,15 +146,6 @@
#define QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define QUIT BUTTON_BACK
#define LEFT BUTTON_LEFT
#define RIGHT BUTTON_RIGHT
#define UP BUTTON_UP
#define DOWN BUTTON_DOWN
#define PAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_BACK

View file

@ -102,14 +102,6 @@
#elif CONFIG_KEYPAD == COWON_D2_PAD
#define ZX_MENU (BUTTON_MENU|BUTTON_REL)
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define ZX_UP BUTTON_UP
#define ZX_DOWN BUTTON_DOWN
#define ZX_LEFT BUTTON_LEFT
#define ZX_RIGHT BUTTON_RIGHT
#define ZX_SELECT BUTTON_SELECT
#define ZX_MENU BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define ZX_UP BUTTON_UP
#define ZX_DOWN BUTTON_DOWN

View file

@ -102,15 +102,6 @@
#define KBD_ABORT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define KBD_SELECT BUTTON_SELECT
#define KBD_ABORT BUTTON_BACK
#define KBD_LEFT BUTTON_LEFT
#define KBD_RIGHT BUTTON_RIGHT
#define KBD_UP BUTTON_UP
#define KBD_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define KBD_SELECT (BUTTON_PLAY|BUTTON_REL)

View file

@ -46,8 +46,6 @@ show_logo.c
#elif defined(XDUOO_X3)
xduoox3.c
show_logo.c
#elif defined(CREATIVE_ZVx)
creativezvm.c
#elif CONFIG_CPU==AS3525 || CONFIG_CPU==AS3525v2
sansa_as3525.c
show_logo.c

View file

@ -1,120 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "system.h"
#include "lcd.h"
#include "../kernel-internal.h"
#include "storage.h"
#include "ata-target.h"
#include "file_internal.h"
#include "disk.h"
#include "font.h"
#include "backlight.h"
#include "button.h"
#include "common.h"
#include "loader_strerror.h"
#include "rb-loader.h"
#include "usb.h"
#include "version.h"
static void load_fw(unsigned char* ptr, unsigned int len)
{
(void)ptr;
(void)len;
asm volatile("ldr pc, =0x1EE0000");
}
void main(void)
{
unsigned char* loadbuffer;
int buffer_size;
int(*kernel_entry)(void);
int ret;
/* Make sure interrupts are disabled */
set_irq_level(IRQ_DISABLED);
set_fiq_status(FIQ_DISABLED);
system_init();
kernel_init();
/* Now enable interrupts */
set_irq_level(IRQ_ENABLED);
set_fiq_status(FIQ_ENABLED);
lcd_init();
backlight_init(); /* BUGFIX backlight_init MUST BE AFTER lcd_init */
font_init();
button_init();
usb_init();
#ifdef HAVE_LCD_ENABLE
lcd_enable(true);
#endif
lcd_setfont(FONT_SYSFIXED);
reset_screen();
printf("Rockbox boot loader");
printf("Version %s", rbversion);
ret = storage_init();
if(ret)
printf("ATA error: %d", ret);
filesystem_init();
/* If no button is held, start the OF */
if(button_read_device() == 0)
{
printf("Loading Creative firmware...");
loadbuffer = (unsigned char*)0x00A00000;
ret = load_minifs_file("creativeos.jrm", loadbuffer);
if(ret != -1)
{
set_irq_level(IRQ_DISABLED);
set_fiq_status(FIQ_DISABLED);
/* Doesn't return! */
load_fw(loadbuffer, ret);
}
else
printf("FAILED!");
}
else
{
ret = disk_mount_all();
if (ret <= 0)
error(EDISK, ret, true);
printf("Loading Rockbox firmware...");
loadbuffer = (unsigned char*)0x00900000;
buffer_size = (unsigned char*)0x01900000 - loadbuffer;
ret = load_firmware(loadbuffer, BOOTFILE, buffer_size);
if(ret <= EFILE_EMPTY)
error(EBOOTFILE, ret, true);
kernel_entry = (void*) loadbuffer;
ret = kernel_entry();
printf("FAILED!");
}
storage_sleepnow();
while(1);
}

View file

@ -1304,19 +1304,6 @@ target/arm/tms320dm320/mrobe-500/power-mr500.c
target/arm/tms320dm320/mrobe-500/usb-mr500.c
#endif /* MROBE_500 */
#ifdef CREATIVE_ZVx
drivers/lcd-memframe.c
target/arm/tms320dm320/creative-zvm/adc-creativezvm.c
target/arm/tms320dm320/creative-zvm/ata-creativezvm.c
target/arm/tms320dm320/creative-zvm/dma-creativezvm.c
target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c
target/arm/tms320dm320/creative-zvm/pcm-creativezvm.c
target/arm/tms320dm320/creative-zvm/pic-creativezvm.c
target/arm/tms320dm320/creative-zvm/power-creativezvm.c
target/arm/tms320dm320/creative-zvm/powermgmt-creativezvm.c
target/arm/tms320dm320/creative-zvm/usb-creativezvm.c
#endif /* CREATIVE_ZVx */
#if defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) || defined(CREATIVE_ZENMOZAIC) \
|| defined(CREATIVE_ZENV) || defined(CREATIVE_ZENXFISTYLE)
#ifndef BOOTLOADER

View file

@ -49,7 +49,7 @@ mempcpy.c
#endif
#if (defined(SANSA_E200) || defined(GIGABEAT_F) || defined(GIGABEAT_S) || \
defined(CREATIVE_ZVx) || defined(SANSA_CONNECT) || defined(SANSA_FUZEPLUS) || \
defined(SANSA_CONNECT) || defined(SANSA_FUZEPLUS) || \
defined(COWON_D2) || defined(SAMSUNG_YPR0) || \
defined(SAMSUNG_YPR1) || defined(DX50) || defined(DX90) || (defined(MROBE_500) && !defined(LCD_USE_DMA)) || \
defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) || defined(SONY_NWZ_LINUX) || defined(HIBY_LINUX) || \

View file

@ -50,11 +50,7 @@ static int vol_tenthdb2hw(int db)
}
/* local functions and definations */
#ifndef CREATIVE_ZVx
#define TLV320_ADDR 0x34
#else
#define TLV320_ADDR 0x1A
#endif
static struct tlv320_info
{
@ -133,11 +129,7 @@ void audiohw_init(void)
audiohw_mute(true);
tlv320_write_reg(REG_AAP, AAP_DAC | AAP_MICM);
tlv320_write_reg(REG_DAP, 0x00); /* No deemphasis */
#ifndef CREATIVE_ZVx
tlv320_write_reg(REG_DAIF, DAIF_IWL_16 | DAIF_FOR_I2S);
#else
tlv320_write_reg(REG_DAIF, DAIF_IWL_32 | DAIF_FOR_DSP);
#endif
tlv320_write_reg(REG_DIA, DIA_ACT);
audiohw_set_frequency(-1); /* default */
}

View file

@ -112,9 +112,7 @@
#define GIGABEAT_S_PAD 19
#define COWON_D2_PAD 22
#define IAUDIO_M3_PAD 23
#define CREATIVEZVM_PAD 24
#define SANSA_M200_PAD 25
#define CREATIVEZV_PAD 26
#define PHILIPS_SA9200_PAD 27
#define PHILIPS_HDD1630_PAD 29
#define ONDAVX747_PAD 31
@ -233,7 +231,6 @@
#define LCD_C200 17 /* as used by Sandisk Sansa c200 */
#define LCD_MROBE500 18 /* as used by Olympus M:Robe 500i */
#define LCD_MROBE100 19 /* as used by Olympus M:Robe 100 */
#define LCD_CREATIVEZVM 22 /* as used by Creative Zen Vision:M */
#define LCD_TL0350A 23 /* as used by the iAudio M3 remote, treated as main LCD */
#define LCD_COWOND2 24 /* as used by Cowon D2 - LTV250QV, TCC7801 driver */
#define LCD_SA9200 25 /* as used by the Philips SA9200 */
@ -438,12 +435,6 @@ Lyre prototype 1 */
#include "config/mrobe500.h"
#elif defined(COWON_D2)
#include "config/cowond2.h"
#elif defined(CREATIVE_ZVM)
#include "config/zenvisionm30gb.h"
#elif defined(CREATIVE_ZVM60GB)
#include "config/zenvisionm60gb.h"
#elif defined(CREATIVE_ZV)
#include "config/zenvision.h"
#elif defined(CREATIVE_ZENXFI2)
#include "config/creativezenxfi2.h"
#elif defined(CREATIVE_ZENXFI3)

View file

@ -1,166 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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.
*
****************************************************************************/
/*
* This config file is for the Creative Zen Vision
*/
#define CONFIG_SDRAM_START 0x00900000
#define CREATIVE_ZV 1
#define MODEL_NAME "Creative Zen Vision"
/* This makes it part of the Creative Zen Vision family :) */
#define CREATIVE_ZVx 1
/* For Rolo and boot loader */
#define MODEL_NUMBER 28
/* define this if you use an ATA controller */
#define CONFIG_STORAGE STORAGE_ATA
/*define this if the ATA controller and method of USB access support LBA48 */
#define HAVE_LBA48
/* define this if you have a colour LCD */
#define HAVE_LCD_COLOR
/* define this if you have access to the quickscreen */
#define HAVE_QUICKSCREEN
/* define this if you would like tagcache to build on this target */
#define HAVE_TAGCACHE
/* define this if the target has volume keys which can be used in the lists */
//#define HAVE_VOLUME_IN_LIST
/* LCD dimensions */
#define CONFIG_LCD LCD_CREATIVEZVM
/* choose the lcd orientation. both work */
#define CONFIG_ORIENTATION SCREEN_PORTRAIT
#define LCD_WIDTH 640
#define LCD_HEIGHT 480
/* sqrt(640^2 + 480^2) / 2.5 = 320.0 */
#define LCD_DPI 320
#define LCD_DEPTH 16 /* 65k colours */
#define LCD_PIXELFORMAT RGB565 /* rgb565 */
/* Define this if your LCD can be enabled/disabled */
#define HAVE_LCD_ENABLE
#define CONFIG_KEYPAD CREATIVEZV_PAD
#define HAVE_HEADPHONE_DETECTION
//#define HAVE_TOUCHPAD
/* Define this to enable morse code input */
#define HAVE_MORSE_INPUT
/* define this if you have a real-time clock */
//#define CONFIG_RTC RTC_RX5X348AB
/* define this if you have a disk storage, i.e. something
that needs spinups and can cause skips when shaked */
#define HAVE_DISK_STORAGE
/* Define this for LCD backlight available */
//#define HAVE_BACKLIGHT
//#define HAVE_BACKLIGHT_BRIGHTNESS
/* Main LCD backlight brightness range and defaults */
//#define MIN_BRIGHTNESS_SETTING 0
//#define MAX_BRIGHTNESS_SETTING 127
//#define DEFAULT_BRIGHTNESS_SETTING 85 /* OF "full brightness" */
//#define DEFAULT_DIMNESS_SETTING 22 /* OF "most dim" */
/* Define this if you have a software controlled poweroff */
//#define HAVE_SW_POWEROFF
//TODO: enable this back
/* The number of bytes reserved for loadable codecs */
#define CODEC_SIZE 0x100000
/* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0x100000
/* Define this if you have the TLV320 audio codec -> controlled by the DSP */
#define HAVE_TLV320
#define CONFIG_I2C I2C_DM320
/* TLV320 has no tone controls, so we use the software ones */
#define HAVE_SW_TONE_CONTROLS
/*#define HW_SAMPR_CAPS (SAMPR_CAP_88 | SAMPR_CAP_44 | SAMPR_CAP_22 | \
SAMPR_CAP_11)*/
#define BATTERY_CAPACITY_DEFAULT 1250 /* default battery capacity */
#define BATTERY_CAPACITY_MIN 500 /* min. capacity selectable */
#define BATTERY_CAPACITY_MAX 2500 /* max. capacity selectable */
#define BATTERY_CAPACITY_INC 100 /* capacity increment */
#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
/* Hardware controlled charging with monitoring */
//#define CONFIG_CHARGING CHARGING_MONITOR
/* Define this if you have a TI TMS320DM320 */
#define CONFIG_CPU DM320
/* 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 16934400
/* Define this if you have ATA power-off control */
#define HAVE_ATA_POWER_OFF
/* Define this if you have adjustable CPU frequency */
/* #define HAVE_ADJUSTABLE_CPU_FREQ */
#define BOOTFILE_EXT "zv"
#define BOOTFILE "rockbox." BOOTFILE_EXT
#define BOOTDIR "/.rockbox"
#define CONFIG_USBOTG USBOTG_ISP1583
#define HAVE_USBSTACK
//#define HAVE_BOOTLOADER_USB_MODE
#define USB_VENDOR_ID 0x041e
#define USB_PRODUCT_ID 0x4133
#define USB_NUM_ENDPOINTS 7
/* Define this if a programmable hotkey is mapped */
#define HAVE_HOTKEY

View file

@ -1,175 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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.
*
****************************************************************************/
/*
* This config file is for the Creative Zen Vision:M
*/
#define CONFIG_SDRAM_START 0x00900000
#define CREATIVE_ZVM 1
#define MODEL_NAME "Creative Zen Vision:M"
/* This makes it part of the Creative Zen Vision family :) */
#define CREATIVE_ZVx 1
/* For Rolo and boot loader */
#define MODEL_NUMBER 26
/* define this if you use an ATA controller */
#define CONFIG_STORAGE STORAGE_ATA
/*define this if the ATA controller and method of USB access support LBA48 */
#define HAVE_LBA48
/* define this if you have a colour LCD */
#define HAVE_LCD_COLOR
/* define this if you have access to the quickscreen */
#define HAVE_QUICKSCREEN
/* define this if you would like tagcache to build on this target */
#define HAVE_TAGCACHE
/* define this if the target has volume keys which can be used in the lists */
//#define HAVE_VOLUME_IN_LIST
/* LCD dimensions */
#define CONFIG_LCD LCD_CREATIVEZVM
/* choose the lcd orientation. both work */
#define CONFIG_ORIENTATION SCREEN_PORTRAIT
#define LCD_WIDTH 320
#define LCD_HEIGHT 240
/* sqrt(320^2 + 240^2) / 2.5 = 160.0 */
#define LCD_DPI 160
#define LCD_DEPTH 16 /* 65k colours */
#define LCD_PIXELFORMAT RGB565 /* rgb565 */
/* Define this if your LCD can be enabled/disabled */
/* Disabled until properly working
#define HAVE_LCD_ENABLE */
#define CONFIG_KEYPAD CREATIVEZVM_PAD
#define HAVE_HEADPHONE_DETECTION
//#define HAVE_TOUCHPAD
/* Define this to enable morse code input */
#define HAVE_MORSE_INPUT
/* define this if you have a real-time clock */
//#define CONFIG_RTC RTC_RX5X348AB
/* define this if you have a disk storage, i.e. something
that needs spinups and can cause skips when shaked */
#define HAVE_DISK_STORAGE
/* Define this for LCD backlight available */
//#define HAVE_BACKLIGHT
//#define HAVE_BACKLIGHT_BRIGHTNESS
/* Main LCD backlight brightness range and defaults */
//#define MIN_BRIGHTNESS_SETTING 0
//#define MAX_BRIGHTNESS_SETTING 127
//#define DEFAULT_BRIGHTNESS_SETTING 85 /* OF "full brightness" */
//#define DEFAULT_DIMNESS_SETTING 22 /* OF "most dim" */
/* Define this if you have a software controlled poweroff */
//#define HAVE_SW_POWEROFF
//TODO: enable this back
/* The number of bytes reserved for loadable codecs */
#define CODEC_SIZE 0x100000
/* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0x100000
/* Define this if you have the TLV320 audio codec -> controlled by the DSP */
#define HAVE_TLV320
#define CONFIG_I2C I2C_DM320
/* TLV320 has no tone controls, so we use the software ones */
#define HAVE_SW_TONE_CONTROLS
/*#define HW_SAMPR_CAPS (SAMPR_CAP_88 | SAMPR_CAP_44 | SAMPR_CAP_22 | \
SAMPR_CAP_11)*/
#define BATTERY_CAPACITY_DEFAULT 1250 /* default battery capacity */
#define BATTERY_CAPACITY_MIN 500 /* min. capacity selectable */
#define BATTERY_CAPACITY_MAX 2500 /* max. capacity selectable */
#define BATTERY_CAPACITY_INC 100 /* capacity increment */
#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
/* Hardware controlled charging with monitoring */
//#define CONFIG_CHARGING CHARGING_MONITOR
/* Define this if you have a TI TMS320DM320 */
#define CONFIG_CPU DM320
/* 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 16934400
/* Define this if you have ATA power-off control */
#define HAVE_ATA_POWER_OFF
/* Define this if you have adjustable CPU frequency */
/* #define HAVE_ADJUSTABLE_CPU_FREQ */
#define BOOTFILE_EXT "zvm"
#define BOOTFILE "rockbox." BOOTFILE_EXT
#define BOOTDIR "/.rockbox"
#define CONFIG_USBOTG USBOTG_ISP1583
#define HAVE_USBSTACK
//#define HAVE_BOOTLOADER_USB_MODE
#define USB_VENDOR_ID 0x041e
#define USB_PRODUCT_ID 0x4133
#define USB_NUM_ENDPOINTS 7
/*DEBUGGING!*/
/*
#define THREAD_EXTRA_CHECKS 1
#define DEBUG 1
#define debug(msg) printf(msg)
#define BUTTON_DEBUG
*/
/* Define this if a programmable hotkey is mapped */
#define HAVE_HOTKEY

View file

@ -1,167 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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.
*
****************************************************************************/
/*
* This config file is for the Creative Zen Vision:M 60GB
*/
#define CONFIG_SDRAM_START 0x00900000
#define CREATIVE_ZVM60GB 1
#define MODEL_NAME "Creative Zen Vision:M 60GB"
/* This makes it part of the Creative Zen Vision family :) */
#define CREATIVE_ZVx 1
/* For Rolo and boot loader */
#define MODEL_NUMBER 27
/* define this if you use an ATA controller */
#define CONFIG_STORAGE STORAGE_ATA
/*define this if the ATA controller and method of USB access support LBA48 */
#define HAVE_LBA48
/* define this if you have a colour LCD */
#define HAVE_LCD_COLOR
/* define this if you have access to the quickscreen */
#define HAVE_QUICKSCREEN
/* define this if you would like tagcache to build on this target */
#define HAVE_TAGCACHE
/* define this if the target has volume keys which can be used in the lists */
//#define HAVE_VOLUME_IN_LIST
/* LCD dimensions */
#define CONFIG_LCD LCD_CREATIVEZVM
/* choose the lcd orientation. both work */
#define CONFIG_ORIENTATION SCREEN_PORTRAIT
#define LCD_WIDTH 320
#define LCD_HEIGHT 240
/* sqrt(320^2 + 240^2) / 2.5 = 160.0 */
#define LCD_DPI 160
#define LCD_DEPTH 16 /* 65k colours */
#define LCD_PIXELFORMAT RGB565 /* rgb565 */
/* Define this if your LCD can be enabled/disabled */
#define HAVE_LCD_ENABLE
#define CONFIG_KEYPAD CREATIVEZVM_PAD
#define HAVE_HEADPHONE_DETECTION
//#define HAVE_TOUCHPAD
/* Define this to enable morse code input */
#define HAVE_MORSE_INPUT
/* define this if you have a real-time clock */
//#define CONFIG_RTC RTC_RX5X348AB
/* define this if you have a disk storage, i.e. something
that needs spinups and can cause skips when shaked */
#define HAVE_DISK_STORAGE
/* Define this for LCD backlight available */
//#define HAVE_BACKLIGHT
//#define HAVE_BACKLIGHT_BRIGHTNESS
/* Main LCD backlight brightness range and defaults */
//#define MIN_BRIGHTNESS_SETTING 0
//#define MAX_BRIGHTNESS_SETTING 127
//#define DEFAULT_BRIGHTNESS_SETTING 85 /* OF "full brightness" */
//#define DEFAULT_DIMNESS_SETTING 22 /* OF "most dim" */
/* Define this if you have a software controlled poweroff */
//#define HAVE_SW_POWEROFF
//TODO: enable this back
/* The number of bytes reserved for loadable codecs */
#define CODEC_SIZE 0x100000
/* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0x100000
/* Define this if you have the TLV320 audio codec -> controlled by the DSP */
#define HAVE_TLV320
#define CONFIG_I2C I2C_DM320
/* TLV320 has no tone controls, so we use the software ones */
#define HAVE_SW_TONE_CONTROLS
/*#define HW_SAMPR_CAPS (SAMPR_CAP_88 | SAMPR_CAP_44 | SAMPR_CAP_22 | \
SAMPR_CAP_11)*/
#define BATTERY_CAPACITY_DEFAULT 1250 /* default battery capacity */
#define BATTERY_CAPACITY_MIN 500 /* min. capacity selectable */
#define BATTERY_CAPACITY_MAX 2500 /* max. capacity selectable */
#define BATTERY_CAPACITY_INC 100 /* capacity increment */
#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
/* Hardware controlled charging with monitoring */
//#define CONFIG_CHARGING CHARGING_MONITOR
/* Define this if you have a TI TMS320DM320 */
#define CONFIG_CPU DM320
/* 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 16934400
/* Define this if you have ATA power-off control */
#define HAVE_ATA_POWER_OFF
/* Define this if you have adjustable CPU frequency */
/* #define HAVE_ADJUSTABLE_CPU_FREQ */
#define BOOTFILE_EXT "zvm60"
#define BOOTFILE "rockbox." BOOTFILE_EXT
#define BOOTDIR "/.rockbox"
/* #define CONFIG_USBOTG USBOTG_ISP1761 */
#define CONFIG_USBOTG USBOTG_ISP1583
#define HAVE_USBSTACK
//#define HAVE_BOOTLOADER_USB_MODE
#define USB_VENDOR_ID 0x041e
#define USB_PRODUCT_ID 0x4133
#define USB_NUM_ENDPOINTS 7
/* Define this if a programmable hotkey is mapped */
#define HAVE_HOTKEY

View file

@ -36,9 +36,6 @@
/* Untested */
.text
.equ .ata_port, 0x18000000
#elif defined(CREATIVE_ZVx) /* Zen Vision could have an other address */
.text
.equ .ata_port, 0x50FEE000
#elif defined(MROBE_500)
.text
.equ .ata_port, 0x50400000

View file

@ -104,18 +104,6 @@ static inline int set_interrupt_status(int status, int mask)
unsigned long cpsr;
int oldstatus;
/* Read the old levels and set the new ones */
#if defined(CREATIVE_ZVx) && defined(BOOTLOADER)
// FIXME: This workaround is for a problem with inlining;
// for some reason 'mask' gets treated as a variable/non-immediate constant
// but only on this build. All others (including the nearly-identical mrobe500boot) are fine
asm volatile (
"mrs %1, cpsr \n"
"bic %0, %1, %[mask] \n"
"orr %0, %0, %2 \n"
"msr cpsr_c, %0 \n"
: "=&r,r"(cpsr), "=&r,r"(oldstatus)
: "r,i"(status & mask), [mask]"r,i"(mask));
#else
asm volatile (
"mrs %1, cpsr \n"
"bic %0, %1, %[mask] \n"
@ -123,7 +111,6 @@ static inline int set_interrupt_status(int status, int mask)
"msr cpsr_c, %0 \n"
: "=&r,r"(cpsr), "=&r,r"(oldstatus)
: "r,i"(status & mask), [mask]"i,i"(mask));
#endif
return oldstatus;
}

View file

@ -1,35 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id: adc-mr500.c 14817 2007-09-22 15:43:38Z kkurbjun $
*
* Copyright (C) 2007 by Karl Kurbjun
*
* 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 "cpu.h"
#include "adc.h"
#include "adc-target.h"
#include "kernel.h"
void adc_init(void)
{
}
/* Called to get the recent ADC reading */
inline unsigned short adc_read(int channel)
{
return (short)channel;
}

View file

@ -1,40 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id: adc-target.h 14817 2007-09-22 15:43:38Z kkurbjun $
*
* Copyright (C) 2007 by Karl Kurbjun
*
* 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_
/* only two channels used by the Gigabeat */
#define NUM_ADC_CHANNELS 2
#define ADC_BATTERY 0
#define ADC_HPREMOTE 1
#define ADC_UNKNOWN_3 2
#define ADC_UNKNOWN_4 3
#define ADC_UNKNOWN_5 4
#define ADC_UNKNOWN_6 5
#define ADC_UNKNOWN_7 6
#define ADC_UNKNOWN_8 7
#define ADC_UNREG_POWER ADC_BATTERY /* For compatibility */
#define ADC_READ_ERROR 0xFFFF
#endif

View file

@ -1,544 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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 "power.h"
#include "panic.h"
#include "ata-driver.h"
#include "dm320.h"
#include "ata.h"
#include "string.h"
#include "core_alloc.h"
#include "logf.h"
#include "ata-defines.h"
#undef ata_read_sectors
#undef ata_write_sectors
static void sleep_ms(int ms)
{
sleep(ms*HZ/1000);
}
void ide_power_enable(bool on)
{
/* Disabled until figured out what's wrong */
#if 0
int old_level = disable_irq_save();
if(on)
{
IO_GIO_BITSET0 = (1 << 14);
ata_reset();
}
else
IO_GIO_BITCLR0 = (1 << 14);
restore_irq(old_level);
#else
(void)on;
#endif
}
inline bool ide_powered()
{
#if 0
return (IO_GIO_BITSET0 & (1 << 14));
#else
return true;
#endif
}
void ata_reset(void)
{
int old_level = disable_irq_save();
if(!ide_powered())
{
ide_power_enable(true);
sleep_ms(150);
}
else
{
IO_GIO_BITSET0 = (1 << 5);
IO_GIO_BITCLR0 = (1 << 3);
sleep_ms(1);
}
IO_GIO_BITCLR0 = (1 << 5);
sleep_ms(10);
IO_GIO_BITSET0 = (1 << 3);
while(!(ATA_COMMAND & STATUS_RDY))
sleep_ms(10);
restore_irq(old_level);
}
void ata_enable(bool on)
{
(void)on;
return;
}
bool ata_is_coldstart(void)
{
return true;
}
void ata_device_init(void)
{
IO_INTC_EINT1 |= INTR_EINT1_EXT2; /* enable GIO2 interrupt */
/* TODO: mimic OF inits... */
return;
}
void GIO2(void)
{
#ifdef DEBUG
logf("GIO2 interrupt...");
#endif
IO_INTC_IRQ1 = INTR_IRQ1_EXT2; /* Mask GIO2 interrupt */
return;
}
/*
---------------------------------------------------------------------------
CreativeFileSystem parsing/handling code
---------------------------------------------------------------------------
*/
#define VFAT_SECTOR_SIZE(x) ( (x)/0x8000 ) /* 1GB array requires 80kB of RAM */
extern int ata_read_sectors(IF_MD(int drive,) sector_t start, int count, void* buf);
extern int ata_write_sectors(IF_MD(int drive,) sector_t start, int count, const void* buf);
// XXX 64-bit: Due to this it's not likely that this target will ever handle 64-bit storage.
struct main_header
{
char mblk[4];
unsigned int sector_size;
long long disk_size;
struct partition_header
{
unsigned long end;
unsigned long start;
char name[8];
} partitions[31];
};
struct cfs_header
{
unsigned int unk;
unsigned int unk2;
unsigned int sector_size;
unsigned int unk4;
unsigned int unk5;
char identifier[4];
unsigned int first_inode;
unsigned int unk8;
unsigned int unk9;
unsigned int unk10;
unsigned int unk11;
};
struct cfs_inode
{
unsigned char magic[4];
unsigned int number;
unsigned int parent;
unsigned int unk;
unsigned int type;
unsigned int created_time;
unsigned int lastmodified_time;
unsigned int unk2;
unsigned int first_class_chain[12];
unsigned int unk3;
unsigned int unk4;
unsigned int second_class_chain_first_cluster;
unsigned int unk9;
unsigned int unk10;
unsigned int second_class_chain_second_cluster;
unsigned int unk11;
unsigned int unk12;
unsigned int unk13;
unsigned int filesize;
unsigned int serial_number;
unsigned int number_of_metadata_records;
};
struct cfs_direntry
{
unsigned char identifier[4];
unsigned int unk;
unsigned int items;
unsigned int unk2;
unsigned char maxlen[2];
unsigned char padding[202];
/* struct cfs_direntry_item _items[items]; */
};
struct cfs_direntry_item
{
unsigned int inode_number;
unsigned short strlen;
unsigned short bytesperchar;
char string[32];
};
static bool cfs_inited = false;
static unsigned long cfs_start;
#ifdef BOOTLOADER
static unsigned long *sectors;
#else
static int sectors_handle;
#endif
#define CFS_START ( ((hdr->partitions[1].start*hdr->sector_size) & ~0xFFFF) + 0x10000 )
#define CFS_CLUSTER2CLUSTER(x) ( (CFS_START/512)+((x)-1)*64 )
/* Limited version of UCS -> ASCII */
static char* ucs2letostring(unsigned char* s)
{
static char res[256];
int i;
for(i=0; (s[i] == 0 && s[i+1] == 0 && i<256); i++)
res[i] = s[i*2];
return (char*)&res;
}
static void cfs_init(void)
{
struct main_header *hdr;
struct cfs_header *cfs;
struct cfs_inode *root_inode, *vfat_inode, *inode;
struct cfs_direntry *root_direntry, *vfat_direntry;
struct cfs_direntry_item *root_direntry_items, *vfat_direntry_items;
unsigned int i, j, k, vfat_inode_nr=0, vfat_inodes_nr[10], vfat_sector_count;
unsigned char sector[512];
static unsigned int vfat_data[2][0x8000];
static unsigned char sector2[0x8000];
if(cfs_inited)
return;
/* Read MBLK */
_ata_read_sectors(0, 1, &sector);
hdr = (struct main_header*)&sector;
logf("CFS is at 0x%x [0x%x]", CFS_START, CFS_START/512);
/* Read CFS header */
_ata_read_sectors(CFS_START/512, 64, &sector2);
cfs = (struct cfs_header*)&sector2;
logf("First inode = 0x%x", cfs->first_inode);
/* Read root inode */
_ata_read_sectors(CFS_CLUSTER2CLUSTER(cfs->first_inode), 64, &sector2);
root_inode = (struct cfs_inode*)&sector2;
logf("Root inode = 0x%x", root_inode);
logf("0x%x 0x%x", CFS_CLUSTER2CLUSTER(root_inode->first_class_chain[0]), root_inode->first_class_chain[0]);
/* Read root inode's first sector */
_ata_read_sectors(CFS_CLUSTER2CLUSTER(root_inode->first_class_chain[0]), 64, &sector2);
root_direntry = (struct cfs_direntry*)&sector2;
root_direntry_items = (struct cfs_direntry_item*)(&sector2[0]+sizeof(struct cfs_direntry));
logf("0x%x", root_direntry->identifier);
logf("%d", root_direntry->items);
/* Search VFAT inode */
for(i=0; i < root_direntry->items; i++)
{
if(root_direntry_items[i].inode_number != 0)
{
//logf(" * [%s] at 0x%x", ucs2letostring(&root_direntry_items[i].string[0]), root_direntry_items[i].inode_number);
if(strcmp(ucs2letostring(&root_direntry_items[i].string[0]), "VFAT") == 0)
vfat_inode_nr = root_direntry_items[i].inode_number;
}
}
logf("VFAT inode = 0x%x", vfat_inode_nr);
if(vfat_inode_nr != 0)
{
/* Read VFAT inode */
_ata_read_sectors(CFS_CLUSTER2CLUSTER(vfat_inode_nr), 64, &sector2);
vfat_inode = (struct cfs_inode*)&sector2;
/* Read VFAT inode's first sector */
_ata_read_sectors(CFS_CLUSTER2CLUSTER(vfat_inode->first_class_chain[0]), 64, &sector2);
vfat_direntry = (struct cfs_direntry*)&sector2;
vfat_direntry_items = (struct cfs_direntry_item*)(&sector2[0]+sizeof(struct cfs_direntry));
/* Search for VFAT's subinodes */
for(i=0; i < vfat_direntry->items; i++)
{
logf(" * [%s] at 0x%x\n", ucs2letostring(&vfat_direntry_items[i].string[0]), vfat_direntry_items[i].inode_number);
if(i > 0)
vfat_inodes_nr[i-1] = vfat_direntry_items[i].inode_number;
}
/* Determine size of VFAT file */
_ata_read_sectors(CFS_CLUSTER2CLUSTER(vfat_inodes_nr[1]), 1, &sector);
inode = (struct cfs_inode*)&sector;
#ifndef BOOTLOADER
sectors_handle = core_alloc(VFAT_SECTOR_SIZE(inode->filesize));
unsigned long *sectors = core_get_data(sectors_handle);
#else
static unsigned long _sector[VFAT_SECTOR_SIZE(1024*1024*1024)]; /* 1GB guess */
sectors = _sector;
#endif
logf("VFAT file size: 0x%x", inode->filesize);
/* Clear data sectors */
memset(&sectors, 0, VFAT_SECTOR_SIZE(inode->filesize)*sizeof(unsigned long));
/* Read all data sectors' addresses in memory */
vfat_sector_count = 0;
for(i=0; vfat_inodes_nr[i] != 0; i++)
{
_ata_read_sectors(CFS_CLUSTER2CLUSTER(vfat_inodes_nr[i]), 1, &sector);
inode = (struct cfs_inode*)&sector;
/* Read second & third class chain */
_ata_read_sectors(CFS_CLUSTER2CLUSTER(inode->second_class_chain_first_cluster), 64, &vfat_data[0]);
_ata_read_sectors(CFS_CLUSTER2CLUSTER(inode->second_class_chain_second_cluster), 64, &vfat_data[1]);
/* First class chain */
#ifndef BOOTLOADER
sectors = core_get_data(sectors_handle);
#endif
for(j=0; j<12; j++)
{
if( (inode->first_class_chain[j] & 0xFFFF) != 0xFFFF &&
inode->first_class_chain[j] != 0
)
sectors[vfat_sector_count++] = inode->first_class_chain[j];
}
/* Second class chain */
#ifndef BOOTLOADER
sectors = core_get_data(sectors_handle);
#endif
for(j=0; j<0x8000/4; j++)
{
if( (vfat_data[0][j] & 0xFFFF) != 0xFFFF &&
vfat_data[0][j] != 0
)
sectors[vfat_sector_count++] = vfat_data[0][j];
}
/* Third class chain */
for(j=0; j<0x8000/4; j++)
{
if( (vfat_data[1][j] & 0xFFFF) != 0xFFFF &&
vfat_data[1][j] != 0
)
{
memset(&vfat_data[0], 0, 0x8000*sizeof(unsigned int));
/* Read third class subchain(s) */
_ata_read_sectors(CFS_CLUSTER2CLUSTER(vfat_data[1][j]), 64, &vfat_data[0]);
#ifndef BOOTLOADER
sectors = core_get_data(sectors_handle);
#endif
for(k=0; k<0x8000/4; k++)
{
if( (vfat_data[0][k] & 0xFFFF) != 0xFFFF &&
vfat_data[0][k] != 0
)
sectors[vfat_sector_count++] = vfat_data[0][k];
}
}
}
}
logf("Sector count: %d 0x%x", vfat_sector_count, vfat_sector_count);
}
else
panicf("Cannot find virtual FAT filesystem!");
cfs_inited = true;
}
static inline sector_t map_sector(sector_t sector)
{
/*
* Sector mapping: start of CFS + FAT_SECTOR2CFS_SECTOR(sector) + missing part
* FAT works with sectors of 0x200 bytes, CFS with sectors of 0x8000 bytes.
*/
#ifndef BOOTLOADER
sector_t *sectors = core_get_data(sectors_handle);
#endif
return cfs_start+sectors[sector/64]*64+sector%64;
}
int ata_read_sectors(IF_MD(int drive,) sector_t start, int count, void* buf)
{
if(!cfs_inited)
cfs_init();
/* Check if count is lesser than or equal to 1 native CFS sector */
if(count <= 64)
return _ata_read_sectors(IF_MD(drive,) map_sector(start), count, buf);
else
{
int i;
unsigned char* dest = (unsigned char*)buf;
/* Read sectors in parts of 0x8000 */
for(i=0; i<count; i+=64)
{
int ret = _ata_read_sectors(IF_MD(drive,) map_sector(start+i), (count-i >= 64 ? 64 : count-i), (void*)dest);
if(ret != 0)
return ret;
dest += (count-i >= 64 ? 0x8000 : (count-i)*512);
}
return 0;
}
}
int ata_write_sectors(IF_MD(int drive,) sector_t start, int count, const void* buf)
{
if(!cfs_inited)
cfs_init();
#if 0 /* Disabled for now */
/* Check if count is lesser than or equal to 1 native CFS sector */
if(count <= 64)
return _ata_write_sectors(IF_MD(drive,) map_sector(start), count, buf);
else
{
int i, ret;
unsigned char* dest = (unsigned char*)buf;
/* Read sectors in parts of 0x8000 */
for(i=0; i<count; i+=64)
{
ret = _ata_write_sectors(IF_MD(drive,) map_sector(start+i), (count-i >= 64 ? 64 : count-i), (const void*)dest);
if(ret != 0)
return ret;
dest += (count-i >= 64 ? 0x8000 : (count-i)*512);
}
return ret;
}
#else
(void)start;
(void)count;
(void)buf;
return 0;
#endif
}
#ifdef BOOTLOADER
/*
---------------------------------------------------------------------------
MiniFileSystem parsing code
---------------------------------------------------------------------------
*/
struct minifs_file
{
char name[0x10];
unsigned int unk;
unsigned long size;
unsigned int chain1;
unsigned int chain2;
};
struct minifs_chain
{
unsigned int unknown;
unsigned short chain[0x27FE];
unsigned int unknown2;
unsigned long length;
};
#define DIR_BITMAP_START 0x0143
#define DIR_START 0x0144
#define DATASPACE_BITMAP_START 0x0145
#define DATASPACE_START 0x0146
#define CLUSTER_CHAIN_SIZE 0x5008
#define CLUSTER_CHAIN_HEAD 0x0000
#define CLUSTER_CHAIN_BITMAP 0x0001
#define CLUSTER_CHAIN_CHAIN 0x0002
int load_minifs_file(char* filename, unsigned char* location)
{
struct main_header *hdr;
static struct minifs_file files[128];
struct minifs_chain *chain;
unsigned int i;
int found = -1;
unsigned char sector[512];
static unsigned char chain_data[42*512]; /* stack overflow if not static */
/* Read MBLK */
_ata_read_sectors(0, 1, &sector);
hdr = (struct main_header*)&sector;
/* Read directory listing */
#define CLUSTER2SECTOR(x) ( (hdr->partitions[0].start + (x)*8) )
_ata_read_sectors(CLUSTER2SECTOR(DIR_START), 8, &files);
for(i=0; i<127; i++)
{
if(strcmp(files[i].name, filename) == 0)
found = i;
}
if(found == -1)
return -1;
#define GET_CHAIN(x) ( CLUSTER2SECTOR(CLUSTER_CHAIN_CHAIN)*512 + (x)*CLUSTER_CHAIN_SIZE )
#define FILE2SECTOR(x) ( CLUSTER2SECTOR(DATASPACE_START + (x)) )
/* Read chain list */
_ata_read_sectors(GET_CHAIN(files[found].chain1)/512, 41, &chain_data[0]);
chain = (struct minifs_chain*)&chain_data[GET_CHAIN(files[found].chain1)%512];
/* Copy data */
for(i=0; i<chain->length; i++)
{
_ata_read_sectors(FILE2SECTOR(chain->chain[i]), 8, location);
location += 0x1000;
}
return files[found].size;
}
#endif

View file

@ -1,58 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2007 by Maurus Cuelenaere
*
* 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 ATA_TARGET_H
#define ATA_TARGET_H
#include "ata.h"
/* DMA optimized reading and writing */
#define ATA_OPTIMIZED_READING
#define ATA_OPTIMIZED_WRITING
/*
#include "dma-target.h"
#define copy_read_sectors dma_ata_read
#define copy_write_sectors dma_ata_write
*/
/* Nasty hack, but Creative is nasty... */
#define ata_read_sectors _ata_read_sectors
#define ata_write_sectors _ata_write_sectors
extern int _ata_read_sectors(IF_MD(int drive,) sector_t start, int count, void* buf);
extern int _ata_write_sectors(IF_MD(int drive,) sector_t start, int count, const void* buf);
/* General purpose memory region #1 */
#define ATA_IOBASE 0x50FEE000
#define ATA_DATA (*((volatile unsigned short*)(ATA_IOBASE)))
#define ATA_ERROR (*((volatile unsigned char*)(ATA_IOBASE+0x2)))
#define ATA_NSECTOR (*((volatile unsigned char*)(ATA_IOBASE+0x4)))
#define ATA_SECTOR (*((volatile unsigned char*)(ATA_IOBASE+0x6)))
#define ATA_LCYL (*((volatile unsigned char*)(ATA_IOBASE+0x8)))
#define ATA_HCYL (*((volatile unsigned char*)(ATA_IOBASE+0xA)))
#define ATA_SELECT (*((volatile unsigned char*)(ATA_IOBASE+0xC)))
#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE+0xE)))
#define ATA_CONTROL (*((volatile unsigned char*)(ATA_IOBASE+0x800C)))
#ifdef BOOTLOADER
int load_minifs_file(char* filename, unsigned char* location);
#endif
#endif

View file

@ -1,33 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id: backlight-target.h 15599 2007-11-12 18:49:53Z amiconn $
*
* Copyright (C) 2007 by Karl Kurbjun
*
* 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
bool backlight_hw_init(void);
void backlight_hw_on(void);
void backlight_hw_off(void);
void backlight_hw_brightness(int brightness);
/* true: backlight fades off - false: backlight fades on */
void __backlight_dim(bool dim);
#endif

View file

@ -1,68 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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 "config.h"
#define BUTTON_BACK (1 << 0)
#define BUTTON_CUSTOM (1 << 1)
#define BUTTON_MENU (1 << 2)
#define BUTTON_LEFT (1 << 3)
#define BUTTON_RIGHT (1 << 4)
#define BUTTON_UP (1 << 5)
#define BUTTON_DOWN (1 << 6)
#define BUTTON_SELECT (1 << 7)
#define BUTTON_POWER (1 << 8)
#define BUTTON_PLAY (1 << 9)
#define BUTTON_HOLD (1 << 10)
#ifdef CREATIVE_ZV
#define BUTTON_PREV (1 << 11)
#define BUTTON_NEXT (1 << 12)
#define BUTTON_VOL_UP (1 << 13)
#define BUTTON_VOL_DOWN (1 << 14)
#endif
#ifndef CREATIVE_ZV
#define BUTTON_MAIN ( BUTTON_BACK | BUTTON_MENU | BUTTON_LEFT | BUTTON_RIGHT \
| BUTTON_UP | BUTTON_DOWN | BUTTON_SELECT | BUTTON_POWER \
| BUTTON_PLAY | BUTTON_HOLD | BUTTON_CUSTOM )
#else
#define BUTTON_MAIN ( BUTTON_BACK | BUTTON_MENU | BUTTON_LEFT | BUTTON_RIGHT \
| BUTTON_UP | BUTTON_DOWN | BUTTON_SELECT | BUTTON_POWER \
| BUTTON_PLAY | BUTTON_HOLD | BUTTON_NEXT | BUTTON_PREV \
| BUTTON_VOL_UP | BUTTON_VOL_DOWN )
#endif
#define POWEROFF_BUTTON BUTTON_POWER
#define POWEROFF_COUNT 10
#define HAS_BUTTON_HOLD
bool button_usb_connected(void);
#endif /* _BUTTON_TARGET_H_ */

View file

@ -1,132 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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 "thread.h"
#include "system.h"
#include "dma-target.h"
#include "dm320.h"
#include "ata.h"
#include "ata-driver.h"
#include "ata-defines.h"
#include <stdbool.h>
#define CS1_START 0x50000000
#define CS2_START 0x60000000
#define SDRAM_START 0x00900000
#define FLASH_START 0x00100000
#define CF_START 0x40000000
#define SSFDC_START 0x48000000
static struct semaphore transfer_completion_signal;
static bool dma_in_progress = false;
void MTC0(void)
{
IO_INTC_IRQ1 = INTR_IRQ1_MTC0;
semaphore_release(&transfer_completion_signal);
dma_in_progress = false;
}
void dma_start(const void* addr, size_t size)
{
/* Compatibility with Gigabeat S in dma_start.c */
(void) addr;
(void) size;
}
#define ATA_DEST (ATA_IOBASE-CS1_START)
void dma_ata_read(unsigned char* buf, int shortcount)
{
if(dma_in_progress)
semaphore_wait(&transfer_completion_signal, TIMEOUT_BLOCK);
while((unsigned long)buf & 0x1F)
{
unsigned short tmp;
tmp = ATA_IN16(ATA_DATA);
*buf++ = tmp & 0xFF;
*buf++ = tmp >> 8;
shortcount--;
}
if (!shortcount)
return;
IO_SDRAM_SDDMASEL = 0x0820; /* 32-byte burst mode transfer */
IO_EMIF_DMAMTCSEL = 1; /* Select CS1 */
IO_EMIF_AHBADDH = ((unsigned long)buf >> 16) & 0x7FFF; /* Set variable address */
IO_EMIF_AHBADDL = (unsigned long)buf & 0xFFFF;
IO_EMIF_MTCADDH = ( (1 << 15) | (ATA_DEST >> 16) ); /* Set fixed address */
IO_EMIF_MTCADDL = ATA_DEST & 0xFFFF;
IO_EMIF_DMASIZE = shortcount/2; /* 16-bits *2 = 1 word */
IO_EMIF_DMACTL = 3; /* Select MTC->AHB and start transfer */
dma_in_progress = true;
semaphore_wait(&transfer_completion_signal, TIMEOUT_BLOCK);
if(shortcount % 2)
{
unsigned short tmp;
tmp = ATA_IN16(ATA_DATA);
*buf++ = tmp & 0xFF;
*buf++ = tmp >> 8;
}
}
void dma_ata_write(unsigned char* buf, int wordcount)
{
if(dma_in_progress)
semaphore_wait(&transfer_completion_signal, TIMEOUT_BLOCK);
while((unsigned long)buf & 0x1F)
{
unsigned short tmp;
tmp = (unsigned short) *buf++;
tmp |= (unsigned short) *buf++ << 8;
ATA_OUT16(ATA_DATA, tmp);
wordcount--;
}
if (!wordcount)
return;
IO_SDRAM_SDDMASEL = 0x0830; /* 32-byte burst mode transfer */
IO_EMIF_DMAMTCSEL = 1; /* Select CS1 */
IO_EMIF_AHBADDH = ((unsigned long)buf >> 16) & ~(1 << 15); /* Set variable address */
IO_EMIF_AHBADDL = (unsigned long)buf & 0xFFFF;
IO_EMIF_MTCADDH = ( (1 << 15) | (ATA_DEST >> 16) ); /* Set fixed address */
IO_EMIF_MTCADDL = ATA_DEST & 0xFFFF;
IO_EMIF_DMASIZE = (wordcount+1)/2;
IO_EMIF_DMACTL = 1; /* Select AHB->MTC and start transfer */
dma_in_progress = true;
semaphore_wait(&transfer_completion_signal, TIMEOUT_BLOCK);
}
void dma_init(void)
{
IO_INTC_EINT1 |= INTR_EINT1_MTC0; /* enable MTC interrupt */
semaphore_init(&transfer_completion_signal, 1, 0);
dma_in_progress = false;
}

View file

@ -1,30 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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 DMA_TARGET_H
#define DMA_TARGET_H
void dma_start(const void* addr, size_t size); /* Compatibility with Gigabeat S in dma_start.c */
void dma_ata_read(unsigned char* buf, int wordcount);
void dma_ata_write(unsigned char* buf, int wordcount);
void dma_init(void);
#endif

View file

@ -1,427 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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 <sys/types.h>
#include "config.h"
#include "hwcompat.h"
#include "kernel.h"
#include "lcd.h"
#include "system.h"
#include "string-extra.h" /* memset16() */
#include "cpu.h"
#include "spi.h"
#include "lcd-target.h"
#include "ltv350qv.h"
/* Power and display status */
extern bool lcd_on; /* lcd-memframe.c */
static bool direct_fb_access = false; /* Does the DM320 has direct access to the FB? */
/* Copies a rectangle from one framebuffer to another. Can be used in
single transfer mode with width = num pixels, and height = 1 which
allows a full-width rectangle to be copied more efficiently. */
extern void lcd_copy_buffer_rect(fb_data *dst, const fb_data *src,
int width, int height);
int lcd_default_contrast(void)
{
return 0x1f;
}
void lcd_set_contrast(int val)
{
/* find S6F2002 controller datasheet first */
(void)val;
}
void lcd_set_invert_display(bool yesno) {
(void) yesno;
/* TODO: */
}
void lcd_set_flip(bool yesno) {
(void) yesno;
/* TODO: */
}
static void enable_venc(bool enable)
{
if(enable)
{
/* Set OSD clock */
IO_CLK_MOD1 &= ~(CLK_MOD1_VENC | CLK_MOD1_OSD); /* disable OSD clock and VENC clock */
IO_CLK_O2DIV = 3;
IO_CLK_OSEL &= ~CLK_OSEL_O2SEL(0xF); /* reset 'General purpose clock output (GIO26, GIO34)' and */
IO_CLK_OSEL |= CLK_OSEL_O2SEL(4); /* set to 'PLLIN clock' */
IO_CLK_SEL1 |= (CLK_SEL1_OSD | CLK_SEL1_VENC(7)); /* set to 'GP clock output 2 (GIO26, GIO34)' and turn on 'VENC clock' */
IO_CLK_MOD1 |= (CLK_MOD1_VENC | CLK_MOD1_OSD); /* enable OSD clock and VENC clock */
}
else
{
/* Disable video encoder */
IO_VID_ENC_VMOD &= ~VENC_VMOD_VENC;
/* Disable clock for power saving */
IO_CLK_MOD1 &= ~(CLK_MOD1_VENC | CLK_MOD1_OSD);
}
}
/* LTV250QV panel functions */
static void lcd_write_reg(unsigned char reg, unsigned short val)
{
unsigned char block[3] = {LTV_OPC_INDEX, 0, reg | 0xFF};
spi_block_transfer(SPI_target_LTV250QV, block, sizeof(block), NULL, 0);
block[0] = LTV_OPC_DATA;
block[1] = val >> 8;
block[2] = val & 0xFF;
spi_block_transfer(SPI_target_LTV250QV, block, sizeof(block), NULL, 0);
}
static void sleep_ms(unsigned int ms)
{
sleep(ms*HZ/1000);
}
static void lcd_display_on(bool reset)
{
/* Enable main power */
IO_GIO_BITSET2 |= (1 << 3);
/* power on sequence as per the ZVM firmware */
sleep_ms(250);
IO_GIO_BITSET1 = (1 << 13);
sleep_ms(5);
IO_GIO_BITSET2 = (1 << 5);
IO_GIO_BITSET2 = (1 << 8);
sleep_ms(1);
/*Init SPI here... */
sleep_ms(32);
IO_GIO_BITSET2 = (1 << 0);
sleep_ms(5);
IO_GIO_BITSET2 = (1 << 7);
sleep_ms(5);
IO_GIO_BITSET2 = (1 << 4);
sleep_ms(5);
IO_GIO_BITCLR2 = (1 << 8);
/*TODO: figure out what OF does after this... */
IO_GIO_BITSET2 = (1 << 8);
sleep_ms(1);
lcd_write_reg(LTV_IFCTL, LTV_NL(29));
lcd_write_reg(LTV_DATACTL, 0);
lcd_write_reg(LTV_ENTRY_MODE,0);
lcd_write_reg(LTV_GATECTL1, 0);
lcd_write_reg(LTV_GATECTL2, (LTV_NW_INV_1LINE | LTV_FHN | LTV_FTI(2) | LTV_FWI(3)));
lcd_write_reg(LTV_VBP, 0);
lcd_write_reg(LTV_HBP, 0);
lcd_write_reg(LTV_SOTCTL, 0);
lcd_write_reg(LTV_PWRCTL1, 0);
lcd_write_reg(LTV_PWRCTL2, 0);
lcd_write_reg(LTV_GAMMA(0), 0);
lcd_write_reg(LTV_GAMMA(1), 0);
lcd_write_reg(LTV_GAMMA(2), 0);
lcd_write_reg(LTV_GAMMA(3), 0);
lcd_write_reg(LTV_GAMMA(4), 0);
lcd_write_reg(LTV_GAMMA(5), 0);
lcd_write_reg(LTV_GAMMA(6), 0);
lcd_write_reg(LTV_GAMMA(7), 0);
lcd_write_reg(LTV_GAMMA(8), 0);
lcd_write_reg(LTV_GAMMA(9), 0);
sleep_ms(10);
lcd_write_reg(LTV_PWRCTL1, (LTV_VCOM_DISABLE | LTV_DRIVE_CURRENT(5) | LTV_SUPPLY_CURRENT(5)));
lcd_write_reg(LTV_PWRCTL2, 0);
sleep_ms(40);
lcd_write_reg(LTV_PWRCTL2, LTV_VCOML_ENABLE);
sleep_ms(40);
lcd_write_reg(LTV_IFCTL, (LTV_NMD | LTV_NL(29)));
lcd_write_reg(LTV_DATACTL, (LTV_DS_SAME | LTV_CHS_480 | LTV_DF_RGB | LTV_RGB_BGR));
lcd_write_reg(LTV_ENTRY_MODE,(LTV_VSPL_ACTIVE_LOW | LTV_HSPL_ACTIVE_LOW | LTV_DPL_SAMPLE_RISING | LTV_EPL_ACTIVE_LOW | LTV_SS_RIGHT_TO_LEFT));
lcd_write_reg(LTV_GATECTL1, LTV_CLW(1));
lcd_write_reg(LTV_GATECTL2, (LTV_NW_INV_1LINE | LTV_DSC | LTV_FTI(3) | LTV_FWI(3)));
lcd_write_reg(LTV_VBP, 0x5);
lcd_write_reg(LTV_HBP, 0x1B);
lcd_write_reg(LTV_SOTCTL, LTV_SDT(2));
lcd_write_reg(LTV_GAMMA(0), 0x203);
lcd_write_reg(LTV_GAMMA(1), 0x302);
lcd_write_reg(LTV_GAMMA(2), 0xC08);
lcd_write_reg(LTV_GAMMA(3), 0xC08);
lcd_write_reg(LTV_GAMMA(4), 0x707);
lcd_write_reg(LTV_GAMMA(5), 0x707);
lcd_write_reg(LTV_GAMMA(6), 0x104);
lcd_write_reg(LTV_GAMMA(7), 0x306);
lcd_write_reg(LTV_GAMMA(8), 0);
lcd_write_reg(LTV_GAMMA(9), 0);
sleep_ms(60);
lcd_write_reg(LTV_PWRCTL1, (LTV_VCOMOUT_ENABLE | LTV_POWER_ON | LTV_DRIVE_CURRENT(5) | LTV_SUPPLY_CURRENT(5)));
lcd_write_reg(LTV_PWRCTL2, (LTV_VCOML_VOLTAGE(17) | LTV_VCOMH_VOLTAGE(26))); /* VCOML=0,0625V VCOMH=1,21875V */
sleep_ms(10);
if(!reset)
{
enable_venc(true);
/* Re-enable video encoder */
IO_VID_ENC_VMOD |= VENC_VMOD_VENC;
}
/* tell that we're on now */
lcd_on = true;
}
#ifdef HAVE_LCD_ENABLE
static void lcd_display_off(void)
{
/* LQV shutdown sequence */
lcd_write_reg(LTV_PWRCTL1, (LTV_VCOMOUT_ENABLE | LTV_DRIVE_CURRENT(5) | LTV_SUPPLY_CURRENT(5)));
sleep_ms(20);
lcd_write_reg(LTV_PWRCTL1, (LTV_DRIVE_CURRENT(5) | LTV_SUPPLY_CURRENT(5)));
lcd_write_reg(LTV_GATECTL2, (LTV_NW_INV_1LINE | LTV_FTI(3) | LTV_FWI(3)));
lcd_write_reg(LTV_PWRCTL2, 0);
sleep_ms(20);
lcd_write_reg(LTV_PWRCTL1, 0);
sleep_ms(10);
unsigned char temp[1];
temp[0] = 0;
spi_block_transfer(SPI_target_LTV250QV, temp, sizeof(temp), NULL, 0);
IO_GIO_BITCLR2 = (1 << 4);
sleep_ms(5);
IO_GIO_BITCLR2 = (1 << 7);
sleep_ms(5);
IO_GIO_BITCLR2 = (1 << 0);
sleep_ms(2);
IO_GIO_BITCLR2 = (1 << 8);
IO_GIO_BITCLR2 = (1 << 5);
/* Disable main power */
IO_GIO_BITCLR2 |= (1 << 3);
enable_venc(false);
lcd_on = false;
}
void lcd_enable(bool on)
{
/* Disabled until properly working */
return;
if (on == lcd_on)
return;
if (on)
{
lcd_display_on(false); /* Turn on display */
lcd_update(); /* Resync display */
send_event(LCD_EVENT_ACTIVATION, NULL);
}
else
{
lcd_display_off(); /* Turn off display */
}
}
#endif
void lcd_set_direct_fb(bool yes)
{
unsigned int addr;
direct_fb_access = yes;
if(yes)
addr = ((unsigned int)FBADDR(0,0)-CONFIG_SDRAM_START) / 32;
else
addr = ((unsigned int)FRAME-CONFIG_SDRAM_START) / 32;
IO_OSD_OSDWINADH = addr >> 16;
IO_OSD_OSDWIN0ADL = addr & 0xFFFF;
}
bool lcd_get_direct_fb(void)
{
return direct_fb_access;
}
static bool _lcd_enabled(void)
{
/* Needed to detect if VENC/LCD already is initialized... */
if(IO_VID_ENC_VDCTL & VENC_VDCTL_VCLKE)
return true;
else if(!(IO_VID_ENC_VDCTL & VENC_VDCTL_YCDC))
return true;
else if(IO_CLK_MOD1 & CLK_MOD1_VENC)
return true;
else if(IO_CLK_MOD1 & CLK_MOD1_OSD)
return true;
else
return false;
}
void lcd_init_device(void)
{
if(!_lcd_enabled())
{
lcd_display_on(true);
enable_venc(true);
/* Set LCD values in Video Encoder */
IO_VID_ENC_VMOD &= 0x8800; /* Clear all values */
IO_VID_ENC_VMOD |= (VENC_VMOD_DACPD | VENC_VMOD_VMD | VENC_VMOD_ITLC | VENC_VMOD_VDMD(2)); /* set mode to RGB666 parallel 16 bit */
IO_VID_ENC_VDCTL &= 0x8FE8; /* Clear all values */
IO_VID_ENC_VDCTL |= (VENC_VDCTL_VCLKP | VENC_VDCTL_DOMD(2)),
IO_VID_ENC_VDPRO = VENC_VDPRO_PFLTR;
IO_VID_ENC_SYNCTL &= 0xE000; /* Clear all values */
IO_VID_ENC_SYNCTL |= (VENC_SYNCTL_VPL | VENC_SYNCTL_HPL);
IO_VID_ENC_HSDLY = 0;
IO_VID_ENC_HSPLS = 0x12;
IO_VID_ENC_HSTART = 0x1B;
IO_VID_ENC_HVALID = 0x140;
IO_VID_ENC_HINT = 0x168;
IO_VID_ENC_VSDLY = 0;
IO_VID_ENC_VSPLS = 3;
IO_VID_ENC_VSTART = 5;
IO_VID_ENC_VVALID = 0xF0;
IO_VID_ENC_VINT = 0x118;
IO_VID_ENC_RGBCTL &= 0x088; /* Clear all values */
IO_VID_ENC_RGBCTL |= VENC_RGBCTL_DFLTR;
IO_VID_ENC_RGBCLP = VENC_RGBCLP_UCLIP(0xFF);
IO_VID_ENC_LCDOUT &= 0xFE00; /* Clear all values */
IO_VID_ENC_LCDOUT |= (VENC_LCDOUT_OEE | VENC_LCDOUT_FIDS);
IO_VID_ENC_DCLKCTL &= 0xC0C0; /* Clear all values */
IO_VID_ENC_DCLKCTL |= VENC_DCLKCTL_DCKEC;
IO_VID_ENC_DCLKPTN0 = 1;
DM320_REG(0x0864) = 0; /* ???? */
}
else
lcd_on = true;
/* Based on lcd-mr500.c from Catalin Patulea */
/* Clear the Frame */
memset16(FRAME, 0x0000, LCD_WIDTH*LCD_HEIGHT);
IO_OSD_MODE = 0x00ff;
IO_OSD_VIDWINMD = 0x0002;
IO_OSD_OSDWINMD0 = 0x2001;
IO_OSD_OSDWINMD1 = 0x0002;
IO_OSD_ATRMD = 0x0000;
IO_OSD_RECTCUR = 0x0000;
unsigned int addr;
IO_OSD_OSDWIN0OFST = (LCD_WIDTH*16) / 256;
addr = ((unsigned int)FRAME-CONFIG_SDRAM_START) / 32;
IO_OSD_OSDWINADH = addr >> 16;
IO_OSD_OSDWIN0ADL = addr & 0xFFFF;
#ifndef ZEN_VISION
IO_OSD_BASEPX = 26;
IO_OSD_BASEPY = 5;
#else
IO_OSD_BASEPX = 80;
IO_OSD_BASEPY = 0;
#endif
IO_OSD_OSDWIN0XP = 0;
IO_OSD_OSDWIN0YP = 0;
IO_OSD_OSDWIN0XL = LCD_WIDTH;
IO_OSD_OSDWIN0YL = LCD_HEIGHT;
IO_VID_ENC_VDCTL |= VENC_VDCTL_VCLKE; /* Enable VCLK */
IO_VID_ENC_VMOD |= VENC_VMOD_VENC; /* Enable video encoder */
IO_VID_ENC_SYNCTL |= VENC_SYNCTL_SYE; /* Enable sync output */
IO_VID_ENC_VDCTL &= ~VENC_VDCTL_DOMD(3); /* Normal digital data output */
}
/*** Update functions ***/
/* Update a fraction of the display. */
void lcd_update_rect(int x, int y, int width, int height)
{
register fb_data *dst, *src;
if (!lcd_on || direct_fb_access)
return;
if (x + width > LCD_WIDTH)
width = LCD_WIDTH - x; /* Clip right */
if (x < 0)
width += x, x = 0; /* Clip left */
if (width <= 0)
return; /* nothing left to do */
if (y + height > LCD_HEIGHT)
height = LCD_HEIGHT - y; /* Clip bottom */
if (y < 0)
height += y, y = 0; /* Clip top */
if (height <= 0)
return; /* nothing left to do */
#if CONFIG_ORIENTATION == SCREEN_PORTRAIT
dst = (fb_data *)FRAME + LCD_WIDTH*y + x;
src = FBADDR(x,y);
/* Copy part of the Rockbox framebuffer to the second framebuffer */
if (width < LCD_WIDTH)
{
/* Not full width - do line-by-line */
lcd_copy_buffer_rect(dst, src, width, height);
}
else
{
/* Full width - copy as one line */
lcd_copy_buffer_rect(dst, src, LCD_WIDTH*height, 1);
}
#else
src = FBADDR(x,y);
register int xc, yc;
register fb_data *start=FRAME + LCD_HEIGHT*(LCD_WIDTH-x-1) + y + 1;
for(yc=0;yc<height;yc++)
{
dst=start+yc;
for(xc=0; xc<width; xc++)
{
*dst=*src++;
dst-=LCD_HEIGHT;
}
src+=x;
}
#endif
}
/* Update the display.
This must be called after all other LCD functions that change the display. */
void lcd_update(void)
{
if (!lcd_on || direct_fb_access)
return;
#if CONFIG_ORIENTATION == SCREEN_PORTRAIT
lcd_copy_buffer_rect((fb_data *)FRAME, FBADDR(0,0),
LCD_WIDTH*LCD_HEIGHT, 1);
#else
lcd_update_rect(0, 0, LCD_WIDTH, LCD_HEIGHT);
#endif
}

View file

@ -1,38 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2007 by Karl Kurbjun
*
* 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 LCD_TARGET_H
#define LCD_TARGET_H
void lcd_set_direct_fb(bool yes);
bool lcd_get_direct_fb(void);
/* Direct FB access disables regular updates */
#define lcd_write_enabled() \
({ lcd_on && !lcd_get_direct_fb(); })
/* Very strange functions */
#define LCD_OPTIMIZED_UPDATE
#define LCD_OPTIMIZED_UPDATE_RECT
#define LCD_FRAMEBUF_ADDR(col, row) ((fb_data *)FRAME + (row)*LCD_WIDTH + (col))
#endif /* LCD_TARGET_H */

View file

@ -1,80 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2007 by Karl Kurbjun
*
* 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 "kernel.h"
#include "logf.h"
#include "audio.h"
#include "sound.h"
#include "file.h"
#include "dm320.h"
#include "audiohw.h"
#include "dsp-target.h"
#include "pcm-internal.h"
void pcm_play_dma_init(void)
{
IO_CLK_O1DIV = 3;
/* Set GIO25 to CLKOUT1A */
IO_GIO_FSEL2 |= 3;
sleep(5);
audiohw_init();
audiohw_set_frequency(HW_FREQ_DEFAULT);
/* init DSP */
// dsp_init();
}
void pcm_play_dma_postinit(void)
{
audiohw_postinit();
/* wake DSP */
// dsp_wake();
}
void pcm_dma_apply_settings(void)
{
audiohw_set_frequency(pcm_fsel);
}
void pcm_play_dma_start(const void *addr, size_t size)
{
(void)addr;
(void)size;
DEBUGF("pcm_play_dma_start(0x%x, %d)", addr, size);
}
void pcm_play_dma_stop(void)
{
}
void pcm_play_lock(void)
{
}
void pcm_play_unlock(void)
{
}

View file

@ -1,380 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* Creative Zen Vision:M interrupt based PIC driver
*
* 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 <stdio.h>
#include "config.h"
#include "system.h"
#include "kernel.h"
#include "button-target.h"
#include "i2c-dm320.h"
#include "logf.h"
#ifdef BUTTON_DEBUG
#include "lcd-target.h"
#include "lcd.h"
#include "font.h"
#endif
#ifndef ZEN_VISION
/* Creative Zen Vision:M */
#define BTN_LEFT 0xAF00
#define BTN_RIGHT 0xA700
#define BTN_BACK 0xDF00
#define BTN_CUSTOM 0xC700
#define BTN_PLAY 0x9700
#define BTN_POWER 0x8700
#define BTN_MENU 0xCF00
#define BTN_HOLD 0xCF07
#define BTN_UNHOLD 0xD707
#define BTN_REL 1
#define BTN_TOUCHPAD_PRESS 0x8F00
#define BTN_TOUCHPAD_SCROLL_DOWN 0x0F03
#define BTN_TOUCHPAD_CORNER_DOWN 0xD700
#define BTN_TOUCHPAD_CORNER_UP 0x9F00
#define BTN_TOUCHPAD_SCROLL_UP 0x0F04
#define HEADPHONE_PLUGIN_A 0x5707
#define HEADPHONE_PLUGIN_B 0x5F07
#define HEADPHONE_UNPLUG_A 0x3707
#define HEADPHONE_UNPLUG_B 0x3F07
#define DOCK_INSERT 0x6707
#define DOCK_UNPLUG 0xDF06
#define DOCK_USB_INSERT 0x2F06
#define DOCK_USB_UNPLUG 0x3F06
#define DOCK_POWER_INSERT 0x1707
#define DOCK_POWER_UNPLUG 0x1F07
#else
/* Creative Zen Vision */
#define BTN_LEFT 0xCF00
#define BTN_RIGHT 0xEF00
#define BTN_BACK 0xBF00
#define BTN_CUSTOM 0x0
#define BTN_PLAY 0x2F00
#define BTN_POWER 0x0F00
#define BTN_MENU 0x9F00
#define BTN_HOLD 0x9F06
#define BTN_UNHOLD 0xAF06
/* TODO: other values
First number is just pressing it, second is when you release it or keep it
pressed a bit longer
On/Off = 0F00 && 0F01
Hold = 9F06 && AF06
Volume Up = 6F00 && 6F01
Vol Down = 7F00 && 7F01
Up = DF00 && DF01
Right = EF00 && EF01
Down = FF00 && FF01
Left = CF00 && CF01
Back = BF00 && BF01
Menu = 9F00 && Etcetera
Ok = 1F00
Play = 2F00
Next = 4F00
Prev = 5F00
USB = 2F06
USB ouot = 3F06
Headphones= AF06
Hdphns out= BF06
Charger = 4F06 -> 9F05
Chgrout = 5F06 -> 8F05
AV in = 8F06
AV out = 9F06 */
#define BTN_REL 1
#define BTN_TOUCHPAD_PRESS 0x1F00
#define BTN_TOUCHPAD_LONG_PRESS 0x1F01
#define BTN_TOUCHPAD_CORNER_DOWN 0xFF00
#define BTN_TOUCHPAD_SCROLL_DOWN 0xFF01
#define BTN_TOUCHPAD_CORNER_UP 0xDF00
#define BTN_TOUCHPAD_SCROLL_UP 0xDF01
#define HEADPHONE_PLUGIN_A 0xAF06
#define HEADPHONE_PLUGIN_B 0x00AF06 //Dummy Value
#define HEADPHONE_UNPLUG_A 0x00BF06 //Dummy Value
#define HEADPHONE_UNPLUG_B 0x00BF061 //Dummy Value
#define DOCK_INSERT 0x00003 //Dummy Value
#define DOCK_UNPLUG 0x00002 //Dummy Value
#define DOCK_USB_INSERT 0x2F06
#define DOCK_USB_UNPLUG 0x3F06
#define DOCK_POWER_INSERT 0x4F06
#define DOCK_POWER_UNPLUG 0x5F06
#define DOCK_AV_INSERT 0x8F06
#define DOCK_AV_UNPLUG 0x9F06
#endif
#define PIC_ADR 0x07
#define MASK_TV_OUT(x) ((x >> 14) & 1)
#define MASK_xx1(x) ((x >> 9) & 3)
#define MASK_xx2(x) ((x >> 4) & 1)
#define MASK_xx3(x) ((x >> 5) & 1)
#define MASK_xx4(x) ((x >> 6) & 1)
#define MASK_xx5(x) ((x >> 13) & 1)
#define MASK_xx6(x) ((x >> 12) & 1)
#define MASK_xx7(x) ((x >> 11) & 1)
#define NONBUTTON_HEADPHONE (1 << 0)
#define NONBUTTON_DOCK (1 << 1)
#define NONBUTTON_USB (1 << 2)
#define NONBUTTON_POWER (1 << 3)
#define NONBUTTON_VIDEOUT (1 << 4)
static unsigned int btn;
static bool hold_switch;
static unsigned char nonbtn;
static unsigned int pic_init_value;
static unsigned int pic_init2_value;
static unsigned int last_btn;
static long last_tick;
static int tick_diff;
#define TICK_MIN 0x33
#define TICK_MAX 0x34
/* Taken from scramble.c and modified */
static inline unsigned short le2short(unsigned char* buf)
{
return (unsigned short)((buf[1] << 8) | buf[0]);
}
#define map_button(BtN,BtN2) case BtN: \
btn ^= BtN2; \
btn &= BtN2; \
break; \
case BtN ^ BTN_REL: \
btn ^= BtN2; \
btn &= BtN2; \
break;
#ifdef BUTTON_DEBUG
static bool sw = false;
#endif
void GIO0(void)
{
/* Mask GIO0 interrupt */
IO_INTC_IRQ1 = INTR_IRQ1_EXT0;
unsigned char msg[4];
i2c_read(PIC_ADR, msg, sizeof(msg));
tick_diff = current_tick - last_tick;
last_tick = current_tick;
unsigned short btn_press = le2short(msg);
if(tick_diff >= TICK_MIN && tick_diff <= TICK_MAX)
{
/* Ignore this, as it is a hold event */
return;
}
last_btn = btn_press;
switch(btn_press)
{
map_button(BTN_LEFT, BUTTON_LEFT);
map_button(BTN_RIGHT, BUTTON_RIGHT);
map_button(BTN_BACK, BUTTON_BACK);
map_button(BTN_CUSTOM, BUTTON_CUSTOM);
map_button(BTN_MENU, BUTTON_MENU);
map_button(BTN_PLAY, BUTTON_PLAY);
map_button(BTN_POWER, BUTTON_POWER);
map_button(BTN_TOUCHPAD_PRESS, BUTTON_SELECT);
map_button(BTN_TOUCHPAD_CORNER_DOWN, BUTTON_DOWN);
map_button(BTN_TOUCHPAD_CORNER_UP, BUTTON_UP);
#ifndef ZEN_VISION
/* These don't seem to work for some reason on the Zen Vision.. */
case BTN_TOUCHPAD_SCROLL_DOWN:
btn = BUTTON_DOWN;
break;
case BTN_TOUCHPAD_SCROLL_UP:
btn = BUTTON_UP;
break;
#endif
case BTN_HOLD:
hold_switch = true;
break;
case BTN_UNHOLD:
hold_switch = false;
break;
#ifndef ZEN_VISION
/* These don't seem to work for some reason.. */
case HEADPHONE_PLUGIN_A:
case HEADPHONE_PLUGIN_B:
nonbtn |= NONBUTTON_HEADPHONE;
break;
case HEADPHONE_UNPLUG_A:
case HEADPHONE_UNPLUG_B:
nonbtn &= ~NONBUTTON_HEADPHONE;
break;
#endif
case DOCK_INSERT:
nonbtn |= NONBUTTON_DOCK;
break;
case DOCK_UNPLUG:
nonbtn &= ~(NONBUTTON_DOCK | NONBUTTON_USB | NONBUTTON_POWER);
break;
case DOCK_USB_INSERT:
nonbtn |= NONBUTTON_USB;
break;
case DOCK_USB_UNPLUG:
nonbtn &= ~NONBUTTON_USB;
break;
case DOCK_POWER_INSERT:
nonbtn |= NONBUTTON_POWER;
break;
case DOCK_POWER_UNPLUG:
nonbtn &= ~NONBUTTON_POWER;
break;
}
#ifdef BUTTON_DEBUG
#ifdef BOOTLOADER
lcd_set_foreground((sw ? LCD_RGBPACK(255,0,0) : LCD_RGBPACK(0,255,0) ));
#endif
lcd_putsxyf(LCD_WIDTH-SYSFONT_WIDTH*10, LCD_HEIGHT-SYSFONT_HEIGHT*10, "%x",
(unsigned int)((msg[3] << 24) |
(msg[2] << 16) | (msg[1] << 8) | msg[0]));
lcd_putsxy(LCD_WIDTH-SYSFONT_WIDTH*10, LCD_HEIGHT-SYSFONT_HEIGHT*7, "%x",
btn);
#ifdef BOOTLOADER
lcd_set_foreground(LCD_BLACK);
#endif
lcd_update();
sw = !sw;
#endif
logf("PIC: 0x%x", (unsigned int)((msg[3] << 24) |
(msg[2] << 16) | (msg[1] << 8) | msg[0]));
}
static void send_command_to_pic(const unsigned char in, unsigned char* out,
const unsigned int length)
{
/* Disable GIO0 interrupt */
IO_INTC_EINT1 &= ~INTR_EINT1_EXT0;
/* Clear EXT0 interrupt */
IO_INTC_IRQ1 = INTR_IRQ1_EXT0;
/* Write command to I²C */
restart:
i2c_write(PIC_ADR, &in, 1);
/* Wait for PIC */
int i = 0;
while(!(IO_INTC_IRQ1 & INTR_IRQ1_EXT0))
{
sleep(0);
i++;
if(i > 50)
goto restart;
}
/* Read return from I²C */
i2c_read(PIC_ADR, out, length);
/* Re-enable GIO0 interrupt */
IO_INTC_EINT1 |= INTR_EINT1_EXT0;
}
bool headphones_inserted(void)
{
return (bool)(nonbtn & NONBUTTON_HEADPHONE);
}
void button_init_device(void)
{
/* TODO: I suppose GIO0 has to be set to input and enable interrupts on
it? */
/* Enable GIO0 interrupt */
IO_INTC_EINT1 |= INTR_EINT1_EXT0;
btn=nonbtn=pic_init_value=pic_init2_value=last_btn=hold_switch=0;
/* Initialize PIC */
send_command_to_pic(1, (unsigned char *)&pic_init_value,
sizeof(pic_init_value));
send_command_to_pic(2, (unsigned char *)&pic_init2_value,
sizeof(pic_init2_value));
}
int button_read_device(void)
{
if(hold_switch)
return 0;
else
return btn;
}
bool button_hold(void)
{
return hold_switch;
}
bool button_usb_connected(void)
{
return (bool)(nonbtn & NONBUTTON_USB);
}
#ifndef BOOTLOADER
int pic_dbg_num_items(void)
{
return 13;
}
const char* pic_dbg_item(int selected_item, void *data,
char *buffer, size_t buffer_len)
{
(void)data;
switch(selected_item)
{
case 0:
snprintf(buffer, buffer_len, "Init value 1: 0x%04x", pic_init_value);
return buffer;
case 1:
snprintf(buffer, buffer_len, "Init value 2: 0x%04x", pic_init2_value);
return buffer;
case 2:
snprintf(buffer, buffer_len, "Last button value: 0x%04x Raw value: 0x%04x", last_btn, btn);
return buffer;
case 3:
snprintf(buffer, buffer_len, "Last button differs in ticks: 0x%04x", tick_diff);
return buffer;
case 4:
snprintf(buffer, buffer_len, "Dock values: 0x%04x", nonbtn);
return buffer;
#define B(n,w,b) case n: \
snprintf(buffer, buffer_len, "%s: 0x%04x", w, b); \
return buffer;
B(5, "MASK_TV_OUT", MASK_TV_OUT(pic_init_value));
B(6, "MASK_xx1", MASK_xx1(pic_init_value));
B(7, "MASK_xx2", MASK_xx2(pic_init_value));
B(8, "MASK_xx3", MASK_xx3(pic_init_value));
B(9, "MASK_xx4", MASK_xx4(pic_init_value));
B(10, "MASK_xx5", MASK_xx5(pic_init_value));
B(11, "MASK_xx6", MASK_xx6(pic_init_value));
B(12, "MASK_xx7", MASK_xx7(pic_init_value));
#undef B
}
return NULL;
}
#endif

View file

@ -1,53 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id: power-mr500.c 15599 2007-11-12 18:49:53Z amiconn $
*
* Copyright (C) 2007 by Karl Kurbjun
*
* 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 "backlight.h"
#include "backlight-target.h"
void power_init(void)
{
/* Initialize IDE power pin */
/* set ATA power on and output */
/* Charger detect */
}
#if CONFIG_CHARGING
unsigned int power_input_status(void)
{
return POWER_INPUT_NONE;
}
/* Returns true if the unit is charging the batteries. */
bool charging_state(void)
{
return false;
}
#endif
void power_off(void)
{
}

View file

@ -1,50 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2007 by Karl Kurbjun
*
* 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"
#include "kernel.h"
/* THIS CONTAINS CURRENTLY DUMMY CODE! */
static const unsigned short current_voltage = 3910;
unsigned short battery_level_disksafe = 0;
unsigned short battery_level_shutoff = 0;
/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */
unsigned short percent_to_volt_discharge[11] =
{
100, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1320
};
/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */
unsigned short percent_to_volt_charge[11] =
{
100, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1320,
};
/* Returns battery voltage from ADC [millivolts] */
int _battery_voltage(void)
{
return current_voltage;
}

View file

@ -1,71 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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"
#include "usb.h"
#include "usb_drv.h"
#include "usb_core.h"
#include "isp1583.h"
#define printf
bool usb_drv_connected(void)
{
return button_usb_connected();
}
int usb_detect(void)
{
if(usb_drv_connected())
return USB_INSERTED;
else
return USB_EXTRACTED;
}
void usb_init_device(void)
{
return;
}
void usb_enable(bool on)
{
if(on)
usb_core_init();
else
usb_core_exit();
}
void usb_attach(void)
{
usb_enable(true);
}
void IRAM_ATTR GIO7(void)
{
#ifdef DEBUG
//printf("GIO7 interrupt... [%d]", current_tick);
#endif
usb_drv_int();
IO_INTC_IRQ1 = INTR_IRQ1_EXT7;
}

View file

@ -111,7 +111,7 @@ _start:
mov r0, #0x20
bl _delay_cycles
#if defined(BOOTLOADER) && !defined(CREATIVE_ZVx)
#if defined(BOOTLOADER)
bl _init_board
#endif

View file

@ -370,17 +370,6 @@ bool dbg_hw_info(void)
button = button_get_w_tmo(1);
if(button & BUTTON_POWER)
done = true;
#if defined(CREATIVE_ZVx)
else if(button & BUTTON_LEFT)
lcd_set_direct_fb(false);
else if(button & BUTTON_RIGHT)
lcd_set_direct_fb(true);
lcd_puts(0, line++, "LCD info:");
lcd_putsf(0, line++, " LCD direct FB access? %s",
(lcd_get_direct_fb() ? "yes" : "no"));
line++;
#endif
#endif
lcd_puts(0, line++, "[Rockbox info]");
lcd_putsf(0, line++, "current tick: %08x Seconds running: %08d",

View file

@ -16,18 +16,12 @@ LDFLAGS = -w
OBJDIR=./build
OBJS = arm.obj main.obj vectors.obj dma.obj
ifeq ($(findstring -DCREATIVE_ZV,$(TARGET)), -DCREATIVE_ZV)
OBJS += aic23.obj
else
OBJS += tsc2100.obj
endif
OBJS = arm.obj main.obj vectors.obj dma.obj tsc2100.obj
OBJS := $(patsubst %.obj, $(OBJDIR)/%.obj, $(OBJS))
all: dsp-image.h
clean:
$(call PRINTS,cleaning DSP firmware)rm -f $(OBJS) $(OBJDIR)/dsp-image.out $(OBJDIR)/dsp-image.xml
rmdir $(OBJDIR)

View file

@ -1,60 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* 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 "audio.h"
#include "registers.h"
/* based on http://archopen.svn.sourceforge.net/viewvc/archopen/ArchOpen/trunk/libdsp/aic23.c?revision=213&view=markup */
void audiohw_init(void)
{
/* port config */
#if 0
SPCR10 = 0; /* DLB = 0 ** RJUST = 0 ** CLKSTP = 0 ** DXENA = 0 ** ABIS = 0 ** RINTM = 0 ** RSYNCER = 0 ** RFULL = 0 ** RRDY = 0 ** RRST = 0 */
SPCR20 = (1 << 9); /* FREE = 1 ** SOFT = 0 ** FRST = 0 ** GRST = 0 ** XINTM = 0 ** XSYNCER = 0 ** XEMPTY = 0 ** XRDY = 0 ** XRST = 0 */
RCR10 = (1 << 8) | (2 << 5); /* RFRLEN1 = 1 ** RWDLEN1 = 2 */
RCR20 = 0; /* RPHASE = 0 ** RFRLEN2 = 0 ** RWDLEN2 = 0 ** RCOMPAND = 0 ** RFIG = 0 ** RDATDLY = 0 */
XCR10 = (1 << 8) | (2 << 5); /* XFRLEN1 = 1 ** XWDLEN1 = 2 */
XCR20 = 0; /* XPHASE = 0 ** XFRLEN2 = 0 ** XWDLEN2 = 0 ** XCOMPAND = 0 ** XFIG = 0 ** XDATDLY = 0 */
SRGR10 = 0; /* FWID = 0 ** CLKGDV = 0 */
SRGR20 = 0; /* FREE = 0 ** CLKSP = 0 ** CLKSM = 0 ** FSGM = 0 ** FPER = 0 */
PCR0 = (1 << 1) | 1; /* IDLEEN = 0 ** XIOEN = 0 ** RIOEN = 0 ** FSXM = 0 ** FSRM = 0 ** SCLKME = 0 ** CLKSSTAT = 0 ** DXSTAT = 0 ** DRSTAT = 0 ** CLKXM = 0 ** CLKRM = 0 ** FSXP = 0 ** FSRP = 0 ** CLKXP = 1 ** CLKRP = 1 */
#else
SPCR10 = 0;
SPCR20 = 0x0200; /* SPCR : free running mode */
RCR10 = 0x00A0;
RCR20 = 0x00A1; /* RCR : 32 bit receive data length */
XCR10 = 0x00A0;
XCR20 = 0x00A0; /* XCR : 32 bit transmit data length */
SRGR10 = 0;
SRGR20 = 0x3000; /* SRGR 1 & 2 */
PCR0 = 0x000E - 8; /* PCR : FSX, FSR active low, external FS/CLK source */
#endif
}
void audiohw_postinit(void)
{
/* Trigger first XEVT0 */
SPCR20 |= 1;
}

View file

@ -156,13 +156,6 @@ void i2c_init(void)
{
mutex_init(&i2c_mtx);
#ifdef CREATIVE_ZVx //TODO: mimic OF I2C clock settings; currently this is done by the bootloader
IO_CLK_MOD2 &= ~CLK_MOD2_I2C; // turn I²C clock off (just to be sure)
IO_CLK_LPCTL1 &= ~1; // set Powerdown mode to off
IO_CLK_SEL0 &= ~0x800; // set I²C clock to PLLA
IO_CLK_DIV4 &= ~0x1F; // I²C clock division = 1
IO_CLK_MOD2 |= CLK_MOD2_I2C; // enable I²C clock
#endif
IO_I2C_SCS &= ~0x8; //set clock to 100 kHz
IO_INTC_EINT2 &= ~INTR_EINT2_I2C; // disable I²C interrupt
}

View file

@ -43,10 +43,7 @@ struct SPI_info {
static const struct SPI_info spi_targets[SPI_MAX_TARGETS] =
{
#if defined(CREATIVE_ZVx)
[SPI_target_LTV250QV] = { &IO_GIO_BITCLR2, &IO_GIO_BITSET2,
GIO_LCD_ENABLE, true, 0x07},
#elif defined(MROBE_500)
#if defined(MROBE_500)
[SPI_target_TSC2100] = { &IO_GIO_BITCLR1, &IO_GIO_BITSET1,
GIO_TS_ENABLE, 0x260D, true},
/* RTC seems to have timing problems if the CLK idles low */

View file

@ -23,9 +23,7 @@
#define SPI_TARGET_H
enum SPI_target {
#if defined(CREATIVE_ZVx)
SPI_target_LTV250QV = 0,
#elif defined(MROBE_500)
#if defined(MROBE_500)
SPI_target_TSC2100 = 0,
SPI_target_RX5X348AB,
SPI_target_BACKLIGHT,

View file

@ -27,9 +27,6 @@
#include "system-arm.h"
#include "spi.h"
#include "i2c.h"
#ifdef CREATIVE_ZVx
#include "dma-target.h"
#endif
#ifdef MROBE_500
#include "usb-mr500.h"
#endif
@ -370,10 +367,6 @@ void system_init(void)
IO_GIO_BITCLR2 = 0x0001;
#endif
#ifdef CREATIVE_ZVx
dma_init();
#endif
#ifdef SANSA_CONNECT
#ifndef HAVE_WIFI
/* keep WIFI CS and reset high to save power */

View file

@ -38,16 +38,6 @@
void udelay(int usec);
void mdelay(int msec);
#if defined(CREATIVE_ZVx) && defined(BOOTLOADER)
/* hacky.. */
#define SLEEP_KERNEL_HOOK(ticks) \
({ \
long _sleep_ticks = current_tick + (ticks) + 1; \
while (TIME_BEFORE(current_tick, _sleep_ticks)) \
switch_thread(); \
true; }) /* handled here */
#endif
#ifdef BOOTLOADER
void tick_stop(void);
void system_prepare_fw_start(void);

View file

@ -219,24 +219,6 @@
#define UI_LCD_POSX 58 /* x position of lcd */
#define UI_LCD_POSY 67 /* y position of lcd */
#elif defined(CREATIVE_ZVM) || defined(CREATIVE_ZVM60GB)
#ifdef CREATIVE_ZVM
#define UI_TITLE "Creative Zen Vision:M 30GB"
#else
#define UI_TITLE "Creative Zen Vision:M 60GB"
#endif
#define UI_WIDTH 383 /* width of GUI window */
#define UI_HEIGHT 643 /* height of GUI window */
#define UI_LCD_POSX 31 /* x position of lcd */
#define UI_LCD_POSY 62 /* y position of lcd */
#elif defined(CREATIVE_ZV)
#define UI_TITLE "Creative Zen Vision"
#define UI_WIDTH 1054 /* width of GUI window */
#define UI_HEIGHT 643 /* height of GUI window */
#define UI_LCD_POSX 129 /* x position of lcd */
#define UI_LCD_POSY 85 /* y position of lcd */
#elif defined(SANSA_FUZEPLUS)
#define UI_TITLE "Sansa Fuze+"
#define UI_WIDTH 322 /* width of GUI window */

View file

@ -49,12 +49,12 @@ Additionally, ``extra'' data files that modify the in-game strings and font can
\opt{SAMSUNG_YH92X_PAD}{\ButtonFF}
\opt{IRIVER_H300_PAD,SANSA_E200_PAD,SAMSUNG_YH820_PAD,IAUDIO_X5M5_PAD}{\ButtonRec}
\opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,CREATIVE_ZEN_PAD,SANSA_CLIP_PAD}{\ButtonSelect}
\opt{SONY_NWZ_PAD,CREATIVEZVM_PAD}{\ButtonPlay}
\opt{SONY_NWZ_PAD}{\ButtonPlay}
\opt{ONDAVX777_PAD,MROBE500_PAD,PBELL_VIBE500_PAD}{\ButtonPower}
\opt{SAMSUNG_YPR0_PAD}{\ButtonUser}
\opt{IRIVER_H10_PAD}{\ButtonRew}
\opt{HM801_PAD}{\ButtonPrev}
\opt{SONY_NWZ_PAD,CREATIVEZVM_PAD}{\ButtonPlay}
\opt{SONY_NWZ_PAD}{\ButtonPlay}
\opt{MROBE500_PAD}{\ButtonPower}
\opt{DX50_PAD,ONDAVX747_PAD,PHILIPS_HDD1630_PAD,PHILIPS_HDD6330_PAD,PHILIPS_SA9200_PAD%
,CREATIVE_ZENXFI2_PAD,CREATIVE_ZENXFI3_PAD,SANSA_CONNECT_PAD,SANSA_C200_PAD%
@ -73,7 +73,7 @@ Additionally, ``extra'' data files that modify the in-game strings and font can
\opt{SAMSUNG_YH820_PAD,IAUDIO_X5M5_PAD}{\ButtonPlay}
\opt{SANSA_E200_PAD,SANSA_CLIP_PAD}{\ButtonPower}
\opt{CREATIVE_ZEN_PAD,SONY_NWZ_PAD}{\ButtonBack}
\opt{CREATIVEZVM_PAD,SAMSUNG_YPR0_PAD}{\ButtonMenu}
\opt{SAMSUNG_YPR0_PAD}{\ButtonMenu}
\opt{IRIVER_H300_PAD}{\ButtonMode}
\opt{HM801_PAD}{\ButtonNext}
\opt{PBELL_VIBE500_PAD}{\ButtonRec}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 84 KiB

View file

@ -318,21 +318,6 @@ $releasenotes="/wiki/ReleaseNotes400";
name => 'Packard Bell Vibe 500',
status => 3,
},
'zenvision' => {
name => 'Creative Zen Vision',
status => 1,
sim => 1,
},
'zenvisionm30gb' => {
name => 'Creative Zen Vision:M 30GB',
status => 1,
sim => 1,
},
'zenvisionm60gb' => {
name => 'Creative Zen Vision:M 60GB',
status => 1,
sim => 1,
},
'mpiohd200' => {
name => 'MPIO HD200',
status => 2,

144
tools/configure vendored
View file

@ -1691,47 +1691,47 @@ cat <<EOF
71) M:Robe 100 58) Sansa Fuze
==Creative== 59) Sansa c200v2
==Philips== 89) Zen X-Fi Style 60) Sansa Clipv2
100) GoGear SA9200 90) Zen Vision:M 30GB 62) Sansa Clip+
101) GoGear HDD1630/ 91) Zen Vision:M 60GB 63) Sansa Fuze v2
HDD1830 92) Zen Vision 64) Sansa Fuze+
102) GoGear HDD6330 93) Zen X-Fi2 65) Sansa Clip Zip
94) Zen X-Fi3 66) Sansa Connect
==Samsung== 95) Zen V
140) YH-820 96) Zen X-Fi ==Packard Bell==
141) YH-920 97) Zen Mozaic 160) Vibe 500
142) YH-925 98) Zen
144) YP-R0 ==ROCKCHIP==
145) YP-R1 (WIP) ==Onda== 180) rk27xx generic
120) VX747
==HiFiMAN== 122) VX747+ ==HiFi E.T.==
190) HM-60x 121) VX767 210) MA9
191) HM-801 123) VX777 211) MA9C
212) MA8
==Sony== ==MPIO== 213) MA8C
219) NWZ-E350 series 170) HD200
220) NWZ-E370/E380 series 171) HD300 ==IHIFI==
221) NWZ-E360 series 230) 760
222) NWZ-E450 series ==Application== 231) 770
223) NWZ-E460 series 200) SDL (Generic) 232) 770C
224) NWZ-E470 series 201) Android (ARM) 233) 800
225) NWZ-E580 series 202) Android (MIPS) 234) 960
226) NWZ-A10 series 203) Android (x86)
227) NW-A20 series 209) Anbernic RG Nano ==AIGO==
100) GoGear SA9200 93) Zen X-Fi2 62) Sansa Clip+
101) GoGear HDD1630/ 94) Zen X-Fi3 63) Sansa Fuze v2
HDD1830 95) Zen V 64) Sansa Fuze+
102) GoGear HDD6330 96) Zen X-Fi 65) Sansa Clip Zip
97) Zen Mozaic 66) Sansa Connect
==Samsung== 98) Zen
140) YH-820 ==Packard Bell==
141) YH-920 ==Onda== 160) Vibe 500
142) YH-925 120) VX747
144) YP-R0 122) VX747+ ==ROCKCHIP==
145) YP-R1 (WIP) 121) VX767 180) rk27xx generic
123) VX777
==HiFiMAN== ==HiFi E.T.==
190) HM-60x ==MPIO== 210) MA9
191) HM-801 170) HD200 211) MA9C
171) HD300 212) MA8
==Sony== 213) MA8C
219) NWZ-E350 series ==Application==
220) NWZ-E370/E380 series 200) SDL (Generic) ==IHIFI==
221) NWZ-E360 series 201) Android (ARM) 230) 760
222) NWZ-E450 series 202) Android (MIPS) 231) 770
223) NWZ-E460 series 203) Android (x86) 232) 770C
224) NWZ-E470 series 209) Anbernic RG Nano 233) 800
225) NWZ-E580 series 234) 960
226) NWZ-A10 series ==AgpTek==
227) NW-A20 series 240) Rocker ==AIGO==
228) NWZ-A860 series 245) Eros Q / K (hosted)
229) NWZ-S750 series ==AgpTek== 247) Eros Q / K native
240) Rocker (hw1/hw2 bl, all hw rb)
==FiiO== 248) Eros Q / K native
244) M3K Linux ==iBasso== (hw3 bl only)
246) M3K baremetal 250) DX50 249) Eros Q / K native
251) DX90 (hw4 bl only)
==Shanling==
260) Q1 ==xDuoo== ==HiBy==
241) X3 300) R3 Pro II
==Echo project== 242) X3II 301) R1
270) Echo R1 (WIP) 243) X20
229) NWZ-S750 series ==iBasso== 247) Eros Q / K native
250) DX50 (hw1/hw2 bl, all hw rb)
==FiiO== 251) DX90 248) Eros Q / K native
244) M3K Linux (hw3 bl only)
246) M3K baremetal ==xDuoo== 249) Eros Q / K native
241) X3 (hw4 bl only)
==Shanling== 242) X3II
260) Q1 243) X20 ==HiBy==
300) R3 Pro II
==Echo project== ==Surfans== 301) R1
270) Echo R1 (WIP) 280) F28 (WIP)
==Nintendo== ==Surfans==
290) Nintendo 3DS (WIP) 280) F28 (WIP)
==Nintendo==
290) Nintendo 3DS (WIP)
EOF
@ -2688,72 +2688,6 @@ fi
arm926ejscc
;;
90|zenvisionm30gb)
target_id=35
modelname="zenvisionm30gb"
target="CREATIVE_ZVM"
memory=64
arm926ejscc
bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
tool="$rootdir/tools/scramble -creative=zvm"
USE_ELF="yes"
output="rockbox.zvm"
appextra="recorder:gui:radio"
plugins="yes"
toolset=$ipodbitmaptools
boottool="$rootdir/tools/scramble -creative=zvm -no-ciff"
bootoutput="rockbox.zvmboot"
# architecture, manufacturer and model for the target-tree build
t_cpu="arm"
t_manufacturer="tms320dm320"
t_model="creative-zvm"
;;
91|zenvisionm60gb)
target_id=40
modelname="zenvisionm60gb"
target="CREATIVE_ZVM60GB"
memory=64
arm926ejscc
bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
tool="$rootdir/tools/scramble -creative=zvm60 -no-ciff"
USE_ELF="yes"
output="rockbox.zvm60"
appextra="recorder:gui:radio"
plugins="yes"
toolset=$ipodbitmaptools
boottool="$rootdir/tools/scramble -creative=zvm60"
bootoutput="rockbox.zvm60boot"
# architecture, manufacturer and model for the target-tree build
t_cpu="arm"
t_manufacturer="tms320dm320"
t_model="creative-zvm"
;;
92|zenvision)
target_id=39
modelname="zenvision"
target="CREATIVE_ZV"
memory=64
arm926ejscc
bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
tool="$rootdir/tools/scramble -creative=zenvision -no-ciff"
USE_ELF="yes"
output="rockbox.zv"
appextra="recorder:gui:radio"
plugins=""
toolset=$ipodbitmaptools
boottool="$rootdir/tools/scramble -creative=zenvision"
bootoutput="rockbox.zvboot"
# architecture, manufacturer and model for the target-tree build
t_cpu="arm"
t_manufacturer="tms320dm320"
t_model="creative-zvm"
;;
93|creativezenxfi2)
target_id=80
modelname="creativezenxfi2"

View file

@ -123,19 +123,11 @@ typedef struct
---------------------------------------------------------------------------
*/
static const char null_key_v2[] = "CTL:N0MAD|PDE0.DPMP.";
static const char null_key_v3[] = "CTL:Z3N07|PDE0.DPMP.";
static const char null_key_v4[] = "CTL:N0MAD|PDE0.DPFP.";
static const struct device_info devices[] =
{
/* Creative Zen Vision:M */
{"C\0r\0e\0a\0t\0i\0v\0e\0 \0Z\0e\0n\0 \0V\0i\0s\0i\0o\0n\0:\0M", 42, null_key_v2},
/* Creative Zen Vision:M Go! */
{"C\0r\0e\0a\0t\0i\0v\0e\0 \0Z\0e\0n\0 \0V\0i\0s\0i\0o\0n\0:\0M\0 \0G\0o\0!", 50, null_key_v2},
/* Creative Zen Vision © TL */
/* The "©" should be ANSI encoded or the device won't accept the firmware package. */
{"C\0r\0e\0a\0t\0i\0v\0e\0 \0Z\0e\0n\0 \0V\0i\0s\0i\0o\0n\0 \0\xA9\0T\0L", 46, null_key_v2},
/* Creative ZEN V */
{"C\0r\0e\0a\0t\0i\0v\0e\0 \0Z\0E\0N\0 \0V", 42, null_key_v4},
/* Creative ZEN */

Some files were not shown because too many files have changed in this diff Show more