diff options
-rw-r--r-- | arch/arm/mach-s3c2410/mach-gta01.c | 9 | ||||
-rw-r--r-- | drivers/video/backlight/gta01_bl.c | 15 | ||||
-rw-r--r-- | include/asm-arm/arch-s3c2410/gta01.h | 4 |
3 files changed, 26 insertions, 2 deletions
diff --git a/arch/arm/mach-s3c2410/mach-gta01.c b/arch/arm/mach-s3c2410/mach-gta01.c index ac46bb53c10..86aa4afb6ff 100644 --- a/arch/arm/mach-s3c2410/mach-gta01.c +++ b/arch/arm/mach-s3c2410/mach-gta01.c @@ -507,14 +507,20 @@ static struct s3c2410_ts_mach_info gta01_ts_cfg = { /* SPI */ -void gta01_jbt6k74_reset(int devidx, int level) +static void gta01_jbt6k74_reset(int devidx, int level) { /* empty place holder; gta01 does not yet use this */ printk(KERN_DEBUG "gta01_jbt6k74_reset\n"); } +static void gta01_jbt6k74_resuming(int devidx) +{ + gta01bl_deferred_resume(); +} + const struct jbt6k74_platform_data gta01_jbt6k74_pdata = { .reset = gta01_jbt6k74_reset, + .resuming = gta01_jbt6k74_resuming, }; static struct spi_board_info gta01_spi_board_info[] = { @@ -584,6 +590,7 @@ static struct gta01bl_machinfo backlight_machinfo = { .default_intensity = 1, .max_intensity = 1, .limit_mask = 1, + .defer_resume_backlight = 1, }; static struct resource gta01_bl_resources[] = { diff --git a/drivers/video/backlight/gta01_bl.c b/drivers/video/backlight/gta01_bl.c index 301ec9c217f..34c19c8bf47 100644 --- a/drivers/video/backlight/gta01_bl.c +++ b/drivers/video/backlight/gta01_bl.c @@ -57,6 +57,8 @@ struct gta01bl_data { static struct gta01bl_data gta01bl; +static int gta01bl_defer_resume_backlight; + #define GTA01BL_SUSPENDED 0x01 #define GTA01BL_BATTLOW 0x02 @@ -132,10 +134,12 @@ static int gta01bl_suspend(struct platform_device *dev, pm_message_t state) { gta01bl_flags |= GTA01BL_SUSPENDED; gta01bl_send_intensity(gta01_backlight_device); + neo1973_gpb_setpin(GTA01_GPIO_BACKLIGHT, 0); + s3c2410_gpio_cfgpin(GTA01_GPIO_BACKLIGHT, S3C2410_GPIO_OUTPUT); return 0; } -static int gta01bl_resume(struct platform_device *dev) +void gta01bl_deferred_resume(void) { mutex_lock(>a01bl.mutex); gta01bl_init_hw(); @@ -143,6 +147,13 @@ static int gta01bl_resume(struct platform_device *dev) gta01bl_flags &= ~GTA01BL_SUSPENDED; gta01bl_send_intensity(gta01_backlight_device); +} +EXPORT_SYMBOL_GPL(gta01bl_deferred_resume); + +static int gta01bl_resume(struct platform_device *dev) +{ + if (! gta01bl_defer_resume_backlight) + gta01bl_deferred_resume(); return 0; } #else @@ -199,6 +210,8 @@ static int __init gta01bl_probe(struct platform_device *pdev) if (!machinfo->limit_mask) machinfo->limit_mask = -1; + gta01bl_defer_resume_backlight = machinfo->defer_resume_backlight; + gta01_backlight_device = backlight_device_register("gta01-bl", &pdev->dev, NULL, >a01bl_ops); diff --git a/include/asm-arm/arch-s3c2410/gta01.h b/include/asm-arm/arch-s3c2410/gta01.h index 1cc209964ed..989aa5510a6 100644 --- a/include/asm-arm/arch-s3c2410/gta01.h +++ b/include/asm-arm/arch-s3c2410/gta01.h @@ -12,10 +12,14 @@ #define GTA01Bv4_SYSTEM_REV 0x00000240 /* Backlight */ + +extern void gta01bl_deferred_resume(void); + struct gta01bl_machinfo { unsigned int default_intensity; unsigned int max_intensity; unsigned int limit_mask; + unsigned int defer_resume_backlight; }; /* Definitions common to all revisions */ |