mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-08 20:55:17 -05:00
Initial commit for the Creative ZEN V
Change-Id: I3408cfdf742ea5995d5c87bf76653f436e1ec2b0
This commit is contained in:
parent
a8b816ae9c
commit
977a6c3ce7
18 changed files with 300 additions and 10 deletions
|
|
@ -1163,13 +1163,16 @@ target/arm/tms320dm320/creative-zvm/powermgmt-creativezvm.c
|
||||||
target/arm/tms320dm320/creative-zvm/usb-creativezvm.c
|
target/arm/tms320dm320/creative-zvm/usb-creativezvm.c
|
||||||
#endif /* CREATIVE_ZVx */
|
#endif /* CREATIVE_ZVx */
|
||||||
|
|
||||||
#if defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) || defined(CREATIVE_ZENMOZAIC)
|
#if defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) || defined(CREATIVE_ZENMOZAIC) \
|
||||||
|
|| defined(CREATIVE_ZENV)
|
||||||
target/arm/imx233/creative-zen/fmradio-i2c-zen.c
|
target/arm/imx233/creative-zen/fmradio-i2c-zen.c
|
||||||
target/arm/imx233/creative-zen/backlight-zen.c
|
target/arm/imx233/creative-zen/backlight-zen.c
|
||||||
# if defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI)
|
# if defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI)
|
||||||
target/arm/imx233/creative-zen/lcd-zen.c
|
target/arm/imx233/creative-zen/lcd-zen.c
|
||||||
# elif defined(CREATIVE_ZENMOZAIC)
|
# elif defined(CREATIVE_ZENMOZAIC)
|
||||||
target/arm/imx233/creative-zen/lcd-zenmozaic.c
|
target/arm/imx233/creative-zen/lcd-zenmozaic.c
|
||||||
|
# elif defined(CREATIVE_ZENV)
|
||||||
|
target/arm/imx233/creative-zen/lcd-zenv.c
|
||||||
#endif
|
#endif
|
||||||
target/arm/imx233/creative-zen/button-zen.c
|
target/arm/imx233/creative-zen/button-zen.c
|
||||||
target/arm/imx233/creative-zen/debug-zen.c
|
target/arm/imx233/creative-zen/debug-zen.c
|
||||||
|
|
|
||||||
|
|
@ -257,6 +257,7 @@
|
||||||
#define LCD_CREATIVEZEN 55 /* as used by the Creative ZEN (X-Fi) (LMS250GF03-001(S6D0139)) */
|
#define LCD_CREATIVEZEN 55 /* as used by the Creative ZEN (X-Fi) (LMS250GF03-001(S6D0139)) */
|
||||||
#define LCD_CREATIVEZENMOZAIC 56 /* as used by the Creative ZEN Mozaic (FGD0801) */
|
#define LCD_CREATIVEZENMOZAIC 56 /* as used by the Creative ZEN Mozaic (FGD0801) */
|
||||||
#define LCD_ILI9342C 57 /* another type of lcd used by HiFi E.T MA9/MA8 */
|
#define LCD_ILI9342C 57 /* another type of lcd used by HiFi E.T MA9/MA8 */
|
||||||
|
#define LCD_CREATIVEZENV 58 /* as used by the Creativr Zen V (Plus) */
|
||||||
|
|
||||||
/* LCD_PIXELFORMAT */
|
/* LCD_PIXELFORMAT */
|
||||||
#define HORIZONTAL_PACKING 1
|
#define HORIZONTAL_PACKING 1
|
||||||
|
|
@ -531,6 +532,8 @@ Lyre prototype 1 */
|
||||||
#include "config/creativezenmozaic.h"
|
#include "config/creativezenmozaic.h"
|
||||||
#elif defined(CREATIVE_ZEN)
|
#elif defined(CREATIVE_ZEN)
|
||||||
#include "config/creativezen.h"
|
#include "config/creativezen.h"
|
||||||
|
#elif defined(CREATIVE_ZENV)
|
||||||
|
#include "config/creativezenv.h"
|
||||||
#elif defined(MA9)
|
#elif defined(MA9)
|
||||||
#include "config/hifietma9.h"
|
#include "config/hifietma9.h"
|
||||||
#elif defined(MA9C)
|
#elif defined(MA9C)
|
||||||
|
|
|
||||||
196
firmware/export/config/creativezenv.h
Normal file
196
firmware/export/config/creativezenv.h
Normal file
|
|
@ -0,0 +1,196 @@
|
||||||
|
/*
|
||||||
|
* This config file is for the Creative ZEN V
|
||||||
|
*/
|
||||||
|
#define IMX233_SUBTARGET 3600
|
||||||
|
#define IMX233_PACKAGE IMX233_BGA169
|
||||||
|
#define IMX233_PARTITIONS IMX233_CREATIVE
|
||||||
|
|
||||||
|
/* For Rolo and boot loader */
|
||||||
|
#define MODEL_NUMBER 85
|
||||||
|
#define MODEL_NAME "Creative ZEN V"
|
||||||
|
|
||||||
|
#define HW_SAMPR_CAPS SAMPR_CAP_ALL
|
||||||
|
|
||||||
|
/* define this if you have recording possibility */
|
||||||
|
#define HAVE_RECORDING
|
||||||
|
|
||||||
|
#define REC_SAMPR_CAPS SAMPR_CAP_ALL
|
||||||
|
|
||||||
|
/* Default recording levels */
|
||||||
|
#define DEFAULT_REC_MIC_GAIN 23
|
||||||
|
#define DEFAULT_REC_LEFT_GAIN 23
|
||||||
|
#define DEFAULT_REC_RIGHT_GAIN 23
|
||||||
|
|
||||||
|
/* Define bitmask of input sources - recordable bitmask can be defined
|
||||||
|
explicitly if different */
|
||||||
|
#define INPUT_SRC_CAPS SRC_CAP_MIC
|
||||||
|
|
||||||
|
/* define this if you have a bitmap LCD display */
|
||||||
|
#define HAVE_LCD_BITMAP
|
||||||
|
/* define this if you have a colour LCD */
|
||||||
|
#define HAVE_LCD_COLOR
|
||||||
|
|
||||||
|
#ifndef BOOTLOADER
|
||||||
|
#define HAVE_ALBUMART
|
||||||
|
|
||||||
|
/* define this to enable bitmap scaling */
|
||||||
|
#define HAVE_BMP_SCALING
|
||||||
|
|
||||||
|
/* define this to enable JPEG decoding */
|
||||||
|
#define HAVE_JPEG
|
||||||
|
|
||||||
|
/* Define this if a programmable hotkey is mapped */
|
||||||
|
#define HAVE_HOTKEY
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
|
||||||
|
/* define this if you have LCD enable function */
|
||||||
|
//#define HAVE_LCD_ENABLE
|
||||||
|
|
||||||
|
/* Define this if your LCD can be put to sleep. HAVE_LCD_ENABLE
|
||||||
|
should be defined as well.
|
||||||
|
#define HAVE_LCD_SLEEP
|
||||||
|
#define HAVE_LCD_SLEEP_SETTING
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* define this if you can flip your LCD
|
||||||
|
#define HAVE_LCD_FLIP
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* define this if you can invert the colours on your LCD
|
||||||
|
#define HAVE_LCD_INVERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* define this if you have a real-time clock */
|
||||||
|
#define CONFIG_RTC RTC_IMX233
|
||||||
|
|
||||||
|
/* define this if you have a real-time clock with alarm facilities */
|
||||||
|
#define HAVE_RTC_ALARM
|
||||||
|
|
||||||
|
#endif /* !BOOTLOADER */
|
||||||
|
|
||||||
|
/* define this if you have an i.MX23 codec */
|
||||||
|
#define HAVE_IMX233_CODEC
|
||||||
|
|
||||||
|
/* There is no hardware tone control */
|
||||||
|
#define HAVE_SW_TONE_CONTROLS
|
||||||
|
|
||||||
|
#define CONFIG_KEYPAD CREATIVE_ZEN_PAD
|
||||||
|
|
||||||
|
/* Define this to enable morse code input */
|
||||||
|
#define HAVE_MORSE_INPUT
|
||||||
|
|
||||||
|
/* Define this if you do software codec */
|
||||||
|
#define CONFIG_CODEC SWCODEC
|
||||||
|
|
||||||
|
/* LCD dimensions */
|
||||||
|
#define LCD_WIDTH 132
|
||||||
|
#define LCD_HEIGHT 132
|
||||||
|
#define LCD_DEPTH 16 /* 65536 colours */
|
||||||
|
#define LCD_PIXELFORMAT RGB565 /* rgb565 */
|
||||||
|
|
||||||
|
/* Define this if you have a software controlled poweroff */
|
||||||
|
#define HAVE_SW_POWEROFF
|
||||||
|
|
||||||
|
/* Some devices seem to be FAT16 formatted */
|
||||||
|
#define HAVE_FAT16SUPPORT
|
||||||
|
|
||||||
|
/* The number of bytes reserved for loadable codecs */
|
||||||
|
#define CODEC_SIZE 0x100000
|
||||||
|
|
||||||
|
/* The number of bytes reserved for loadable plugins */
|
||||||
|
#define PLUGIN_BUFFER_SIZE 0x80000
|
||||||
|
|
||||||
|
#define AB_REPEAT_ENABLE
|
||||||
|
|
||||||
|
/* 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 16
|
||||||
|
#define DEFAULT_BRIGHTNESS_SETTING 10
|
||||||
|
|
||||||
|
/* Which backlight fading type? */
|
||||||
|
#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
|
||||||
|
|
||||||
|
/* define this if you have a flash memory storage */
|
||||||
|
#define HAVE_FLASH_STORAGE
|
||||||
|
|
||||||
|
/* define this if the flash memory uses the SecureDigital Memory Card protocol */
|
||||||
|
#define CONFIG_STORAGE STORAGE_ATA
|
||||||
|
|
||||||
|
/* todo */
|
||||||
|
#define BATTERY_CAPACITY_DEFAULT 550 /* default battery capacity */
|
||||||
|
#define BATTERY_CAPACITY_MIN 550 /* min. capacity selectable */
|
||||||
|
#define BATTERY_CAPACITY_MAX 550 /* max. capacity selectable */
|
||||||
|
#define BATTERY_CAPACITY_INC 0 /* capacity increment */
|
||||||
|
#define BATTERY_TYPES_COUNT 1 /* only one type */
|
||||||
|
|
||||||
|
#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
|
||||||
|
|
||||||
|
/* Charging implemented in a target-specific algorithm */
|
||||||
|
//#warning FIXME change this to CHARGING_TARGET when powermgmt is ready
|
||||||
|
#define CONFIG_CHARGING CHARGING_TARGET
|
||||||
|
|
||||||
|
/* define this if the unit can be powered or charged via USB */
|
||||||
|
#define HAVE_USB_POWER
|
||||||
|
|
||||||
|
/* Define this if you have an IMX233*/
|
||||||
|
#define CONFIG_CPU IMX233
|
||||||
|
|
||||||
|
/* Define this if you want to use the IMX233 i2c interface */
|
||||||
|
#define CONFIG_I2C I2C_IMX233
|
||||||
|
|
||||||
|
/* define current usage levels (based on battery bench) */
|
||||||
|
#define CURRENT_NORMAL 35
|
||||||
|
#define CURRENT_BACKLIGHT 30
|
||||||
|
#define CURRENT_RECORD CURRENT_NORMAL
|
||||||
|
|
||||||
|
/* maximum charging current */
|
||||||
|
#define CURRENT_MAX_CHG 200
|
||||||
|
|
||||||
|
/* Define this to the CPU frequency */
|
||||||
|
#define CPU_FREQ 454000000
|
||||||
|
|
||||||
|
/* Type of LCD */
|
||||||
|
#define CONFIG_LCD LCD_CREATIVEZENV
|
||||||
|
|
||||||
|
/* Offset ( in the firmware file's header ) to the file CRC and data. These are
|
||||||
|
only used when loading the old format rockbox.e200 file */
|
||||||
|
#define FIRMWARE_OFFSET_FILE_CRC 0x0
|
||||||
|
#define FIRMWARE_OFFSET_FILE_DATA 0x8
|
||||||
|
|
||||||
|
/* USB On-the-go */
|
||||||
|
#define CONFIG_USBOTG USBOTG_ARC
|
||||||
|
|
||||||
|
/* enable these for the experimental usb stack */
|
||||||
|
#define HAVE_USBSTACK
|
||||||
|
//#define USB_HANDLED_BY_OF
|
||||||
|
#define USE_ROCKBOX_USB
|
||||||
|
#define USB_VENDOR_ID 0x041e
|
||||||
|
#define USB_PRODUCT_ID 0x4133
|
||||||
|
#define HAVE_USB_HID_MOUSE
|
||||||
|
#define HAVE_BOOTLOADER_USB_MODE
|
||||||
|
|
||||||
|
/* Define this if you have adjustable CPU frequency */
|
||||||
|
//#define HAVE_ADJUSTABLE_CPU_FREQ
|
||||||
|
|
||||||
|
/* Virtual LED (icon) */
|
||||||
|
#define CONFIG_LED LED_VIRTUAL
|
||||||
|
|
||||||
|
#define BOOTFILE_EXT "creative"
|
||||||
|
#define BOOTFILE "rockbox." BOOTFILE_EXT
|
||||||
|
#define BOOTDIR "/.rockbox"
|
||||||
|
|
||||||
|
#define INCLUDE_TIMEOUT_API
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -29,6 +29,9 @@
|
||||||
|
|
||||||
void _backlight_set_brightness(int level)
|
void _backlight_set_brightness(int level)
|
||||||
{
|
{
|
||||||
|
#ifdef CREATIVE_ZENV
|
||||||
|
lcd_set_contrast(level);
|
||||||
|
#else
|
||||||
unsigned val = (level + 200) * level / 1000;
|
unsigned val = (level + 200) * level / 1000;
|
||||||
if(level != 0)
|
if(level != 0)
|
||||||
{
|
{
|
||||||
|
|
@ -39,14 +42,17 @@ void _backlight_set_brightness(int level)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
imx233_pinctrl_set_gpio(1, 12, false);
|
imx233_pinctrl_set_gpio(1, 12, false);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _backlight_init(void)
|
bool _backlight_init(void)
|
||||||
{
|
{
|
||||||
|
#ifndef CREATIVE_ZENV
|
||||||
imx233_pinctrl_acquire(1, 12, "backlight_enable");
|
imx233_pinctrl_acquire(1, 12, "backlight_enable");
|
||||||
imx233_pinctrl_set_function(1, 12, PINCTRL_FUNCTION_GPIO);
|
imx233_pinctrl_set_function(1, 12, PINCTRL_FUNCTION_GPIO);
|
||||||
imx233_pinctrl_enable_gpio(1, 12, true);
|
imx233_pinctrl_enable_gpio(1, 12, true);
|
||||||
imx233_uartdbg_init(BAUD_38400);
|
imx233_uartdbg_init(BAUD_38400);
|
||||||
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,8 +47,12 @@ bool button_debug_screen(void);
|
||||||
#define BUTTON_TOPLEFT 0x00001000
|
#define BUTTON_TOPLEFT 0x00001000
|
||||||
#define BUTTON_TOPRIGHT 0x00002000
|
#define BUTTON_TOPRIGHT 0x00002000
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CREATIVE_ZENV
|
||||||
|
#define BUTTON_VOL_UP 0x00004000
|
||||||
|
#define BUTTON_VOL_DOWN 0x00008000
|
||||||
|
#endif
|
||||||
|
|
||||||
#define BUTTON_MAIN 0x00003fff
|
#define BUTTON_MAIN 0x0000ffff
|
||||||
|
|
||||||
/* Software power-off */
|
/* Software power-off */
|
||||||
#define POWEROFF_BUTTON BUTTON_POWER
|
#define POWEROFF_BUTTON BUTTON_POWER
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,20 @@ struct imx233_button_lradc_mapping_t imx233_button_lradc_mapping[] =
|
||||||
{2945, BUTTON_PLAYPAUSE},
|
{2945, BUTTON_PLAYPAUSE},
|
||||||
{3400, 0},
|
{3400, 0},
|
||||||
{0, IMX233_BUTTON_LRADC_END},
|
{0, IMX233_BUTTON_LRADC_END},
|
||||||
|
#elif defined(CREATIVE_ZENV)
|
||||||
|
{190, IMX233_BUTTON_LRADC_HOLD},
|
||||||
|
{250, BUTTON_PLAYPAUSE},
|
||||||
|
{530, BUTTON_BACK},
|
||||||
|
{785, BUTTON_VOL_UP},
|
||||||
|
{1040, BUTTON_VOL_DOWN},
|
||||||
|
{1295, BUTTON_MENU},
|
||||||
|
{1540, BUTTON_UP},
|
||||||
|
{1800, BUTTON_SELECT},
|
||||||
|
{2070, BUTTON_LEFT},
|
||||||
|
{2315, BUTTON_RIGHT},
|
||||||
|
{2550, BUTTON_DOWN},
|
||||||
|
{3450, 0},
|
||||||
|
{0, IMX233_BUTTON_LRADC_END},
|
||||||
#elif defined(CREATIVE_ZENMOZAIC)
|
#elif defined(CREATIVE_ZENMOZAIC)
|
||||||
{0, IMX233_BUTTON_LRADC_HOLD},
|
{0, IMX233_BUTTON_LRADC_HOLD},
|
||||||
{200, BUTTON_MENU},
|
{200, BUTTON_MENU},
|
||||||
|
|
@ -100,7 +114,7 @@ bool headphones_inserted(void)
|
||||||
int button_read_device(void)
|
int button_read_device(void)
|
||||||
{
|
{
|
||||||
int btn = 0;
|
int btn = 0;
|
||||||
if(BF_RD(POWER_STS, PSWITCH) == 1)
|
if(imx233_power_read_pswitch() == 1)
|
||||||
btn |= BUTTON_POWER;
|
btn |= BUTTON_POWER;
|
||||||
return imx233_button_lradc_read(btn);
|
return imx233_button_lradc_read(btn);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,4 +58,14 @@ bool tuner_power(bool enable)
|
||||||
bool tuner_powered(void)
|
bool tuner_powered(void)
|
||||||
{
|
{
|
||||||
return tuner_enable;
|
return tuner_enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ide_power_enable(bool on)
|
||||||
|
{
|
||||||
|
(void) on;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ide_powered(void)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -196,11 +196,13 @@ struct imx233_emi_info_t imx233_emi_get_info(void)
|
||||||
{
|
{
|
||||||
struct imx233_emi_info_t info;
|
struct imx233_emi_info_t info;
|
||||||
memset(&info, 0, sizeof(info));
|
memset(&info, 0, sizeof(info));
|
||||||
|
#if IMX233_SUBTARGET >= 3700
|
||||||
info.rows = 13 - BF_RD(DRAM_CTL10, ADDR_PINS);
|
info.rows = 13 - BF_RD(DRAM_CTL10, ADDR_PINS);
|
||||||
info.columns = 12 - BF_RD(DRAM_CTL11, COLUMN_SIZE);
|
info.columns = 12 - BF_RD(DRAM_CTL11, COLUMN_SIZE);
|
||||||
info.cas = BF_RD(DRAM_CTL13, CASLAT_LIN);
|
info.cas = BF_RD(DRAM_CTL13, CASLAT_LIN);
|
||||||
info.banks = 4;
|
info.banks = 4;
|
||||||
info.chips = __builtin_popcount(BF_RD(DRAM_CTL14, CS_MAP));
|
info.chips = __builtin_popcount(BF_RD(DRAM_CTL14, CS_MAP));
|
||||||
info.size = 2 * (1 << (info.rows + info.columns)) * info.chips * info.banks;
|
info.size = 2 * (1 << (info.rows + info.columns)) * info.chips * info.banks;
|
||||||
|
#endif
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
@ -124,7 +124,9 @@ void INT_VDD5V(void)
|
||||||
|
|
||||||
void imx233_power_init(void)
|
void imx233_power_init(void)
|
||||||
{
|
{
|
||||||
|
#if IMX233_SUBTARGET >= 3700
|
||||||
BF_CLR(POWER_MINPWR, HALF_FETS);
|
BF_CLR(POWER_MINPWR, HALF_FETS);
|
||||||
|
#endif
|
||||||
/* setup vbusvalid parameters: set threshold to 4v and power up comparators */
|
/* setup vbusvalid parameters: set threshold to 4v and power up comparators */
|
||||||
BF_CLR(POWER_5VCTRL, VBUSVALID_TRSH);
|
BF_CLR(POWER_5VCTRL, VBUSVALID_TRSH);
|
||||||
BF_SETV(POWER_5VCTRL, VBUSVALID_TRSH, 1);
|
BF_SETV(POWER_5VCTRL, VBUSVALID_TRSH, 1);
|
||||||
|
|
@ -155,7 +157,9 @@ void imx233_power_init(void)
|
||||||
BF_SET(POWER_CTRL, POLARITY_VDD5V_GT_VDDIO);
|
BF_SET(POWER_CTRL, POLARITY_VDD5V_GT_VDDIO);
|
||||||
BF_SET(POWER_CTRL, ENIRQ_VDD5V_GT_VDDIO);
|
BF_SET(POWER_CTRL, ENIRQ_VDD5V_GT_VDDIO);
|
||||||
/* make the vbusvalid detection way is not enabled */
|
/* make the vbusvalid detection way is not enabled */
|
||||||
|
#if IMX233_SUBTARGET >= 3700
|
||||||
BF_CLR(POWER_CTRL, ENIRQ_VBUS_VALID);
|
BF_CLR(POWER_CTRL, ENIRQ_VBUS_VALID);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
/* the VDD5V IRQ is shared by several sources, disable them */
|
/* the VDD5V IRQ is shared by several sources, disable them */
|
||||||
#if IMX233_SUBTARGET >= 3700
|
#if IMX233_SUBTARGET >= 3700
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,15 @@ static inline void imx233_power_set_dcdc_freq(bool pll, unsigned freq)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static inline unsigned imx233_power_read_pswitch(void)
|
||||||
|
{
|
||||||
|
#if IMX233_SUBTARGET >= 3700
|
||||||
|
return BF_RD(POWER_STS, PSWITCH);
|
||||||
|
#else
|
||||||
|
return BF_RD(DIGCTL_STATUS, PSWITCH);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#if IMX233_SUBTARGET < 3700
|
#if IMX233_SUBTARGET < 3700
|
||||||
/* return -1 on error */
|
/* return -1 on error */
|
||||||
int imx233_power_sense_die_temperature(int *min, int *max);
|
int imx233_power_sense_die_temperature(int *min, int *max);
|
||||||
|
|
|
||||||
|
|
@ -48,9 +48,9 @@ void imx233_powermgmt_init(void)
|
||||||
{
|
{
|
||||||
imx233_power_set_charge_current(IMX233_CHARGE_CURRENT);
|
imx233_power_set_charge_current(IMX233_CHARGE_CURRENT);
|
||||||
imx233_power_set_stop_current(IMX233_STOP_CURRENT);
|
imx233_power_set_stop_current(IMX233_STOP_CURRENT);
|
||||||
|
#if IMX233_SUBTARGET >= 3700
|
||||||
/* assume that adc_init was called and battery monitoring via LRADC setup */
|
/* assume that adc_init was called and battery monitoring via LRADC setup */
|
||||||
BF_WR(POWER_BATTMONITOR, EN_BATADJ, 1);
|
BF_WR(POWER_BATTMONITOR, EN_BATADJ, 1);
|
||||||
#if IMX233_SUBTARGET >= 3700
|
|
||||||
/* setup linear regulator offsets to 25 mV below to prevent contention between
|
/* setup linear regulator offsets to 25 mV below to prevent contention between
|
||||||
* linear regulators and DCDC */
|
* linear regulators and DCDC */
|
||||||
BF_WR(POWER_VDDDCTRL, LINREG_OFFSET, 2);
|
BF_WR(POWER_VDDDCTRL, LINREG_OFFSET, 2);
|
||||||
|
|
|
||||||
|
|
@ -41,3 +41,16 @@ unsigned char dualboot_zen[168] = {
|
||||||
0x00, 0x00, 0x05, 0x80, 0xa4, 0x00, 0x00, 0x41, 0xda, 0x00, 0xeb, 0x1c, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x05, 0x80, 0xa4, 0x00, 0x00, 0x41, 0xda, 0x00, 0xeb, 0x1c, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
};
|
};
|
||||||
|
unsigned char dualboot_zenv[168] = {
|
||||||
|
0x10, 0x40, 0x2d, 0xe9, 0x7c, 0x30, 0x9f, 0xe5, 0x00, 0x30, 0x93, 0xe5, 0x78, 0x20, 0x9f, 0xe5,
|
||||||
|
0x00, 0x00, 0x92, 0xe5, 0x74, 0x20, 0x9f, 0xe5, 0x02, 0x11, 0xa0, 0xe3, 0x08, 0x10, 0x82, 0xe5,
|
||||||
|
0x03, 0x11, 0x81, 0xe2, 0x08, 0x10, 0x82, 0xe5, 0xff, 0x14, 0x81, 0xe2, 0x58, 0x10, 0x82, 0xe5,
|
||||||
|
0xc2, 0x14, 0x81, 0xe2, 0x24, 0x10, 0x82, 0xe5, 0x01, 0x10, 0xa0, 0xe3, 0x18, 0x10, 0x82, 0xe5,
|
||||||
|
0x04, 0x10, 0x82, 0xe5, 0x02, 0x10, 0xa0, 0xe1, 0x10, 0x20, 0x91, 0xe5, 0x01, 0x00, 0x12, 0xe3,
|
||||||
|
0xfc, 0xff, 0xff, 0x0a, 0x34, 0x20, 0x9f, 0xe5, 0x50, 0x20, 0x92, 0xe5, 0xff, 0x24, 0xc2, 0xe3,
|
||||||
|
0x3f, 0x27, 0xc2, 0xe3, 0xa5, 0x2e, 0x42, 0xe2, 0x0a, 0x20, 0x42, 0xe2, 0x63, 0x00, 0x52, 0xe3,
|
||||||
|
0x00, 0x30, 0xa0, 0x93, 0x20, 0x00, 0x83, 0x95, 0x14, 0x20, 0x9f, 0xe5, 0x00, 0x00, 0x92, 0xe5,
|
||||||
|
0x33, 0xff, 0x2f, 0xe1, 0x10, 0x80, 0xbd, 0xe8, 0xa0, 0x00, 0x00, 0x61, 0x9c, 0x00, 0x00, 0x61,
|
||||||
|
0x00, 0x00, 0x05, 0x80, 0xa4, 0x00, 0x00, 0x61, 0xda, 0x00, 0xeb, 0x1c, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -3,3 +3,4 @@
|
||||||
extern unsigned char dualboot_zenmozaic[168];
|
extern unsigned char dualboot_zenmozaic[168];
|
||||||
extern unsigned char dualboot_zenxfi[168];
|
extern unsigned char dualboot_zenxfi[168];
|
||||||
extern unsigned char dualboot_zen[168];
|
extern unsigned char dualboot_zen[168];
|
||||||
|
extern unsigned char dualboot_zenv[168];
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,11 @@ LDFLAGS=
|
||||||
# 1) add x to the list in TARGETS
|
# 1) add x to the list in TARGETS
|
||||||
# 2) create a variable named OPT_x of the form:
|
# 2) create a variable named OPT_x of the form:
|
||||||
# OPT_x=target specific defines
|
# OPT_x=target specific defines
|
||||||
TARGETS=zenmozaic zenxfi zen
|
TARGETS=zenmozaic zenxfi zen zenv
|
||||||
OPT_zenmozaic=-DCREATIVE_ZENMOZAIC -DIMX233_SUBTARGET=3700
|
OPT_zenmozaic=-DCREATIVE_ZENMOZAIC -DIMX233_SUBTARGET=3700
|
||||||
OPT_zenxfi=-DCREATIVE_ZENXFI -DIMX233_SUBTARGET=3700
|
OPT_zenxfi=-DCREATIVE_ZENXFI -DIMX233_SUBTARGET=3700
|
||||||
OPT_zen=-DCREATIVE_ZEN -DIMX233_SUBTARGET=3700
|
OPT_zen=-DCREATIVE_ZEN -DIMX233_SUBTARGET=3700
|
||||||
|
OPT_zenv=-DCREATIVE_ZENV -DIMX233_SUBTARGET=3600
|
||||||
|
|
||||||
BOOTLDS=$(patsubst %, dualboot_%.lds, $(TARGETS))
|
BOOTLDS=$(patsubst %, dualboot_%.lds, $(TARGETS))
|
||||||
BOOTOBJS=$(patsubst %, dualboot_%.o, $(TARGETS))
|
BOOTOBJS=$(patsubst %, dualboot_%.o, $(TARGETS))
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
#include "regs-pinctrl.h"
|
#include "regs-pinctrl.h"
|
||||||
#include "regs-power.h"
|
#include "regs-power.h"
|
||||||
#include "regs-lradc.h"
|
#include "regs-lradc.h"
|
||||||
|
#include "regs-digctl.h"
|
||||||
|
|
||||||
typedef unsigned long uint32_t;
|
typedef unsigned long uint32_t;
|
||||||
|
|
||||||
|
|
@ -83,7 +84,8 @@ static inline void __attribute__((noreturn)) power_down()
|
||||||
* Boot decision functions
|
* Boot decision functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(CREATIVE_ZENMOZAIC) || defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI)
|
#if defined(CREATIVE_ZENMOZAIC) || defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) \
|
||||||
|
|| defined(CREATIVE_ZENV)
|
||||||
static enum boot_t boot_decision()
|
static enum boot_t boot_decision()
|
||||||
{
|
{
|
||||||
setup_lradc(0); // setup LRADC channel 0 to read keys
|
setup_lradc(0); // setup LRADC channel 0 to read keys
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ static struct player_info_t zen_players[] =
|
||||||
{"Zen SleekPhoto", null_key_v1, tl_zsp_key, true, NULL},
|
{"Zen SleekPhoto", null_key_v1, tl_zsp_key, true, NULL},
|
||||||
{"Zen Touch", null_key_v1, tl_zt_key, true, NULL},
|
{"Zen Touch", null_key_v1, tl_zt_key, true, NULL},
|
||||||
{"Zen Xtra", null_key_v1, tl_zx_key, true, NULL},
|
{"Zen Xtra", null_key_v1, tl_zx_key, true, NULL},
|
||||||
{"Zen V", null_key_v3, tl_zenv_key, false, NULL},
|
{"Zen V", null_key_v3, tl_zenv_key, false, "Creative ZEN V"},
|
||||||
{"Zen V Plus", null_key_v3, tl_zenvp_key, false, NULL},
|
{"Zen V Plus", null_key_v3, tl_zenvp_key, false, NULL},
|
||||||
{"Zen V Video", null_key_v3, tl_zenvv_key, false, NULL},
|
{"Zen V Video", null_key_v3, tl_zenvv_key, false, NULL},
|
||||||
{NULL, NULL, NULL, false, NULL}
|
{NULL, NULL, NULL, false, NULL}
|
||||||
|
|
@ -130,7 +130,7 @@ static const struct zen_model_desc_t zen_models[] =
|
||||||
},
|
},
|
||||||
[MODEL_ZENV] =
|
[MODEL_ZENV] =
|
||||||
{
|
{
|
||||||
"Zen V", "zenv", 85, 0x60000000, NULL, 0
|
"Zen V", "zenv", 85, 0x61000000, dualboot_zenv, sizeof(dualboot_zenv)
|
||||||
},
|
},
|
||||||
[MODEL_ZENXFI] =
|
[MODEL_ZENXFI] =
|
||||||
{
|
{
|
||||||
|
|
|
||||||
20
tools/configure
vendored
20
tools/configure
vendored
|
|
@ -2282,6 +2282,26 @@ fi
|
||||||
arm926ejscc
|
arm926ejscc
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
95|creativezenv)
|
||||||
|
target_id=85
|
||||||
|
modelname="creativezenv"
|
||||||
|
target="CREATIVE_ZENV"
|
||||||
|
memory=32
|
||||||
|
bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
|
||||||
|
bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
|
||||||
|
tool="$rootdir/tools/scramble -add=zenv"
|
||||||
|
output="rockbox.creative"
|
||||||
|
bootoutput="bootloader-zenv.creative"
|
||||||
|
appextra="radio:gui:recorder"
|
||||||
|
plugins=""
|
||||||
|
swcodec="yes"
|
||||||
|
toolset=$scramblebitmaptools
|
||||||
|
t_cpu="arm"
|
||||||
|
t_manufacturer="imx233"
|
||||||
|
t_model="creative-zen"
|
||||||
|
arm926ejscc
|
||||||
|
;;
|
||||||
|
|
||||||
96|creativezenxfi)
|
96|creativezenxfi)
|
||||||
target_id=86
|
target_id=86
|
||||||
modelname="creativezenxfi"
|
modelname="creativezenxfi"
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,7 @@ void usage(void)
|
||||||
"\t m2v4, fuze, c2v2, clv2, y820, y920, y925, x747,\n"
|
"\t m2v4, fuze, c2v2, clv2, y820, y920, y925, x747,\n"
|
||||||
"\t 747p, x777, nn2g, m244, cli+, fuz2, hd20, hd30,\n"
|
"\t 747p, x777, nn2g, m244, cli+, fuz2, hd20, hd30,\n"
|
||||||
"\t ip6g, rk27, clzp, zxf2, zxf3, fuz+, e370, e360,\n"
|
"\t ip6g, rk27, clzp, zxf2, zxf3, fuz+, e370, e360,\n"
|
||||||
"\t zxfi, zmoz, zen)\n");
|
"\t zxfi, zmoz, zen, zenv)\n");
|
||||||
printf("\nNo option results in Archos standard player/recorder format.\n");
|
printf("\nNo option results in Archos standard player/recorder format.\n");
|
||||||
|
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
@ -366,6 +366,8 @@ int main (int argc, char** argv)
|
||||||
modelnum = 82;
|
modelnum = 82;
|
||||||
else if (!strcmp(&argv[1][5], "zxf3")) /* Creative Zen X-Fi3 */
|
else if (!strcmp(&argv[1][5], "zxf3")) /* Creative Zen X-Fi3 */
|
||||||
modelnum = 83;
|
modelnum = 83;
|
||||||
|
else if (!strcmp(&argv[1][5], "zenv")) /* Creative Zen V */
|
||||||
|
modelnum = 85;
|
||||||
else if (!strcmp(&argv[1][5], "zxfi")) /* Creative ZEN X-Fi */
|
else if (!strcmp(&argv[1][5], "zxfi")) /* Creative ZEN X-Fi */
|
||||||
modelnum = 86;
|
modelnum = 86;
|
||||||
else if (!strcmp(&argv[1][5], "zmoz")) /* Creative ZEN Mozaic*/
|
else if (!strcmp(&argv[1][5], "zmoz")) /* Creative ZEN Mozaic*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue