Lines Matching +full:panel +full:- +full:dpi

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * NEC NL8048HL11 Panel driver
107 for (i = 0; i < (ARRAY_SIZE(nec_8048_init_seq) - 1); i++) in init_nec_8048_wvga_lcd()
119 struct omap_dss_device *in = ddata->in; in nec_8048_connect()
125 r = in->ops.dpi->connect(in, dssdev); in nec_8048_connect()
135 struct omap_dss_device *in = ddata->in; in nec_8048_disconnect()
140 in->ops.dpi->disconnect(in, dssdev); in nec_8048_disconnect()
146 struct omap_dss_device *in = ddata->in; in nec_8048_enable()
150 return -ENODEV; in nec_8048_enable()
155 if (ddata->data_lines) in nec_8048_enable()
156 in->ops.dpi->set_data_lines(in, ddata->data_lines); in nec_8048_enable()
157 in->ops.dpi->set_timings(in, &ddata->videomode); in nec_8048_enable()
159 r = in->ops.dpi->enable(in); in nec_8048_enable()
163 if (gpio_is_valid(ddata->res_gpio)) in nec_8048_enable()
164 gpio_set_value_cansleep(ddata->res_gpio, 1); in nec_8048_enable()
166 dssdev->state = OMAP_DSS_DISPLAY_ACTIVE; in nec_8048_enable()
174 struct omap_dss_device *in = ddata->in; in nec_8048_disable()
179 if (gpio_is_valid(ddata->res_gpio)) in nec_8048_disable()
180 gpio_set_value_cansleep(ddata->res_gpio, 0); in nec_8048_disable()
182 in->ops.dpi->disable(in); in nec_8048_disable()
184 dssdev->state = OMAP_DSS_DISPLAY_DISABLED; in nec_8048_disable()
191 struct omap_dss_device *in = ddata->in; in nec_8048_set_timings()
193 ddata->videomode = *timings; in nec_8048_set_timings()
194 dssdev->panel.timings = *timings; in nec_8048_set_timings()
196 in->ops.dpi->set_timings(in, timings); in nec_8048_set_timings()
204 *timings = ddata->videomode; in nec_8048_get_timings()
211 struct omap_dss_device *in = ddata->in; in nec_8048_check_timings()
213 return in->ops.dpi->check_timings(in, timings); in nec_8048_check_timings()
233 struct device_node *node = spi->dev.of_node; in nec_8048_probe_of()
234 struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); in nec_8048_probe_of()
238 gpio = of_get_named_gpio(node, "reset-gpios", 0); in nec_8048_probe_of()
240 dev_err(&spi->dev, "failed to parse enable gpio\n"); in nec_8048_probe_of()
243 ddata->res_gpio = gpio; in nec_8048_probe_of()
245 /* XXX the panel spec doesn't mention any QVGA pin?? */ in nec_8048_probe_of()
246 ddata->qvga_gpio = -ENOENT; in nec_8048_probe_of()
250 dev_err(&spi->dev, "failed to find video source\n"); in nec_8048_probe_of()
254 ddata->in = in; in nec_8048_probe_of()
265 dev_dbg(&spi->dev, "%s\n", __func__); in nec_8048_probe()
267 if (!spi->dev.of_node) in nec_8048_probe()
268 return -ENODEV; in nec_8048_probe()
270 spi->mode = SPI_MODE_0; in nec_8048_probe()
271 spi->bits_per_word = 32; in nec_8048_probe()
275 dev_err(&spi->dev, "spi_setup failed: %d\n", r); in nec_8048_probe()
281 ddata = devm_kzalloc(&spi->dev, sizeof(*ddata), GFP_KERNEL); in nec_8048_probe()
283 return -ENOMEM; in nec_8048_probe()
285 dev_set_drvdata(&spi->dev, ddata); in nec_8048_probe()
287 ddata->spi = spi; in nec_8048_probe()
293 if (gpio_is_valid(ddata->qvga_gpio)) { in nec_8048_probe()
294 r = devm_gpio_request_one(&spi->dev, ddata->qvga_gpio, in nec_8048_probe()
300 if (gpio_is_valid(ddata->res_gpio)) { in nec_8048_probe()
301 r = devm_gpio_request_one(&spi->dev, ddata->res_gpio, in nec_8048_probe()
307 ddata->videomode = nec_8048_panel_timings; in nec_8048_probe()
309 dssdev = &ddata->dssdev; in nec_8048_probe()
310 dssdev->dev = &spi->dev; in nec_8048_probe()
311 dssdev->driver = &nec_8048_ops; in nec_8048_probe()
312 dssdev->type = OMAP_DISPLAY_TYPE_DPI; in nec_8048_probe()
313 dssdev->owner = THIS_MODULE; in nec_8048_probe()
314 dssdev->panel.timings = ddata->videomode; in nec_8048_probe()
318 dev_err(&spi->dev, "Failed to register panel\n"); in nec_8048_probe()
326 omap_dss_put_device(ddata->in); in nec_8048_probe()
332 struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); in nec_8048_remove()
333 struct omap_dss_device *dssdev = &ddata->dssdev; in nec_8048_remove()
334 struct omap_dss_device *in = ddata->in; in nec_8048_remove()
336 dev_dbg(&ddata->spi->dev, "%s\n", __func__); in nec_8048_remove()
363 /* reinitialize the panel */ in nec_8048_resume()
386 .name = "panel-nec-nl8048hl11",
399 MODULE_DESCRIPTION("NEC-NL8048HL11 Driver");