summaryrefslogtreecommitdiff
path: root/firmware/export
diff options
context:
space:
mode:
authorMark Arigo <markarigo@gmail.com>2009-05-25 21:10:45 +0000
committerMark Arigo <markarigo@gmail.com>2009-05-25 21:10:45 +0000
commit758bb3bc628705ff8e5c677b3b2d87720c726c13 (patch)
treed78cbf984e4bc613b0b76fcf4a5f090ab1d774b8 /firmware/export
parentd2ea7db6f55cbb121870ecd41d4d80581354b799 (diff)
3 new ports: Samsung YH-820, YH-920, and YH-925. Mostly functional. Audio working on 820 & 925 (untested on the 920). No battery readings. No recording. No plugins. Keymap needs work.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21083 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export')
-rw-r--r--firmware/export/ak4537.h193
-rw-r--r--firmware/export/akcodec.h29
-rw-r--r--firmware/export/audiohw.h2
-rw-r--r--firmware/export/config-yh820.h187
-rw-r--r--firmware/export/config-yh920.h193
-rw-r--r--firmware/export/config-yh925.h190
-rw-r--r--firmware/export/config.h10
-rw-r--r--firmware/export/usb.h3
8 files changed, 806 insertions, 1 deletions
diff --git a/firmware/export/ak4537.h b/firmware/export/ak4537.h
new file mode 100644
index 0000000000..1f272d41fc
--- /dev/null
+++ b/firmware/export/ak4537.h
@@ -0,0 +1,193 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2009 by Mark Arigo
+ *
+ * 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 _AK4537_H
+#define _AK4537_H
+
+/* Volume goes from -127.0 ... 0 dB in 0.5 dB increments */
+#define VOLUME_MIN -1270
+#define VOLUME_MAX 0
+
+extern int tenthdb2master(int db);
+
+extern void audiohw_set_master_vol(int vol_l, int vol_r);
+
+#define AKC_NUM_REGS 0x11
+
+/* Common register bits */
+
+/* Power Management 1 */
+#define AK4537_PM1 0x00
+#define PMADL (1 << 0)
+#define PMMICL (1 << 1)
+#define PMIPGL (1 << 2)
+#define PMMO (1 << 3)
+#define PMLO (1 << 4)
+#define PMBPM (1 << 5)
+#define PMBPS (1 << 6)
+#define PMVCM (1 << 7)
+
+/* Power Management 2 */
+#define AK4537_PM2 0x01
+#define PMDAC (1 << 0)
+#define PMHPR (1 << 1)
+#define PMHPL (1 << 2)
+#define PMSPK (1 << 3)
+#define SPKG (1 << 4)
+#define PMPLL (1 << 5)
+#define PMXTL (1 << 6)
+#define MCLKPD (1 << 7)
+
+/* Signal Select 1 */
+#define AK4537_SIGSEL1 0x02
+#define MOUT2 (1 << 0)
+#define ALCS (1 << 1)
+#define BPMSP (1 << 2)
+#define BPSSP (1 << 3)
+#define MICM (1 << 4)
+#define DAMO (1 << 5)
+#define PSMO (1 << 6)
+#define MOGN (1 << 7)
+
+/* Signal Select 2 */
+#define AK4537_SIGSEL2 0x03
+#define HPR (1 << 0)
+#define HPL (1 << 1)
+#define BPMHP (1 << 2)
+#define BPSHP (1 << 3)
+#define MICL (1 << 4)
+#define PSLO (1 << 6)
+#define DAHS (1 << 7)
+
+/* Mode Control 1 */
+#define AK4537_MODE1 0x04
+#define DIF_MASK (3 << 0)
+#define BICK_MASK (1 << 2)
+#define MCKO_EN (1 << 3)
+#define MCKO_MASK (3 << 4)
+#define MCKI_MASK (3 << 6)
+
+/* Mode Control 2 */
+#define AK4537_MODE2 0x05
+#define SPPS (1 << 0)
+#define LOOP (1 << 1)
+#define HPM (1 << 2)
+#define FS_MASK (7 << 5)
+
+/* DAC Control */
+#define AK4537_DAC 0x06
+#define DEM_MASK (3 << 0)
+#define BST_MASK (3 << 2)
+#define DATTC (1 << 4)
+#define SMUTE (1 << 5)
+#define TM_MASK (3 << 6)
+
+/* MIC Control */
+#define AK4537_MIC 0x07
+#define MGAIN (1 << 0)
+#define MSEL (1 << 1)
+#define MICAD (1 << 2)
+#define MPWRI (1 << 3)
+#define MPWRE (1 << 4)
+#define IPGAC (1 << 5)
+
+/* Timer Select */
+#define AK4537_TIMER 0x08
+#define LTM_MASK (3 << 0)
+#define WTM_MASK (3 << 2)
+#define ZTM_MASK (3 << 4)
+#define ZTM1 (1 << 5)
+#define ROTM (1 << 6)
+
+/* ALC Mode Control 1 */
+#define AK4537_ALC1 0x09
+#define LMTH (1 << 0)
+#define RATT (1 << 1)
+#define LMAT_MASK (3 << 2)
+#define ZELM (1 << 4)
+#define ALC1 (1 << 5)
+#define ALC2 (1 << 6)
+
+/* ALC Mode Control 2 */
+#define AK4537_ALC2 0x0a
+
+/* Lch Input PGA Control */
+#define AK4537_IPGAL 0x0b
+
+/* Lch Digital ATT Control */
+#define AK4537_ATTL 0x0c
+
+/* Rch Digital ATT Control */
+#define AK4537_ATTR 0x0d
+
+/* Volume Control */
+#define AK4537_VOLUME 0x0e
+#define ATTS_MASK (7 << 4)
+#define ATTRM (1 << 7)
+
+/* Rch Input PGA Control */
+#define AK4537_IPGAR 0x0f
+
+/* Power Management 3 */
+#define AK4537_PM3 0x10
+#define PMADR (1 << 0)
+#define PMMICR (1 << 1)
+#define PMIPGR (1 << 2)
+#define INR (1 << 3)
+#define INL (1 << 4)
+
+/* Sampling frequency (PLL mode) */
+#define AKC_PLL_8000HZ (7 << 5)
+#define AKC_PLL_11025HZ (2 << 5)
+#define AKC_PLL_16000HZ (6 << 5)
+#define AKC_PLL_22050HZ (1 << 5)
+#define AKC_PLL_24000HZ (5 << 5)
+#define AKC_PLL_32000HZ (4 << 5)
+#define AKC_PLL_44100HZ (0 << 5)
+#define AKC_PLL_48000HZ (3 << 5)
+
+/* MCKI input frequency (PLL mode) */
+#define MCKI_PLL_12288KHZ (0 << 6)
+#define MCKI_PLL_11289KHZ (1 << 6)
+#define MCKI_PLL_12000KHZ (2 << 6)
+
+/* MCKO frequency (PLL mode, MCKO bit = 1) */
+#define MCKO_PLL_256FS (0 << 4)
+#define MCKO_PLL_128FS (1 << 4)
+#define MCKO_PLL_64FS (2 << 4)
+#define MCKO_PLL_32FS (3 << 4)
+
+/* BICK frequency */
+#define BICK_64FS (0 << 2)
+#define BICK_32FS (1 << 2)
+
+/* Audio interface format */
+#define DIF_MSB_LSB (0 << 0)
+#define DIF_MSB_MSB (1 << 0)
+#define DIF_I2S (2 << 0)
+
+/* Low frequency boost control */
+#define BST_OFF (0 << 2)
+#define BST_MIN (1 << 2)
+#define BST_MID (2 << 2)
+#define BST_MAX (3 << 2)
+
+#endif /* _AK4537_H */
diff --git a/firmware/export/akcodec.h b/firmware/export/akcodec.h
new file mode 100644
index 0000000000..7cb2bad7e5
--- /dev/null
+++ b/firmware/export/akcodec.h
@@ -0,0 +1,29 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2006 by Marcoen Hirschberg
+ *
+ * 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 _AKCODEC_H
+#define _AKCODEC_H
+
+int akcodec_read(int reg);
+void akcodec_write(int reg, int data);
+void akcodec_close(void);
+
+#endif
diff --git a/firmware/export/audiohw.h b/firmware/export/audiohw.h
index e53db7e7b9..66fc19f923 100644
--- a/firmware/export/audiohw.h
+++ b/firmware/export/audiohw.h
@@ -59,6 +59,8 @@
#include "tsc2100.h"
#elif defined(HAVE_JZ4740_CODEC)
#include "jz4740-codec.h"
+#elif defined(HAVE_AK4537)
+#include "ak4537.h"
#endif
/* convert caps into defines */
diff --git a/firmware/export/config-yh820.h b/firmware/export/config-yh820.h
new file mode 100644
index 0000000000..b96a7c72ea
--- /dev/null
+++ b/firmware/export/config-yh820.h
@@ -0,0 +1,187 @@
+/*
+ * This config file is for the Samsung YH-820
+ */
+
+#define TARGET_TREE /* this target is using the target tree system */
+
+/* For Rolo and boot loader */
+#define MODEL_NUMBER 57
+#define MODEL_NAME "Samsung YH-820"
+
+/* define this if you have recording possibility */
+/* todo #define HAVE_RECORDING */
+
+/* Define bitmask of input sources - recordable bitmask can be defined
+ explicitly if different */
+#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_LINEIN )
+
+/* define the bitmask of hardware sample rates */
+#define HW_SAMPR_CAPS (SAMPR_CAP_48 | SAMPR_CAP_44 | SAMPR_CAP_32 | \
+ SAMPR_CAP_24 | SAMPR_CAP_22 | SAMPR_CAP_16 | \
+ SAMPR_CAP_11 | SAMPR_CAP_8)
+
+/* define the bitmask of recording sample rates */
+#define REC_SAMPR_CAPS (SAMPR_CAP_48 | SAMPR_CAP_44 | SAMPR_CAP_32 | \
+ SAMPR_CAP_24 | SAMPR_CAP_22 | SAMPR_CAP_16 | \
+ SAMPR_CAP_11 | SAMPR_CAP_8)
+
+/* Type of LCD */
+#define CONFIG_LCD LCD_S6B33B2
+
+/* LCD dimensions */
+#define LCD_WIDTH 128
+#define LCD_HEIGHT 96
+#define LCD_DEPTH 16 /* 65536 colours */
+#define LCD_PIXELFORMAT RGB565
+
+#ifndef BOOTLOADER
+/* Define this if your LCD can be enabled/disabled */
+#define HAVE_LCD_ENABLE
+
+/* Define this if your LCD can be put to sleep.
+ HAVE_LCD_ENABLE should be defined as well. */
+/* todo #define HAVE_LCD_SLEEP*/
+/* todo #define HAVE_LCD_SLEEP_SETTING */
+#endif /* !BOOTLOADER */
+
+/* Define this for LCD backlight available */
+#define HAVE_BACKLIGHT
+
+/* Define this if your LCD can set contrast */
+#define HAVE_LCD_CONTRAST
+
+#define MIN_CONTRAST_SETTING 0
+#define MAX_CONTRAST_SETTING 255
+#define DEFAULT_CONTRAST_SETTING 137
+
+/* define this if you can flip your LCD */
+/* #define HAVE_LCD_FLIP */
+
+/* define this if you can invert the colours on your LCD */
+/* todo #define HAVE_LCD_INVERT */
+
+/* put the lcd frame buffer in IRAM */
+/* #define IRAM_LCDFRAMEBUFFER IDATA_ATTR */
+
+/* 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
+
+/* define this if you want album art for this target */
+#define HAVE_ALBUMART
+
+/* define this if you have access to the quickscreen */
+#define HAVE_QUICKSCREEN
+
+/* define this if you have access to the pitchscreen */
+#define HAVE_PITCHSCREEN
+
+/* define this if you would like tagcache to build on this target */
+#define HAVE_TAGCACHE
+
+#define CONFIG_KEYPAD SAMSUNG_YH_PAD
+
+/* Define this if you do software codec */
+#define CONFIG_CODEC SWCODEC
+
+/* define this if you have a real-time clock */
+/* todo verify rtc (or none) */
+/* #ifndef BOOTLOADER */
+#if 0
+#define CONFIG_RTC RTC_E8564
+#define HAVE_RTC_ALARM
+#endif
+
+/* 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 if you use an ATA controller */
+#define CONFIG_STORAGE STORAGE_ATA
+
+/* We're able to shut off power to the HDD */
+#ifndef SIMULATOR
+/* todo #define HAVE_ATA_POWER_OFF */
+#endif
+
+/* Define this if you have a software controlled poweroff */
+#define HAVE_SW_POWEROFF
+
+/* The number of bytes reserved for loadable codecs */
+#define CODEC_SIZE 0x100000
+
+/* The number of bytes reserved for loadable plugins */
+#define PLUGIN_BUFFER_SIZE 0x80000
+
+/* Define this if you have the AK4537 audio codec */
+#define HAVE_AK4537
+
+/* AK4537 has no tone controls, so we use the software ones */
+#define HAVE_SW_TONE_CONTROLS
+
+#define AB_REPEAT_ENABLE 1
+
+#define BATTERY_CAPACITY_DEFAULT 1550 /* default battery capacity */
+#define BATTERY_CAPACITY_MIN 1500 /* min. capacity selectable */
+#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */
+#define BATTERY_CAPACITY_INC 50 /* capacity increment */
+#define BATTERY_TYPES_COUNT 1 /* only one type */
+
+/* Hardware controlled charging */
+#define CONFIG_CHARGING CHARGING_SIMPLE
+
+/* define this if the unit can be powered or charged via USB */
+#define HAVE_USB_POWER
+
+#ifndef SIMULATOR
+
+/* Define this if you have a PortalPlayer PP5020 */
+#define CONFIG_CPU PP5020
+
+/* Define this if you want to use the PP5020 i2c interface */
+#define CONFIG_I2C I2C_PP5020
+
+/* define this if the hardware can be powered off while charging */
+#define HAVE_POWEROFF_WHILE_CHARGING
+
+/* The start address index for ROM builds */
+#define ROM_START 0x00000000
+
+/* The size of the flash ROM */
+#define FLASH_SIZE 0x100000
+
+/* Define this to the CPU frequency */
+#define CPU_FREQ 75000000
+
+/* USB On-the-go */
+#define CONFIG_USBOTG USBOTG_ARC
+
+/* enable these for the experimental usb stack */
+#define HAVE_USBSTACK
+#define USE_ROCKBOX_USB
+/* todo - check */
+#define USB_VENDOR_ID 0x04e8
+#define USB_PRODUCT_ID 0x5023
+
+/* Virtual LED (icon) */
+#define CONFIG_LED LED_VIRTUAL
+
+/* Define this if you have adjustable CPU frequency */
+#define HAVE_ADJUSTABLE_CPU_FREQ
+
+#define MI4_FORMAT
+#define BOOTFILE_EXT "mi4"
+#define BOOTFILE "rockbox." BOOTFILE_EXT
+#define BOOTDIR "/.rockbox"
+
+/* Offset ( in the firmware file's header ) to the file CRC */
+#define FIRMWARE_OFFSET_FILE_CRC 0x00
+
+/* Offset ( in the firmware file's header ) to the real data */
+#define FIRMWARE_OFFSET_FILE_DATA 0x00
+
+#define ICODE_ATTR_TREMOR_NOT_MDCT
+
+#endif /* !SIMULATOR */
diff --git a/firmware/export/config-yh920.h b/firmware/export/config-yh920.h
new file mode 100644
index 0000000000..62febaac71
--- /dev/null
+++ b/firmware/export/config-yh920.h
@@ -0,0 +1,193 @@
+/*
+ * This config file is for the Samsung YH-920
+ */
+
+#define TARGET_TREE /* this target is using the target tree system */
+
+/* For Rolo and boot loader */
+#define MODEL_NUMBER 58
+#define MODEL_NAME "Samsung YH-920"
+
+/* define this if you have recording possibility */
+/* todo #define HAVE_RECORDING */
+
+/* Define bitmask of input sources - recordable bitmask can be defined
+ explicitly if different */
+#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_LINEIN )
+
+/* define the bitmask of hardware sample rates */
+#define HW_SAMPR_CAPS (SAMPR_CAP_48 | SAMPR_CAP_44 | SAMPR_CAP_32 | \
+ SAMPR_CAP_24 | SAMPR_CAP_22 | SAMPR_CAP_16 | \
+ SAMPR_CAP_11 | SAMPR_CAP_8)
+
+/* define the bitmask of recording sample rates */
+#define REC_SAMPR_CAPS (SAMPR_CAP_48 | SAMPR_CAP_44 | SAMPR_CAP_32 | \
+ SAMPR_CAP_24 | SAMPR_CAP_22 | SAMPR_CAP_16 | \
+ SAMPR_CAP_11 | SAMPR_CAP_8)
+
+/* Type of LCD */
+#define CONFIG_LCD LCD_S1D15E06
+
+/* LCD dimensions */
+#define LCD_WIDTH 160
+#define LCD_HEIGHT 128
+#define LCD_DEPTH 2
+#define LCD_PIXELFORMAT VERTICAL_PACKING
+
+/* Display colours, for screenshots and sim (0xRRGGBB) */
+#define LCD_DARKCOLOR 0x000000
+#define LCD_BRIGHTCOLOR 0x5a915a
+#define LCD_BL_DARKCOLOR 0x000000
+#define LCD_BL_BRIGHTCOLOR 0xadd8e6
+
+/* todo */
+/* #ifndef BOOTLOADER */
+#if 0
+/* Define this if your LCD can be enabled/disabled */
+#define HAVE_LCD_ENABLE
+
+/* Define this if your LCD can be put to sleep. HAVE_LCD_ENABLE
+ * should be defined as well.
+ * We can currently put the lcd to sleep but it won't wake up properly */
+#define HAVE_LCD_SLEEP
+#define HAVE_LCD_SLEEP_SETTING
+#endif
+
+/* Define this for LCD backlight available */
+#define HAVE_BACKLIGHT
+
+/* Define this if your LCD can set contrast */
+/* todo #define HAVE_LCD_CONTRAST */
+
+#define MIN_CONTRAST_SETTING 0
+#define MAX_CONTRAST_SETTING 30
+#define DEFAULT_CONTRAST_SETTING 14 /* Match boot contrast */
+
+/* define this if you can flip your LCD */
+/* todo #define HAVE_LCD_FLIP */
+
+/* define this if you can invert the colours on your LCD */
+/* todo #define HAVE_LCD_INVERT */
+
+/* put the lcd frame buffer in IRAM */
+/* #define IRAM_LCDFRAMEBUFFER IDATA_ATTR */
+
+/* define this if you have a bitmap LCD display */
+#define HAVE_LCD_BITMAP
+
+/* define this if you want album art for this target */
+#define HAVE_ALBUMART
+
+/* define this if you have access to the quickscreen */
+#define HAVE_QUICKSCREEN
+
+/* define this if you have access to the pitchscreen */
+#define HAVE_PITCHSCREEN
+
+/* define this if you would like tagcache to build on this target */
+#define HAVE_TAGCACHE
+
+#define CONFIG_KEYPAD SAMSUNG_YH_PAD
+
+/* Define this if you do software codec */
+#define CONFIG_CODEC SWCODEC
+
+/* define this if you have a real-time clock */
+/* todo verify rtc (or none) */
+/* #ifndef BOOTLOADER */
+#if 0
+#define CONFIG_RTC RTC_E8564
+#define HAVE_RTC_ALARM
+#endif
+
+/* 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 if you use an ATA controller */
+#define CONFIG_STORAGE STORAGE_ATA
+
+/* We're able to shut off power to the HDD */
+#ifndef SIMULATOR
+/* todo #define HAVE_ATA_POWER_OFF */
+#endif
+
+/* Define this if you have a software controlled poweroff */
+#define HAVE_SW_POWEROFF
+
+/* The number of bytes reserved for loadable codecs */
+#define CODEC_SIZE 0x100000
+
+/* The number of bytes reserved for loadable plugins */
+#define PLUGIN_BUFFER_SIZE 0x80000
+
+/* Define this if you have the AK4537 audio codec */
+#define HAVE_AK4537
+
+/* AK4537 has no tone controls, so we use the software ones */
+#define HAVE_SW_TONE_CONTROLS
+
+#define AB_REPEAT_ENABLE 1
+
+#define BATTERY_CAPACITY_DEFAULT 1550 /* default battery capacity */
+#define BATTERY_CAPACITY_MIN 1500 /* min. capacity selectable */
+#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */
+#define BATTERY_CAPACITY_INC 50 /* capacity increment */
+#define BATTERY_TYPES_COUNT 1 /* only one type */
+
+/* Hardware controlled charging */
+#define CONFIG_CHARGING CHARGING_SIMPLE
+
+/* define this if the unit can be powered or charged via USB */
+#define HAVE_USB_POWER
+
+#ifndef SIMULATOR
+
+/* Define this if you have a PortalPlayer PP5020 */
+#define CONFIG_CPU PP5020
+
+/* Define this if you want to use the PP5020 i2c interface */
+#define CONFIG_I2C I2C_PP5020
+
+/* define this if the hardware can be powered off while charging */
+#define HAVE_POWEROFF_WHILE_CHARGING
+
+/* The start address index for ROM builds */
+#define ROM_START 0x00000000
+
+/* The size of the flash ROM */
+#define FLASH_SIZE 0x100000
+
+/* Define this to the CPU frequency */
+#define CPU_FREQ 75000000
+
+/* USB On-the-go */
+#define CONFIG_USBOTG USBOTG_ARC
+
+/* enable these for the experimental usb stack */
+#define HAVE_USBSTACK
+#define USE_ROCKBOX_USB
+/* todo - check */
+#define USB_VENDOR_ID 0x04e8
+#define USB_PRODUCT_ID 0x5022
+
+/* Virtual LED (icon) */
+#define CONFIG_LED LED_VIRTUAL
+
+/* Define this if you have adjustable CPU frequency */
+#define HAVE_ADJUSTABLE_CPU_FREQ
+
+#define MI4_FORMAT
+#define BOOTFILE_EXT "mi4"
+#define BOOTFILE "rockbox." BOOTFILE_EXT
+#define BOOTDIR "/.rockbox"
+
+/* Offset ( in the firmware file's header ) to the file CRC */
+#define FIRMWARE_OFFSET_FILE_CRC 0x00
+
+/* Offset ( in the firmware file's header ) to the real data */
+#define FIRMWARE_OFFSET_FILE_DATA 0x00
+
+#define ICODE_ATTR_TREMOR_NOT_MDCT
+
+#endif /* !SIMULATOR */
diff --git a/firmware/export/config-yh925.h b/firmware/export/config-yh925.h
new file mode 100644
index 0000000000..3a6403f93f
--- /dev/null
+++ b/firmware/export/config-yh925.h
@@ -0,0 +1,190 @@
+/*
+ * This config file is for the Samsung YH-925
+ */
+
+#define TARGET_TREE /* this target is using the target tree system */
+
+/* For Rolo and boot loader */
+#define MODEL_NUMBER 59
+#define MODEL_NAME "Samsung YH-925"
+
+/* define this if you have recording possibility */
+/* todo #define HAVE_RECORDING */
+
+/* Define bitmask of input sources - recordable bitmask can be defined
+ explicitly if different */
+#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_LINEIN )
+
+/* define the bitmask of hardware sample rates */
+#define HW_SAMPR_CAPS (SAMPR_CAP_48 | SAMPR_CAP_44 | SAMPR_CAP_32 | \
+ SAMPR_CAP_24 | SAMPR_CAP_22 | SAMPR_CAP_16 | \
+ SAMPR_CAP_11 | SAMPR_CAP_8)
+
+/* define the bitmask of recording sample rates */
+#define REC_SAMPR_CAPS (SAMPR_CAP_48 | SAMPR_CAP_44 | SAMPR_CAP_32 | \
+ SAMPR_CAP_24 | SAMPR_CAP_22 | SAMPR_CAP_16 | \
+ SAMPR_CAP_11 | SAMPR_CAP_8)
+
+/* Type of LCD */
+#define CONFIG_LCD LCD_YH925
+
+/* LCD dimensions */
+#define LCD_WIDTH 160
+#define LCD_HEIGHT 128
+#define LCD_DEPTH 16 /* 65536 colours */
+#define LCD_PIXELFORMAT RGB565
+
+/* todo */
+/* #ifndef BOOTLOADER */
+#if 0
+/* Define this if your LCD can be enabled/disabled */
+#define HAVE_LCD_ENABLE
+
+/* Define this if your LCD can be put to sleep. HAVE_LCD_ENABLE
+ * should be defined as well.
+ * We can currently put the lcd to sleep but it won't wake up properly */
+#define HAVE_LCD_SLEEP
+#define HAVE_LCD_SLEEP_SETTING
+#endif
+
+/* Define this for LCD backlight available */
+#define HAVE_BACKLIGHT
+
+/* Define this if your LCD can set contrast */
+/* todo #define HAVE_LCD_CONTRAST */
+
+#define MIN_CONTRAST_SETTING 0
+#define MAX_CONTRAST_SETTING 30
+#define DEFAULT_CONTRAST_SETTING 14 /* Match boot contrast */
+
+/* define this if you can flip your LCD */
+/* todo #define HAVE_LCD_FLIP */
+
+/* define this if you can invert the colours on your LCD */
+/* todo #define HAVE_LCD_INVERT */
+
+/* put the lcd frame buffer in IRAM */
+/* #define IRAM_LCDFRAMEBUFFER IDATA_ATTR */
+
+/* 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
+
+/* define this if you want album art for this target */
+#define HAVE_ALBUMART
+
+/* define this if you have access to the quickscreen */
+#define HAVE_QUICKSCREEN
+
+/* define this if you have access to the pitchscreen */
+#define HAVE_PITCHSCREEN
+
+/* define this if you would like tagcache to build on this target */
+#define HAVE_TAGCACHE
+
+#define CONFIG_KEYPAD SAMSUNG_YH_PAD
+
+/* Define this if you do software codec */
+#define CONFIG_CODEC SWCODEC
+
+/* define this if you have a real-time clock */
+/* todo verify rtc (or none) */
+/* #ifndef BOOTLOADER */
+#if 0
+#define CONFIG_RTC RTC_E8564
+#define HAVE_RTC_ALARM
+#endif
+
+/* 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 if you use an ATA controller */
+#define CONFIG_STORAGE STORAGE_ATA
+
+/* We're able to shut off power to the HDD */
+#ifndef SIMULATOR
+/* todo #define HAVE_ATA_POWER_OFF */
+#endif
+
+/* Define this if you have a software controlled poweroff */
+#define HAVE_SW_POWEROFF
+
+/* The number of bytes reserved for loadable codecs */
+#define CODEC_SIZE 0x100000
+
+/* The number of bytes reserved for loadable plugins */
+#define PLUGIN_BUFFER_SIZE 0x80000
+
+/* Define this if you have the AK4537 audio codec */
+#define HAVE_AK4537
+
+/* AK4537 has no tone controls, so we use the software ones */
+#define HAVE_SW_TONE_CONTROLS
+
+#define AB_REPEAT_ENABLE 1
+
+#define BATTERY_CAPACITY_DEFAULT 1550 /* default battery capacity */
+#define BATTERY_CAPACITY_MIN 1500 /* min. capacity selectable */
+#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */
+#define BATTERY_CAPACITY_INC 50 /* capacity increment */
+#define BATTERY_TYPES_COUNT 1 /* only one type */
+
+/* Hardware controlled charging */
+#define CONFIG_CHARGING CHARGING_SIMPLE
+
+/* define this if the unit can be powered or charged via USB */
+#define HAVE_USB_POWER
+
+#ifndef SIMULATOR
+
+/* Define this if you have a PortalPlayer PP5020 */
+#define CONFIG_CPU PP5020
+
+/* Define this if you want to use the PP5020 i2c interface */
+#define CONFIG_I2C I2C_PP5020
+
+/* define this if the hardware can be powered off while charging */
+#define HAVE_POWEROFF_WHILE_CHARGING
+
+/* The start address index for ROM builds */
+#define ROM_START 0x00000000
+
+/* The size of the flash ROM */
+#define FLASH_SIZE 0x100000
+
+/* Define this to the CPU frequency */
+#define CPU_FREQ 75000000
+
+/* USB On-the-go */
+#define CONFIG_USBOTG USBOTG_ARC
+
+/* enable these for the experimental usb stack */
+#define HAVE_USBSTACK
+#define USE_ROCKBOX_USB
+/* todo - check */
+#define USB_VENDOR_ID 0x04e8
+#define USB_PRODUCT_ID 0x5024
+
+/* Virtual LED (icon) */
+#define CONFIG_LED LED_VIRTUAL
+
+/* Define this if you have adjustable CPU frequency */
+#define HAVE_ADJUSTABLE_CPU_FREQ
+
+#define MI4_FORMAT
+#define BOOTFILE_EXT "mi4"
+#define BOOTFILE "rockbox." BOOTFILE_EXT
+#define BOOTDIR "/.rockbox"
+
+/* Offset ( in the firmware file's header ) to the file CRC */
+#define FIRMWARE_OFFSET_FILE_CRC 0x00
+
+/* Offset ( in the firmware file's header ) to the real data */
+#define FIRMWARE_OFFSET_FILE_DATA 0x00
+
+#define ICODE_ATTR_TREMOR_NOT_MDCT
+
+#endif /* !SIMULATOR */
diff --git a/firmware/export/config.h b/firmware/export/config.h
index ff9a8e9589..56cd2dec94 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -109,6 +109,7 @@
#define SANSA_CLIP_PAD 35
#define SANSA_FUZE_PAD 36
#define LYRE_PROTO1_PAD 37
+#define SAMSUNG_YH_PAD 38
/* CONFIG_REMOTE_KEYPAD */
#define H100_REMOTE 1
@@ -185,7 +186,8 @@
#define LCD_SSD1303 31 /* as used by the Sansa Clip */
#define LCD_FUZE 32 /* as used by the Sansa Fuze */
#define LCD_LYRE_PROTO1 33 /* as used by the Lyre */
-
+#define LCD_YH925 34 /* as used by Samsung YH-925 (similar to the H10 20GB) */
+
/* LCD_PIXELFORMAT */
#define HORIZONTAL_PACKING 1
#define VERTICAL_PACKING 2
@@ -364,6 +366,12 @@ Lyre prototype 1*/
#include "config-c200v2.h"
#elif defined(LYRE_PROTO1)
#include "config-lyre_proto1.h"
+#elif defined(SAMSUNG_YH820)
+#include "config-yh820.h"
+#elif defined(SAMSUNG_YH920)
+#include "config-yh920.h"
+#elif defined(SAMSUNG_YH925)
+#include "config-yh925.h"
#else
/* no known platform */
#endif
diff --git a/firmware/export/usb.h b/firmware/export/usb.h
index 42893c3468..557639c622 100644
--- a/firmware/export/usb.h
+++ b/firmware/export/usb.h
@@ -84,6 +84,9 @@ enum {
#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
#define USBPOWER_BUTTON BUTTON_PLAYLIST
#define USBPOWER_BTN_IGNORE BUTTON_POWER
+#elif CONFIG_KEYPAD == SAMSUNG_YH_PAD
+#define USBPOWER_BUTTON BUTTON_RIGHT
+#define USBPOWER_BTN_IGNORE BUTTON_LEFT
#endif
#endif /* HAVE_USB_POWER */