Closed mthuurne closed 12 years ago
I don't know if those delays really are necessary. I did reduce them on ili9331_enable() function, to 10ms each (instead of 50ms/100ms) and the dingoo still boots fine without any problem relative to the screen.
The ILI9331 docs specify the power on timings. I haven't compared these with the driver yet, but it's possible that the actual hardware can deal with much lower delays than the spec states. However, it may not be wise to rely on that, since the required delay might depend on which revision of the chip is used, temperature or other factors that we have no knowledge of.
By the way, the LCD controller is already on when booting, because the dual boot loader initializes it. If you want to test the init sequence, you should blank the screen (this turns off the LCD controller) and then unblank it. You can do this via sysfs.
Ayla fixed this by replacing mdelay() calls by msleep() calls.
The LCD controller chip needs a few short delays in its startup sequence. Currently those are implemented using delayms calls. However, the sum of all delays is so much that it will disrupt audio playback. This is a problem because GMU uses blanking to make the battery last longer while playing songs.
The solution would be to make the startup sequence non-blocking by either moving it into a thread or splitting it up into separate subtasks.