linux/drivers/video
Tomi Valkeinen 2b8501d777 OMAPDSS: Use PM notifiers for system suspend
The current way how omapdss handles system suspend and resume is that
omapdss device (a platform device, which is not part of the device
hierarchy of the DSS HW devices, like DISPC and DSI, or panels.) uses
the suspend and resume callbacks from platform_driver to handle system
suspend. It does this by disabling all enabled panels on suspend, and
resuming the previously disabled panels on resume.

This presents a few problems.

One is that as omapdss device is not related to the panel devices or the
DSS HW devices, there's no ordering in the suspend process. This means
that suspend could be first ran for DSS HW devices and panels, and only
then for omapdss device. Currently this is not a problem, as DSS HW
devices and panels do not handle suspend.

Another, more pressing problem, is that when suspending or resuming, the
runtime PM functions return -EACCES as runtime PM is disabled during
system suspend. This causes the driver to print warnings, and operations
to fail as they think that they failed to bring up the HW.

This patch changes the omapdss suspend handling to use PM notifiers,
which are called before suspend and after resume. This way we have a
normally functioning system when we are suspending and resuming the
panels.

This patch, I believe, creates a problem that somebody could enable or
disable a panel between PM_SUSPEND_PREPARE and the system suspend, and
similarly the other way around in resume. I choose to ignore the problem
for now, as it sounds rather unlikely, and if it happens, it's not
fatal.

In the long run the system suspend handling of omapdss and panels should
be thought out properly. The current approach feels rather hacky.
Perhaps the panel drivers should handle system suspend, or the users of
omapdss (omapfb, omapdrm) should handle system suspend.

