aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-06-06 17:17:32 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2018-09-03 09:13:30 -0400
commit31cd7afa3086f1206ef4c7434e033669702adf08 (patch)
tree3fca306d5e5489986f30ad65752b8a6aec9b5ba1
parentca6e968b9326a17d072b14b658fff538466c6bd2 (diff)
drm/omap: panels: Don't modify fixed timings
Panels drivers store their timings in a device data structure field that is initialized at probe time, either from hardcoded values or from firmware-supplied values. Those timings are then reported through the .get_timings() operation to construct the panel display mode. The panel timings are further modified by the .set_timings() operation, which is called with the timings retrieved by .get_timings(), and mangled by .check_timings(). The latter potentially adjusts the pixel clock only. Conceptually, modifying the panel timings is wrong, as the timings are an intrinsic property of the panel and should thus be fixed. Furthermore, modifying them this way at runtime can result in display modes reported to userspace varying between calls, which is also wrong. There's no actual need to store the mangled pixel clock value in the timings. Don't modify the panel timings in the .set_timings() operation, just forward it to the previous device in the display pipeline. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r--drivers/gpu/drm/omapdrm/displays/panel-dpi.c3
-rw-r--r--drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c3
-rw-r--r--drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c3
-rw-r--r--drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c3
-rw-r--r--drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c3
-rw-r--r--drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c3
-rw-r--r--drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c3
7 files changed, 0 insertions, 21 deletions
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-dpi.c b/drivers/gpu/drm/omapdrm/displays/panel-dpi.c
index e75600a33c37..95cdfde174aa 100644
--- a/drivers/gpu/drm/omapdrm/displays/panel-dpi.c
+++ b/drivers/gpu/drm/omapdrm/displays/panel-dpi.c
@@ -96,11 +96,8 @@ static void panel_dpi_disable(struct omap_dss_device *dssdev)
96static void panel_dpi_set_timings(struct omap_dss_device *dssdev, 96static void panel_dpi_set_timings(struct omap_dss_device *dssdev,
97 const struct videomode *vm) 97 const struct videomode *vm)
98{ 98{
99 struct panel_drv_data *ddata = to_panel_data(dssdev);
100 struct omap_dss_device *src = dssdev->src; 99 struct omap_dss_device *src = dssdev->src;
101 100
102 ddata->vm = *vm;
103
104 src->ops->set_timings(src, vm); 101 src->ops->set_timings(src, vm);
105} 102}
106 103
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c b/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c
index 3c221f7f0598..4e21de0e010d 100644
--- a/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c
+++ b/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c
@@ -166,11 +166,8 @@ static void lb035q02_disable(struct omap_dss_device *dssdev)
166static void lb035q02_set_timings(struct omap_dss_device *dssdev, 166static void lb035q02_set_timings(struct omap_dss_device *dssdev,
167 const struct videomode *vm) 167 const struct videomode *vm)
168{ 168{
169 struct panel_drv_data *ddata = to_panel_data(dssdev);
170 struct omap_dss_device *src = dssdev->src; 169 struct omap_dss_device *src = dssdev->src;
171 170
172 ddata->vm = *vm;
173
174 src->ops->set_timings(src, vm); 171 src->ops->set_timings(src, vm);
175} 172}
176 173
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c b/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c
index 78ff18c4eb46..f6fc7b8e639b 100644
--- a/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c
+++ b/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c
@@ -159,11 +159,8 @@ static void nec_8048_disable(struct omap_dss_device *dssdev)
159static void nec_8048_set_timings(struct omap_dss_device *dssdev, 159static void nec_8048_set_timings(struct omap_dss_device *dssdev,
160 const struct videomode *vm) 160 const struct videomode *vm)
161{ 161{
162 struct panel_drv_data *ddata = to_panel_data(dssdev);
163 struct omap_dss_device *src = dssdev->src; 162 struct omap_dss_device *src = dssdev->src;
164 163
165 ddata->vm = *vm;
166
167 src->ops->set_timings(src, vm); 164 src->ops->set_timings(src, vm);
168} 165}
169 166
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c b/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c
index 47e97dbffc07..51ca92c82e2a 100644
--- a/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c
+++ b/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c
@@ -129,11 +129,8 @@ static void sharp_ls_disable(struct omap_dss_device *dssdev)
129static void sharp_ls_set_timings(struct omap_dss_device *dssdev, 129static void sharp_ls_set_timings(struct omap_dss_device *dssdev,
130 const struct videomode *vm) 130 const struct videomode *vm)
131{ 131{
132 struct panel_drv_data *ddata = to_panel_data(dssdev);
133 struct omap_dss_device *src = dssdev->src; 132 struct omap_dss_device *src = dssdev->src;
134 133
135 ddata->vm = *vm;
136
137 src->ops->set_timings(src, vm); 134 src->ops->set_timings(src, vm);
138} 135}
139 136
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c b/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c
index 1ec3b1e2107c..974982c46445 100644
--- a/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c
+++ b/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c
@@ -632,11 +632,8 @@ static void acx565akm_disable(struct omap_dss_device *dssdev)
632static void acx565akm_set_timings(struct omap_dss_device *dssdev, 632static void acx565akm_set_timings(struct omap_dss_device *dssdev,
633 const struct videomode *vm) 633 const struct videomode *vm)
634{ 634{
635 struct panel_drv_data *ddata = to_panel_data(dssdev);
636 struct omap_dss_device *src = dssdev->src; 635 struct omap_dss_device *src = dssdev->src;
637 636
638 ddata->vm = *vm;
639
640 src->ops->set_timings(src, vm); 637 src->ops->set_timings(src, vm);
641} 638}
642 639
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c
index cff1a1a68827..ee17eb3e0a48 100644
--- a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c
+++ b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c
@@ -298,11 +298,8 @@ static void td028ttec1_panel_disable(struct omap_dss_device *dssdev)
298static void td028ttec1_panel_set_timings(struct omap_dss_device *dssdev, 298static void td028ttec1_panel_set_timings(struct omap_dss_device *dssdev,
299 const struct videomode *vm) 299 const struct videomode *vm)
300{ 300{
301 struct panel_drv_data *ddata = to_panel_data(dssdev);
302 struct omap_dss_device *src = dssdev->src; 301 struct omap_dss_device *src = dssdev->src;
303 302
304 ddata->vm = *vm;
305
306 src->ops->set_timings(src, vm); 303 src->ops->set_timings(src, vm);
307} 304}
308 305
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c
index 513e846d52c4..7b0439274458 100644
--- a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c
+++ b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c
@@ -372,11 +372,8 @@ static void tpo_td043_disable(struct omap_dss_device *dssdev)
372static void tpo_td043_set_timings(struct omap_dss_device *dssdev, 372static void tpo_td043_set_timings(struct omap_dss_device *dssdev,
373 const struct videomode *vm) 373 const struct videomode *vm)
374{ 374{
375 struct panel_drv_data *ddata = to_panel_data(dssdev);
376 struct omap_dss_device *src = dssdev->src; 375 struct omap_dss_device *src = dssdev->src;
377 376
378 ddata->vm = *vm;
379
380 src->ops->set_timings(src, vm); 377 src->ops->set_timings(src, vm);
381} 378}
382 379