Lines Matching +full:panel +full:- +full:dpi
1 // SPDX-License-Identifier: GPL-2.0-only
3 * LCD panel driver for Sharp LS037V7DW01
61 struct omap_dss_device *in = ddata->in; in sharp_ls_connect()
67 r = in->ops.dpi->connect(in, dssdev); in sharp_ls_connect()
77 struct omap_dss_device *in = ddata->in; in sharp_ls_disconnect()
82 in->ops.dpi->disconnect(in, dssdev); in sharp_ls_disconnect()
88 struct omap_dss_device *in = ddata->in; in sharp_ls_enable()
92 return -ENODEV; in sharp_ls_enable()
97 if (ddata->data_lines) in sharp_ls_enable()
98 in->ops.dpi->set_data_lines(in, ddata->data_lines); in sharp_ls_enable()
99 in->ops.dpi->set_timings(in, &ddata->videomode); in sharp_ls_enable()
101 if (ddata->vcc) { in sharp_ls_enable()
102 r = regulator_enable(ddata->vcc); in sharp_ls_enable()
107 r = in->ops.dpi->enable(in); in sharp_ls_enable()
109 regulator_disable(ddata->vcc); in sharp_ls_enable()
116 if (ddata->resb_gpio) in sharp_ls_enable()
117 gpiod_set_value_cansleep(ddata->resb_gpio, 1); in sharp_ls_enable()
119 if (ddata->ini_gpio) in sharp_ls_enable()
120 gpiod_set_value_cansleep(ddata->ini_gpio, 1); in sharp_ls_enable()
122 dssdev->state = OMAP_DSS_DISPLAY_ACTIVE; in sharp_ls_enable()
130 struct omap_dss_device *in = ddata->in; in sharp_ls_disable()
135 if (ddata->ini_gpio) in sharp_ls_disable()
136 gpiod_set_value_cansleep(ddata->ini_gpio, 0); in sharp_ls_disable()
138 if (ddata->resb_gpio) in sharp_ls_disable()
139 gpiod_set_value_cansleep(ddata->resb_gpio, 0); in sharp_ls_disable()
145 in->ops.dpi->disable(in); in sharp_ls_disable()
147 if (ddata->vcc) in sharp_ls_disable()
148 regulator_disable(ddata->vcc); in sharp_ls_disable()
150 dssdev->state = OMAP_DSS_DISPLAY_DISABLED; in sharp_ls_disable()
157 struct omap_dss_device *in = ddata->in; in sharp_ls_set_timings()
159 ddata->videomode = *timings; in sharp_ls_set_timings()
160 dssdev->panel.timings = *timings; in sharp_ls_set_timings()
162 in->ops.dpi->set_timings(in, timings); in sharp_ls_set_timings()
170 *timings = ddata->videomode; in sharp_ls_get_timings()
177 struct omap_dss_device *in = ddata->in; in sharp_ls_check_timings()
179 return in->ops.dpi->check_timings(in, timings); in sharp_ls_check_timings()
214 struct device_node *node = pdev->dev.of_node; in sharp_ls_probe_of()
218 ddata->vcc = devm_regulator_get(&pdev->dev, "envdd"); in sharp_ls_probe_of()
219 if (IS_ERR(ddata->vcc)) { in sharp_ls_probe_of()
220 dev_err(&pdev->dev, "failed to get regulator\n"); in sharp_ls_probe_of()
221 return PTR_ERR(ddata->vcc); in sharp_ls_probe_of()
225 r = sharp_ls_get_gpio_of(&pdev->dev, 0, 0, "enable", &ddata->ini_gpio); in sharp_ls_probe_of()
230 r = sharp_ls_get_gpio_of(&pdev->dev, 0, 0, "reset", &ddata->resb_gpio); in sharp_ls_probe_of()
235 r = sharp_ls_get_gpio_of(&pdev->dev, 0, 0, "mode", &ddata->mo_gpio); in sharp_ls_probe_of()
240 r = sharp_ls_get_gpio_of(&pdev->dev, 1, 1, "mode", &ddata->lr_gpio); in sharp_ls_probe_of()
245 r = sharp_ls_get_gpio_of(&pdev->dev, 2, 1, "mode", &ddata->ud_gpio); in sharp_ls_probe_of()
251 dev_err(&pdev->dev, "failed to find video source\n"); in sharp_ls_probe_of()
255 ddata->in = in; in sharp_ls_probe_of()
266 if (!pdev->dev.of_node) in sharp_ls_probe()
267 return -ENODEV; in sharp_ls_probe()
269 ddata = devm_kzalloc(&pdev->dev, sizeof(*ddata), GFP_KERNEL); in sharp_ls_probe()
271 return -ENOMEM; in sharp_ls_probe()
279 ddata->videomode = sharp_ls_timings; in sharp_ls_probe()
281 dssdev = &ddata->dssdev; in sharp_ls_probe()
282 dssdev->dev = &pdev->dev; in sharp_ls_probe()
283 dssdev->driver = &sharp_ls_ops; in sharp_ls_probe()
284 dssdev->type = OMAP_DISPLAY_TYPE_DPI; in sharp_ls_probe()
285 dssdev->owner = THIS_MODULE; in sharp_ls_probe()
286 dssdev->panel.timings = ddata->videomode; in sharp_ls_probe()
287 dssdev->phy.dpi.data_lines = ddata->data_lines; in sharp_ls_probe()
291 dev_err(&pdev->dev, "Failed to register panel\n"); in sharp_ls_probe()
298 omap_dss_put_device(ddata->in); in sharp_ls_probe()
305 struct omap_dss_device *dssdev = &ddata->dssdev; in sharp_ls_remove()
306 struct omap_dss_device *in = ddata->in; in sharp_ls_remove()
329 .name = "panel-sharp-ls037v7dw01",
338 MODULE_DESCRIPTION("Sharp LS037V7DW01 Panel Driver");