Note that after this patch we could probably revert
0eaf9f52e9 (OMAPDSS: use sync versions of
pm_runtime_put). But as I said, this patch may be temporary, so let's
leave the sync version still in place.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reported-by: Jassi Brar <jaswinder.singh@linaro.org>
Tested-by: Jassi Brar <jaswinder.singh@linaro.org>
2012-06-29 09:09:40 +03:00
..
aty module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
backlight backlight: tosa_lcd: use devm_ functions 2012-05-29 16:22:31 -07:00
console parisc: move definition of PAGE0 to asm/page.h 2012-05-10 15:12:08 -07:00
exynos video: exynos_dp: reduce delay time when configuring video setting 2012-05-29 13:16:15 +00:00
geode gx1fb: Fix section mismatch warnings 2011-06-24 17:00:31 +09:00
i810 module_param: make bool parameters really bool (drivers/video/i810) 2012-01-12 23:28:59 +00:00
intelfb drivers/video/intelfb/intelfbdrv.c: add missing agp_backend_release 2012-05-13 13:05:24 +00:00
kyro kyrofb: fix on x86_64 2012-04-08 14:27:08 +00:00
logo module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
matrox i2c: Split I2C_M_NOSTART support out of I2C_FUNC_PROTOCOL_MANGLING 2012-05-30 10:55:34 +02:00
mb862xx video: mb862xxfbdrv.c: local functions should not be exposed globally 2012-05-08 16:57:30 +00:00
mbx drivers/video/mbx/mbxfb.c: correct ioremap_nocache test 2012-04-21 21:48:48 +00:00
msm video: msm: Fix section mismatches in mddi.c 2012-04-18 17:10:34 +00:00
nvidia drivers/video/nvidia/nvidia.c: fix warning 2012-01-12 20:13:03 -08:00
omap OMAPFB: remove unused FB_OMAP_BOOTLOADER_INIT config option 2012-04-23 10:48:09 +03:00
omap2 OMAPDSS: Use PM notifiers for system suspend 2012-06-29 09:09:40 +03:00
pnx4008 video: pnx4008: convert drivers/video/pnx4008/* to use module_platform_driver() 2011-12-19 20:21:43 +00:00
riva riva/fbdev: fix several -Wuninitialized 2012-02-13 02:59:14 +00:00
savage Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
sis video/sis: Annotate SiS_DRAMType as __devinitconst 2012-05-08 16:58:27 +00:00
vermilion atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
via video/via: Convert to kstrtou8_from_user 2012-05-08 17:00:12 +00:00
68328fb.c 68328fb: use display information in info not in var for panning 2011-08-19 10:28:58 +02:00
acornfb.c acornfb: use display information in info not in var for panning 2011-08-19 10:29:34 +02:00
acornfb.h
amba-clcd.c fbdev: amba: Enable module alias autogeneration for AMBA drivers 2011-11-22 10:58:33 +00:00
amifb.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
arcfb.c video: Convert vmalloc/memset to vzalloc 2011-06-02 17:25:35 +09:00
arkfb.c arkfb: use display information in info not in var for panning 2011-08-19 10:29:44 +02:00
asiliantfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
atafb_iplan2p2.c
atafb_iplan2p4.c
atafb_iplan2p8.c
atafb_mfb.c
atafb_utils.h
atafb.c m68k/atari: Do not use "/" in interrupt names 2011-05-19 18:19:10 +02:00
atafb.h
atmel_lcdfb.c atmel_lcdfb: support 16bit BGR:565 mode, remove unsupported 15bit modes 2012-01-28 19:54:10 +00:00
au1100fb.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-05-22 19:22:50 -07:00
au1100fb.h fb: fix au1100fb bitrot. 2011-10-03 15:52:38 +00:00
au1200fb.c fbdev: fix au1*fb builds 2012-04-08 14:27:09 +00:00
au1200fb.h
auo_k190x.c video: auo_k190x: add code shared by controller drivers 2012-04-29 19:35:35 +00:00
auo_k190x.h video: auo_k190x: add code shared by controller drivers 2012-04-29 19:35:35 +00:00
auo_k1900fb.c video: auo_k190x: add driver for AUO-K1900 variant 2012-04-29 19:35:40 +00:00
auo_k1901fb.c video: auo_k190x: add driver for AUO-K1901 variant 2012-04-29 19:35:42 +00:00
bf54x-lq043fb.c video: use gpio_request_one 2012-01-28 20:50:11 +00:00
bf537-lq035.c video: use gpio_request_one 2012-01-28 20:50:11 +00:00
bfin_adv7393fb.c video: bfin_adv7393fb: Fix cleanup code 2012-05-29 13:16:45 +00:00
bfin_adv7393fb.h Fix common misspellings 2011-03-31 11:26:23 -03:00
bfin-lq035q1-fb.c blackfin: fix compile error in bfin-lq035q1-fb.c 2012-04-26 14:46:51 -04:00
bfin-t350mcqb-fb.c treewide: Fix comment and string typo 'bufer' 2011-12-06 09:53:40 +01:00
broadsheetfb.c video: Convert vmalloc/memset to vzalloc 2011-06-02 17:25:35 +09:00
bt431.h Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
bt455.h Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
bw2.c dt/video: Eliminate users of of_platform_{,un}register_driver 2011-02-28 13:22:45 -07:00
c2p_core.h
c2p_iplan2.c
c2p_planar.c
c2p.h
carminefb_regs.h
carminefb.c video: Add module.h to drivers/video files who really use it. 2011-10-31 19:31:33 -04:00
carminefb.h
cfbcopyarea.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cfbfillrect.c fbdev: fix fillrect for 24bpp modes 2009-05-06 16:36:10 -07:00
cfbimgblt.c
cg3.c dt/video: Eliminate users of of_platform_{,un}register_driver 2011-02-28 13:22:45 -07:00
cg6.c video: add missing framebuffer_release in error path 2011-03-22 16:35:44 +09:00
cg14.c video: add missing framebuffer_release in error path 2011-03-22 16:35:44 +09:00
chipsfb.c console: rename acquire/release_console_sem() to console_lock/unlock() 2011-01-26 10:50:06 +10:00
cirrusfb.c Merge branch 'fbdev-next' of git://github.com/schandinat/linux-2.6 2012-01-14 15:11:19 -08:00
clps711xfb.c ARM: clps711x: Using a single definition for the PHYS and VIRT registers offset 2012-05-11 16:18:01 +02:00
cobalt_lcdfb.c cobalt_lcdfb: LCD panel framebuffer support for SEAD-3 platform. 2012-04-29 19:34:05 +00:00
controlfb.c Drivers: video: controlfb: fixed a brace coding style issue 2011-11-22 01:00:16 +00:00
controlfb.h
cyber2000fb.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
cyber2000fb.h VIDEO: cyberpro: remove unused cyber2000fb_get_fb_var() 2011-02-11 10:16:07 +00:00
da8xx-fb.c fbdev: da8xx: add support for SP10Q010 display 2012-03-19 22:59:47 +00:00
dnfb.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
edid.h video: Fix EDID macros H_SYNC_WIDTH and H_SYNC_OFFSET 2011-03-22 16:45:03 +09:00
efifb.c vga: fix build when fbdev is a module 2012-04-24 09:50:21 +01:00
ep93xx-fb.c drivers/video/ep93xx-fb.c: clean up error-handling code 2012-04-21 21:47:49 +00:00
epson1355fb.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
fb_ddc.c video: Add module.h to drivers/video files who really use it. 2011-10-31 19:31:33 -04:00
fb_defio.c video: fb_defio.c: local functions should not be exposed globally 2012-05-08 16:57:05 +00:00
fb_draw.h fbdev: fix fillrect for 24bpp modes 2009-05-06 16:36:10 -07:00
fb_notify.c video: Add export.h for THIS_MODULE/EXPORT_SYMBOL to drivers/video 2011-10-31 19:31:33 -04:00
fb_sys_fops.c
fb-puv3.c fbdev: unicore32: use display information in info not in var for panning 2011-08-19 10:31:01 +02:00
fbcmap.c framebuffer: fix fbcmap.c kernel-doc warning 2010-11-26 15:05:08 +09:00
fbcvt.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
fbmem.c fbdev: add events for early fb event support 2012-05-29 16:22:28 -07:00
fbmon.c fbdev: fix parsing of standard timings 2011-09-01 00:31:05 +00:00
fbsysfs.c fb: handle NULL pointers in framebuffer release 2012-05-29 13:00:03 +00:00
ffb.c video: ffb: fix ffb_probe error path 2011-03-22 16:18:51 +09:00
fm2fb.c Fix common misspellings 2011-03-31 11:26:23 -03:00
fsl-diu-fb.c drivers/video: fsl-diu-fb: don't initialize the THRESHOLDS registers 2012-05-13 13:08:56 +00:00
g364fb.c g364fb: use display information in info not in var for panning 2011-08-19 10:31:09 +02:00
gbefb.c Fix common misspellings 2011-03-31 11:26:23 -03:00
grvga.c grvga: fix section mismatch warnings 2012-01-03 16:02:55 +00:00
gxt4500.c gxt4500: use display information in info not in var for panning 2011-08-19 10:31:17 +02:00
hecubafb.c hecubafb: add module_put on error path in hecubafb_probe() 2011-06-24 17:00:39 +09:00
hgafb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
hitfb.c hitfb: fix sections 2010-05-25 08:07:09 -07:00
hpfb.c video: hpfb: use resource_size() 2011-03-22 16:07:32 +09:00
i740_reg.h Resurrect Intel740 driver: i740fb 2012-02-15 04:31:21 +00:00
i740fb.c i740fb: fix compile error when CONFIG_MTRR is not selected 2012-02-19 19:11:51 +00:00
igafb.c doc: fix broken references 2011-09-27 18:08:04 +02:00
imsttfb.c imsttfb: use display information in info not in var for panning 2011-08-19 10:31:39 +02:00
imxfb.c video imxfb: do not depend on grouped clocks 2012-04-25 17:03:37 +02:00
jz4740_fb.c console: rename acquire/release_console_sem() to console_lock/unlock() 2011-01-26 10:50:06 +10:00
Kconfig video: auo_k190x: add driver for AUO-K1901 variant 2012-04-29 19:35:42 +00:00
leo.c dt/video: Eliminate users of of_platform_{,un}register_driver 2011-02-28 13:22:45 -07:00
macfb.c macfb: fix black and white modes 2012-01-22 14:50:02 +01:00
macmodes.c fbdev: add some missing mac modes 2010-02-27 18:31:14 +01:00
macmodes.h
Makefile video: auo_k190x: add driver for AUO-K1901 variant 2012-04-29 19:35:42 +00:00
maxinefb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
metronomefb.c video: Convert vmalloc/memset to vzalloc 2011-06-02 17:25:35 +09:00
modedb.c fbdev: fix indentation in modedb.c 2011-09-14 16:40:52 +00:00
mx3fb.c dmaengine/dma_slave: introduce inline wrappers 2012-03-21 19:20:22 +05:30
mxsfb.c fbdev updates for 3.5 2012-06-01 16:57:51 -07:00
n411.c
neofb.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
nuc900fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
nuc900fb.h Fix common misspellings 2011-03-31 11:26:23 -03:00
offb.c offb: Fix setting of the pseudo-palette for >8bpp 2012-01-03 12:09:25 +11:00
output.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
p9100.c dt/video: Eliminate users of of_platform_{,un}register_driver 2011-02-28 13:22:45 -07:00
platinumfb.c video: platinumfb: Add __devexit_p at necessary place 2011-10-15 00:19:58 +00:00
platinumfb.h
pm2fb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pm3fb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pmag-aa-fb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
pmag-ba-fb.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
pmagb-b-fb.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
ps3fb.c video: irq: Remove IRQF_DISABLED 2011-10-03 15:52:22 +00:00
pvr2fb.c drivers/video/pvr2fb.c: ensure arguments to request_irq and free_irq are compatible 2012-03-13 23:17:31 +00:00
pxa3xx-gcu.c video: pxa3xx-gcu: Simplify the logic to exit while loop in pxa3xx_gcu_wait_idle 2012-04-09 16:18:15 +00:00
pxa3xx-gcu.h video: add driver for PXA3xx 2D graphics accelerator 2010-12-16 14:31:18 +08:00
pxa168fb.c drivers/video/pxa168fb.c: use devm_ functions 2012-02-24 00:49:59 +00:00
pxa168fb.h fb: add support of LCD display controller on pxa168/910 (base layer) 2009-06-13 00:09:09 +08:00
pxafb.c video: pxafb: add clk_prepare/clk_unprepare calls 2012-03-21 10:29:01 +00:00
pxafb.h ARM: pxafb: rework pxafb overlay memory management 2011-03-16 17:37:03 +08:00
q40fb.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
s1d13xxxfb.c s1d13xxxfb: drop unused code 2010-12-21 01:05:43 +09:00
s3c2410fb.c video: s3c2410: fix checkpatch error and warnings 2011-12-03 22:10:43 +00:00
s3c2410fb.h s3c-fb: CPUFREQ frequency scaling support 2009-06-16 19:47:59 -07:00
s3c-fb.c video: s3c-fb: use pr_debug instead of printk 2012-05-13 13:06:26 +00:00
s3fb.c s3fb: fix Virge/VX 2011-12-21 02:25:21 +00:00
sa1100fb.c FB: sa11x0: convert to use platform resource and ioremap() 2012-02-24 09:39:59 +00:00
sa1100fb.h FB: sa11x0: convert to use platform resource and ioremap() 2012-02-24 09:39:59 +00:00
sbuslib.c Drivers: video: sbuslib: fixed a brace coding style issue 2011-11-22 01:00:24 +00:00
sbuslib.h
sgivwfb.c sgivwfb: fix sections 2010-05-25 08:07:09 -07:00
sh7760fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
sh_mipi_dsi.c fbdev: sh_mipi_dsi: add extra phyctrl for sh_mipi_dsi_info 2012-03-21 07:24:01 +00:00
sh_mobile_hdmi.c fbdev: sh_mobile_hdmi: add HDMI Control Register support 2012-05-13 13:07:59 +00:00
sh_mobile_lcdcfb.c fbdev: sh_mobile_lcdc: Don't confuse line size with pitch 2012-05-21 20:59:32 -07:00
sh_mobile_lcdcfb.h fbdev: sh_mobile_lcdc: Don't confuse line size with pitch 2012-05-21 20:59:32 -07:00
sh_mobile_meram.c fbdev: sh_mobile_meram: Implement system suspend/resume 2012-03-12 22:41:14 +01:00
skeletonfb.c skeletonfb: fixed module exit function typo. 2012-04-15 21:44:02 +00:00
sm501fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
smscufx.c video: smscufx.c: local functions should not be exposed globally 2012-05-08 16:56:55 +00:00
sstfb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
sticore.h Fix common misspellings 2011-03-31 11:26:23 -03:00
stifb.c tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
sunxvr500.c Merge branch 'master' into export-slabh 2010-04-05 11:37:28 +09:00
sunxvr1000.c dt/video: Eliminate users of of_platform_{,un}register_driver 2011-02-28 13:22:45 -07:00
sunxvr2500.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
svgalib.c svga: Make svga_set_timings() take an iomem regbase pointer. 2011-03-22 15:47:22 +09:00
syscopyarea.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sysfillrect.c fbdev: fix fillrect for 24bpp modes 2009-05-06 16:36:10 -07:00
sysimgblt.c
tcx.c video: add missing framebuffer_release in error path 2011-03-22 16:35:44 +09:00
tdfxfb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
tgafb.c fix typos concerning "initiali[zs]e" 2010-06-16 18:05:05 +02:00
tmiofb.c video: irq: Remove IRQF_DISABLED 2011-10-03 15:52:22 +00:00
tridentfb.c tridentfb: use display information in info not in var for panning 2011-08-19 10:35:18 +02:00
udlfb.c fbdev updates for 3.5 2012-06-01 16:57:51 -07:00
uvesafb.c connector/userns: replace netlink uses of cap_raised() with capable() 2012-05-10 23:21:39 -04:00
valkyriefb.c video: Fix speficied typo 2011-06-24 17:14:39 +09:00
valkyriefb.h valkyriefb: various fixes 2010-02-27 18:31:13 +01:00
vesafb.c vesafb: fix memory leak 2011-07-04 16:02:48 +09:00
vfb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
vga16fb.c vga16fb: use display information in info not in var for panning 2011-08-19 10:35:34 +02:00
vgastate.c
vt8500lcdfb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
vt8500lcdfb.h ARM: Add support for the display controllers in VT8500 and WM8505 2010-11-09 18:52:07 +09:00
vt8623fb.c vt8623fb: use display information in info not in var for panning 2011-08-19 10:36:20 +02:00
w100fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
w100fb.h
wm8505fb_regs.h ARM: Add support for the display controllers in VT8500 and WM8505 2010-11-09 18:52:07 +09:00
wm8505fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
wmt_ge_rops.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
wmt_ge_rops.h ARM: Add support for the display controllers in VT8500 and WM8505 2010-11-09 18:52:07 +09:00
xen-fbfront.c drivers/video/xen-fbfront.c: add missing cleanup code 2012-05-07 06:41:56 -04:00
xilinxfb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00