aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2011-08-09 04:39:27 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-09-30 09:17:27 -0400
commitbb36dbfd23033282991ac47d9eac8ad26514a0d1 (patch)
tree5dad98ae17dcd06eb56df2599232b3b2eeb9df77 /drivers/video
parent0373cac6cc7eef7ada03269288088e3cbee232c0 (diff)
OMAPDSS: Taal: remove external backlight support
Taal panel driver supports two kinds of backlight control: 1) using DSI commands sent to the panel to control the backlight, 2) calling function pointers going to the board file to control the backlight. The second option is a bit hacky, and will no longer be needed when the PWM driver supports the backlight features. After that we can use the standard PWM backlight driver. This patch removes the second backlight control mechanism, and adds a boolean field, use_dsi_backlight, to nokia_dsi_panel_data which the board file can use to inform whether the panel driver should use DSI commands to control the backlight. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/displays/panel-taal.c76
1 files changed, 30 insertions, 46 deletions
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c
index ddc696d52ab..7f91002cc3b 100644
--- a/drivers/video/omap2/displays/panel-taal.c
+++ b/drivers/video/omap2/displays/panel-taal.c
@@ -208,8 +208,6 @@ struct taal_data {
208 208
209 struct delayed_work te_timeout_work; 209 struct delayed_work te_timeout_work;
210 210
211 bool use_dsi_bl;
212
213 bool cabc_broken; 211 bool cabc_broken;
214 unsigned cabc_mode; 212 unsigned cabc_mode;
215 213
@@ -541,7 +539,6 @@ static int taal_bl_update_status(struct backlight_device *dev)
541{ 539{
542 struct omap_dss_device *dssdev = dev_get_drvdata(&dev->dev); 540 struct omap_dss_device *dssdev = dev_get_drvdata(&dev->dev);
543 struct taal_data *td = dev_get_drvdata(&dssdev->dev); 541 struct taal_data *td = dev_get_drvdata(&dssdev->dev);
544 struct nokia_dsi_panel_data *panel_data = get_panel_data(dssdev);
545 int r; 542 int r;
546 int level; 543 int level;
547 544
@@ -555,23 +552,16 @@ static int taal_bl_update_status(struct backlight_device *dev)
555 552
556 mutex_lock(&td->lock); 553 mutex_lock(&td->lock);
557 554
558 if (td->use_dsi_bl) { 555 if (td->enabled) {
559 if (td->enabled) { 556 dsi_bus_lock(dssdev);
560 dsi_bus_lock(dssdev);
561 557
562 r = taal_wake_up(dssdev); 558 r = taal_wake_up(dssdev);
563 if (!r) 559 if (!r)
564 r = taal_dcs_write_1(td, DCS_BRIGHTNESS, level); 560 r = taal_dcs_write_1(td, DCS_BRIGHTNESS, level);
565 561
566 dsi_bus_unlock(dssdev); 562 dsi_bus_unlock(dssdev);
567 } else {
568 r = 0;
569 }
570 } else { 563 } else {
571 if (!panel_data->set_backlight) 564 r = 0;
572 r = -EINVAL;
573 else
574 r = panel_data->set_backlight(dssdev, level);
575 } 565 }
576 566
577 mutex_unlock(&td->lock); 567 mutex_unlock(&td->lock);
@@ -950,7 +940,7 @@ static int taal_probe(struct omap_dss_device *dssdev)
950{ 940{
951 struct backlight_properties props; 941 struct backlight_properties props;
952 struct taal_data *td; 942 struct taal_data *td;
953 struct backlight_device *bldev; 943 struct backlight_device *bldev = NULL;
954 struct nokia_dsi_panel_data *panel_data = get_panel_data(dssdev); 944 struct nokia_dsi_panel_data *panel_data = get_panel_data(dssdev);
955 struct panel_config *panel_config = NULL; 945 struct panel_config *panel_config = NULL;
956 int r, i; 946 int r, i;
@@ -1011,35 +1001,26 @@ static int taal_probe(struct omap_dss_device *dssdev)
1011 1001
1012 taal_hw_reset(dssdev); 1002 taal_hw_reset(dssdev);
1013 1003
1014 /* if no platform set_backlight() defined, presume DSI backlight 1004 if (panel_data->use_dsi_backlight) {
1015 * control */ 1005 memset(&props, 0, sizeof(struct backlight_properties));
1016 memset(&props, 0, sizeof(struct backlight_properties));
1017 if (!panel_data->set_backlight)
1018 td->use_dsi_bl = true;
1019
1020 if (td->use_dsi_bl)
1021 props.max_brightness = 255; 1006 props.max_brightness = 255;
1022 else
1023 props.max_brightness = 127;
1024
1025 props.type = BACKLIGHT_RAW;
1026 bldev = backlight_device_register(dev_name(&dssdev->dev), &dssdev->dev,
1027 dssdev, &taal_bl_ops, &props);
1028 if (IS_ERR(bldev)) {
1029 r = PTR_ERR(bldev);
1030 goto err_bl;
1031 }
1032 1007
1033 td->bldev = bldev; 1008 props.type = BACKLIGHT_RAW;
1009 bldev = backlight_device_register(dev_name(&dssdev->dev),
1010 &dssdev->dev, dssdev, &taal_bl_ops, &props);
1011 if (IS_ERR(bldev)) {
1012 r = PTR_ERR(bldev);
1013 goto err_bl;
1014 }
1015
1016 td->bldev = bldev;
1034 1017
1035 bldev->props.fb_blank = FB_BLANK_UNBLANK; 1018 bldev->props.fb_blank = FB_BLANK_UNBLANK;
1036 bldev->props.power = FB_BLANK_UNBLANK; 1019 bldev->props.power = FB_BLANK_UNBLANK;
1037 if (td->use_dsi_bl)
1038 bldev->props.brightness = 255; 1020 bldev->props.brightness = 255;
1039 else
1040 bldev->props.brightness = 127;
1041 1021
1042 taal_bl_update_status(bldev); 1022 taal_bl_update_status(bldev);
1023 }
1043 1024
1044 if (panel_data->use_ext_te) { 1025 if (panel_data->use_ext_te) {
1045 int gpio = panel_data->ext_te_gpio; 1026 int gpio = panel_data->ext_te_gpio;
@@ -1097,7 +1078,8 @@ err_irq:
1097 if (panel_data->use_ext_te) 1078 if (panel_data->use_ext_te)
1098 gpio_free(panel_data->ext_te_gpio); 1079 gpio_free(panel_data->ext_te_gpio);
1099err_gpio: 1080err_gpio:
1100 backlight_device_unregister(bldev); 1081 if (bldev != NULL)
1082 backlight_device_unregister(bldev);
1101err_bl: 1083err_bl:
1102 destroy_workqueue(td->workqueue); 1084 destroy_workqueue(td->workqueue);
1103err_wq: 1085err_wq:
@@ -1126,9 +1108,11 @@ static void __exit taal_remove(struct omap_dss_device *dssdev)
1126 } 1108 }
1127 1109
1128 bldev = td->bldev; 1110 bldev = td->bldev;
1129 bldev->props.power = FB_BLANK_POWERDOWN; 1111 if (bldev != NULL) {
1130 taal_bl_update_status(bldev); 1112 bldev->props.power = FB_BLANK_POWERDOWN;
1131 backlight_device_unregister(bldev); 1113 taal_bl_update_status(bldev);
1114 backlight_device_unregister(bldev);
1115 }
1132 1116
1133 taal_cancel_ulps_work(dssdev); 1117 taal_cancel_ulps_work(dssdev);
1134 taal_cancel_esd_work(dssdev); 1118 taal_cancel_esd_work(dssdev);