Our LCD panel driver is already working quite well - except with
shutting down after a while. The issue is that our display controller
has three power modes: deep sleep, sleep and normal and we have to
switch between these modes by issuing some commands through a serial
So what is the intended difference between
panel_suspend() / resume()
panel_disable() / enable()
Which one is be called in which situation (e.g. screen saver / dim
display after a while, sleep of the machine but still on power, and
which is real power down)?
By adding some printk() I could find out the following:
1. probe() is called during boot
2. then, enable() is called
3. after some minutes inactivity, suspend() is called
4. touching the screen or mouse makes resume() being called
5. 'shutdown -h now' calls disable() - but not remove()
- enable() should bring the LCM from completely switched off into
fully powered up mode.
- suspend() should sleep and save energy (this can be a medium level
sleep or could be fully powered down - depending how fast the resume
procedure is and if the LCM can be completely powered down while DSS
signals are actively driven).
- resume() should bring back to fully powered up
- disable() should fully power down.
Most other panel driver implementations make suspend() simply call
disable() and resume() call enable().