summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaurus Cuelenaere <mcuelenaere@gmail.com>2008-07-16 13:56:41 +0000
committerMaurus Cuelenaere <mcuelenaere@gmail.com>2008-07-16 13:56:41 +0000
commit753cac37b791ce4f744404cd82f4eab98dc56d82 (patch)
tree289075f74f4ed6b8b4f3e344da0e6a3afd4d3ab6
parente3b2f4ffeda7b804a16125e26918c7cdbcecdac9 (diff)
downloadrockbox-753cac37b791ce4f744404cd82f4eab98dc56d82.tar.gz
rockbox-753cac37b791ce4f744404cd82f4eab98dc56d82.zip
Implement working lcd_off/lcd_on routine
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18070 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/export/r61509.h17
-rw-r--r--firmware/target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c52
2 files changed, 60 insertions, 9 deletions
diff --git a/firmware/export/r61509.h b/firmware/export/r61509.h
index 8ca3b6d00b..519ad3ec86 100644
--- a/firmware/export/r61509.h
+++ b/firmware/export/r61509.h
@@ -106,9 +106,24 @@
106#define ENTRY_MODE_AM (1 << 3) 106#define ENTRY_MODE_AM (1 << 3)
107#define ENTRY_MODE_EPF(n) (n & 3) 107#define ENTRY_MODE_EPF(n) (n & 3)
108 108
109#define DISP_CTRL1_PTDE(n) ((n & 4) << 12)
110#define DISP_CTRL1_BASEE (1 << 8)
111#define DISP_CTRL1_VON (1 << 6)
112#define DISP_CTRL1_GON (1 << 5)
113#define DISP_CTRL1_DTE (1 << 4)
114#define DISP_CTRL1_D(n) (n & 3)
115
116#define PWR_CTRL1_SAP(n) ((n & 3) << 13)
117#define PWR_CTRL1_SAPE (1 << 12)
118#define PWR_CTRL1_BT(n) ((n & 7) << 8)
119#define PWR_CTRL1_APE (1 << 7)
120#define PWR_CTRL1_AP(n) ((n & 7) << 4)
121#define PWR_CTRL1_DSTB (1 << 2)
122#define PWR_CTRL1_SLP (1 << 1)
123
109#define SOFT_RESET(n) (n << 0) 124#define SOFT_RESET(n) (n << 0)
110 125
111#define ENDIAN_CTRL_BIG 126#define ENDIAN_CTRL_BIG
112#define ENDIAN_CTRL_LITTLE 127#define ENDIAN_CTRL_LITTLE
113 128
114#endif /* __R61509_H */ \ No newline at end of file 129#endif /* __R61509_H */
diff --git a/firmware/target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c b/firmware/target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c
index 871f2f0861..e99bc178f1 100644
--- a/firmware/target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c
+++ b/firmware/target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c
@@ -57,7 +57,7 @@ static void _display_pin_init(void)
57#define SLCD_SET_DATA(x) WAIT_ON_SLCD; REG_SLCD_DATA = (x) | SLCD_DATA_RS_DATA; 57#define SLCD_SET_DATA(x) WAIT_ON_SLCD; REG_SLCD_DATA = (x) | SLCD_DATA_RS_DATA;
58#define SLCD_SET_COMMAND(x) WAIT_ON_SLCD; REG_SLCD_DATA = (x) | SLCD_DATA_RS_COMMAND; 58#define SLCD_SET_COMMAND(x) WAIT_ON_SLCD; REG_SLCD_DATA = (x) | SLCD_DATA_RS_COMMAND;
59#define SLCD_SEND_COMMAND(cmd,val) SLCD_SET_COMMAND(cmd); SLCD_SET_DATA(val); 59#define SLCD_SEND_COMMAND(cmd,val) SLCD_SET_COMMAND(cmd); SLCD_SET_DATA(val);
60static void _display_on(void) 60static void _display_init(void)
61{ 61{
62 int i; 62 int i;
63 63
@@ -75,7 +75,7 @@ static void _display_on(void)
75 SLCD_SEND_COMMAND(REG_LPCTRL, 0x10); 75 SLCD_SEND_COMMAND(REG_LPCTRL, 0x10);
76 SLCD_SEND_COMMAND(REG_EXT_DISP_CTRL1, 0); 76 SLCD_SEND_COMMAND(REG_EXT_DISP_CTRL1, 0);
77 SLCD_SEND_COMMAND(REG_EXT_DISP_CTRL2, 0); 77 SLCD_SEND_COMMAND(REG_EXT_DISP_CTRL2, 0);
78 SLCD_SEND_COMMAND(REG_DISP_CTRL1, 1); 78 SLCD_SEND_COMMAND(REG_DISP_CTRL1, DISP_CTRL1_D(1));
79 SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL1, 0x12); 79 SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL1, 0x12);
80 SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL2, 0x202); 80 SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL2, 0x202);
81 SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL3, 0x300); 81 SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL3, 0x300);
@@ -83,7 +83,7 @@ static void _display_on(void)
83 SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL5, 0x202); 83 SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL5, 0x202);
84 SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL6, 0x100); 84 SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL6, 0x100);
85 SLCD_SEND_COMMAND(REG_FRM_MRKR_CTRL, 0x8000); 85 SLCD_SEND_COMMAND(REG_FRM_MRKR_CTRL, 0x8000);
86 SLCD_SEND_COMMAND(REG_PWR_CTRL1, 0x16b0); 86 SLCD_SEND_COMMAND(REG_PWR_CTRL1, (PWR_CTRL1_SAPE | PWR_CTRL1_BT(6) | PWR_CTRL1_APE | PWR_CTRL1_AP(3)));
87 SLCD_SEND_COMMAND(REG_PWR_CTRL2, 0x147); 87 SLCD_SEND_COMMAND(REG_PWR_CTRL2, 0x147);
88 SLCD_SEND_COMMAND(REG_PWR_CTRL3, 0x1bd); 88 SLCD_SEND_COMMAND(REG_PWR_CTRL3, 0x1bd);
89 SLCD_SEND_COMMAND(REG_PWR_CTRL4, 0x2f00); 89 SLCD_SEND_COMMAND(REG_PWR_CTRL4, 0x2f00);
@@ -131,12 +131,48 @@ static void _display_on(void)
131 SLCD_SEND_COMMAND(0x7f5, 1); 131 SLCD_SEND_COMMAND(0x7f5, 1);
132 SLCD_SEND_COMMAND(0x7f0, 0); 132 SLCD_SEND_COMMAND(0x7f0, 0);
133 133
134 SLCD_SEND_COMMAND(REG_DISP_CTRL1, 0x173); 134 /* LCD ON: */
135 SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_BASEE | DISP_CTRL1_VON
136 | DISP_CTRL1_GON | DISP_CTRL1_DTE | DISP_CTRL1_D(3))
137 );
138 SLEEP(3500000);
139 SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_BASEE | DISP_CTRL1_VON
140 | DISP_CTRL1_GON | DISP_CTRL1_DTE | DISP_CTRL1_D(2))
141 );
142 SLEEP(3500000);
143 SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_BASEE | DISP_CTRL1_VON
144 | DISP_CTRL1_GON | DISP_CTRL1_DTE | DISP_CTRL1_D(3))
145 );
146 SLEEP(3500000);
147}
148
149static void _display_on(void)
150{
151 int i;
152 SLCD_SEND_COMMAND(REG_PWR_CTRL1, (PWR_CTRL1_SAPE | PWR_CTRL1_BT(6) | PWR_CTRL1_APE | PWR_CTRL1_AP(3)));
153 SLEEP(3500000);
154 SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_VON | DISP_CTRL1_GON
155 | DISP_CTRL1_D(1))
156 );
157 SLEEP(3500000);
158 SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_VON | DISP_CTRL1_GON
159 | DISP_CTRL1_DTE | DISP_CTRL1_D(3)
160 | DISP_CTRL1_BASEE)
161 );
162}
163
164static void _display_off(void)
165{
166 int i;
167 SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_VON | DISP_CTRL1_GON
168 | DISP_CTRL1_DTE | DISP_CTRL1_D(2))
169 );
135 SLEEP(3500000); 170 SLEEP(3500000);
136 SLCD_SEND_COMMAND(REG_DISP_CTRL1, 0x171); 171 SLCD_SEND_COMMAND(REG_DISP_CTRL1, DISP_CTRL1_D(1));
137 SLEEP(3500000); 172 SLEEP(3500000);
138 SLCD_SEND_COMMAND(REG_DISP_CTRL1, 0x173); 173 SLCD_SEND_COMMAND(REG_DISP_CTRL1, DISP_CTRL1_D(0));
139 SLEEP(3500000); 174 SLEEP(3500000);
175 SLCD_SEND_COMMAND(REG_PWR_CTRL1, PWR_CTRL1_SLP);
140} 176}
141 177
142static void _set_lcd_bus(void) 178static void _set_lcd_bus(void)
@@ -177,7 +213,7 @@ void lcd_init_controller(void)
177 _set_lcd_bus(); 213 _set_lcd_bus();
178 _set_lcd_clock(); 214 _set_lcd_clock();
179 SLEEP(1000); 215 SLEEP(1000);
180 _display_on(); 216 _display_init();
181} 217}
182 218
183void lcd_set_target(short x, short y, short width, short height) 219void lcd_set_target(short x, short y, short width, short height)
@@ -198,5 +234,5 @@ void lcd_on(void)
198 234
199void lcd_off(void) 235void lcd_off(void)
200{ 236{
201 return; 237 _display_off();
202} 238}