disable IMQ on 2.6.28 as well -- people should use IFB..
[openwrt/svn-archive/archive.git] / target / linux / s3c24xx / patches / 0244-fix-suspend-backlight-timing-gta01.patch.patch
1 From 26a1d7115299dcb17a9e9effc780ceba58afa91b Mon Sep 17 00:00:00 2001
2 From: Mike Westerhof <mwester@dls.net>
3 Date: Sun, 10 Aug 2008 09:13:46 +0100
4 Subject: [PATCH] fix-suspend-backlight-timing-gta01.patch
5
6 This patch adds the gta01 backlight callback that defers the
7 restoring of the backlight until after the jbt driver has
8 resumed. This doesn't eliminate the flashing of the LCD on
9 the gta01, but it reduces it considerably.
10
11 Signed-off-by: Mike Westerhof <mwester@dls.net>
12 ---
13 arch/arm/mach-s3c2410/mach-gta01.c | 9 ++++++++-
14 drivers/video/backlight/gta01_bl.c | 15 ++++++++++++++-
15 include/asm-arm/arch-s3c2410/gta01.h | 4 ++++
16 3 files changed, 26 insertions(+), 2 deletions(-)
17
18 diff --git a/arch/arm/mach-s3c2410/mach-gta01.c b/arch/arm/mach-s3c2410/mach-gta01.c
19 index f3f87cf..9e42df0 100644
20 --- a/arch/arm/mach-s3c2410/mach-gta01.c
21 +++ b/arch/arm/mach-s3c2410/mach-gta01.c
22 @@ -507,14 +507,20 @@ static struct s3c2410_ts_mach_info gta01_ts_cfg = {
23
24 /* SPI */
25
26 -void gta01_jbt6k74_reset(int devidx, int level)
27 +static void gta01_jbt6k74_reset(int devidx, int level)
28 {
29 /* empty place holder; gta01 does not yet use this */
30 printk(KERN_DEBUG "gta01_jbt6k74_reset\n");
31 }
32
33 +static void gta01_jbt6k74_resuming(int devidx)
34 +{
35 + gta01bl_deferred_resume();
36 +}
37 +
38 const struct jbt6k74_platform_data gta01_jbt6k74_pdata = {
39 .reset = gta01_jbt6k74_reset,
40 + .resuming = gta01_jbt6k74_resuming,
41 };
42
43 static struct spi_board_info gta01_spi_board_info[] = {
44 @@ -584,6 +590,7 @@ static struct gta01bl_machinfo backlight_machinfo = {
45 .default_intensity = 1,
46 .max_intensity = 1,
47 .limit_mask = 1,
48 + .defer_resume_backlight = 1,
49 };
50
51 static struct resource gta01_bl_resources[] = {
52 diff --git a/drivers/video/backlight/gta01_bl.c b/drivers/video/backlight/gta01_bl.c
53 index 301ec9c..34c19c8 100644
54 --- a/drivers/video/backlight/gta01_bl.c
55 +++ b/drivers/video/backlight/gta01_bl.c
56 @@ -57,6 +57,8 @@ struct gta01bl_data {
57
58 static struct gta01bl_data gta01bl;
59
60 +static int gta01bl_defer_resume_backlight;
61 +
62 #define GTA01BL_SUSPENDED 0x01
63 #define GTA01BL_BATTLOW 0x02
64
65 @@ -132,10 +134,12 @@ static int gta01bl_suspend(struct platform_device *dev, pm_message_t state)
66 {
67 gta01bl_flags |= GTA01BL_SUSPENDED;
68 gta01bl_send_intensity(gta01_backlight_device);
69 + neo1973_gpb_setpin(GTA01_GPIO_BACKLIGHT, 0);
70 + s3c2410_gpio_cfgpin(GTA01_GPIO_BACKLIGHT, S3C2410_GPIO_OUTPUT);
71 return 0;
72 }
73
74 -static int gta01bl_resume(struct platform_device *dev)
75 +void gta01bl_deferred_resume(void)
76 {
77 mutex_lock(&gta01bl.mutex);
78 gta01bl_init_hw();
79 @@ -143,6 +147,13 @@ static int gta01bl_resume(struct platform_device *dev)
80
81 gta01bl_flags &= ~GTA01BL_SUSPENDED;
82 gta01bl_send_intensity(gta01_backlight_device);
83 +}
84 +EXPORT_SYMBOL_GPL(gta01bl_deferred_resume);
85 +
86 +static int gta01bl_resume(struct platform_device *dev)
87 +{
88 + if (! gta01bl_defer_resume_backlight)
89 + gta01bl_deferred_resume();
90 return 0;
91 }
92 #else
93 @@ -199,6 +210,8 @@ static int __init gta01bl_probe(struct platform_device *pdev)
94 if (!machinfo->limit_mask)
95 machinfo->limit_mask = -1;
96
97 + gta01bl_defer_resume_backlight = machinfo->defer_resume_backlight;
98 +
99 gta01_backlight_device = backlight_device_register("gta01-bl",
100 &pdev->dev, NULL,
101 &gta01bl_ops);
102 diff --git a/include/asm-arm/arch-s3c2410/gta01.h b/include/asm-arm/arch-s3c2410/gta01.h
103 index 1cc2099..989aa55 100644
104 --- a/include/asm-arm/arch-s3c2410/gta01.h
105 +++ b/include/asm-arm/arch-s3c2410/gta01.h
106 @@ -12,10 +12,14 @@
107 #define GTA01Bv4_SYSTEM_REV 0x00000240
108
109 /* Backlight */
110 +
111 +extern void gta01bl_deferred_resume(void);
112 +
113 struct gta01bl_machinfo {
114 unsigned int default_intensity;
115 unsigned int max_intensity;
116 unsigned int limit_mask;
117 + unsigned int defer_resume_backlight;
118 };
119
120 /* Definitions common to all revisions */
121 --
122 1.5.6.3
123