Lines Matching +full:dvi +full:- +full:connector
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Generic DVI Connector driver
53 struct omap_dss_device *in = ddata->in; in dvic_connect()
59 r = in->ops.dvi->connect(in, dssdev); in dvic_connect()
69 struct omap_dss_device *in = ddata->in; in dvic_disconnect()
74 in->ops.dvi->disconnect(in, dssdev); in dvic_disconnect()
80 struct omap_dss_device *in = ddata->in; in dvic_enable()
84 return -ENODEV; in dvic_enable()
89 in->ops.dvi->set_timings(in, &ddata->timings); in dvic_enable()
91 r = in->ops.dvi->enable(in); in dvic_enable()
95 dssdev->state = OMAP_DSS_DISPLAY_ACTIVE; in dvic_enable()
103 struct omap_dss_device *in = ddata->in; in dvic_disable()
108 in->ops.dvi->disable(in); in dvic_disable()
110 dssdev->state = OMAP_DSS_DISPLAY_DISABLED; in dvic_disable()
117 struct omap_dss_device *in = ddata->in; in dvic_set_timings()
119 ddata->timings = *timings; in dvic_set_timings()
120 dssdev->panel.timings = *timings; in dvic_set_timings()
122 in->ops.dvi->set_timings(in, timings); in dvic_set_timings()
130 *timings = ddata->timings; in dvic_get_timings()
137 struct omap_dss_device *in = ddata->in; in dvic_check_timings()
139 return in->ops.dvi->check_timings(in, timings); in dvic_check_timings()
147 for (retries = 3; retries > 0; retries--) { in dvic_ddc_read()
166 if (r != -EAGAIN) in dvic_ddc_read()
170 return r < 0 ? r : -EIO; in dvic_ddc_read()
179 if (!ddata->i2c_adapter) in dvic_read_edid()
180 return -ENODEV; in dvic_read_edid()
183 r = dvic_ddc_read(ddata->i2c_adapter, edid, l, 0); in dvic_read_edid()
191 l = min(EDID_LENGTH, len - EDID_LENGTH); in dvic_read_edid()
193 r = dvic_ddc_read(ddata->i2c_adapter, edid + EDID_LENGTH, in dvic_read_edid()
210 if (!ddata->i2c_adapter) in dvic_detect()
213 r = dvic_ddc_read(ddata->i2c_adapter, &out, 1, 0); in dvic_detect()
238 struct device_node *node = pdev->dev.of_node; in dvic_probe_of()
245 dev_err(&pdev->dev, "failed to find video source\n"); in dvic_probe_of()
249 ddata->in = in; in dvic_probe_of()
251 adapter_node = of_parse_phandle(node, "ddc-i2c-bus", 0); in dvic_probe_of()
255 dev_err(&pdev->dev, "failed to parse ddc-i2c-bus\n"); in dvic_probe_of()
256 omap_dss_put_device(ddata->in); in dvic_probe_of()
257 return -EPROBE_DEFER; in dvic_probe_of()
260 ddata->i2c_adapter = adapter; in dvic_probe_of()
272 if (!pdev->dev.of_node) in dvic_probe()
273 return -ENODEV; in dvic_probe()
275 ddata = devm_kzalloc(&pdev->dev, sizeof(*ddata), GFP_KERNEL); in dvic_probe()
277 return -ENOMEM; in dvic_probe()
285 ddata->timings = dvic_default_timings; in dvic_probe()
287 dssdev = &ddata->dssdev; in dvic_probe()
288 dssdev->driver = &dvic_driver; in dvic_probe()
289 dssdev->dev = &pdev->dev; in dvic_probe()
290 dssdev->type = OMAP_DISPLAY_TYPE_DVI; in dvic_probe()
291 dssdev->owner = THIS_MODULE; in dvic_probe()
292 dssdev->panel.timings = dvic_default_timings; in dvic_probe()
296 dev_err(&pdev->dev, "Failed to register panel\n"); in dvic_probe()
303 omap_dss_put_device(ddata->in); in dvic_probe()
305 i2c_put_adapter(ddata->i2c_adapter); in dvic_probe()
313 struct omap_dss_device *dssdev = &ddata->dssdev; in dvic_remove()
314 struct omap_dss_device *in = ddata->in; in dvic_remove()
316 omapdss_unregister_display(&ddata->dssdev); in dvic_remove()
323 i2c_put_adapter(ddata->i2c_adapter); in dvic_remove()
329 { .compatible = "omapdss,dvi-connector", },
339 .name = "connector-dvi",
348 MODULE_DESCRIPTION("Generic DVI Connector driver");