diff options
author | Magnus Damm <damm@igel.co.jp> | 2008-12-19 15:34:41 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2008-12-22 18:44:48 +0900 |
commit | 8564557a03c12adb9c4b76ae1e86db4113a04d13 (patch) | |
tree | 680fbc6f67382b76262477259fff4601c5e7a45e /include/video | |
parent | 37b4837959cb9aa60686ca0d85f73d819251abad (diff) | |
download | linux-8564557a03c12adb9c4b76ae1e86db4113a04d13.tar.gz linux-8564557a03c12adb9c4b76ae1e86db4113a04d13.tar.bz2 linux-8564557a03c12adb9c4b76ae1e86db4113a04d13.zip |
video: sh_mobile_lcdcfb deferred io support
This patch adds sh_mobile_lcdcfb deferred io support for SYS panels.
The LCDC hardware block managed by the sh_mobile_lcdcfb driver supports
RGB or SYS panel configurations. SYS panels come with an external display
controller that is resposible for refreshing the actual LCD panel. RGB
panels are controlled directly by the LCDC and they need to be refreshed
by the LCDC hardware.
In the case of SYS panels we can save some power by configuring the LCDC
hardware block in one-shot mode. In this one-shot mode panel refresh is
managed by software. This works well together with deferred io since it
allows us to stop clocks for most of the time and only enable clocks when
we actually want to trigger an update. When there is no fbdev activity
the clocks are kept stopped which allows us to deep sleep.
The refresh rate in deferred io mode is set using platform data. The same
platform data can also be used to disable deferred io mode.
As with other deferred io frame buffers user space code should use fsync()
on the frame buffer device to trigger an update.
Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'include/video')
-rw-r--r-- | include/video/sh_mobile_lcdc.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/video/sh_mobile_lcdc.h b/include/video/sh_mobile_lcdc.h index 1a4bc6ada606..25144ab22b95 100644 --- a/include/video/sh_mobile_lcdc.h +++ b/include/video/sh_mobile_lcdc.h @@ -37,6 +37,7 @@ enum { LCDC_CLK_BUS, LCDC_CLK_PERIPHERAL, LCDC_CLK_EXTERNAL }; struct sh_mobile_lcdc_sys_bus_cfg { unsigned long ldmt2r; unsigned long ldmt3r; + unsigned long deferred_io_msec; }; struct sh_mobile_lcdc_sys_bus_ops { |