au1100fb suspend/resume support
Subsystems (2)
PATCH 1/1 au1100fb suspend/resume support
Hello,
here a patch for au1100fb.c in order to add suspend/resume support.
Ciao,
Rodolfo
Signature · 4 lines
GNU/Linux Solutions e-mail: [email protected] Linux Device Driver [email protected] Embedded Systems [email protected] UNIX programming phone: +39 349 2432127
Index: drivers/video/au1100fb.c
===================================================================
RCS file: /home/develop/cvs_private/linux-mips-exadron/drivers/video/au1100fb.c,v retrieving revision 1.7
drivers/video/au1100fb.c +55 -2
@@ -7,6 +7,8 @@* Karl Lessard <[email protected]> * <[email protected]> * +* PM support added by Rodolfo Giometti <[email protected]> +* * Copyright 2002 MontaVista Software * Author: MontaVista Software, Inc. * [email protected] or [email protected]
@@ -648,17 +650,66 @@return 0 ; } +#ifdef CONFIG_PM +static u32 sys_clksrc; +static struct au1100fb_regs fbregs;int au1100fb_drv_suspend (struct device *dev,u32 state,u32 level) { -/* TODO */ +struct au1100fb_device *fbdev = (struct au1100fb_device *)dev_get_drvdata (dev); + +if (!fbdev) +return 0 ; + +switch (level) { +case SUSPEND_DISABLE : +/* Save the clock source state */ + sys_clksrc =au_readl (SYS_CLKSRC ); + +/* Blank the LCD */ +au1100fb_fb_blank (VESA_POWERDOWN , &fbdev->info); + +/* Stop LCD clocking */ +au_writel (sys_clksrc & ~SYS_CS_MUD_MASK ,SYS_CLKSRC ); + +break ; + +case SUSPEND_SAVE_STATE : +memcpy (&fbregs, fbdev->regs,sizeof (struct au1100fb_regs )); + +break ; + +case SUSPEND_POWER_DOWN : + +break ; + } +return 0 ; }int au1100fb_drv_resume (struct device *dev,u32 level) { -/* TODO */ +struct au1100fb_device *fbdev = (struct au1100fb_device *)dev_get_drvdata (dev); + +if (!fbdev) +return 0 ; + +switch (level) { +case RESUME_RESTORE_STATE : +memcpy (fbdev->regs, &fbregs,sizeof (struct au1100fb_regs )); + +break ; + +case RESUME_ENABLE : +au_writel (sys_clksrc,SYS_CLKSRC ); + +au1100fb_fb_blank (VESA_NO_BLANKING , &fbdev->info); + +break ; + } +return 0 ; } +#endif static struct device_driver au1100fb_driver = { .name ="au1100-lcd" ,
@@ -666,8 +717,10 @@ .probe = au1100fb_drv_probe, .remove = au1100fb_drv_remove, +#ifdef CONFIG_PM .suspend = au1100fb_drv_suspend, .resume = au1100fb_drv_resume, +#endif };/*-------------------------------------------------------------------------*/