diff options
author | Frank Gevaerts <frank@gevaerts.be> | 2008-10-18 22:28:59 +0000 |
---|---|---|
committer | Frank Gevaerts <frank@gevaerts.be> | 2008-10-18 22:28:59 +0000 |
commit | 49ec9ea19013184d70bc1ad83eb0301fcce8d99b (patch) | |
tree | 2805f9f945dd14666bc28124c0dcd6f13a082694 /firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c | |
parent | d8b2645a641110d184fe72fd6a8f4a9442713c8d (diff) | |
download | rockbox-49ec9ea19013184d70bc1ad83eb0301fcce8d99b.tar.gz rockbox-49ec9ea19013184d70bc1ad83eb0301fcce8d99b.zip |
Make the meizu m3 load from flash, so interrupts work. More work is needed to get the m6sl "working" again
(patch by Denes Balatoni, FS#9499)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18827 a1c6a512-1295-4272-9138-f99709370657
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) static void lcd_sleep(uint32_t t) { volatile uint32_t i; - for(i=0;i<t;++i) t=t; + for(i=0;i<t;++i); } static uint8_t lcd_readdata() @@ -115,6 +115,7 @@ void lcd_off() { void lcd_init_device(void) { uint8_t data[5]; + int i; /* init basic things */ PWRCON &= ~0x800; @@ -126,25 +127,26 @@ void lcd_init_device(void) LCD_INTCON = 0; LCD_RST_TIME = 0x7ff; -/* detect lcd type */ - LCD_WCMD = 0x1; - lcd_sleep(166670); - LCD_WCMD = 0x11; - lcd_sleep(2000040); - lcd_readdata(); - LCD_WCMD = 0x4; - lcd_sleep(100); - data[0]=lcd_readdata(); - data[1]=lcd_readdata(); - data[2]=lcd_readdata(); - data[3]=lcd_readdata(); - data[4]=lcd_readdata(); - - lcd_type=0; - if (((data[1]==0x38) && ((data[2] & 0xf0) == 0x80)) || - ((data[2]==0x38) && ((data[3] & 0xf0) == 0x80))) - lcd_type=1; - +/* detect lcd type, it's not detected the first time for some reason */ + for(i=0;i<3;++i) { + LCD_WCMD = 0x1; + lcd_sleep(166670); + LCD_WCMD = 0x11; + lcd_sleep(2000040); + lcd_readdata(); + LCD_WCMD = 0x4; + lcd_sleep(100); + data[0]=lcd_readdata(); + data[1]=lcd_readdata(); + data[2]=lcd_readdata(); + data[3]=lcd_readdata(); + data[4]=lcd_readdata(); + + lcd_type=0; + if (((data[1]==0x38) && ((data[2] & 0xf0) == 0x80)) || + ((data[2]==0x38) && ((data[3] & 0xf0) == 0x80))) + lcd_type=1; + } /* init lcd */ if (lcd_type == 1) { LCD_WCMD = 0x3a; |