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>
This commit is contained in:
@@ -170,11 +170,6 @@ void __init pmu_backlight_init()
|
|||||||
bd->props->power = FB_BLANK_UNBLANK;
|
bd->props->power = FB_BLANK_UNBLANK;
|
||||||
backlight_update_status(bd);
|
backlight_update_status(bd);
|
||||||
|
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (!pmac_backlight)
|
|
||||||
pmac_backlight = bd;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
|
|
||||||
printk("pmubl: Backlight initialized (%s)\n", name);
|
printk("pmubl: Backlight initialized (%s)\n", name);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@@ -384,7 +384,7 @@ static void sony_snc_pf_remove(void)
|
|||||||
static int sony_backlight_update_status(struct backlight_device *bd)
|
static int sony_backlight_update_status(struct backlight_device *bd)
|
||||||
{
|
{
|
||||||
return acpi_callsetfunc(sony_acpi_handle, "SBRT",
|
return acpi_callsetfunc(sony_acpi_handle, "SBRT",
|
||||||
bd->props->brightness + 1, NULL);
|
bd->props.brightness + 1, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sony_backlight_get_brightness(struct backlight_device *bd)
|
static int sony_backlight_get_brightness(struct backlight_device *bd)
|
||||||
@@ -398,10 +398,9 @@ static int sony_backlight_get_brightness(struct backlight_device *bd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct backlight_device *sony_backlight_device;
|
static struct backlight_device *sony_backlight_device;
|
||||||
static struct backlight_properties sony_backlight_properties = {
|
static struct backlight_ops sony_backlight_ops = {
|
||||||
.update_status = sony_backlight_update_status,
|
.update_status = sony_backlight_update_status,
|
||||||
.get_brightness = sony_backlight_get_brightness,
|
.get_brightness = sony_backlight_get_brightness,
|
||||||
.max_brightness = SONY_MAX_BRIGHTNESS - 1,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -483,15 +482,19 @@ static int sony_acpi_add(struct acpi_device *device)
|
|||||||
if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, "GBRT", &handle))) {
|
if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, "GBRT", &handle))) {
|
||||||
sony_backlight_device = backlight_device_register("sony", NULL,
|
sony_backlight_device = backlight_device_register("sony", NULL,
|
||||||
NULL,
|
NULL,
|
||||||
&sony_backlight_properties);
|
&sony_backlight_ops);
|
||||||
|
|
||||||
if (IS_ERR(sony_backlight_device)) {
|
if (IS_ERR(sony_backlight_device)) {
|
||||||
printk(LOG_PFX "unable to register backlight device\n");
|
printk(LOG_PFX "unable to register backlight device\n");
|
||||||
sony_backlight_device = NULL;
|
sony_backlight_device = NULL;
|
||||||
} else
|
} else {
|
||||||
sony_backlight_properties.brightness =
|
sony_backlight_device->props.brightness =
|
||||||
sony_backlight_get_brightness
|
sony_backlight_get_brightness
|
||||||
(sony_backlight_device);
|
(sony_backlight_device);
|
||||||
|
sony_backlight_device->props.max_brightness =
|
||||||
|
SONY_MAX_BRIGHTNESS - 1;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sony_snc_pf_add())
|
if (sony_snc_pf_add())
|
||||||
|
@@ -1829,13 +1829,6 @@ static void aty128_bl_init(struct aty128fb_par *par)
|
|||||||
bd->props->power = FB_BLANK_UNBLANK;
|
bd->props->power = FB_BLANK_UNBLANK;
|
||||||
backlight_update_status(bd);
|
backlight_update_status(bd);
|
||||||
|
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (!pmac_backlight)
|
|
||||||
pmac_backlight = bd;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
printk("aty128: Backlight initialized (%s)\n", name);
|
printk("aty128: Backlight initialized (%s)\n", name);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -1846,17 +1839,8 @@ error:
|
|||||||
|
|
||||||
static void aty128_bl_exit(struct backlight_device *bd)
|
static void aty128_bl_exit(struct backlight_device *bd)
|
||||||
{
|
{
|
||||||
if (bd) {
|
backlight_device_unregister(bd);
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
printk("aty128: Backlight unloaded\n");
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (pmac_backlight == bd)
|
|
||||||
pmac_backlight = NULL;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
#endif
|
|
||||||
backlight_device_unregister(bd);
|
|
||||||
|
|
||||||
printk("aty128: Backlight unloaded\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_FB_ATY128_BACKLIGHT */
|
#endif /* CONFIG_FB_ATY128_BACKLIGHT */
|
||||||
|
|
||||||
|
@@ -2198,13 +2198,6 @@ static void aty_bl_init(struct atyfb_par *par)
|
|||||||
bd->props->power = FB_BLANK_UNBLANK;
|
bd->props->power = FB_BLANK_UNBLANK;
|
||||||
backlight_update_status(bd);
|
backlight_update_status(bd);
|
||||||
|
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (!pmac_backlight)
|
|
||||||
pmac_backlight = bd;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
printk("aty: Backlight initialized (%s)\n", name);
|
printk("aty: Backlight initialized (%s)\n", name);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -2215,17 +2208,8 @@ error:
|
|||||||
|
|
||||||
static void aty_bl_exit(struct backlight_device *bd)
|
static void aty_bl_exit(struct backlight_device *bd)
|
||||||
{
|
{
|
||||||
if (bd) {
|
backlight_device_unregister(bd);
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
printk("aty: Backlight unloaded\n");
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (pmac_backlight == bd)
|
|
||||||
pmac_backlight = NULL;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
#endif
|
|
||||||
backlight_device_unregister(bd);
|
|
||||||
|
|
||||||
printk("aty: Backlight unloaded\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_FB_ATY_BACKLIGHT */
|
#endif /* CONFIG_FB_ATY_BACKLIGHT */
|
||||||
|
@@ -192,13 +192,6 @@ void radeonfb_bl_init(struct radeonfb_info *rinfo)
|
|||||||
bd->props->power = FB_BLANK_UNBLANK;
|
bd->props->power = FB_BLANK_UNBLANK;
|
||||||
backlight_update_status(bd);
|
backlight_update_status(bd);
|
||||||
|
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (!pmac_backlight)
|
|
||||||
pmac_backlight = bd;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
printk("radeonfb: Backlight initialized (%s)\n", name);
|
printk("radeonfb: Backlight initialized (%s)\n", name);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -215,12 +208,6 @@ void radeonfb_bl_exit(struct radeonfb_info *rinfo)
|
|||||||
if (bd) {
|
if (bd) {
|
||||||
struct radeon_bl_privdata *pdata;
|
struct radeon_bl_privdata *pdata;
|
||||||
|
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (pmac_backlight == bd)
|
|
||||||
pmac_backlight = NULL;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
#endif
|
|
||||||
pdata = class_get_devdata(&bd->class_dev);
|
pdata = class_get_devdata(&bd->class_dev);
|
||||||
backlight_device_unregister(bd);
|
backlight_device_unregister(bd);
|
||||||
kfree(pdata);
|
kfree(pdata);
|
||||||
|
@@ -14,6 +14,9 @@
|
|||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_PMAC_BACKLIGHT
|
||||||
|
#include <asm/backlight.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_FB) || (defined(CONFIG_FB_MODULE) && \
|
#if defined(CONFIG_FB) || (defined(CONFIG_FB_MODULE) && \
|
||||||
defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE))
|
defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE))
|
||||||
@@ -262,6 +265,13 @@ struct backlight_device *backlight_device_register(const char *name,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_PMAC_BACKLIGHT
|
||||||
|
mutex_lock(&pmac_backlight_mutex);
|
||||||
|
if (!pmac_backlight)
|
||||||
|
pmac_backlight = new_bd;
|
||||||
|
mutex_unlock(&pmac_backlight_mutex);
|
||||||
|
#endif
|
||||||
|
|
||||||
return new_bd;
|
return new_bd;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(backlight_device_register);
|
EXPORT_SYMBOL(backlight_device_register);
|
||||||
@@ -281,6 +291,13 @@ void backlight_device_unregister(struct backlight_device *bd)
|
|||||||
|
|
||||||
pr_debug("backlight_device_unregister: name=%s\n", bd->class_dev.class_id);
|
pr_debug("backlight_device_unregister: name=%s\n", bd->class_dev.class_id);
|
||||||
|
|
||||||
|
#ifdef CONFIG_PMAC_BACKLIGHT
|
||||||
|
mutex_lock(&pmac_backlight_mutex);
|
||||||
|
if (pmac_backlight == bd)
|
||||||
|
pmac_backlight = NULL;
|
||||||
|
mutex_unlock(&pmac_backlight_mutex);
|
||||||
|
#endif
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(bl_class_device_attributes); i++)
|
for (i = 0; i < ARRAY_SIZE(bl_class_device_attributes); i++)
|
||||||
class_device_remove_file(&bd->class_dev,
|
class_device_remove_file(&bd->class_dev,
|
||||||
&bl_class_device_attributes[i]);
|
&bl_class_device_attributes[i]);
|
||||||
|
@@ -16,11 +16,6 @@
|
|||||||
#include "nv_type.h"
|
#include "nv_type.h"
|
||||||
#include "nv_proto.h"
|
#include "nv_proto.h"
|
||||||
|
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
|
||||||
#include <asm/backlight.h>
|
|
||||||
#include <asm/machdep.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* We do not have any information about which values are allowed, thus
|
/* We do not have any information about which values are allowed, thus
|
||||||
* we used safe values.
|
* we used safe values.
|
||||||
*/
|
*/
|
||||||
@@ -128,13 +123,6 @@ void nvidia_bl_init(struct nvidia_par *par)
|
|||||||
bd->props->power = FB_BLANK_UNBLANK;
|
bd->props->power = FB_BLANK_UNBLANK;
|
||||||
backlight_update_status(bd);
|
backlight_update_status(bd);
|
||||||
|
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (!pmac_backlight)
|
|
||||||
pmac_backlight = bd;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
printk("nvidia: Backlight initialized (%s)\n", name);
|
printk("nvidia: Backlight initialized (%s)\n", name);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -148,15 +136,6 @@ void nvidia_bl_exit(struct nvidia_par *par)
|
|||||||
struct fb_info *info = pci_get_drvdata(par->pci_dev);
|
struct fb_info *info = pci_get_drvdata(par->pci_dev);
|
||||||
struct backlight_device *bd = info->bl_dev;
|
struct backlight_device *bd = info->bl_dev;
|
||||||
|
|
||||||
if (bd) {
|
backlight_device_unregister(bd);
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
printk("nvidia: Backlight unloaded\n");
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (pmac_backlight == bd)
|
|
||||||
pmac_backlight = NULL;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
#endif
|
|
||||||
backlight_device_unregister(bd);
|
|
||||||
|
|
||||||
printk("nvidia: Backlight unloaded\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -371,13 +371,6 @@ static void riva_bl_init(struct riva_par *par)
|
|||||||
bd->props->power = FB_BLANK_UNBLANK;
|
bd->props->power = FB_BLANK_UNBLANK;
|
||||||
backlight_update_status(bd);
|
backlight_update_status(bd);
|
||||||
|
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (!pmac_backlight)
|
|
||||||
pmac_backlight = bd;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
printk("riva: Backlight initialized (%s)\n", name);
|
printk("riva: Backlight initialized (%s)\n", name);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -390,17 +383,8 @@ static void riva_bl_exit(struct fb_info *info)
|
|||||||
{
|
{
|
||||||
struct backlight_device *bd = info->bl_dev;
|
struct backlight_device *bd = info->bl_dev;
|
||||||
|
|
||||||
if (bd) {
|
backlight_device_unregister(bd);
|
||||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
printk("riva: Backlight unloaded\n");
|
||||||
mutex_lock(&pmac_backlight_mutex);
|
|
||||||
if (pmac_backlight == bd)
|
|
||||||
pmac_backlight = NULL;
|
|
||||||
mutex_unlock(&pmac_backlight_mutex);
|
|
||||||
#endif
|
|
||||||
backlight_device_unregister(bd);
|
|
||||||
|
|
||||||
printk("riva: Backlight unloaded\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static inline void riva_bl_init(struct riva_par *par) {}
|
static inline void riva_bl_init(struct riva_par *par) {}
|
||||||
|
Reference in New Issue
Block a user