diff options
author | Richard Purdie <rpurdie@rpsys.net> | 2007-02-10 10:04:08 -0500 |
---|---|---|
committer | Richard Purdie <rpurdie@rpsys.net> | 2007-02-20 04:26:40 -0500 |
commit | 321709c5994f952b78d567fd7083dbebbdc381b7 (patch) | |
tree | df237c216e8bab6ce5c14d5797a796d4bf889a92 /drivers | |
parent | e0e34ef7f02915cfe50e501e9f32c24217177a96 (diff) |
backlight: Clean up pmac_backlight handling
Move the setting/unsetting of pmac_backlight into the
backlight core instead of doing it in each driver.
Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/macintosh/via-pmu-backlight.c | 5 | ||||
-rw-r--r-- | drivers/misc/sony-laptop.c | 15 | ||||
-rw-r--r-- | drivers/video/aty/aty128fb.c | 20 | ||||
-rw-r--r-- | drivers/video/aty/atyfb_base.c | 20 | ||||
-rw-r--r-- | drivers/video/aty/radeon_backlight.c | 13 | ||||
-rw-r--r-- | drivers/video/backlight/backlight.c | 17 | ||||
-rw-r--r-- | drivers/video/nvidia/nv_backlight.c | 25 | ||||
-rw-r--r-- | drivers/video/riva/fbdev.c | 20 |
8 files changed, 34 insertions, 101 deletions
diff --git a/drivers/macintosh/via-pmu-backlight.c b/drivers/macintosh/via-pmu-backlight.c index 7ba2042b2dd0..9f9d03127978 100644 --- a/drivers/macintosh/via-pmu-backlight.c +++ b/drivers/macintosh/via-pmu-backlight.c | |||
@@ -170,11 +170,6 @@ void __init pmu_backlight_init() | |||
170 | bd->props->power = FB_BLANK_UNBLANK; | 170 | bd->props->power = FB_BLANK_UNBLANK; |
171 | backlight_update_status(bd); | 171 | backlight_update_status(bd); |
172 | 172 | ||
173 | mutex_lock(&pmac_backlight_mutex); | ||
174 | if (!pmac_backlight) | ||
175 | pmac_backlight = bd; | ||
176 | mutex_unlock(&pmac_backlight_mutex); | ||
177 | |||
178 | printk("pmubl: Backlight initialized (%s)\n", name); | 173 | printk("pmubl: Backlight initialized (%s)\n", name); |
179 | 174 | ||
180 | return; | 175 | return; |
diff --git a/drivers/misc/sony-laptop.c b/drivers/misc/sony-laptop.c index 03d02bd9f122..2ebe240dd537 100644 --- a/drivers/misc/sony-laptop.c +++ b/drivers/misc/sony-laptop.c | |||
@@ -384,7 +384,7 @@ static void sony_snc_pf_remove(void) | |||
384 | static int sony_backlight_update_status(struct backlight_device *bd) | 384 | static int sony_backlight_update_status(struct backlight_device *bd) |
385 | { | 385 | { |
386 | return acpi_callsetfunc(sony_acpi_handle, "SBRT", | 386 | return acpi_callsetfunc(sony_acpi_handle, "SBRT", |
387 | bd->props->brightness + 1, NULL); | 387 | bd->props.brightness + 1, NULL); |
388 | } | 388 | } |
389 | 389 | ||
390 | static int sony_backlight_get_brightness(struct backlight_device *bd) | 390 | static int sony_backlight_get_brightness(struct backlight_device *bd) |
@@ -398,10 +398,9 @@ static int sony_backlight_get_brightness(struct backlight_device *bd) | |||
398 | } | 398 | } |
399 | 399 | ||
400 | static struct backlight_device *sony_backlight_device; | 400 | static struct backlight_device *sony_backlight_device; |
401 | static struct backlight_properties sony_backlight_properties = { | 401 | static struct backlight_ops sony_backlight_ops = { |
402 | .update_status = sony_backlight_update_status, | 402 | .update_status = sony_backlight_update_status, |
403 | .get_brightness = sony_backlight_get_brightness, | 403 | .get_brightness = sony_backlight_get_brightness, |
404 | .max_brightness = SONY_MAX_BRIGHTNESS - 1, | ||
405 | }; | 404 | }; |
406 | 405 | ||
407 | /* | 406 | /* |
@@ -483,15 +482,19 @@ static int sony_acpi_add(struct acpi_device *device) | |||
483 | if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, "GBRT", &handle))) { | 482 | if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, "GBRT", &handle))) { |
484 | sony_backlight_device = backlight_device_register("sony", NULL, | 483 | sony_backlight_device = backlight_device_register("sony", NULL, |
485 | NULL, | 484 | NULL, |
486 | &sony_backlight_properties); | 485 | &sony_backlight_ops); |
487 | 486 | ||
488 | if (IS_ERR(sony_backlight_device)) { | 487 | if (IS_ERR(sony_backlight_device)) { |
489 | printk(LOG_PFX "unable to register backlight device\n"); | 488 | printk(LOG_PFX "unable to register backlight device\n"); |
490 | sony_backlight_device = NULL; | 489 | sony_backlight_device = NULL; |
491 | } else | 490 | } else { |
492 | sony_backlight_properties.brightness = | 491 | sony_backlight_device->props.brightness = |
493 | sony_backlight_get_brightness | 492 | sony_backlight_get_brightness |
494 | (sony_backlight_device); | 493 | (sony_backlight_device); |
494 | sony_backlight_device->props.max_brightness = | ||
495 | SONY_MAX_BRIGHTNESS - 1; | ||
496 | } | ||
497 | |||
495 | } | 498 | } |
496 | 499 | ||
497 | if (sony_snc_pf_add()) | 500 | if (sony_snc_pf_add()) |
diff --git a/drivers/video/aty/aty128fb.c b/drivers/video/aty/aty128fb.c index ef3e7861c27a..4de8d6252c3c 100644 --- a/drivers/video/aty/aty128fb.c +++ b/drivers/video/aty/aty128fb.c | |||
@@ -1829,13 +1829,6 @@ static void aty128_bl_init(struct aty128fb_par *par) | |||
1829 | bd->props->power = FB_BLANK_UNBLANK; | 1829 | bd->props->power = FB_BLANK_UNBLANK; |
1830 | backlight_update_status(bd); | 1830 | backlight_update_status(bd); |
1831 | 1831 | ||
1832 | #ifdef CONFIG_PMAC_BACKLIGHT | ||
1833 | mutex_lock(&pmac_backlight_mutex); | ||
1834 | if (!pmac_backlight) | ||
1835 | pmac_backlight = bd; | ||
1836 | mutex_unlock(&pmac_backlight_mutex); | ||
1837 | #endif | ||
1838 | |||
1839 | printk("aty128: Backlight initialized (%s)\n", name); | 1832 | printk("aty128: Backlight initialized (%s)\n", name); |
1840 | 1833 | ||
1841 | return; | 1834 | return; |
@@ -1846,17 +1839,8 @@ error: | |||
1846 | 1839 | ||
1847 | static void aty128_bl_exit(struct backlight_device *bd) | 1840 | static void aty128_bl_exit(struct backlight_device *bd) |
1848 | { | 1841 | { |
1849 | if (bd) { | 1842 | backlight_device_unregister(bd); |
1850 | #ifdef CONFIG_PMAC_BACKLIGHT | 1843 | printk("aty128: Backlight unloaded\n"); |
1851 | mutex_lock(&pmac_backlight_mutex); | ||
1852 | if (pmac_backlight == bd) | ||
1853 | pmac_backlight = NULL; | ||
1854 | mutex_unlock(&pmac_backlight_mutex); | ||
1855 | #endif | ||
1856 | backlight_device_unregister(bd); | ||
1857 | |||
1858 | printk("aty128: Backlight unloaded\n"); | ||
1859 | } | ||
1860 | } | 1844 | } |
1861 | #endif /* CONFIG_FB_ATY128_BACKLIGHT */ | 1845 | #endif /* CONFIG_FB_ATY128_BACKLIGHT */ |
1862 | 1846 | ||
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c index 66462286e704..35ba26567598 100644 --- a/drivers/video/aty/atyfb_base.c +++ b/drivers/video/aty/atyfb_base.c | |||
@@ -2198,13 +2198,6 @@ static void aty_bl_init(struct atyfb_par *par) | |||
2198 | bd->props->power = FB_BLANK_UNBLANK; | 2198 | bd->props->power = FB_BLANK_UNBLANK; |
2199 | backlight_update_status(bd); | 2199 | backlight_update_status(bd); |
2200 | 2200 | ||
2201 | #ifdef CONFIG_PMAC_BACKLIGHT | ||
2202 | mutex_lock(&pmac_backlight_mutex); | ||
2203 | if (!pmac_backlight) | ||
2204 | pmac_backlight = bd; | ||
2205 | mutex_unlock(&pmac_backlight_mutex); | ||
2206 | #endif | ||
2207 | |||
2208 | printk("aty: Backlight initialized (%s)\n", name); | 2201 | printk("aty: Backlight initialized (%s)\n", name); |
2209 | 2202 | ||
2210 | return; | 2203 | return; |
@@ -2215,17 +2208,8 @@ error: | |||
2215 | 2208 | ||
2216 | static void aty_bl_exit(struct backlight_device *bd) | 2209 | static void aty_bl_exit(struct backlight_device *bd) |
2217 | { | 2210 | { |
2218 | if (bd) { | 2211 | backlight_device_unregister(bd); |
2219 | #ifdef CONFIG_PMAC_BACKLIGHT | 2212 | printk("aty: Backlight unloaded\n"); |
2220 | mutex_lock(&pmac_backlight_mutex); | ||
2221 | if (pmac_backlight == bd) | ||
2222 | pmac_backlight = NULL; | ||
2223 | mutex_unlock(&pmac_backlight_mutex); | ||
2224 | #endif | ||
2225 | backlight_device_unregister(bd); | ||
2226 | |||
2227 | printk("aty: Backlight unloaded\n"); | ||
2228 | } | ||
2229 | } | 2213 | } |
2230 | 2214 | ||
2231 | #endif /* CONFIG_FB_ATY_BACKLIGHT */ | 2215 | #endif /* CONFIG_FB_ATY_BACKLIGHT */ |
diff --git a/drivers/video/aty/radeon_backlight.c b/drivers/video/aty/radeon_backlight.c index f94e4616788d..8c775e6a7e03 100644 --- a/drivers/video/aty/radeon_backlight.c +++ b/drivers/video/aty/radeon_backlight.c | |||
@@ -192,13 +192,6 @@ void radeonfb_bl_init(struct radeonfb_info *rinfo) | |||
192 | bd->props->power = FB_BLANK_UNBLANK; | 192 | bd->props->power = FB_BLANK_UNBLANK; |
193 | backlight_update_status(bd); | 193 | backlight_update_status(bd); |
194 | 194 | ||
195 | #ifdef CONFIG_PMAC_BACKLIGHT | ||
196 | mutex_lock(&pmac_backlight_mutex); | ||
197 | if (!pmac_backlight) | ||
198 | pmac_backlight = bd; | ||
199 | mutex_unlock(&pmac_backlight_mutex); | ||
200 | #endif | ||
201 | |||
202 | printk("radeonfb: Backlight initialized (%s)\n", name); | 195 | printk("radeonfb: Backlight initialized (%s)\n", name); |
203 | 196 | ||
204 | return; | 197 | return; |
@@ -215,12 +208,6 @@ void radeonfb_bl_exit(struct radeonfb_info *rinfo) | |||
215 | if (bd) { | 208 | if (bd) { |
216 | struct radeon_bl_privdata *pdata; | 209 | struct radeon_bl_privdata *pdata; |
217 | 210 | ||
218 | #ifdef CONFIG_PMAC_BACKLIGHT | ||
219 | mutex_lock(&pmac_backlight_mutex); | ||
220 | if (pmac_backlight == bd) | ||
221 | pmac_backlight = NULL; | ||
222 | mutex_unlock(&pmac_backlight_mutex); | ||
223 | #endif | ||
224 | pdata = class_get_devdata(&bd->class_dev); | 211 | pdata = class_get_devdata(&bd->class_dev); |
225 | backlight_device_unregister(bd); | 212 | backlight_device_unregister(bd); |
226 | kfree(pdata); | 213 | kfree(pdata); |
diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c index 5490b2ae5134..822a373d3346 100644 --- a/drivers/video/backlight/backlight.c +++ b/drivers/video/backlight/backlight.c | |||
@@ -14,6 +14,9 @@ | |||
14 | #include <linux/err.h> | 14 | #include <linux/err.h> |
15 | #include <linux/fb.h> | 15 | #include <linux/fb.h> |
16 | 16 | ||
17 | #ifdef CONFIG_PMAC_BACKLIGHT | ||
18 | #include <asm/backlight.h> | ||
19 | #endif | ||
17 | 20 | ||
18 | #if defined(CONFIG_FB) || (defined(CONFIG_FB_MODULE) && \ | 21 | #if defined(CONFIG_FB) || (defined(CONFIG_FB_MODULE) && \ |
19 | defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)) | 22 | defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)) |
@@ -262,6 +265,13 @@ struct backlight_device *backlight_device_register(const char *name, | |||
262 | } | 265 | } |
263 | } | 266 | } |
264 | 267 | ||
268 | #ifdef CONFIG_PMAC_BACKLIGHT | ||
269 | mutex_lock(&pmac_backlight_mutex); | ||
270 | if (!pmac_backlight) | ||
271 | pmac_backlight = new_bd; | ||
272 | mutex_unlock(&pmac_backlight_mutex); | ||
273 | #endif | ||
274 | |||
265 | return new_bd; | 275 | return new_bd; |
266 | } | 276 | } |
267 | EXPORT_SYMBOL(backlight_device_register); | 277 | EXPORT_SYMBOL(backlight_device_register); |
@@ -281,6 +291,13 @@ void backlight_device_unregister(struct backlight_device *bd) | |||
281 | 291 | ||
282 | pr_debug("backlight_device_unregister: name=%s\n", bd->class_dev.class_id); | 292 | pr_debug("backlight_device_unregister: name=%s\n", bd->class_dev.class_id); |
283 | 293 | ||
294 | #ifdef CONFIG_PMAC_BACKLIGHT | ||
295 | mutex_lock(&pmac_backlight_mutex); | ||
296 | if (pmac_backlight == bd) | ||
297 | pmac_backlight = NULL; | ||
298 | mutex_unlock(&pmac_backlight_mutex); | ||
299 | #endif | ||
300 | |||
284 | for (i = 0; i < ARRAY_SIZE(bl_class_device_attributes); i++) | 301 | for (i = 0; i < ARRAY_SIZE(bl_class_device_attributes); i++) |
285 | class_device_remove_file(&bd->class_dev, | 302 | class_device_remove_file(&bd->class_dev, |
286 | &bl_class_device_attributes[i]); | 303 | &bl_class_device_attributes[i]); |
diff --git a/drivers/video/nvidia/nv_backlight.c b/drivers/video/nvidia/nv_backlight.c index 2bebfeeb4f1d..0e2bc519dcab 100644 --- a/drivers/video/nvidia/nv_backlight.c +++ b/drivers/video/nvidia/nv_backlight.c | |||
@@ -16,11 +16,6 @@ | |||
16 | #include "nv_type.h" | 16 | #include "nv_type.h" |
17 | #include "nv_proto.h" | 17 | #include "nv_proto.h" |
18 | 18 | ||
19 | #ifdef CONFIG_PMAC_BACKLIGHT | ||
20 | #include <asm/backlight.h> | ||
21 | #include <asm/machdep.h> | ||
22 | #endif | ||
23 | |||
24 | /* We do not have any information about which values are allowed, thus | 19 | /* We do not have any information about which values are allowed, thus |
25 | * we used safe values. | 20 | * we used safe values. |
26 | */ | 21 | */ |
@@ -128,13 +123,6 @@ void nvidia_bl_init(struct nvidia_par *par) | |||
128 | bd->props->power = FB_BLANK_UNBLANK; | 123 | bd->props->power = FB_BLANK_UNBLANK; |
129 | backlight_update_status(bd); | 124 | backlight_update_status(bd); |
130 | 125 | ||
131 | #ifdef CONFIG_PMAC_BACKLIGHT | ||
132 | mutex_lock(&pmac_backlight_mutex); | ||
133 | if (!pmac_backlight) | ||
134 | pmac_backlight = bd; | ||
135 | mutex_unlock(&pmac_backlight_mutex); | ||
136 | #endif | ||
137 | |||
138 | printk("nvidia: Backlight initialized (%s)\n", name); | 126 | printk("nvidia: Backlight initialized (%s)\n", name); |
139 | 127 | ||
140 | return; | 128 | return; |
@@ -148,15 +136,6 @@ void nvidia_bl_exit(struct nvidia_par *par) | |||
148 | struct fb_info *info = pci_get_drvdata(par->pci_dev); | 136 | struct fb_info *info = pci_get_drvdata(par->pci_dev); |
149 | struct backlight_device *bd = info->bl_dev; | 137 | struct backlight_device *bd = info->bl_dev; |
150 | 138 | ||
151 | if (bd) { | 139 | backlight_device_unregister(bd); |
152 | #ifdef CONFIG_PMAC_BACKLIGHT | 140 | printk("nvidia: Backlight unloaded\n"); |
153 | mutex_lock(&pmac_backlight_mutex); | ||
154 | if (pmac_backlight == bd) | ||
155 | pmac_backlight = NULL; | ||
156 | mutex_unlock(&pmac_backlight_mutex); | ||
157 | #endif | ||
158 | backlight_device_unregister(bd); | ||
159 | |||
160 | printk("nvidia: Backlight unloaded\n"); | ||
161 | } | ||
162 | } | 141 | } |
diff --git a/drivers/video/riva/fbdev.c b/drivers/video/riva/fbdev.c index ab00350907dd..3a75def01b28 100644 --- a/drivers/video/riva/fbdev.c +++ b/drivers/video/riva/fbdev.c | |||
@@ -371,13 +371,6 @@ static void riva_bl_init(struct riva_par *par) | |||
371 | bd->props->power = FB_BLANK_UNBLANK; | 371 | bd->props->power = FB_BLANK_UNBLANK; |
372 | backlight_update_status(bd); | 372 | backlight_update_status(bd); |
373 | 373 | ||
374 | #ifdef CONFIG_PMAC_BACKLIGHT | ||
375 | mutex_lock(&pmac_backlight_mutex); | ||
376 | if (!pmac_backlight) | ||
377 | pmac_backlight = bd; | ||
378 | mutex_unlock(&pmac_backlight_mutex); | ||
379 | #endif | ||
380 | |||
381 | printk("riva: Backlight initialized (%s)\n", name); | 374 | printk("riva: Backlight initialized (%s)\n", name); |
382 | 375 | ||
383 | return; | 376 | return; |
@@ -390,17 +383,8 @@ static void riva_bl_exit(struct fb_info *info) | |||
390 | { | 383 | { |
391 | struct backlight_device *bd = info->bl_dev; | 384 | struct backlight_device *bd = info->bl_dev; |
392 | 385 | ||
393 | if (bd) { | 386 | backlight_device_unregister(bd); |
394 | #ifdef CONFIG_PMAC_BACKLIGHT | 387 | printk("riva: Backlight unloaded\n"); |
395 | mutex_lock(&pmac_backlight_mutex); | ||
396 | if (pmac_backlight == bd) | ||
397 | pmac_backlight = NULL; | ||
398 | mutex_unlock(&pmac_backlight_mutex); | ||
399 | #endif | ||
400 | backlight_device_unregister(bd); | ||
401 | |||
402 | printk("riva: Backlight unloaded\n"); | ||
403 | } | ||
404 | } | 388 | } |
405 | #else | 389 | #else |
406 | static inline void riva_bl_init(struct riva_par *par) {} | 390 | static inline void riva_bl_init(struct riva_par *par) {} |