diff options
Diffstat (limited to 'firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c')
-rw-r--r-- | firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c b/firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c index 624f2aa444..4b355302fd 100644 --- a/firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c +++ b/firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c | |||
@@ -69,7 +69,7 @@ void lcd_set_flip(bool yesno) | |||
69 | static void lcd_sleep(uint32_t t) | 69 | static void lcd_sleep(uint32_t t) |
70 | { | 70 | { |
71 | volatile uint32_t i; | 71 | volatile uint32_t i; |
72 | for(i=0;i<t;++i) t=t; | 72 | for(i=0;i<t;++i); |
73 | } | 73 | } |
74 | 74 | ||
75 | static uint8_t lcd_readdata() | 75 | static uint8_t lcd_readdata() |
@@ -115,6 +115,7 @@ void lcd_off() { | |||
115 | void lcd_init_device(void) | 115 | void lcd_init_device(void) |
116 | { | 116 | { |
117 | uint8_t data[5]; | 117 | uint8_t data[5]; |
118 | int i; | ||
118 | 119 | ||
119 | /* init basic things */ | 120 | /* init basic things */ |
120 | PWRCON &= ~0x800; | 121 | PWRCON &= ~0x800; |
@@ -126,25 +127,26 @@ void lcd_init_device(void) | |||
126 | LCD_INTCON = 0; | 127 | LCD_INTCON = 0; |
127 | LCD_RST_TIME = 0x7ff; | 128 | LCD_RST_TIME = 0x7ff; |
128 | 129 | ||
129 | /* detect lcd type */ | 130 | /* detect lcd type, it's not detected the first time for some reason */ |
130 | LCD_WCMD = 0x1; | 131 | for(i=0;i<3;++i) { |
131 | lcd_sleep(166670); | 132 | LCD_WCMD = 0x1; |
132 | LCD_WCMD = 0x11; | 133 | lcd_sleep(166670); |
133 | lcd_sleep(2000040); | 134 | LCD_WCMD = 0x11; |
134 | lcd_readdata(); | 135 | lcd_sleep(2000040); |
135 | LCD_WCMD = 0x4; | 136 | lcd_readdata(); |
136 | lcd_sleep(100); | 137 | LCD_WCMD = 0x4; |
137 | data[0]=lcd_readdata(); | 138 | lcd_sleep(100); |
138 | data[1]=lcd_readdata(); | 139 | data[0]=lcd_readdata(); |
139 | data[2]=lcd_readdata(); | 140 | data[1]=lcd_readdata(); |
140 | data[3]=lcd_readdata(); | 141 | data[2]=lcd_readdata(); |
141 | data[4]=lcd_readdata(); | 142 | data[3]=lcd_readdata(); |
142 | 143 | data[4]=lcd_readdata(); | |
143 | lcd_type=0; | 144 | |
144 | if (((data[1]==0x38) && ((data[2] & 0xf0) == 0x80)) || | 145 | lcd_type=0; |
145 | ((data[2]==0x38) && ((data[3] & 0xf0) == 0x80))) | 146 | if (((data[1]==0x38) && ((data[2] & 0xf0) == 0x80)) || |
146 | lcd_type=1; | 147 | ((data[2]==0x38) && ((data[3] & 0xf0) == 0x80))) |
147 | 148 | lcd_type=1; | |
149 | } | ||
148 | /* init lcd */ | 150 | /* init lcd */ |
149 | if (lcd_type == 1) { | 151 | if (lcd_type == 1) { |
150 | LCD_WCMD = 0x3a; | 152 | LCD_WCMD = 0x3a; |