summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2014-06-22 12:55:41 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2014-06-24 18:07:55 +0200
commitd5591a2b28c4052c9cb7688ce09e66aa6add05bf (patch)
tree32957239734f2d44d456c51acb99864a7b67a460 /firmware
parentcd4fb9ee798ccb11863aa98531852c2405bb6f8c (diff)
downloadrockbox-d5591a2b28c4052c9cb7688ce09e66aa6add05bf.tar.gz
rockbox-d5591a2b28c4052c9cb7688ce09e66aa6add05bf.zip
zen/zenxfi: switch lcd driver to 24-bit mode
Change-Id: I2c42f0e422130bcdaf1aaf92c7b56776752f4f64
Diffstat (limited to 'firmware')
-rw-r--r--firmware/SOURCES1
-rw-r--r--firmware/asm/SOURCES3
-rw-r--r--firmware/export/config/creativezen.h6
-rw-r--r--firmware/export/config/creativezenxfi.h6
-rw-r--r--firmware/target/arm/imx233/creative-zen/lcd-target.h5
-rw-r--r--firmware/target/arm/imx233/creative-zen/lcd-zen.c41
-rw-r--r--firmware/target/arm/imx233/creative-zen/lcd-zenmozaic.c2
-rw-r--r--firmware/target/arm/imx233/creative-zen/lcd-zenv.c2
8 files changed, 21 insertions, 45 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES
index b8471dc37d..5e37892efe 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -1189,6 +1189,7 @@ target/arm/imx233/fmradio-imx233.c
1189#endif 1189#endif
1190target/arm/imx233/creative-zen/backlight-zen.c 1190target/arm/imx233/creative-zen/backlight-zen.c
1191# if defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) 1191# if defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI)
1192drivers/lcd-memframe.c
1192target/arm/imx233/creative-zen/lcd-zen.c 1193target/arm/imx233/creative-zen/lcd-zen.c
1193# elif defined(CREATIVE_ZENMOZAIC) 1194# elif defined(CREATIVE_ZENMOZAIC)
1194target/arm/imx233/creative-zen/lcd-zenmozaic.c 1195target/arm/imx233/creative-zen/lcd-zenmozaic.c
diff --git a/firmware/asm/SOURCES b/firmware/asm/SOURCES
index d74d4d3c60..a9293b4297 100644
--- a/firmware/asm/SOURCES
+++ b/firmware/asm/SOURCES
@@ -10,7 +10,8 @@ strlen.c
10#if (defined(SANSA_E200) || defined(GIGABEAT_F) || defined(GIGABEAT_S) || \ 10#if (defined(SANSA_E200) || defined(GIGABEAT_F) || defined(GIGABEAT_S) || \
11 defined(CREATIVE_ZVx) || defined(SANSA_CONNECT) || defined(SANSA_FUZEPLUS) || \ 11 defined(CREATIVE_ZVx) || defined(SANSA_CONNECT) || defined(SANSA_FUZEPLUS) || \
12 defined(COWON_D2) || defined(MINI2440) || defined(SAMSUNG_YPR0) || \ 12 defined(COWON_D2) || defined(MINI2440) || defined(SAMSUNG_YPR0) || \
13 defined(SAMSUNG_YPR1) || (defined(MROBE_500) && !defined(LCD_USE_DMA))) && \ 13 defined(SAMSUNG_YPR1) || (defined(MROBE_500) && !defined(LCD_USE_DMA)) || \
14 defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI)) && \
14 !defined(SIMULATOR) 15 !defined(SIMULATOR)
15#if LCD_DEPTH == 24 16#if LCD_DEPTH == 24
16lcd-as-memframe-24bit.c 17lcd-as-memframe-24bit.c
diff --git a/firmware/export/config/creativezen.h b/firmware/export/config/creativezen.h
index e41a246ccf..5b89438691 100644
--- a/firmware/export/config/creativezen.h
+++ b/firmware/export/config/creativezen.h
@@ -95,10 +95,8 @@
95#define LCD_HEIGHT 240 95#define LCD_HEIGHT 240
96/* sqrt(320^2 + 240^2) / 2.5 = 160.0 */ 96/* sqrt(320^2 + 240^2) / 2.5 = 160.0 */
97#define LCD_DPI 160 97#define LCD_DPI 160
98#define LCD_DEPTH 16 /* 65536 colours */ 98#define LCD_DEPTH 24 /* 65536 colours */
99#define LCD_PIXELFORMAT RGB565 /* rgb565 */ 99#define LCD_PIXELFORMAT RGB888 /* rgb565 */
100/* framebuffer uses 24-bit/pix */
101#define IMX233_FRAMEBUFFER_SIZE (LCD_WIDTH * LCD_HEIGHT * 3)
102 100
103/* Define this if you have a software controlled poweroff */ 101/* Define this if you have a software controlled poweroff */
104#define HAVE_SW_POWEROFF 102#define HAVE_SW_POWEROFF
diff --git a/firmware/export/config/creativezenxfi.h b/firmware/export/config/creativezenxfi.h
index d70a452312..f74a2ca165 100644
--- a/firmware/export/config/creativezenxfi.h
+++ b/firmware/export/config/creativezenxfi.h
@@ -102,10 +102,8 @@
102#define LCD_HEIGHT 240 102#define LCD_HEIGHT 240
103/* sqrt(320^2 + 240^2) / 2.5 = 160.0 */ 103/* sqrt(320^2 + 240^2) / 2.5 = 160.0 */
104#define LCD_DPI 160 104#define LCD_DPI 160
105#define LCD_DEPTH 16 /* 65536 colours */ 105#define LCD_DEPTH 24 /* 65536 colours */
106#define LCD_PIXELFORMAT RGB565 /* rgb565 */ 106#define LCD_PIXELFORMAT RGB888 /* rgb565 */
107/* framebuffer uses 24-bit/pix */
108#define IMX233_FRAMEBUFFER_SIZE (LCD_WIDTH * LCD_HEIGHT * 3)
109 107
110/* Define this if you have a software controlled poweroff */ 108/* Define this if you have a software controlled poweroff */
111#define HAVE_SW_POWEROFF 109#define HAVE_SW_POWEROFF
diff --git a/firmware/target/arm/imx233/creative-zen/lcd-target.h b/firmware/target/arm/imx233/creative-zen/lcd-target.h
index b28bda347a..299ffa3dfb 100644
--- a/firmware/target/arm/imx233/creative-zen/lcd-target.h
+++ b/firmware/target/arm/imx233/creative-zen/lcd-target.h
@@ -23,4 +23,9 @@
23 23
24bool lcd_debug_screen(void); 24bool lcd_debug_screen(void);
25 25
26#if defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI)
27#define LCD_FRAMEBUF_ADDR(col, row) (row*LCD_WIDTH + col + (fb_data *)FRAME)
28extern void lcd_set_active(bool active);
29#endif
30
26#endif /* LCD_TARGET_H */ 31#endif /* LCD_TARGET_H */
diff --git a/firmware/target/arm/imx233/creative-zen/lcd-zen.c b/firmware/target/arm/imx233/creative-zen/lcd-zen.c
index 6482c58787..c594209db9 100644
--- a/firmware/target/arm/imx233/creative-zen/lcd-zen.c
+++ b/firmware/target/arm/imx233/creative-zen/lcd-zen.c
@@ -30,16 +30,14 @@
30#include "clkctrl-imx233.h" 30#include "clkctrl-imx233.h"
31#include "pinctrl-imx233.h" 31#include "pinctrl-imx233.h"
32#include "dma-imx233.h" 32#include "dma-imx233.h"
33#include "regs/regs-uartdbg.h"
34#include "logf.h" 33#include "logf.h"
34#include "lcd-target.h"
35#ifndef BOOTLOADER 35#ifndef BOOTLOADER
36#include "button.h" 36#include "button.h"
37#include "font.h" 37#include "font.h"
38#include "action.h" 38#include "action.h"
39#endif 39#endif
40 40
41static bool lcd_on;
42
43/** 41/**
44 * DMA 42 * DMA
45 */ 43 */
@@ -170,7 +168,7 @@ static void lcd_power_seq(void)
170static void lcd_init_seq(void) 168static void lcd_init_seq(void)
171{ 169{
172 /* NOTE I don't understand why I have to use BGR, logic would say I should not */ 170 /* NOTE I don't understand why I have to use BGR, logic would say I should not */
173 spi_write_reg(0x1, 0x2b1d);// inversion 171 spi_write_reg(0x1, 0x231d);// no inversion
174 spi_write_reg(0x2, 0x300); 172 spi_write_reg(0x2, 0x300);
175 /* NOTE by default stmp3700 has vsync/hsync active low and data launch 173 /* NOTE by default stmp3700 has vsync/hsync active low and data launch
176 * at negative edge of dotclk, reflect this in the polarity settings */ 174 * at negative edge of dotclk, reflect this in the polarity settings */
@@ -225,18 +223,13 @@ static void lcd_display_off_seq(void)
225 * Rockbox 223 * Rockbox
226 */ 224 */
227 225
228bool lcd_active(void)
229{
230 return lcd_on;
231}
232
233void lcd_enable(bool enable) 226void lcd_enable(bool enable)
234{ 227{
235 if(lcd_on == enable) 228 if(lcd_active() == enable)
236 return; 229 return;
237 230
238 lcd_on = enable; 231 lcd_set_active(enable);
239 if(lcd_on) 232 if(lcd_active())
240 { 233 {
241 // enable spi 234 // enable spi
242 spi_enable(true); 235 spi_enable(true);
@@ -341,27 +334,3 @@ void lcd_init_device(void)
341 // enable 334 // enable
342 lcd_enable(true); 335 lcd_enable(true);
343} 336}
344
345void lcd_update(void)
346{
347 lcd_update_rect(0, 0, LCD_WIDTH, LCD_HEIGHT);
348}
349
350void lcd_update_rect(int x, int y, int w, int h)
351{
352 #ifdef HAVE_LCD_ENABLE
353 if(!lcd_on)
354 return;
355 #endif
356 for(int yy = y; yy < y + h; yy++)
357 {
358 uint16_t *pix = FBADDR(x, yy);
359 uint8_t *p = 3 * (yy * LCD_WIDTH + x) + (uint8_t *)FRAME;
360 for(int xx = 0; xx < w; xx++, pix++)
361 {
362 *p++ = RGB_UNPACK_RED(*pix);
363 *p++ = RGB_UNPACK_GREEN(*pix);
364 *p++ = RGB_UNPACK_BLUE(*pix);
365 }
366 }
367}
diff --git a/firmware/target/arm/imx233/creative-zen/lcd-zenmozaic.c b/firmware/target/arm/imx233/creative-zen/lcd-zenmozaic.c
index eac36676ae..c1bc379a49 100644
--- a/firmware/target/arm/imx233/creative-zen/lcd-zenmozaic.c
+++ b/firmware/target/arm/imx233/creative-zen/lcd-zenmozaic.c
@@ -127,6 +127,8 @@ void lcd_enable(bool enable)
127 return; 127 return;
128 128
129 lcd_on = enable; 129 lcd_on = enable;
130 if(enable)
131 send_event(LCD_EVENT_ACTIVATION, NULL);
130} 132}
131#endif 133#endif
132 134
diff --git a/firmware/target/arm/imx233/creative-zen/lcd-zenv.c b/firmware/target/arm/imx233/creative-zen/lcd-zenv.c
index 3bc8e67e5d..06b0f158f3 100644
--- a/firmware/target/arm/imx233/creative-zen/lcd-zenv.c
+++ b/firmware/target/arm/imx233/creative-zen/lcd-zenv.c
@@ -138,6 +138,8 @@ void lcd_enable(bool enable)
138 return; 138 return;
139 139
140 lcd_on = enable; 140 lcd_on = enable;
141 if(enable)
142 send_event(LCD_EVENT_ACTIVATION, NULL);
141} 143}
142#endif 144#endif
143 145