aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2
diff options
context:
space:
mode:
authorJani Nikula <ext-jani.1.nikula@nokia.com>2010-04-12 02:36:05 -0400
committerTomi Valkeinen <tomi.valkeinen@nokia.com>2010-08-03 08:18:48 -0400
commitee52c0ae68c42c5a0c26462b141a521fcc70849a (patch)
tree323bc1e083e5e35d09ec1f5fbb529f364a0ca26c /drivers/video/omap2
parentf2a8b75c137acb048a627379cf7e93b8b7c29191 (diff)
OMAP: DSS2: Taal: Ensure panel is enabled in enable_te() and run_test()
Bail out from taal_enable_te() and taal_run_test() if panel is not enabled. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
Diffstat (limited to 'drivers/video/omap2')
-rw-r--r--drivers/video/omap2/displays/panel-taal.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c
index 2c2f1924b2c3..4e594bb50f4b 100644
--- a/drivers/video/omap2/displays/panel-taal.c
+++ b/drivers/video/omap2/displays/panel-taal.c
@@ -946,11 +946,8 @@ static int taal_sync(struct omap_dss_device *dssdev)
946 946
947static int _taal_enable_te(struct omap_dss_device *dssdev, bool enable) 947static int _taal_enable_te(struct omap_dss_device *dssdev, bool enable)
948{ 948{
949 struct taal_data *td = dev_get_drvdata(&dssdev->dev);
950 int r; 949 int r;
951 950
952 td->te_enabled = enable;
953
954 if (enable) 951 if (enable)
955 r = taal_dcs_write_1(DCS_TEAR_ON, 0); 952 r = taal_dcs_write_1(DCS_TEAR_ON, 0);
956 else 953 else
@@ -973,11 +970,22 @@ static int taal_enable_te(struct omap_dss_device *dssdev, bool enable)
973 mutex_lock(&td->lock); 970 mutex_lock(&td->lock);
974 dsi_bus_lock(); 971 dsi_bus_lock();
975 972
976 r = _taal_enable_te(dssdev, enable); 973 if (td->enabled) {
974 r = _taal_enable_te(dssdev, enable);
975 if (r)
976 goto err;
977 }
978
979 td->te_enabled = enable;
977 980
978 dsi_bus_unlock(); 981 dsi_bus_unlock();
979 mutex_unlock(&td->lock); 982 mutex_unlock(&td->lock);
980 983
984 return 0;
985err:
986 dsi_bus_unlock();
987 mutex_unlock(&td->lock);
988
981 return r; 989 return r;
982} 990}
983 991
@@ -1077,23 +1085,30 @@ static int taal_run_test(struct omap_dss_device *dssdev, int test_num)
1077 int r; 1085 int r;
1078 1086
1079 mutex_lock(&td->lock); 1087 mutex_lock(&td->lock);
1088
1089 if (!td->enabled) {
1090 r = -ENODEV;
1091 goto err1;
1092 }
1093
1080 dsi_bus_lock(); 1094 dsi_bus_lock();
1081 1095
1082 r = taal_dcs_read_1(DCS_GET_ID1, &id1); 1096 r = taal_dcs_read_1(DCS_GET_ID1, &id1);
1083 if (r) 1097 if (r)
1084 goto err; 1098 goto err2;
1085 r = taal_dcs_read_1(DCS_GET_ID2, &id2); 1099 r = taal_dcs_read_1(DCS_GET_ID2, &id2);
1086 if (r) 1100 if (r)
1087 goto err; 1101 goto err2;
1088 r = taal_dcs_read_1(DCS_GET_ID3, &id3); 1102 r = taal_dcs_read_1(DCS_GET_ID3, &id3);
1089 if (r) 1103 if (r)
1090 goto err; 1104 goto err2;
1091 1105
1092 dsi_bus_unlock(); 1106 dsi_bus_unlock();
1093 mutex_unlock(&td->lock); 1107 mutex_unlock(&td->lock);
1094 return 0; 1108 return 0;
1095err: 1109err2:
1096 dsi_bus_unlock(); 1110 dsi_bus_unlock();
1111err1:
1097 mutex_unlock(&td->lock); 1112 mutex_unlock(&td->lock);
1098 return r; 1113 return r;
1099} 1114}