Lines Matching refs:ddata

84 static int _dsicm_enable_te(struct panel_drv_data *ddata, bool enable);
86 static int dsicm_panel_reset(struct panel_drv_data *ddata);
90 static void hw_guard_start(struct panel_drv_data *ddata, int guard_msec) in hw_guard_start() argument
92 ddata->hw_guard_wait = msecs_to_jiffies(guard_msec); in hw_guard_start()
93 ddata->hw_guard_end = jiffies + ddata->hw_guard_wait; in hw_guard_start()
96 static void hw_guard_wait(struct panel_drv_data *ddata) in hw_guard_wait() argument
98 unsigned long wait = ddata->hw_guard_end - jiffies; in hw_guard_wait()
100 if ((long)wait > 0 && time_before_eq(wait, ddata->hw_guard_wait)) { in hw_guard_wait()
106 static int dsicm_dcs_read_1(struct panel_drv_data *ddata, u8 dcs_cmd, u8 *data) in dsicm_dcs_read_1() argument
108 struct omap_dss_device *in = ddata->in; in dsicm_dcs_read_1()
112 r = in->ops.dsi->dcs_read(in, ddata->channel, dcs_cmd, buf, 1); in dsicm_dcs_read_1()
122 static int dsicm_dcs_write_0(struct panel_drv_data *ddata, u8 dcs_cmd) in dsicm_dcs_write_0() argument
124 struct omap_dss_device *in = ddata->in; in dsicm_dcs_write_0()
125 return in->ops.dsi->dcs_write(in, ddata->channel, &dcs_cmd, 1); in dsicm_dcs_write_0()
128 static int dsicm_dcs_write_1(struct panel_drv_data *ddata, u8 dcs_cmd, u8 param) in dsicm_dcs_write_1() argument
130 struct omap_dss_device *in = ddata->in; in dsicm_dcs_write_1()
133 return in->ops.dsi->dcs_write(in, ddata->channel, buf, 2); in dsicm_dcs_write_1()
136 static int dsicm_sleep_in(struct panel_drv_data *ddata) in dsicm_sleep_in() argument
139 struct omap_dss_device *in = ddata->in; in dsicm_sleep_in()
143 hw_guard_wait(ddata); in dsicm_sleep_in()
146 r = in->ops.dsi->dcs_write_nosync(in, ddata->channel, &cmd, 1); in dsicm_sleep_in()
150 hw_guard_start(ddata, 120); in dsicm_sleep_in()
157 static int dsicm_sleep_out(struct panel_drv_data *ddata) in dsicm_sleep_out() argument
161 hw_guard_wait(ddata); in dsicm_sleep_out()
163 r = dsicm_dcs_write_0(ddata, MIPI_DCS_EXIT_SLEEP_MODE); in dsicm_sleep_out()
167 hw_guard_start(ddata, 120); in dsicm_sleep_out()
174 static int dsicm_get_id(struct panel_drv_data *ddata, u8 *id1, u8 *id2, u8 *id3) in dsicm_get_id() argument
178 r = dsicm_dcs_read_1(ddata, DCS_GET_ID1, id1); in dsicm_get_id()
181 r = dsicm_dcs_read_1(ddata, DCS_GET_ID2, id2); in dsicm_get_id()
184 r = dsicm_dcs_read_1(ddata, DCS_GET_ID3, id3); in dsicm_get_id()
191 static int dsicm_set_update_window(struct panel_drv_data *ddata, in dsicm_set_update_window() argument
194 struct omap_dss_device *in = ddata->in; in dsicm_set_update_window()
208 r = in->ops.dsi->dcs_write_nosync(in, ddata->channel, buf, sizeof(buf)); in dsicm_set_update_window()
218 r = in->ops.dsi->dcs_write_nosync(in, ddata->channel, buf, sizeof(buf)); in dsicm_set_update_window()
222 in->ops.dsi->bta_sync(in, ddata->channel); in dsicm_set_update_window()
227 static void dsicm_queue_ulps_work(struct panel_drv_data *ddata) in dsicm_queue_ulps_work() argument
229 if (ddata->ulps_timeout > 0) in dsicm_queue_ulps_work()
230 schedule_delayed_work(&ddata->ulps_work, in dsicm_queue_ulps_work()
231 msecs_to_jiffies(ddata->ulps_timeout)); in dsicm_queue_ulps_work()
234 static void dsicm_cancel_ulps_work(struct panel_drv_data *ddata) in dsicm_cancel_ulps_work() argument
236 cancel_delayed_work(&ddata->ulps_work); in dsicm_cancel_ulps_work()
239 static int dsicm_enter_ulps(struct panel_drv_data *ddata) in dsicm_enter_ulps() argument
241 struct omap_dss_device *in = ddata->in; in dsicm_enter_ulps()
244 if (ddata->ulps_enabled) in dsicm_enter_ulps()
247 dsicm_cancel_ulps_work(ddata); in dsicm_enter_ulps()
249 r = _dsicm_enable_te(ddata, false); in dsicm_enter_ulps()
253 if (ddata->ext_te_gpio) in dsicm_enter_ulps()
254 disable_irq(gpiod_to_irq(ddata->ext_te_gpio)); in dsicm_enter_ulps()
258 ddata->ulps_enabled = true; in dsicm_enter_ulps()
263 dev_err(&ddata->pdev->dev, "enter ULPS failed"); in dsicm_enter_ulps()
264 dsicm_panel_reset(ddata); in dsicm_enter_ulps()
266 ddata->ulps_enabled = false; in dsicm_enter_ulps()
268 dsicm_queue_ulps_work(ddata); in dsicm_enter_ulps()
273 static int dsicm_exit_ulps(struct panel_drv_data *ddata) in dsicm_exit_ulps() argument
275 struct omap_dss_device *in = ddata->in; in dsicm_exit_ulps()
278 if (!ddata->ulps_enabled) in dsicm_exit_ulps()
283 dev_err(&ddata->pdev->dev, "failed to enable DSI\n"); in dsicm_exit_ulps()
287 in->ops.dsi->enable_hs(in, ddata->channel, true); in dsicm_exit_ulps()
289 r = _dsicm_enable_te(ddata, true); in dsicm_exit_ulps()
291 dev_err(&ddata->pdev->dev, "failed to re-enable TE"); in dsicm_exit_ulps()
295 if (ddata->ext_te_gpio) in dsicm_exit_ulps()
296 enable_irq(gpiod_to_irq(ddata->ext_te_gpio)); in dsicm_exit_ulps()
298 dsicm_queue_ulps_work(ddata); in dsicm_exit_ulps()
300 ddata->ulps_enabled = false; in dsicm_exit_ulps()
305 dev_err(&ddata->pdev->dev, "failed to exit ULPS"); in dsicm_exit_ulps()
307 r = dsicm_panel_reset(ddata); in dsicm_exit_ulps()
309 if (ddata->ext_te_gpio) in dsicm_exit_ulps()
310 enable_irq(gpiod_to_irq(ddata->ext_te_gpio)); in dsicm_exit_ulps()
311 ddata->ulps_enabled = false; in dsicm_exit_ulps()
314 dsicm_queue_ulps_work(ddata); in dsicm_exit_ulps()
319 static int dsicm_wake_up(struct panel_drv_data *ddata) in dsicm_wake_up() argument
321 if (ddata->ulps_enabled) in dsicm_wake_up()
322 return dsicm_exit_ulps(ddata); in dsicm_wake_up()
324 dsicm_cancel_ulps_work(ddata); in dsicm_wake_up()
325 dsicm_queue_ulps_work(ddata); in dsicm_wake_up()
331 struct panel_drv_data *ddata = dev_get_drvdata(&dev->dev); in dsicm_bl_update_status() local
332 struct omap_dss_device *in = ddata->in; in dsicm_bl_update_status()
336 dev_dbg(&ddata->pdev->dev, "update brightness to %d\n", level); in dsicm_bl_update_status()
338 mutex_lock(&ddata->lock); in dsicm_bl_update_status()
340 if (ddata->enabled) { in dsicm_bl_update_status()
343 r = dsicm_wake_up(ddata); in dsicm_bl_update_status()
345 r = dsicm_dcs_write_1(ddata, DCS_BRIGHTNESS, level); in dsicm_bl_update_status()
352 mutex_unlock(&ddata->lock); in dsicm_bl_update_status()
381 struct panel_drv_data *ddata = dev_get_drvdata(dev); in dsicm_num_errors_show() local
382 struct omap_dss_device *in = ddata->in; in dsicm_num_errors_show()
386 mutex_lock(&ddata->lock); in dsicm_num_errors_show()
388 if (ddata->enabled) { in dsicm_num_errors_show()
391 r = dsicm_wake_up(ddata); in dsicm_num_errors_show()
393 r = dsicm_dcs_read_1(ddata, DCS_READ_NUM_ERRORS, in dsicm_num_errors_show()
401 mutex_unlock(&ddata->lock); in dsicm_num_errors_show()
412 struct panel_drv_data *ddata = dev_get_drvdata(dev); in dsicm_hw_revision_show() local
413 struct omap_dss_device *in = ddata->in; in dsicm_hw_revision_show()
417 mutex_lock(&ddata->lock); in dsicm_hw_revision_show()
419 if (ddata->enabled) { in dsicm_hw_revision_show()
422 r = dsicm_wake_up(ddata); in dsicm_hw_revision_show()
424 r = dsicm_get_id(ddata, &id1, &id2, &id3); in dsicm_hw_revision_show()
431 mutex_unlock(&ddata->lock); in dsicm_hw_revision_show()
443 struct panel_drv_data *ddata = dev_get_drvdata(dev); in dsicm_store_ulps() local
444 struct omap_dss_device *in = ddata->in; in dsicm_store_ulps()
452 mutex_lock(&ddata->lock); in dsicm_store_ulps()
454 if (ddata->enabled) { in dsicm_store_ulps()
458 r = dsicm_enter_ulps(ddata); in dsicm_store_ulps()
460 r = dsicm_wake_up(ddata); in dsicm_store_ulps()
465 mutex_unlock(&ddata->lock); in dsicm_store_ulps()
477 struct panel_drv_data *ddata = dev_get_drvdata(dev); in dsicm_show_ulps() local
480 mutex_lock(&ddata->lock); in dsicm_show_ulps()
481 t = ddata->ulps_enabled; in dsicm_show_ulps()
482 mutex_unlock(&ddata->lock); in dsicm_show_ulps()
491 struct panel_drv_data *ddata = dev_get_drvdata(dev); in dsicm_store_ulps_timeout() local
492 struct omap_dss_device *in = ddata->in; in dsicm_store_ulps_timeout()
500 mutex_lock(&ddata->lock); in dsicm_store_ulps_timeout()
501 ddata->ulps_timeout = t; in dsicm_store_ulps_timeout()
503 if (ddata->enabled) { in dsicm_store_ulps_timeout()
506 r = dsicm_wake_up(ddata); in dsicm_store_ulps_timeout()
510 mutex_unlock(&ddata->lock); in dsicm_store_ulps_timeout()
522 struct panel_drv_data *ddata = dev_get_drvdata(dev); in dsicm_show_ulps_timeout() local
525 mutex_lock(&ddata->lock); in dsicm_show_ulps_timeout()
526 t = ddata->ulps_timeout; in dsicm_show_ulps_timeout()
527 mutex_unlock(&ddata->lock); in dsicm_show_ulps_timeout()
551 static void dsicm_hw_reset(struct panel_drv_data *ddata) in dsicm_hw_reset() argument
558 gpiod_set_value_cansleep(ddata->reset_gpio, 1); in dsicm_hw_reset()
561 gpiod_set_value_cansleep(ddata->reset_gpio, 0); in dsicm_hw_reset()
565 gpiod_set_value_cansleep(ddata->reset_gpio, 1); in dsicm_hw_reset()
570 static int dsicm_power_on(struct panel_drv_data *ddata) in dsicm_power_on() argument
572 struct omap_dss_device *in = ddata->in; in dsicm_power_on()
578 .timings = &ddata->timings, in dsicm_power_on()
585 if (ddata->pin_config.num_pins > 0) { in dsicm_power_on()
586 r = in->ops.dsi->configure_pins(in, &ddata->pin_config); in dsicm_power_on()
588 dev_err(&ddata->pdev->dev, in dsicm_power_on()
596 dev_err(&ddata->pdev->dev, "failed to configure DSI\n"); in dsicm_power_on()
602 dev_err(&ddata->pdev->dev, "failed to enable DSI\n"); in dsicm_power_on()
606 dsicm_hw_reset(ddata); in dsicm_power_on()
608 in->ops.dsi->enable_hs(in, ddata->channel, false); in dsicm_power_on()
610 r = dsicm_sleep_out(ddata); in dsicm_power_on()
614 r = dsicm_get_id(ddata, &id1, &id2, &id3); in dsicm_power_on()
618 r = dsicm_dcs_write_1(ddata, DCS_BRIGHTNESS, 0xff); in dsicm_power_on()
622 r = dsicm_dcs_write_1(ddata, DCS_CTRL_DISPLAY, in dsicm_power_on()
627 r = dsicm_dcs_write_1(ddata, MIPI_DCS_SET_PIXEL_FORMAT, in dsicm_power_on()
632 r = dsicm_dcs_write_0(ddata, MIPI_DCS_SET_DISPLAY_ON); in dsicm_power_on()
636 r = _dsicm_enable_te(ddata, ddata->te_enabled); in dsicm_power_on()
640 r = in->ops.dsi->enable_video_output(in, ddata->channel); in dsicm_power_on()
644 ddata->enabled = 1; in dsicm_power_on()
646 if (!ddata->intro_printed) { in dsicm_power_on()
647 dev_info(&ddata->pdev->dev, "panel revision %02x.%02x.%02x\n", in dsicm_power_on()
649 ddata->intro_printed = true; in dsicm_power_on()
652 in->ops.dsi->enable_hs(in, ddata->channel, true); in dsicm_power_on()
656 dev_err(&ddata->pdev->dev, "error while enabling panel, issuing HW reset\n"); in dsicm_power_on()
658 dsicm_hw_reset(ddata); in dsicm_power_on()
665 static void dsicm_power_off(struct panel_drv_data *ddata) in dsicm_power_off() argument
667 struct omap_dss_device *in = ddata->in; in dsicm_power_off()
670 in->ops.dsi->disable_video_output(in, ddata->channel); in dsicm_power_off()
672 r = dsicm_dcs_write_0(ddata, MIPI_DCS_SET_DISPLAY_OFF); in dsicm_power_off()
674 r = dsicm_sleep_in(ddata); in dsicm_power_off()
677 dev_err(&ddata->pdev->dev, in dsicm_power_off()
679 dsicm_hw_reset(ddata); in dsicm_power_off()
684 ddata->enabled = 0; in dsicm_power_off()
687 static int dsicm_panel_reset(struct panel_drv_data *ddata) in dsicm_panel_reset() argument
689 dev_err(&ddata->pdev->dev, "performing LCD reset\n"); in dsicm_panel_reset()
691 dsicm_power_off(ddata); in dsicm_panel_reset()
692 dsicm_hw_reset(ddata); in dsicm_panel_reset()
693 return dsicm_power_on(ddata); in dsicm_panel_reset()
698 struct panel_drv_data *ddata = to_panel_data(dssdev); in dsicm_connect() local
699 struct omap_dss_device *in = ddata->in; in dsicm_connect()
700 struct device *dev = &ddata->pdev->dev; in dsicm_connect()
712 r = in->ops.dsi->request_vc(ddata->in, &ddata->channel); in dsicm_connect()
718 r = in->ops.dsi->set_vc_id(ddata->in, ddata->channel, TCH); in dsicm_connect()
727 in->ops.dsi->release_vc(ddata->in, ddata->channel); in dsicm_connect()
735 struct panel_drv_data *ddata = to_panel_data(dssdev); in dsicm_disconnect() local
736 struct omap_dss_device *in = ddata->in; in dsicm_disconnect()
741 in->ops.dsi->release_vc(in, ddata->channel); in dsicm_disconnect()
747 struct panel_drv_data *ddata = to_panel_data(dssdev); in dsicm_enable() local
748 struct omap_dss_device *in = ddata->in; in dsicm_enable()
751 dev_dbg(&ddata->pdev->dev, "enable\n"); in dsicm_enable()
753 mutex_lock(&ddata->lock); in dsicm_enable()
767 r = dsicm_power_on(ddata); in dsicm_enable()
776 mutex_unlock(&ddata->lock); in dsicm_enable()
780 dev_dbg(&ddata->pdev->dev, "enable failed\n"); in dsicm_enable()
781 mutex_unlock(&ddata->lock); in dsicm_enable()
787 struct panel_drv_data *ddata = to_panel_data(dssdev); in dsicm_disable() local
788 struct omap_dss_device *in = ddata->in; in dsicm_disable()
791 dev_dbg(&ddata->pdev->dev, "disable\n"); in dsicm_disable()
793 mutex_lock(&ddata->lock); in dsicm_disable()
795 dsicm_cancel_ulps_work(ddata); in dsicm_disable()
800 r = dsicm_wake_up(ddata); in dsicm_disable()
802 dsicm_power_off(ddata); in dsicm_disable()
809 mutex_unlock(&ddata->lock); in dsicm_disable()
814 struct panel_drv_data *ddata = data; in dsicm_framedone_cb() local
815 struct omap_dss_device *in = ddata->in; in dsicm_framedone_cb()
817 dev_dbg(&ddata->pdev->dev, "framedone, err %d\n", err); in dsicm_framedone_cb()
818 in->ops.dsi->bus_unlock(ddata->in); in dsicm_framedone_cb()
823 struct panel_drv_data *ddata = data; in dsicm_te_isr() local
824 struct omap_dss_device *in = ddata->in; in dsicm_te_isr()
828 old = atomic_cmpxchg(&ddata->do_update, 1, 0); in dsicm_te_isr()
831 cancel_delayed_work(&ddata->te_timeout_work); in dsicm_te_isr()
833 r = in->ops.dsi->update(in, ddata->channel, dsicm_framedone_cb, in dsicm_te_isr()
834 ddata); in dsicm_te_isr()
841 dev_err(&ddata->pdev->dev, "start update failed\n"); in dsicm_te_isr()
848 struct panel_drv_data *ddata = container_of(work, struct panel_drv_data, in dsicm_te_timeout_work_callback() local
850 struct omap_dss_device *in = ddata->in; in dsicm_te_timeout_work_callback()
852 dev_err(&ddata->pdev->dev, "TE not received for 250ms!\n"); in dsicm_te_timeout_work_callback()
854 atomic_set(&ddata->do_update, 0); in dsicm_te_timeout_work_callback()
861 struct panel_drv_data *ddata = to_panel_data(dssdev); in dsicm_update() local
862 struct omap_dss_device *in = ddata->in; in dsicm_update()
865 dev_dbg(&ddata->pdev->dev, "update %d, %d, %d x %d\n", x, y, w, h); in dsicm_update()
867 mutex_lock(&ddata->lock); in dsicm_update()
870 r = dsicm_wake_up(ddata); in dsicm_update()
874 if (!ddata->enabled) { in dsicm_update()
880 r = dsicm_set_update_window(ddata, 0, 0, in dsicm_update()
886 if (ddata->te_enabled && ddata->ext_te_gpio) { in dsicm_update()
887 schedule_delayed_work(&ddata->te_timeout_work, in dsicm_update()
889 atomic_set(&ddata->do_update, 1); in dsicm_update()
891 r = in->ops.dsi->update(in, ddata->channel, dsicm_framedone_cb, in dsicm_update()
892 ddata); in dsicm_update()
898 mutex_unlock(&ddata->lock); in dsicm_update()
902 mutex_unlock(&ddata->lock); in dsicm_update()
908 struct panel_drv_data *ddata = to_panel_data(dssdev); in dsicm_sync() local
909 struct omap_dss_device *in = ddata->in; in dsicm_sync()
911 dev_dbg(&ddata->pdev->dev, "sync\n"); in dsicm_sync()
913 mutex_lock(&ddata->lock); in dsicm_sync()
916 mutex_unlock(&ddata->lock); in dsicm_sync()
918 dev_dbg(&ddata->pdev->dev, "sync done\n"); in dsicm_sync()
923 static int _dsicm_enable_te(struct panel_drv_data *ddata, bool enable) in _dsicm_enable_te() argument
925 struct omap_dss_device *in = ddata->in; in _dsicm_enable_te()
929 r = dsicm_dcs_write_1(ddata, MIPI_DCS_SET_TEAR_ON, 0); in _dsicm_enable_te()
931 r = dsicm_dcs_write_0(ddata, MIPI_DCS_SET_TEAR_OFF); in _dsicm_enable_te()
933 if (!ddata->ext_te_gpio) in _dsicm_enable_te()
944 struct panel_drv_data *ddata = to_panel_data(dssdev); in dsicm_enable_te() local
945 struct omap_dss_device *in = ddata->in; in dsicm_enable_te()
948 mutex_lock(&ddata->lock); in dsicm_enable_te()
950 if (ddata->te_enabled == enable) in dsicm_enable_te()
955 if (ddata->enabled) { in dsicm_enable_te()
956 r = dsicm_wake_up(ddata); in dsicm_enable_te()
960 r = _dsicm_enable_te(ddata, enable); in dsicm_enable_te()
965 ddata->te_enabled = enable; in dsicm_enable_te()
969 mutex_unlock(&ddata->lock); in dsicm_enable_te()
974 mutex_unlock(&ddata->lock); in dsicm_enable_te()
981 struct panel_drv_data *ddata = to_panel_data(dssdev); in dsicm_get_te() local
984 mutex_lock(&ddata->lock); in dsicm_get_te()
985 r = ddata->te_enabled; in dsicm_get_te()
986 mutex_unlock(&ddata->lock); in dsicm_get_te()
995 struct panel_drv_data *ddata = to_panel_data(dssdev); in dsicm_memory_read() local
996 struct omap_dss_device *in = ddata->in; in dsicm_memory_read()
1005 mutex_lock(&ddata->lock); in dsicm_memory_read()
1007 if (!ddata->enabled) { in dsicm_memory_read()
1018 r = dsicm_wake_up(ddata); in dsicm_memory_read()
1030 dsicm_set_update_window(ddata, x, y, w, h); in dsicm_memory_read()
1032 r = in->ops.dsi->set_max_rx_packet_size(in, ddata->channel, plen); in dsicm_memory_read()
1040 r = in->ops.dsi->dcs_read(in, ddata->channel, dcs_cmd, in dsicm_memory_read()
1051 dev_err(&ddata->pdev->dev, "short read\n"); in dsicm_memory_read()
1056 dev_err(&ddata->pdev->dev, "signal pending, " in dsicm_memory_read()
1066 in->ops.dsi->set_max_rx_packet_size(in, ddata->channel, 1); in dsicm_memory_read()
1070 mutex_unlock(&ddata->lock); in dsicm_memory_read()
1076 struct panel_drv_data *ddata = container_of(work, struct panel_drv_data, in dsicm_ulps_work() local
1078 struct omap_dss_device *dssdev = &ddata->dssdev; in dsicm_ulps_work()
1079 struct omap_dss_device *in = ddata->in; in dsicm_ulps_work()
1081 mutex_lock(&ddata->lock); in dsicm_ulps_work()
1083 if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE || !ddata->enabled) { in dsicm_ulps_work()
1084 mutex_unlock(&ddata->lock); in dsicm_ulps_work()
1090 dsicm_enter_ulps(ddata); in dsicm_ulps_work()
1093 mutex_unlock(&ddata->lock); in dsicm_ulps_work()
1118 struct panel_drv_data *ddata; in dsicm_probe() local
1129 ddata = devm_kzalloc(dev, sizeof(*ddata), GFP_KERNEL); in dsicm_probe()
1130 if (!ddata) in dsicm_probe()
1133 platform_set_drvdata(pdev, ddata); in dsicm_probe()
1134 ddata->pdev = pdev; in dsicm_probe()
1136 ddata->in = omapdss_of_find_source_for_first_ep(pdev->dev.of_node); in dsicm_probe()
1137 r = PTR_ERR_OR_ZERO(ddata->in); in dsicm_probe()
1143 ddata->timings.x_res = 864; in dsicm_probe()
1144 ddata->timings.y_res = 480; in dsicm_probe()
1145 ddata->timings.pixelclock = 864 * 480 * 60; in dsicm_probe()
1147 dssdev = &ddata->dssdev; in dsicm_probe()
1150 dssdev->panel.timings = ddata->timings; in dsicm_probe()
1164 mutex_init(&ddata->lock); in dsicm_probe()
1166 atomic_set(&ddata->do_update, 0); in dsicm_probe()
1168 ddata->reset_gpio = devm_gpiod_get(&pdev->dev, "reset", GPIOD_OUT_LOW); in dsicm_probe()
1169 r = PTR_ERR_OR_ZERO(ddata->reset_gpio); in dsicm_probe()
1175 gpiod_set_consumer_name(ddata->reset_gpio, "taal rst"); in dsicm_probe()
1177 ddata->ext_te_gpio = devm_gpiod_get_optional(&pdev->dev, "te", in dsicm_probe()
1179 r = PTR_ERR_OR_ZERO(ddata->ext_te_gpio); in dsicm_probe()
1185 if (ddata->ext_te_gpio) { in dsicm_probe()
1186 gpiod_set_consumer_name(ddata->ext_te_gpio, "taal irq"); in dsicm_probe()
1188 r = devm_request_irq(dev, gpiod_to_irq(ddata->ext_te_gpio), in dsicm_probe()
1191 "taal vsync", ddata); in dsicm_probe()
1198 INIT_DEFERRABLE_WORK(&ddata->te_timeout_work, in dsicm_probe()
1204 INIT_DELAYED_WORK(&ddata->ulps_work, dsicm_ulps_work); in dsicm_probe()
1206 dsicm_hw_reset(ddata); in dsicm_probe()
1208 if (ddata->use_dsi_backlight) { in dsicm_probe()
1214 dev, ddata, &dsicm_bl_ops, &props); in dsicm_probe()
1220 ddata->bldev = bldev; in dsicm_probe()
1246 struct panel_drv_data *ddata = platform_get_drvdata(pdev); in dsicm_remove() local
1247 struct omap_dss_device *dssdev = &ddata->dssdev; in dsicm_remove()
1259 bldev = ddata->bldev; in dsicm_remove()
1266 omap_dss_put_device(ddata->in); in dsicm_remove()
1268 dsicm_cancel_ulps_work(ddata); in dsicm_remove()
1271 dsicm_hw_reset(ddata); in dsicm_remove()