summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm
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 /firmware/target/arm
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
Diffstat (limited to 'firmware/target/arm')
-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
4 files changed, 84 insertions, 3 deletions
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"