aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@rpsys.net>2007-02-10 18:07:48 -0500
committerRichard Purdie <rpurdie@rpsys.net>2007-02-20 04:26:53 -0500
commit599a52d12629394236d785615808845823875868 (patch)
tree4e2dfa3a25ce761be0ecc0490acabac553f77a67 /drivers/acpi
parent321709c5994f952b78d567fd7083dbebbdc381b7 (diff)
backlight: Separate backlight properties from backlight ops pointers
Per device data such as brightness belongs to the indivdual device and should therefore be separate from the the backlight operation function pointers. This patch splits the two types of data and allows simplifcation of some code. Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/asus_acpi.c6
-rw-r--r--drivers/acpi/ibm_acpi.c7
-rw-r--r--drivers/acpi/toshiba_acpi.c6
-rw-r--r--drivers/acpi/video.c35
4 files changed, 22 insertions, 32 deletions
diff --git a/drivers/acpi/asus_acpi.c b/drivers/acpi/asus_acpi.c
index 906c54f9ba50..b770deab968c 100644
--- a/drivers/acpi/asus_acpi.c
+++ b/drivers/acpi/asus_acpi.c
@@ -848,7 +848,7 @@ out:
848 848
849static int set_brightness_status(struct backlight_device *bd) 849static int set_brightness_status(struct backlight_device *bd)
850{ 850{
851 return set_brightness(bd->props->brightness); 851 return set_brightness(bd->props.brightness);
852} 852}
853 853
854static int 854static int
@@ -1352,10 +1352,9 @@ static int asus_hotk_remove(struct acpi_device *device, int type)
1352 return 0; 1352 return 0;
1353} 1353}
1354 1354
1355static struct backlight_properties asus_backlight_data = { 1355static struct backlight_ops asus_backlight_data = {
1356 .get_brightness = read_brightness, 1356 .get_brightness = read_brightness,
1357 .update_status = set_brightness_status, 1357 .update_status = set_brightness_status,
1358 .max_brightness = 15,
1359}; 1358};
1360 1359
1361static void __exit asus_acpi_exit(void) 1360static void __exit asus_acpi_exit(void)
@@ -1409,6 +1408,7 @@ static int __init asus_acpi_init(void)
1409 asus_backlight_device = NULL; 1408 asus_backlight_device = NULL;
1410 asus_acpi_exit(); 1409 asus_acpi_exit();
1411 } 1410 }
1411 asus_backlight_device->props.max_brightness = 15;
1412 1412
1413 return 0; 1413 return 0;
1414} 1414}
diff --git a/drivers/acpi/ibm_acpi.c b/drivers/acpi/ibm_acpi.c
index accf4f7da889..4cc534e36e81 100644
--- a/drivers/acpi/ibm_acpi.c
+++ b/drivers/acpi/ibm_acpi.c
@@ -1701,13 +1701,12 @@ static int brightness_write(char *buf)
1701 1701
1702static int brightness_update_status(struct backlight_device *bd) 1702static int brightness_update_status(struct backlight_device *bd)
1703{ 1703{
1704 return brightness_set(bd->props->brightness); 1704 return brightness_set(bd->props.brightness);
1705} 1705}
1706 1706
1707static struct backlight_properties ibm_backlight_data = { 1707static struct backlight_ops ibm_backlight_data = {
1708 .get_brightness = brightness_get, 1708 .get_brightness = brightness_get,
1709 .update_status = brightness_update_status, 1709 .update_status = brightness_update_status,
1710 .max_brightness = 7,
1711}; 1710};
1712 1711
1713static int brightness_init(void) 1712static int brightness_init(void)
@@ -1719,6 +1718,8 @@ static int brightness_init(void)
1719 return PTR_ERR(ibm_backlight_device); 1718 return PTR_ERR(ibm_backlight_device);
1720 } 1719 }
1721 1720
1721 ibm_backlight_device->props.max_brightness = 7;
1722
1722 return 0; 1723 return 0;
1723} 1724}
1724 1725
diff --git a/drivers/acpi/toshiba_acpi.c b/drivers/acpi/toshiba_acpi.c
index efc3669a84e8..3906d47b9783 100644
--- a/drivers/acpi/toshiba_acpi.c
+++ b/drivers/acpi/toshiba_acpi.c
@@ -315,7 +315,7 @@ static int set_lcd(int value)
315 315
316static int set_lcd_status(struct backlight_device *bd) 316static int set_lcd_status(struct backlight_device *bd)
317{ 317{
318 return set_lcd(bd->props->brightness); 318 return set_lcd(bd->props.brightness);
319} 319}
320 320
321static unsigned long write_lcd(const char *buffer, unsigned long count) 321static unsigned long write_lcd(const char *buffer, unsigned long count)
@@ -533,10 +533,9 @@ static acpi_status __exit remove_device(void)
533 return AE_OK; 533 return AE_OK;
534} 534}
535 535
536static struct backlight_properties toshiba_backlight_data = { 536static struct backlight_ops toshiba_backlight_data = {
537 .get_brightness = get_lcd, 537 .get_brightness = get_lcd,
538 .update_status = set_lcd_status, 538 .update_status = set_lcd_status,
539 .max_brightness = HCI_LCD_BRIGHTNESS_LEVELS - 1,
540}; 539};
541 540
542static void __exit toshiba_acpi_exit(void) 541static void __exit toshiba_acpi_exit(void)
@@ -596,6 +595,7 @@ static int __init toshiba_acpi_init(void)
596 toshiba_backlight_device = NULL; 595 toshiba_backlight_device = NULL;
597 toshiba_acpi_exit(); 596 toshiba_acpi_exit();
598 } 597 }
598 toshiba_backlight_device->props.max_brightness = HCI_LCD_BRIGHTNESS_LEVELS - 1;
599 599
600 return (ACPI_SUCCESS(status)) ? 0 : -ENODEV; 600 return (ACPI_SUCCESS(status)) ? 0 : -ENODEV;
601} 601}
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 75e422bd926a..0771b434feb2 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -169,7 +169,6 @@ struct acpi_video_device {
169 struct acpi_device *dev; 169 struct acpi_device *dev;
170 struct acpi_video_device_brightness *brightness; 170 struct acpi_video_device_brightness *brightness;
171 struct backlight_device *backlight; 171 struct backlight_device *backlight;
172 struct backlight_properties *data;
173}; 172};
174 173
175/* bus */ 174/* bus */
@@ -286,13 +285,18 @@ static int acpi_video_get_brightness(struct backlight_device *bd)
286 285
287static int acpi_video_set_brightness(struct backlight_device *bd) 286static int acpi_video_set_brightness(struct backlight_device *bd)
288{ 287{
289 int request_level = bd->props->brightness; 288 int request_level = bd->props.brightness;
290 struct acpi_video_device *vd = 289 struct acpi_video_device *vd =
291 (struct acpi_video_device *)class_get_devdata(&bd->class_dev); 290 (struct acpi_video_device *)class_get_devdata(&bd->class_dev);
292 acpi_video_device_lcd_set_level(vd, request_level); 291 acpi_video_device_lcd_set_level(vd, request_level);
293 return 0; 292 return 0;
294} 293}
295 294
295static struct backlight_ops acpi_backlight_ops = {
296 .get_brightness = acpi_video_get_brightness,
297 .update_status = acpi_video_set_brightness,
298};
299
296/* -------------------------------------------------------------------------- 300/* --------------------------------------------------------------------------
297 Video Management 301 Video Management
298 -------------------------------------------------------------------------- */ 302 -------------------------------------------------------------------------- */
@@ -608,30 +612,18 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
608 unsigned long tmp; 612 unsigned long tmp;
609 static int count = 0; 613 static int count = 0;
610 char *name; 614 char *name;
611 struct backlight_properties *acpi_video_data;
612
613 name = kzalloc(MAX_NAME_LEN, GFP_KERNEL); 615 name = kzalloc(MAX_NAME_LEN, GFP_KERNEL);
614 if (!name) 616 if (!name)
615 return; 617 return;
616 618
617 acpi_video_data = kzalloc(
618 sizeof(struct backlight_properties),
619 GFP_KERNEL);
620 if (!acpi_video_data){
621 kfree(name);
622 return;
623 }
624 acpi_video_data->get_brightness =
625 acpi_video_get_brightness;
626 acpi_video_data->update_status =
627 acpi_video_set_brightness;
628 sprintf(name, "acpi_video%d", count++); 619 sprintf(name, "acpi_video%d", count++);
629 device->data = acpi_video_data;
630 acpi_video_data->max_brightness = max_level;
631 acpi_video_device_lcd_get_level_current(device, &tmp); 620 acpi_video_device_lcd_get_level_current(device, &tmp);
632 acpi_video_data->brightness = (int)tmp;
633 device->backlight = backlight_device_register(name, 621 device->backlight = backlight_device_register(name,
634 NULL, device, acpi_video_data); 622 NULL, device, &acpi_backlight_ops);
623 device->backlight->props.max_brightness = max_level;
624 device->backlight->props.brightness = (int)tmp;
625 backlight_update_status(device->backlight);
626
635 kfree(name); 627 kfree(name);
636 } 628 }
637 return; 629 return;
@@ -1676,10 +1668,7 @@ static int acpi_video_bus_put_one_device(struct acpi_video_device *device)
1676 status = acpi_remove_notify_handler(device->dev->handle, 1668 status = acpi_remove_notify_handler(device->dev->handle,
1677 ACPI_DEVICE_NOTIFY, 1669 ACPI_DEVICE_NOTIFY,
1678 acpi_video_device_notify); 1670 acpi_video_device_notify);
1679 if (device->backlight){ 1671 backlight_device_unregister(device->backlight);
1680 backlight_device_unregister(device->backlight);
1681 kfree(device->data);
1682 }
1683 return 0; 1672 return 0;
1684} 1673}
1685 1674