Linux dss2 driver - difference between suspend/resume and disable/enable?

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().