Commit 519ab5f2 authored by Yu Luming's avatar Yu Luming Committed by Len Brown

ACPI: video: Add dev argument for backlight_device_register

This patch set adds generic abstract layer support for acpi video driver to
have generic user interface to control backlight and output switch control by
leveraging the existing backlight sysfs class driver, and by adding a new
video output sysfs class driver.

This patch:

Add dev argument for backlight_device_register to link the class device to
real device object.  The platform specific driver should find a way to get the
real device object for their video device.

[akpm@osdl.org: build fix]
[akpm@osdl.org: fix msi-laptop.c]
Signed-off-by: default avatarLuming Yu <Luming.yu@intel.com>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent f4715189
...@@ -1402,7 +1402,7 @@ static int __init asus_acpi_init(void) ...@@ -1402,7 +1402,7 @@ static int __init asus_acpi_init(void)
return result; return result;
} }
asus_backlight_device = backlight_device_register("asus", NULL, asus_backlight_device = backlight_device_register("asus",NULL,NULL,
&asus_backlight_data); &asus_backlight_data);
if (IS_ERR(asus_backlight_device)) { if (IS_ERR(asus_backlight_device)) {
printk(KERN_ERR "Could not register asus backlight device\n"); printk(KERN_ERR "Could not register asus backlight device\n");
......
...@@ -1714,7 +1714,7 @@ static struct backlight_properties ibm_backlight_data = { ...@@ -1714,7 +1714,7 @@ static struct backlight_properties ibm_backlight_data = {
static int brightness_init(void) static int brightness_init(void)
{ {
ibm_backlight_device = backlight_device_register("ibm", NULL, ibm_backlight_device = backlight_device_register("ibm", NULL, NULL,
&ibm_backlight_data); &ibm_backlight_data);
if (IS_ERR(ibm_backlight_device)) { if (IS_ERR(ibm_backlight_device)) {
printk(IBM_ERR "Could not register backlight device\n"); printk(IBM_ERR "Could not register backlight device\n");
......
...@@ -590,7 +590,8 @@ static int __init toshiba_acpi_init(void) ...@@ -590,7 +590,8 @@ static int __init toshiba_acpi_init(void)
remove_proc_entry(PROC_TOSHIBA, acpi_root_dir); remove_proc_entry(PROC_TOSHIBA, acpi_root_dir);
} }
toshiba_backlight_device = backlight_device_register("toshiba", NULL, toshiba_backlight_device = backlight_device_register("toshiba",NULL,
NULL,
&toshiba_backlight_data); &toshiba_backlight_data);
if (IS_ERR(toshiba_backlight_device)) { if (IS_ERR(toshiba_backlight_device)) {
printk(KERN_ERR "Could not register toshiba backlight device\n"); printk(KERN_ERR "Could not register toshiba backlight device\n");
......
...@@ -317,7 +317,8 @@ static int __init msi_init(void) ...@@ -317,7 +317,8 @@ static int __init msi_init(void)
/* Register backlight stuff */ /* Register backlight stuff */
msibl_device = backlight_device_register("msi-laptop-bl", NULL, &msibl_props); msibl_device = backlight_device_register("msi-laptop-bl", NULL, NULL,
&msibl_props);
if (IS_ERR(msibl_device)) if (IS_ERR(msibl_device))
return PTR_ERR(msibl_device); return PTR_ERR(msibl_device);
......
...@@ -283,7 +283,7 @@ static int appledisplay_probe(struct usb_interface *iface, ...@@ -283,7 +283,7 @@ static int appledisplay_probe(struct usb_interface *iface,
/* Register backlight device */ /* Register backlight device */
snprintf(bl_name, sizeof(bl_name), "appledisplay%d", snprintf(bl_name, sizeof(bl_name), "appledisplay%d",
atomic_inc_return(&count_displays) - 1); atomic_inc_return(&count_displays) - 1);
pdata->bd = backlight_device_register(bl_name, pdata, pdata->bd = backlight_device_register(bl_name, NULL, NULL,
&appledisplay_bl_data); &appledisplay_bl_data);
if (IS_ERR(pdata->bd)) { if (IS_ERR(pdata->bd)) {
err("appledisplay: Backlight registration failed"); err("appledisplay: Backlight registration failed");
......
...@@ -190,7 +190,9 @@ static int fb_notifier_callback(struct notifier_block *self, ...@@ -190,7 +190,9 @@ static int fb_notifier_callback(struct notifier_block *self,
* Creates and registers new backlight class_device. Returns either an * Creates and registers new backlight class_device. Returns either an
* ERR_PTR() or a pointer to the newly allocated device. * ERR_PTR() or a pointer to the newly allocated device.
*/ */
struct backlight_device *backlight_device_register(const char *name, void *devdata, struct backlight_device *backlight_device_register(const char *name,
struct device *dev,
void *devdata,
struct backlight_properties *bp) struct backlight_properties *bp)
{ {
int i, rc; int i, rc;
...@@ -206,6 +208,7 @@ struct backlight_device *backlight_device_register(const char *name, void *devda ...@@ -206,6 +208,7 @@ struct backlight_device *backlight_device_register(const char *name, void *devda
new_bd->props = bp; new_bd->props = bp;
memset(&new_bd->class_dev, 0, sizeof(new_bd->class_dev)); memset(&new_bd->class_dev, 0, sizeof(new_bd->class_dev));
new_bd->class_dev.class = &backlight_class; new_bd->class_dev.class = &backlight_class;
new_bd->class_dev.dev = dev;
strlcpy(new_bd->class_dev.class_id, name, KOBJ_NAME_LEN); strlcpy(new_bd->class_dev.class_id, name, KOBJ_NAME_LEN);
class_set_devdata(&new_bd->class_dev, devdata); class_set_devdata(&new_bd->class_dev, devdata);
......
...@@ -54,7 +54,7 @@ struct backlight_device { ...@@ -54,7 +54,7 @@ struct backlight_device {
}; };
extern struct backlight_device *backlight_device_register(const char *name, extern struct backlight_device *backlight_device_register(const char *name,
void *devdata, struct backlight_properties *bp); struct device *dev,void *devdata,struct backlight_properties *bp);
extern void backlight_device_unregister(struct backlight_device *bd); extern void backlight_device_unregister(struct backlight_device *bd);
#define to_backlight_device(obj) container_of(obj, struct backlight_device, class_dev) #define to_backlight_device(obj) container_of(obj, struct backlight_device, class_dev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment