summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Ryabinin <ryabinin.a.a@gmail.com>2013-10-27 22:34:24 +0400
committerAndrew Ryabinin <ryabinin.a.a@gmail.com>2013-11-05 09:59:45 +0400
commitd602717735b09cdd39e4e8c75d69ce8c5e2d957d (patch)
treefd22483f6d11f41daeec6a4668e5007ed4481e9a
parentb48e6d0e1c7e533d3da5519a9b0d76026db14f4d (diff)
downloadrockbox-d602717735b09cdd39e4e8c75d69ce8c5e2d957d.tar.gz
rockbox-d602717735b09cdd39e4e8c75d69ce8c5e2d957d.zip
Introduce HiFi E.T. MA9C port.
The only difference between this target and HiFi E.T. MA9 is display driver (ILI9342 in MA9 and ILI9342c in MA9C) Change-Id: Icc3d2490f850902a653175360f12283f3708bbb7
-rw-r--r--bootloader/SOURCES3
-rw-r--r--firmware/SOURCES4
-rw-r--r--firmware/export/config.h3
-rw-r--r--firmware/export/config/hifietma9c.h153
-rw-r--r--firmware/target/arm/rk27xx/backlight-rk27xx.c2
-rw-r--r--firmware/target/arm/rk27xx/debug-rk27xx.c2
-rw-r--r--firmware/target/arm/rk27xx/ma/lcd-ma.c81
-rw-r--r--firmware/target/arm/rk27xx/sd-rk27xx.c2
-rwxr-xr-xtools/configure25
9 files changed, 268 insertions, 7 deletions
diff --git a/bootloader/SOURCES b/bootloader/SOURCES
index e2f23bac6d..9db5965786 100644
--- a/bootloader/SOURCES
+++ b/bootloader/SOURCES
@@ -67,7 +67,8 @@ main-pp.c
show_logo.c
#elif defined(MPIO_HD200) || defined(MPIO_HD300)
mpio_hd200_hd300.c
-#elif defined(RK27_GENERIC) || defined(HM60X) || defined(HM801) || defined(MA9)
+#elif defined(RK27_GENERIC) || defined(HM60X) || defined(HM801) \
+ || defined(MA9) || defined(MA9C)
rk27xx.c
show_logo.c
#elif defined(SANSA_CONNECT)
diff --git a/firmware/SOURCES b/firmware/SOURCES
index 2a9ae0c266..d8b2795f59 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -705,7 +705,7 @@ target/arm/ipod/lcd-gray.c
target/arm/imx31/gigabeat-s/lcd-gigabeat-s.c
#elif CONFIG_LCD == LCD_GIGABEAT || CONFIG_LCD == LCD_MINI2440
target/arm/s3c2440/lcd-s3c2440.c
-#elif CONFIG_LCD == LCD_ILI9342
+#elif CONFIG_LCD == LCD_ILI9342 || CONFIG_LCD == LCD_ILI9342C
target/arm/rk27xx/ma/lcd-ma.c
#endif
@@ -1745,7 +1745,7 @@ target/arm/rk27xx/hm801/powermgmt-hm801.c
target/arm/rk27xx/hm801/power-hm801.c
#endif
-#if defined(MA9)
+#if defined(MA9) || defined(MA9C)
target/arm/rk27xx/ma/button-ma.c
target/arm/rk27xx/ma/powermgmt-ma.c
target/arm/rk27xx/ma/power-ma.c
diff --git a/firmware/export/config.h b/firmware/export/config.h
index a5c199484b..9c6f1f73c5 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -256,6 +256,7 @@
#define LCD_NWZE360 52 /* as used by Sony NWZ-E360 series */
#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_ILI9342C 57 /* another type of lcd used by HiFi E.T MA9/MA8 */
/* LCD_PIXELFORMAT */
#define HORIZONTAL_PACKING 1
@@ -532,6 +533,8 @@ Lyre prototype 1 */
#include "config/creativezen.h"
#elif defined(MA9)
#include "config/hifietma9.h"
+#elif defined(MA9C)
+#include "config/hifietma9c.h"
#elif defined(SONY_NWZE370)
#include "config/sonynwze370.h"
#elif defined(SONY_NWZE360)
diff --git a/firmware/export/config/hifietma9c.h b/firmware/export/config/hifietma9c.h
new file mode 100644
index 0000000000..6162aa2762
--- /dev/null
+++ b/firmware/export/config/hifietma9c.h
@@ -0,0 +1,153 @@
+/*
+ * This config file is for HiFi E.T. MA9 reference design
+ */
+
+/* For Rolo and boot loader */
+#define MODEL_NUMBER 84
+
+#define MODEL_NAME "HiFi E.T. MA9C"
+
+/* define the bitmask of hardware sample rates */
+#define HW_SAMPR_CAPS (SAMPR_CAP_96 | SAMPR_CAP_48 | SAMPR_CAP_44 | \
+ SAMPR_CAP_32 | SAMPR_CAP_24 | SAMPR_CAP_22 | \
+ SAMPR_CAP_16 | SAMPR_CAP_12 | SAMPR_CAP_11 | SAMPR_CAP_8)
+
+#define HAVE_DF1704_CODEC
+
+#define CODEC_SLAVE
+/* define this if you have a bitmap LCD display */
+#define HAVE_LCD_BITMAP
+
+/* define this if you can flip your LCD */
+/* #define HAVE_LCD_FLIP */
+
+/* define this if you have a colour LCD */
+#define HAVE_LCD_COLOR
+
+/* define this if you want album art for this target */
+#define HAVE_ALBUMART
+
+/* define this to enable bitmap scaling */
+#define HAVE_BMP_SCALING
+
+/* define this to enable JPEG decoding */
+#define HAVE_JPEG
+
+/* define this if you can invert the colours on your LCD */
+/* #define HAVE_LCD_INVERT */
+
+/* define this if you have access to the quickscreen */
+#define HAVE_QUICKSCREEN
+
+/* define this if you would like tagcache to build on this target */
+#define HAVE_TAGCACHE
+
+/* define this if you have a flash memory storage */
+#define HAVE_FLASH_STORAGE
+
+#define CONFIG_STORAGE (STORAGE_SD | STORAGE_NAND)
+
+#define CONFIG_NAND NAND_RK27XX
+#define HAVE_SW_TONE_CONTROLS
+
+/* commented for now */
+/* #define HAVE_HOTSWAP */
+
+#define NUM_DRIVES 2
+#define SECTOR_SIZE 512
+
+/* for small(ish) SD cards */
+#define HAVE_FAT16SUPPORT
+
+/* LCD dimensions */
+#define LCD_WIDTH 320
+#define LCD_HEIGHT 240
+#define LCD_DEPTH 16 /* pseudo 262.144 colors */
+#define LCD_PIXELFORMAT RGB565 /* rgb565 */
+
+/* Define this if your LCD can be enabled/disabled */
+#define HAVE_LCD_ENABLE
+
+#define CONFIG_KEYPAD MA_PAD
+
+/* Define this to enable morse code input */
+#define HAVE_MORSE_INPUT
+
+/* Define this if you do software codec */
+#define CONFIG_CODEC SWCODEC
+
+#define CONFIG_LCD LCD_ILI9342C
+
+/* Define this for LCD backlight available */
+#define HAVE_BACKLIGHT
+#define HAVE_BACKLIGHT_BRIGHTNESS
+#define MIN_BRIGHTNESS_SETTING 0
+#define MAX_BRIGHTNESS_SETTING 31
+#define DEFAULT_BRIGHTNESS_SETTING 31
+#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_HW_REG
+
+/* 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
+
+/* TODO: Figure out real values */
+#define BATTERY_CAPACITY_DEFAULT 600 /* default battery capacity */
+#define BATTERY_CAPACITY_MIN 300 /* min. capacity selectable */
+#define BATTERY_CAPACITY_MAX 600 /* max. capacity selectable */
+#define BATTERY_CAPACITY_INC 10 /* capacity increment */
+#define BATTERY_TYPES_COUNT 1 /* only one type */
+
+#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
+
+/* Hardware controlled charging with monitoring */
+#define CONFIG_CHARGING CHARGING_MONITOR
+
+/* USB On-the-go */
+#define CONFIG_USBOTG USBOTG_RK27XX
+
+/* enable these for the experimental usb stack */
+#define HAVE_USBSTACK
+
+#define USE_ROCKBOX_USB
+#define USB_VENDOR_ID 0x071b
+#define USB_PRODUCT_ID 0x3202
+#define HAVE_BOOTLOADER_USB_MODE
+
+/* Define this if your LCD can set contrast */
+/* #define HAVE_LCD_CONTRAST */
+
+/* The exact type of CPU */
+#define CONFIG_CPU RK27XX
+
+/* I2C interface */
+#define CONFIG_I2C I2C_RK27XX
+
+/* Define this to the CPU frequency */
+#define CPU_FREQ 200000000
+
+/* define this if the hardware can be powered off while charging */
+/* #define HAVE_POWEROFF_WHILE_CHARGING */
+
+/* Offset ( in the firmware file's header ) to the file CRC */
+#define FIRMWARE_OFFSET_FILE_CRC 0
+
+/* Offset ( in the firmware file's header ) to the real data */
+#define FIRMWARE_OFFSET_FILE_DATA 8
+
+#define STORAGE_NEEDS_ALIGN
+
+/* Define this if you have adjustable CPU frequency */
+#define HAVE_ADJUSTABLE_CPU_FREQ
+
+/* Virtual LED (icon) */
+#define CONFIG_LED LED_VIRTUAL
+
+#define RKW_FORMAT
+#define BOOTFILE_EXT "rkw"
+#define BOOTFILE "rockbox." BOOTFILE_EXT
+#define BOOTDIR "/.rockbox"
diff --git a/firmware/target/arm/rk27xx/backlight-rk27xx.c b/firmware/target/arm/rk27xx/backlight-rk27xx.c
index 9ea9c9984e..8c10d7af2a 100644
--- a/firmware/target/arm/rk27xx/backlight-rk27xx.c
+++ b/firmware/target/arm/rk27xx/backlight-rk27xx.c
@@ -61,7 +61,7 @@ static const unsigned short lin_brightness[] = {
562, 579, 596, 616, 637, 660, 684, 711,
739, 770, 802, 837, 874, 914, 955, 1000
};
-#elif defined(MA9)
+#elif defined(MA9) || defined(MA9C)
static const unsigned short lin_brightness[] = {
2, 4, 7, 10, 15, 21, 28, 36,
46, 58, 72, 87, 104, 124, 146, 171,
diff --git a/firmware/target/arm/rk27xx/debug-rk27xx.c b/firmware/target/arm/rk27xx/debug-rk27xx.c
index a73ca05c77..9f91f58f14 100644
--- a/firmware/target/arm/rk27xx/debug-rk27xx.c
+++ b/firmware/target/arm/rk27xx/debug-rk27xx.c
@@ -32,7 +32,7 @@
#ifdef RK27_GENERIC
#define DEBUG_CANCEL BUTTON_VOL
-#elif defined(HM60X) || defined(HM801) || defined(MA9)
+#elif defined(HM60X) || defined(HM801) || defined(MA_PAD)
#define DEBUG_CANCEL BUTTON_LEFT
#endif
diff --git a/firmware/target/arm/rk27xx/ma/lcd-ma.c b/firmware/target/arm/rk27xx/ma/lcd-ma.c
index a35f13ba3a..3fecce2d18 100644
--- a/firmware/target/arm/rk27xx/ma/lcd-ma.c
+++ b/firmware/target/arm/rk27xx/ma/lcd-ma.c
@@ -27,8 +27,88 @@
#include "cpu.h"
#include "lcdif-rk27xx.h"
+#define ILI9342 0
+#define ILI9342C 1
+#define LCD_DRIVER ILI9342C
+
static bool display_on = false;
+#if (CONFIG_LCD == LCD_ILI9342C)
+void lcd_display_init(void)
+{
+ unsigned int x, y;
+
+ lcd_cmd(0xC8);
+ lcd_data(0xFF);
+ lcd_data(0x93);
+ lcd_data(0x42);
+
+ lcd_write_reg(0x36, 0xC8);
+
+ lcd_write_reg(0x3A, 0x55);
+
+ lcd_cmd(0xC0);
+ lcd_data(0x14);
+ lcd_data(0x0E);
+
+ lcd_write_reg(0xC1, 0x01);
+
+ lcd_write_reg(0xC5, 0xF4);
+
+ lcd_cmd(0xB1);
+ lcd_data(0x00);
+ lcd_data(0x1B);
+
+ lcd_write_reg(0xB4, 0x02);
+
+ lcd_cmd(0xE0);
+ lcd_data(0x00);
+ lcd_data(0x0A);
+ lcd_data(0x11);
+ lcd_data(0x08);
+ lcd_data(0x16);
+ lcd_data(0x0A);
+ lcd_data(0x3C);
+ lcd_data(0x9B);
+ lcd_data(0x4A);
+ lcd_data(0x09);
+ lcd_data(0x0E);
+ lcd_data(0x0A);
+ lcd_data(0x1C);
+ lcd_data(0x1D);
+ lcd_data(0x0F);
+
+ lcd_cmd(0xE1);
+ lcd_data(0x00);
+ lcd_data(0x23);
+ lcd_data(0x25);
+ lcd_data(0x04);
+ lcd_data(0x10);
+ lcd_data(0x07);
+ lcd_data(0x39);
+ lcd_data(0x46);
+ lcd_data(0x4A);
+ lcd_data(0x03);
+ lcd_data(0x0C);
+ lcd_data(0x0A);
+ lcd_data(0x31);
+ lcd_data(0x36);
+ lcd_data(0x0F);
+
+ /* exit sleep */
+ lcd_cmd(0x11);
+ udelay(5000);
+ lcd_cmd(0x29);
+
+ lcd_cmd(0x2C);
+ for (x = 0; x < LCD_WIDTH; x++)
+ for(y=0; y < LCD_HEIGHT; y++)
+ lcd_data(0x00);
+
+ display_on = true;
+}
+
+#elif (CONFIG_LCD == LCD_ILI9342)
void lcd_display_init(void)
{
@@ -131,6 +211,7 @@ void lcd_display_init(void)
display_on = true;
}
+#endif
void lcd_enable (bool on)
{
diff --git a/firmware/target/arm/rk27xx/sd-rk27xx.c b/firmware/target/arm/rk27xx/sd-rk27xx.c
index ef9845d696..39a4330d2a 100644
--- a/firmware/target/arm/rk27xx/sd-rk27xx.c
+++ b/firmware/target/arm/rk27xx/sd-rk27xx.c
@@ -132,7 +132,7 @@ static inline bool card_detect_target(void)
return !(GPIO_PCDR & 0x80);
#elif defined(HM60X) || defined(HM801)
return !(GPIO_PFDR & (1<<2));
-#elif defined(MA9)
+#elif defined(MA9) || defined(MA9C)
return (GPIO_PCDR & 0x80);
#else
#error "Unknown target"
diff --git a/tools/configure b/tools/configure
index 437a70bb2f..368a18611d 100755
--- a/tools/configure
+++ b/tools/configure
@@ -1330,7 +1330,7 @@ cat <<EOF
200) SDL 190) HM-60x
201) Android ==HiFi E.T.== 191) HM-801
202) Nokia N8xx 210) MA9
- 203) Nokia N900 ==Sony==
+ 203) Nokia N900 211) MA9C ==Sony==
204) Pandora 220) NWZ-E370 series
205) Samsung YP-R0 221) NWZ-E360 series
206) Android MIPS
@@ -3498,6 +3498,29 @@ fi
t_model="ma"
;;
+ 211|hifietma9c)
+ target_id=84
+ modelname="hifietma9c"
+ target="MA9C"
+ memory=16
+ arm7ejscc
+ tool="$rootdir/tools/scramble -rkw -modelnum=84"
+ bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
+ bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
+ output="rockbox.rkw"
+ bootoutput="bootloader.rkw"
+ appextra="recorder:gui"
+ plugins=""
+ swcodec="yes"
+ # toolset is the tools within the tools directory that we build for
+ # this particular target.
+ toolset="$genericbitmaptools"
+ # architecture, manufacturer and model for the target-tree build
+ t_cpu="arm"
+ t_manufacturer="rk27xx"
+ t_model="ma"
+ ;;
+
220|sonynwze370)
target_id=88
modelname="sonynwze370"