aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 2c2f1924b2c..4e594bb50f4 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}