diff options
Diffstat (limited to 'firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c')
-rw-r--r-- | firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c | 38 |
1 files changed, 8 insertions, 30 deletions
diff --git a/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c b/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c index 7b64493c0a..d0b7e9214e 100644 --- a/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c +++ b/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c | |||
@@ -116,33 +116,11 @@ static void lcd_write_reg(unsigned char reg, unsigned short val) | |||
116 | restore_irq(level); | 116 | restore_irq(level); |
117 | } | 117 | } |
118 | 118 | ||
119 | |||
120 | /* | ||
121 | TEMP: Rough millisecond delay routine used by the LCD panel init sequence. | ||
122 | PCK_TCT must first have been initialised to 2Mhz by calling clock_init(). | ||
123 | */ | ||
124 | static void sleep_ms(unsigned int ms) | ||
125 | { | ||
126 | /* disable timer */ | ||
127 | TCFG1 = 0; | ||
128 | |||
129 | /* set Timer1 reference value based on 125kHz tick */ | ||
130 | TREF1 = ms * 125; | ||
131 | |||
132 | /* single count, zero the counter, divider = 16 [2^(3+1)], enable */ | ||
133 | TCFG1 = (1<<9) | (1<<8) | (3<<4) | 1; | ||
134 | |||
135 | /* wait until Timer1 ref reached */ | ||
136 | while (!(TIREQ & TF1)) {}; | ||
137 | } | ||
138 | |||
139 | |||
140 | static void lcd_display_on(void) | 119 | static void lcd_display_on(void) |
141 | { | 120 | { |
142 | /* power on sequence as per the D2 firmware */ | 121 | /* power on sequence as per the D2 firmware */ |
143 | GPIOA_SET = (1<<16); | 122 | GPIOA_SET = (1<<16); |
144 | 123 | udelay(10000); | |
145 | sleep_ms(10); | ||
146 | 124 | ||
147 | lcd_write_reg(1, 0x1D); | 125 | lcd_write_reg(1, 0x1D); |
148 | lcd_write_reg(2, 0x0); | 126 | lcd_write_reg(2, 0x0); |
@@ -164,14 +142,14 @@ static void lcd_display_on(void) | |||
164 | lcd_write_reg(23, 0x0); | 142 | lcd_write_reg(23, 0x0); |
165 | lcd_write_reg(24, 0x0); | 143 | lcd_write_reg(24, 0x0); |
166 | lcd_write_reg(25, 0x0); | 144 | lcd_write_reg(25, 0x0); |
167 | sleep_ms(10); | 145 | udelay(10000); |
168 | 146 | ||
169 | lcd_write_reg(9, 0x4055); | 147 | lcd_write_reg(9, 0x4055); |
170 | lcd_write_reg(10, 0x0); | 148 | lcd_write_reg(10, 0x0); |
171 | sleep_ms(40); | 149 | udelay(40000); |
172 | 150 | ||
173 | lcd_write_reg(10, 0x2000); | 151 | lcd_write_reg(10, 0x2000); |
174 | sleep_ms(40); | 152 | udelay(40000); |
175 | 153 | ||
176 | lcd_write_reg(1, 0xC01D); | 154 | lcd_write_reg(1, 0xC01D); |
177 | lcd_write_reg(2, 0x204); | 155 | lcd_write_reg(2, 0x204); |
@@ -191,11 +169,11 @@ static void lcd_display_on(void) | |||
191 | lcd_write_reg(23, 0x406); | 169 | lcd_write_reg(23, 0x406); |
192 | lcd_write_reg(24, 0x2); | 170 | lcd_write_reg(24, 0x2); |
193 | lcd_write_reg(25, 0x0); | 171 | lcd_write_reg(25, 0x0); |
194 | sleep_ms(60); | 172 | udelay(60000); |
195 | 173 | ||
196 | lcd_write_reg(9, 0xA55); | 174 | lcd_write_reg(9, 0xA55); |
197 | lcd_write_reg(10, 0x111F); | 175 | lcd_write_reg(10, 0x111F); |
198 | sleep_ms(10); | 176 | udelay(10000); |
199 | 177 | ||
200 | /* tell that we're on now */ | 178 | /* tell that we're on now */ |
201 | display_on = true; | 179 | display_on = true; |
@@ -210,10 +188,10 @@ static void lcd_display_off(void) | |||
210 | lcd_write_reg(9, 0x55); | 188 | lcd_write_reg(9, 0x55); |
211 | lcd_write_reg(10, 0x1417); | 189 | lcd_write_reg(10, 0x1417); |
212 | lcd_write_reg(5, 0x4003); | 190 | lcd_write_reg(5, 0x4003); |
213 | sleep_ms(10); | 191 | udelay(10000); |
214 | 192 | ||
215 | lcd_write_reg(9, 0x0); | 193 | lcd_write_reg(9, 0x0); |
216 | sleep_ms(10); | 194 | udelay(10000); |
217 | 195 | ||
218 | /* kill power to LCD panel (unconfirmed) */ | 196 | /* kill power to LCD panel (unconfirmed) */ |
219 | GPIOA_CLEAR = (1<<16); | 197 | GPIOA_CLEAR = (1<<16); |