aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-06-06 11:04:26 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2018-09-03 09:13:30 -0400
commitca6e968b9326a17d072b14b658fff538466c6bd2 (patch)
tree710954eca6fdf849c727abf9aa800bbdf02797b2
parent35d944cbee2199312c6832a4acd0201a921545f4 (diff)
drm/omap: Remove .get_timings() operation from display connectors
The analog TV, DVI and HDMI connectors all report timing information through the .get_timings() information. For analog TV outputs the information is queried from the encoder, so the operation is unused. Remove it. For HDMI outputs the display pipeline provides EDID capability, so the operation is unused as well. Remove it. For DVI outputs the operation is also unused if the pipeline provides EDID capability. Otherwise (when the DDC bus is not connected) we shouldn't hardcode a single mode, but instead report no mode and let the KMS core add default modes. This is achieved by removing the operation. 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/connector-analog-tv.c31
-rw-r--r--drivers/gpu/drm/omapdrm/displays/connector-dvi.c33
-rw-r--r--drivers/gpu/drm/omapdrm/displays/connector-hdmi.c30
3 files changed, 0 insertions, 94 deletions
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
index a9e2a366a851..4866bf8ed524 100644
--- a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
+++ b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
@@ -20,23 +20,6 @@ struct panel_drv_data {
20 struct omap_dss_device dssdev; 20 struct omap_dss_device dssdev;
21 21
22 struct device *dev; 22 struct device *dev;
23
24 struct videomode vm;
25};
26
27static const struct videomode tvc_pal_vm = {
28 .hactive = 720,
29 .vactive = 574,
30 .pixelclock = 13500000,
31 .hsync_len = 64,
32 .hfront_porch = 12,
33 .hback_porch = 68,
34 .vsync_len = 5,
35 .vfront_porch = 5,
36 .vback_porch = 41,
37
38 .flags = DISPLAY_FLAGS_INTERLACED | DISPLAY_FLAGS_HSYNC_LOW |
39 DISPLAY_FLAGS_VSYNC_LOW,
40}; 23};
41 24
42#define to_panel_data(x) container_of(x, struct panel_drv_data, dssdev) 25#define to_panel_data(x) container_of(x, struct panel_drv_data, dssdev)
@@ -93,22 +76,11 @@ static void tvc_disable(struct omap_dss_device *dssdev)
93static void tvc_set_timings(struct omap_dss_device *dssdev, 76static void tvc_set_timings(struct omap_dss_device *dssdev,
94 const struct videomode *vm) 77 const struct videomode *vm)
95{ 78{
96 struct panel_drv_data *ddata = to_panel_data(dssdev);
97 struct omap_dss_device *src = dssdev->src; 79 struct omap_dss_device *src = dssdev->src;
98 80
99 ddata->vm = *vm;
100
101 src->ops->set_timings(src, vm); 81 src->ops->set_timings(src, vm);
102} 82}
103 83
104static void tvc_get_timings(struct omap_dss_device *dssdev,
105 struct videomode *vm)
106{
107 struct panel_drv_data *ddata = to_panel_data(dssdev);
108
109 *vm = ddata->vm;
110}
111
112static const struct omap_dss_device_ops tvc_ops = { 84static const struct omap_dss_device_ops tvc_ops = {
113 .connect = tvc_connect, 85 .connect = tvc_connect,
114 .disconnect = tvc_disconnect, 86 .disconnect = tvc_disconnect,
@@ -117,7 +89,6 @@ static const struct omap_dss_device_ops tvc_ops = {
117 .disable = tvc_disable, 89 .disable = tvc_disable,
118 90
119 .set_timings = tvc_set_timings, 91 .set_timings = tvc_set_timings,
120 .get_timings = tvc_get_timings,
121}; 92};
122 93
123static int tvc_probe(struct platform_device *pdev) 94static int tvc_probe(struct platform_device *pdev)
@@ -132,8 +103,6 @@ static int tvc_probe(struct platform_device *pdev)
132 platform_set_drvdata(pdev, ddata); 103 platform_set_drvdata(pdev, ddata);
133 ddata->dev = &pdev->dev; 104 ddata->dev = &pdev->dev;
134 105
135 ddata->vm = tvc_pal_vm;
136
137 dssdev = &ddata->dssdev; 106 dssdev = &ddata->dssdev;
138 dssdev->ops = &tvc_ops; 107 dssdev->ops = &tvc_ops;
139 dssdev->dev = &pdev->dev; 108 dssdev->dev = &pdev->dev;
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
index a9e2f1181987..818a4dc452e0 100644
--- a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
+++ b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
@@ -19,28 +19,9 @@
19 19
20#include "../dss/omapdss.h" 20#include "../dss/omapdss.h"
21 21
22static const struct videomode dvic_default_vm = {
23 .hactive = 640,
24 .vactive = 480,
25
26 .pixelclock = 23500000,
27
28 .hfront_porch = 48,
29 .hsync_len = 32,
30 .hback_porch = 80,
31
32 .vfront_porch = 3,
33 .vsync_len = 4,
34 .vback_porch = 7,
35
36 .flags = DISPLAY_FLAGS_HSYNC_HIGH | DISPLAY_FLAGS_VSYNC_HIGH,
37};
38
39struct panel_drv_data { 22struct panel_drv_data {
40 struct omap_dss_device dssdev; 23 struct omap_dss_device dssdev;
41 24
42 struct videomode vm;
43
44 struct i2c_adapter *i2c_adapter; 25 struct i2c_adapter *i2c_adapter;
45 26
46 struct gpio_desc *hpd_gpio; 27 struct gpio_desc *hpd_gpio;
@@ -100,22 +81,11 @@ static void dvic_disable(struct omap_dss_device *dssdev)
100static void dvic_set_timings(struct omap_dss_device *dssdev, 81static void dvic_set_timings(struct omap_dss_device *dssdev,
101 const struct videomode *vm) 82 const struct videomode *vm)
102{ 83{
103 struct panel_drv_data *ddata = to_panel_data(dssdev);
104 struct omap_dss_device *src = dssdev->src; 84 struct omap_dss_device *src = dssdev->src;
105 85
106 ddata->vm = *vm;
107
108 src->ops->set_timings(src, vm); 86 src->ops->set_timings(src, vm);
109} 87}
110 88
111static void dvic_get_timings(struct omap_dss_device *dssdev,
112 struct videomode *vm)
113{
114 struct panel_drv_data *ddata = to_panel_data(dssdev);
115
116 *vm = ddata->vm;
117}
118
119static int dvic_ddc_read(struct i2c_adapter *adapter, 89static int dvic_ddc_read(struct i2c_adapter *adapter,
120 unsigned char *buf, u16 count, u8 offset) 90 unsigned char *buf, u16 count, u8 offset)
121{ 91{
@@ -223,7 +193,6 @@ static const struct omap_dss_device_ops dvic_ops = {
223 .disable = dvic_disable, 193 .disable = dvic_disable,
224 194
225 .set_timings = dvic_set_timings, 195 .set_timings = dvic_set_timings,
226 .get_timings = dvic_get_timings,
227 196
228 .read_edid = dvic_read_edid, 197 .read_edid = dvic_read_edid,
229 .detect = dvic_detect, 198 .detect = dvic_detect,
@@ -311,8 +280,6 @@ static int dvic_probe(struct platform_device *pdev)
311 if (r) 280 if (r)
312 return r; 281 return r;
313 282
314 ddata->vm = dvic_default_vm;
315
316 dssdev = &ddata->dssdev; 283 dssdev = &ddata->dssdev;
317 dssdev->ops = &dvic_ops; 284 dssdev->ops = &dvic_ops;
318 dssdev->dev = &pdev->dev; 285 dssdev->dev = &pdev->dev;
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
index 7e449f8a9b5d..a32e4159242d 100644
--- a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
+++ b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
@@ -17,20 +17,6 @@
17 17
18#include "../dss/omapdss.h" 18#include "../dss/omapdss.h"
19 19
20static const struct videomode hdmic_default_vm = {
21 .hactive = 640,
22 .vactive = 480,
23 .pixelclock = 25175000,
24 .hsync_len = 96,
25 .hfront_porch = 16,
26 .hback_porch = 48,
27 .vsync_len = 2,
28 .vfront_porch = 11,
29 .vback_porch = 31,
30
31 .flags = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW,
32};
33
34struct panel_drv_data { 20struct panel_drv_data {
35 struct omap_dss_device dssdev; 21 struct omap_dss_device dssdev;
36 void (*hpd_cb)(void *cb_data, enum drm_connector_status status); 22 void (*hpd_cb)(void *cb_data, enum drm_connector_status status);
@@ -39,8 +25,6 @@ struct panel_drv_data {
39 25
40 struct device *dev; 26 struct device *dev;
41 27
42 struct videomode vm;
43
44 struct gpio_desc *hpd_gpio; 28 struct gpio_desc *hpd_gpio;
45}; 29};
46 30
@@ -98,22 +82,11 @@ static void hdmic_disable(struct omap_dss_device *dssdev)
98static void hdmic_set_timings(struct omap_dss_device *dssdev, 82static void hdmic_set_timings(struct omap_dss_device *dssdev,
99 const struct videomode *vm) 83 const struct videomode *vm)
100{ 84{
101 struct panel_drv_data *ddata = to_panel_data(dssdev);
102 struct omap_dss_device *src = dssdev->src; 85 struct omap_dss_device *src = dssdev->src;
103 86
104 ddata->vm = *vm;
105
106 src->ops->set_timings(src, vm); 87 src->ops->set_timings(src, vm);
107} 88}
108 89
109static void hdmic_get_timings(struct omap_dss_device *dssdev,
110 struct videomode *vm)
111{
112 struct panel_drv_data *ddata = to_panel_data(dssdev);
113
114 *vm = ddata->vm;
115}
116
117static bool hdmic_detect(struct omap_dss_device *dssdev) 90static bool hdmic_detect(struct omap_dss_device *dssdev)
118{ 91{
119 struct panel_drv_data *ddata = to_panel_data(dssdev); 92 struct panel_drv_data *ddata = to_panel_data(dssdev);
@@ -152,7 +125,6 @@ static const struct omap_dss_device_ops hdmic_ops = {
152 .disable = hdmic_disable, 125 .disable = hdmic_disable,
153 126
154 .set_timings = hdmic_set_timings, 127 .set_timings = hdmic_set_timings,
155 .get_timings = hdmic_get_timings,
156 128
157 .detect = hdmic_detect, 129 .detect = hdmic_detect,
158 .register_hpd_cb = hdmic_register_hpd_cb, 130 .register_hpd_cb = hdmic_register_hpd_cb,
@@ -215,8 +187,6 @@ static int hdmic_probe(struct platform_device *pdev)
215 return r; 187 return r;
216 } 188 }
217 189
218 ddata->vm = hdmic_default_vm;
219
220 dssdev = &ddata->dssdev; 190 dssdev = &ddata->dssdev;
221 dssdev->ops = &hdmic_ops; 191 dssdev->ops = &hdmic_ops;
222 dssdev->dev = &pdev->dev; 192 dssdev->dev = &pdev->dev;