Lines Matching +full:enforce +full:- +full:video +full:- +full:mode
17 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
34 #include <video/display_timing.h>
35 #include <video/of_display_timing.h>
36 #include <video/videomode.h>
46 * struct panel_delay - Describes delays for a simple panel.
59 * hpd_absent. While that works, it's non-ideal.
68 * This is T3-max on eDP timing diagrams or the delay from power on
79 * This is (T3+T4+T5+T6+T8)-min on eDP timing diagrams or after the
114 * // enforce prepare_to_enable min time
127 * video data.
129 * This is (T6-min + max(T7-max, T8-min)) on eDP timing diagrams or
141 * This is T9-min (delay from backlight off to end of valid video
157 * This is T12-min on eDP timing diagrams.
163 * struct panel_desc - Describes a simple panel.
169 * If only one mode then this can just be the address of the mode.
171 * then you cannot override the mode in the device tree.
210 * struct edp_panel_entry - Maps panel ID to delay / panel name.
219 /** @override_edid_mode: Override the mode obtained by edid. */
257 struct drm_display_mode *mode; in panel_edp_get_timings_modes() local
260 for (i = 0; i < panel->desc->num_timings; i++) { in panel_edp_get_timings_modes()
261 const struct display_timing *dt = &panel->desc->timings[i]; in panel_edp_get_timings_modes()
265 mode = drm_mode_create(connector->dev); in panel_edp_get_timings_modes()
266 if (!mode) { in panel_edp_get_timings_modes()
267 dev_err(panel->base.dev, "failed to add mode %ux%u\n", in panel_edp_get_timings_modes()
268 dt->hactive.typ, dt->vactive.typ); in panel_edp_get_timings_modes()
272 drm_display_mode_from_videomode(&vm, mode); in panel_edp_get_timings_modes()
274 mode->type |= DRM_MODE_TYPE_DRIVER; in panel_edp_get_timings_modes()
276 if (panel->desc->num_timings == 1) in panel_edp_get_timings_modes()
277 mode->type |= DRM_MODE_TYPE_PREFERRED; in panel_edp_get_timings_modes()
279 drm_mode_probed_add(connector, mode); in panel_edp_get_timings_modes()
289 struct drm_display_mode *mode; in panel_edp_get_display_modes() local
292 for (i = 0; i < panel->desc->num_modes; i++) { in panel_edp_get_display_modes()
293 const struct drm_display_mode *m = &panel->desc->modes[i]; in panel_edp_get_display_modes()
295 mode = drm_mode_duplicate(connector->dev, m); in panel_edp_get_display_modes()
296 if (!mode) { in panel_edp_get_display_modes()
297 dev_err(panel->base.dev, "failed to add mode %ux%u@%u\n", in panel_edp_get_display_modes()
298 m->hdisplay, m->vdisplay, in panel_edp_get_display_modes()
303 mode->type |= DRM_MODE_TYPE_DRIVER; in panel_edp_get_display_modes()
305 if (panel->desc->num_modes == 1) in panel_edp_get_display_modes()
306 mode->type |= DRM_MODE_TYPE_PREFERRED; in panel_edp_get_display_modes()
308 drm_mode_set_name(mode); in panel_edp_get_display_modes()
310 drm_mode_probed_add(connector, mode); in panel_edp_get_display_modes()
321 struct drm_display_mode *mode; in panel_edp_override_edid_mode() local
323 mode = drm_mode_duplicate(connector->dev, override_mode); in panel_edp_override_edid_mode()
324 if (!mode) { in panel_edp_override_edid_mode()
325 dev_err(panel->base.dev, "failed to add additional mode\n"); in panel_edp_override_edid_mode()
329 mode->type |= DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; in panel_edp_override_edid_mode()
330 drm_mode_set_name(mode); in panel_edp_override_edid_mode()
331 drm_mode_probed_add(connector, mode); in panel_edp_override_edid_mode()
338 struct drm_display_mode *mode; in panel_edp_get_non_edid_modes() local
339 bool has_override = panel->override_mode.type; in panel_edp_get_non_edid_modes()
342 if (!panel->desc) in panel_edp_get_non_edid_modes()
346 mode = drm_mode_duplicate(connector->dev, in panel_edp_get_non_edid_modes()
347 &panel->override_mode); in panel_edp_get_non_edid_modes()
348 if (mode) { in panel_edp_get_non_edid_modes()
349 drm_mode_probed_add(connector, mode); in panel_edp_get_non_edid_modes()
352 dev_err(panel->base.dev, "failed to add override mode\n"); in panel_edp_get_non_edid_modes()
357 if (num == 0 && panel->desc->num_timings) in panel_edp_get_non_edid_modes()
361 * Only add fixed modes if timings/override added no mode. in panel_edp_get_non_edid_modes()
364 * or a fixed mode. Anything else is rather bogus. in panel_edp_get_non_edid_modes()
366 WARN_ON(panel->desc->num_timings && panel->desc->num_modes); in panel_edp_get_non_edid_modes()
370 connector->display_info.bpc = panel->desc->bpc; in panel_edp_get_non_edid_modes()
371 connector->display_info.width_mm = panel->desc->size.width; in panel_edp_get_non_edid_modes()
372 connector->display_info.height_mm = panel->desc->size.height; in panel_edp_get_non_edid_modes()
395 if (p->desc->delay.disable) in panel_edp_disable()
396 msleep(p->desc->delay.disable); in panel_edp_disable()
405 drm_dp_dpcd_set_powered(p->aux, false); in panel_edp_suspend()
406 gpiod_set_value_cansleep(p->enable_gpio, 0); in panel_edp_suspend()
407 regulator_disable(p->supply); in panel_edp_suspend()
408 p->unprepared_time = ktime_get_boottime(); in panel_edp_suspend()
417 ret = pm_runtime_put_sync_suspend(panel->dev); in panel_edp_unprepare()
426 p->hpd_gpio = devm_gpiod_get_optional(dev, "hpd", GPIOD_IN); in panel_edp_get_hpd_gpio()
427 if (IS_ERR(p->hpd_gpio)) in panel_edp_get_hpd_gpio()
428 return dev_err_probe(dev, PTR_ERR(p->hpd_gpio), in panel_edp_get_hpd_gpio()
436 return !p->no_hpd && (p->hpd_gpio || (p->aux && p->aux->wait_hpd_asserted)); in panel_edp_can_read_hpd()
441 struct device *dev = p->base.dev; in panel_edp_prepare_once()
447 panel_edp_wait(p->unprepared_time, p->desc->delay.unprepare); in panel_edp_prepare_once()
449 err = regulator_enable(p->supply); in panel_edp_prepare_once()
455 gpiod_set_value_cansleep(p->enable_gpio, 1); in panel_edp_prepare_once()
456 drm_dp_dpcd_set_powered(p->aux, true); in panel_edp_prepare_once()
458 p->powered_on_time = ktime_get_boottime(); in panel_edp_prepare_once()
460 delay = p->desc->delay.hpd_reliable; in panel_edp_prepare_once()
461 if (p->no_hpd) in panel_edp_prepare_once()
462 delay = max(delay, p->desc->delay.hpd_absent); in panel_edp_prepare_once()
467 if (p->desc->delay.hpd_absent) in panel_edp_prepare_once()
468 hpd_wait_us = p->desc->delay.hpd_absent * 1000UL; in panel_edp_prepare_once()
472 if (p->hpd_gpio) { in panel_edp_prepare_once()
474 p->hpd_gpio, hpd_asserted, in panel_edp_prepare_once()
479 err = p->aux->wait_hpd_asserted(p->aux, hpd_wait_us); in panel_edp_prepare_once()
483 if (err != -ETIMEDOUT) in panel_edp_prepare_once()
490 p->prepared_time = ktime_get_boottime(); in panel_edp_prepare_once()
495 drm_dp_dpcd_set_powered(p->aux, false); in panel_edp_prepare_once()
496 gpiod_set_value_cansleep(p->enable_gpio, 0); in panel_edp_prepare_once()
497 regulator_disable(p->supply); in panel_edp_prepare_once()
498 p->unprepared_time = ktime_get_boottime(); in panel_edp_prepare_once()
517 if (ret != -ETIMEDOUT) in panel_edp_resume()
521 if (ret == -ETIMEDOUT) in panel_edp_resume()
533 ret = pm_runtime_get_sync(panel->dev); in panel_edp_prepare()
535 pm_runtime_put_autosuspend(panel->dev); in panel_edp_prepare()
547 delay = p->desc->delay.enable; in panel_edp_enable()
557 * called (and link training took zero time). Note that "no-hpd" in panel_edp_enable()
566 if (p->desc->delay.prepare_to_enable && in panel_edp_enable()
567 !panel_edp_can_read_hpd(p) && !p->no_hpd) in panel_edp_enable()
568 delay = max(delay, p->desc->delay.prepare_to_enable); in panel_edp_enable()
573 panel_edp_wait(p->prepared_time, p->desc->delay.prepare_to_enable); in panel_edp_enable()
575 panel_edp_wait(p->powered_on_time, p->desc->delay.powered_on_to_enable); in panel_edp_enable()
585 bool has_hard_coded_modes = p->desc->num_timings || p->desc->num_modes; in panel_edp_get_modes()
586 bool has_override_edid_mode = p->detected_panel && in panel_edp_get_modes()
587 p->detected_panel != ERR_PTR(-EINVAL) && in panel_edp_get_modes()
588 p->detected_panel->override_edid_mode; in panel_edp_get_modes()
591 if (p->ddc) { in panel_edp_get_modes()
592 pm_runtime_get_sync(panel->dev); in panel_edp_get_modes()
594 if (!p->drm_edid) in panel_edp_get_modes()
595 p->drm_edid = drm_edid_read_ddc(connector, p->ddc); in panel_edp_get_modes()
597 drm_edid_connector_update(connector, p->drm_edid); in panel_edp_get_modes()
600 * If both edid and hard-coded modes exists, skip edid modes to in panel_edp_get_modes()
603 if (p->drm_edid && !has_hard_coded_modes) { in panel_edp_get_modes()
610 p->detected_panel->override_edid_mode); in panel_edp_get_modes()
616 pm_runtime_mark_last_busy(panel->dev); in panel_edp_get_modes()
617 pm_runtime_put_autosuspend(panel->dev); in panel_edp_get_modes()
623 dev_warn(p->base.dev, "No display modes\n"); in panel_edp_get_modes()
629 drm_connector_set_panel_orientation(connector, p->orientation); in panel_edp_get_modes()
641 if (p->desc->num_timings < num_timings) in panel_edp_get_timings()
642 num_timings = p->desc->num_timings; in panel_edp_get_timings()
646 timings[i] = p->desc->timings[i]; in panel_edp_get_timings()
648 return p->desc->num_timings; in panel_edp_get_timings()
655 return p->orientation; in panel_edp_get_orientation()
660 struct drm_panel *panel = s->private; in detected_panel_show()
663 if (IS_ERR(p->detected_panel)) in detected_panel_show()
665 else if (!p->detected_panel) in detected_panel_show()
668 seq_printf(s, "%s\n", p->detected_panel->ident.name); in detected_panel_show()
692 (to_check->field.typ >= bounds->field.min && \
693 to_check->field.typ <= bounds->field.max)
698 const struct panel_desc *desc = panel->desc; in panel_edp_parse_panel_timing_node()
702 if (WARN_ON(desc->num_modes)) { in panel_edp_parse_panel_timing_node()
703 dev_err(dev, "Reject override mode: panel has a fixed mode\n"); in panel_edp_parse_panel_timing_node()
706 if (WARN_ON(!desc->num_timings)) { in panel_edp_parse_panel_timing_node()
707 dev_err(dev, "Reject override mode: no timings specified\n"); in panel_edp_parse_panel_timing_node()
711 for (i = 0; i < panel->desc->num_timings; i++) { in panel_edp_parse_panel_timing_node()
712 const struct display_timing *dt = &panel->desc->timings[i]; in panel_edp_parse_panel_timing_node()
724 if (ot->flags != dt->flags) in panel_edp_parse_panel_timing_node()
728 drm_display_mode_from_videomode(&vm, &panel->override_mode); in panel_edp_parse_panel_timing_node()
729 panel->override_mode.type |= DRM_MODE_TYPE_DRIVER | in panel_edp_parse_panel_timing_node()
734 if (WARN_ON(!panel->override_mode.type)) in panel_edp_parse_panel_timing_node()
735 dev_err(dev, "Reject override mode: No display_timing found\n"); in panel_edp_parse_panel_timing_node()
753 desc->delay.unprepare = 2000; in panel_edp_set_conservative_timings()
754 desc->delay.enable = 200; in panel_edp_set_conservative_timings()
756 panel->detected_panel = ERR_PTR(-EINVAL); in panel_edp_set_conservative_timings()
772 return -ENOMEM; in generic_edp_panel_probe()
773 panel->desc = desc; in generic_edp_panel_probe()
780 of_property_read_u32(dev->of_node, "hpd-reliable-delay-ms", &reliable_ms); in generic_edp_panel_probe()
781 desc->delay.hpd_reliable = reliable_ms; in generic_edp_panel_probe()
782 of_property_read_u32(dev->of_node, "hpd-absent-delay-ms", &absent_ms); in generic_edp_panel_probe()
783 desc->delay.hpd_absent = absent_ms; in generic_edp_panel_probe()
795 base_block = drm_edid_read_base_block(panel->ddc); in generic_edp_panel_probe()
805 panel->detected_panel = find_edp_panel(panel_id, base_block); in generic_edp_panel_probe()
810 * We're using non-optimized timings and want it really obvious that in generic_edp_panel_probe()
814 if (WARN_ON(!panel->detected_panel)) { in generic_edp_panel_probe()
821 vend, panel->detected_panel->ident.name, product_id); in generic_edp_panel_probe()
824 desc->delay = *panel->detected_panel->delay; in generic_edp_panel_probe()
844 return -ENOMEM; in panel_edp_probe()
846 panel->prepared_time = 0; in panel_edp_probe()
847 panel->desc = desc; in panel_edp_probe()
848 panel->aux = aux; in panel_edp_probe()
850 panel->no_hpd = of_property_read_bool(dev->of_node, "no-hpd"); in panel_edp_probe()
851 if (!panel->no_hpd) { in panel_edp_probe()
857 panel->supply = devm_regulator_get(dev, "power"); in panel_edp_probe()
858 if (IS_ERR(panel->supply)) in panel_edp_probe()
859 return PTR_ERR(panel->supply); in panel_edp_probe()
861 panel->enable_gpio = devm_gpiod_get_optional(dev, "enable", in panel_edp_probe()
863 if (IS_ERR(panel->enable_gpio)) in panel_edp_probe()
864 return dev_err_probe(dev, PTR_ERR(panel->enable_gpio), in panel_edp_probe()
867 err = of_drm_get_panel_orientation(dev->of_node, &panel->orientation); in panel_edp_probe()
869 dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, err); in panel_edp_probe()
873 ddc = of_parse_phandle(dev->of_node, "ddc-i2c-bus", 0); in panel_edp_probe()
875 panel->ddc = of_find_i2c_adapter_by_node(ddc); in panel_edp_probe()
878 if (!panel->ddc) in panel_edp_probe()
879 return -EPROBE_DEFER; in panel_edp_probe()
881 panel->ddc = &aux->ddc; in panel_edp_probe()
884 if (!of_get_display_timing(dev->of_node, "panel-timing", &dt)) in panel_edp_probe()
889 drm_panel_init(&panel->base, dev, &panel_edp_funcs, DRM_MODE_CONNECTOR_eDP); in panel_edp_probe()
891 err = drm_panel_of_backlight(&panel->base); in panel_edp_probe()
905 if (of_device_is_compatible(dev->of_node, "edp-panel")) { in panel_edp_probe()
913 desc = panel->desc; in panel_edp_probe()
914 } else if (desc->bpc != 6 && desc->bpc != 8 && desc->bpc != 10) { in panel_edp_probe()
915 dev_warn(dev, "Expected bpc in {6,8,10} but got: %u\n", desc->bpc); in panel_edp_probe()
918 if (!panel->base.backlight && panel->aux) { in panel_edp_probe()
920 err = drm_panel_dp_aux_backlight(&panel->base, panel->aux); in panel_edp_probe()
933 drm_panel_add(&panel->base); in panel_edp_probe()
941 if (panel->ddc && (!panel->aux || panel->ddc != &panel->aux->ddc)) in panel_edp_probe()
942 put_device(&panel->ddc->dev); in panel_edp_probe()
957 * different DRM modeset drivers used with panel-edp. Once we've in panel_edp_shutdown()
971 if (panel->base.enabled) in panel_edp_shutdown()
972 drm_panel_disable(&panel->base); in panel_edp_shutdown()
973 if (panel->base.prepared) in panel_edp_shutdown()
974 drm_panel_unprepare(&panel->base); in panel_edp_shutdown()
981 drm_panel_remove(&panel->base); in panel_edp_remove()
986 if (panel->ddc && (!panel->aux || panel->ddc != &panel->aux->ddc)) in panel_edp_remove()
987 put_device(&panel->ddc->dev); in panel_edp_remove()
989 drm_edid_free(panel->drm_edid); in panel_edp_remove()
990 panel->drm_edid = NULL; in panel_edp_remove()
1139 /* TODO: should be hpd-absent and no-hpd should be set? */
1219 * - If HPD isn't hooked up you still have 200 ms delay.
1220 * - If HPD is hooked up we won't try to look at it for the
1253 /* TODO: should be hpd-absent and no-hpd should be set? */
1291 * - total horizontal time: { 1506, 1592, 1716 }
1292 * - total vertical time: { 788, 800, 868 }
1622 .compatible = "edp-panel",
1626 * the generic edp-panel compatible.
1629 * - Because of the panel issues (e.g. broken EDID or broken
1631 * - Because the eDP drivers didn't wire up the AUX bus properly.
1636 * In all other cases the platform should use the aux-bus and declare
1637 * the panel using the 'edp-panel' compatible as a device on the AUX
1656 .compatible = "boe,nv110wtm-n61",
1659 .compatible = "boe,nv133fhm-n61",
1662 .compatible = "boe,nv133fhm-n62",
1668 .compatible = "innolux,n116bca-ea1",
1674 .compatible = "innolux,n125hce-gn1",
1677 .compatible = "innolux,p120zdg-bf1",
1680 .compatible = "kingdisplay,kd116n21-30nv-a010",
1683 .compatible = "lg,lp079qx1-sp0v",
1686 .compatible = "lg,lp097qx1-spa1",
1698 .compatible = "samsung,lsn122dl01-c01",
1701 .compatible = "samsung,ltn140at29-301",
1704 .compatible = "sharp,ld-d5116z01b",
1864 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0608, &delay_200_500_e50, "NT116WHM-N11"),
1865 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0609, &delay_200_500_e50_po2e200, "NT116WHM-N21 V4.1"),
1866 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0623, &delay_200_500_e200, "NT116WHM-N21 V4.0"),
1871 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0715, &delay_200_150_e200, "NT116WHM-N21"),
1872 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0717, &delay_200_500_e50_po2e200, "NV133FHM-N42"),
1873 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0731, &delay_200_500_e80, "NT116WHM-N42"),
1874 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0741, &delay_200_500_e200, "NT116WHM-N44"),
1878 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0754, &delay_200_500_e50_po2e200, "NV116WHM-N45"),
1880 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0786, &delay_200_500_p2e80, "NV116WHM-T01"),
1882 EDP_PANEL_ENTRY('B', 'O', 'E', 0x07a8, &delay_200_500_e50_po2e200, "NT116WHM-N21"),
1883 EDP_PANEL_ENTRY('B', 'O', 'E', 0x07d1, &boe_nv133fhm_n61.delay, "NV133FHM-N61"),
1885 EDP_PANEL_ENTRY('B', 'O', 'E', 0x07f6, &delay_200_500_e200, "NT140FHM-N44"),
1888 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0827, &delay_200_500_e50_p2e80, "NT140WHM-N44 V8.0"),
1889 EDP_PANEL_ENTRY('B', 'O', 'E', 0x082d, &boe_nv133fhm_n61.delay, "NV133FHM-N62"),
1891 EDP_PANEL_ENTRY('B', 'O', 'E', 0x08b2, &delay_200_500_e200, "NT140WHM-N49"),
1894 EDP_PANEL_ENTRY('B', 'O', 'E', 0x09c3, &delay_200_500_e50, "NT116WHM-N21,836X2"),
1895 EDP_PANEL_ENTRY('B', 'O', 'E', 0x094b, &delay_200_500_e50, "NT116WHM-N21"),
1896 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0951, &delay_200_500_e80, "NV116WHM-N47"),
1897 EDP_PANEL_ENTRY('B', 'O', 'E', 0x095f, &delay_200_500_e50, "NE135FBM-N41 v8.1"),
1898 EDP_PANEL_ENTRY('B', 'O', 'E', 0x096e, &delay_200_500_e50_po2e200, "NV116WHM-T07 V8.0"),
1899 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0979, &delay_200_500_e50, "NV116WHM-N49 V8.0"),
1900 EDP_PANEL_ENTRY('B', 'O', 'E', 0x098d, &boe_nv110wtm_n61.delay, "NV110WTM-N61"),
1901 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0993, &delay_200_500_e80, "NV116WHM-T14 V8.0"),
1902 EDP_PANEL_ENTRY('B', 'O', 'E', 0x09ad, &delay_200_500_e80, "NV116WHM-N47"),
1903 EDP_PANEL_ENTRY('B', 'O', 'E', 0x09ae, &delay_200_500_e200, "NT140FHM-N45"),
1904 EDP_PANEL_ENTRY('B', 'O', 'E', 0x09dd, &delay_200_500_e50, "NT116WHM-N21"),
1905 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0a1b, &delay_200_500_e50, "NV133WUM-N63"),
1907 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0a3e, &delay_200_500_e80, "NV116WHM-N49"),
1908 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0a5d, &delay_200_500_e50, "NV116WHM-N45"),
1909 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0ac5, &delay_200_500_e50, "NV116WHM-N4C"),
1910 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0ae8, &delay_200_500_e50_p2e80, "NV140WUM-N41"),
1911 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0b34, &delay_200_500_e80, "NV122WUM-N41"),
1912 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0b43, &delay_200_500_e200, "NV140FHM-T09"),
1913 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0b56, &delay_200_500_e80, "NT140FHM-N47"),
1914 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0b66, &delay_200_500_e80, "NE140WUM-N6G"),
1915 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0c20, &delay_200_500_e80, "NT140FHM-N47"),
1916 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cb6, &delay_200_500_e200, "NT116WHM-N44"),
1917 EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cfa, &delay_200_500_e50, "NV116WHM-A4D"),
1919 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1130, &delay_200_500_e50, "N116BGE-EB2"),
1920 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1132, &delay_200_500_e80_d50, "N116BGE-EA2"),
1921 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1138, &innolux_n116bca_ea1.delay, "N116BCA-EA1-RC4"),
1922 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1139, &delay_200_500_e80_d50, "N116BGE-EA2"),
1924 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1145, &delay_200_500_e80_d50, "N116BCN-EB1"),
1926 EDP_PANEL_ENTRY('C', 'M', 'N', 0x114c, &innolux_n116bca_ea1.delay, "N116BCA-EA1"),
1927 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1152, &delay_200_500_e80_d50, "N116BCN-EA1"),
1928 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1153, &delay_200_500_e80_d50, "N116BGE-EA2"),
1929 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1154, &delay_200_500_e80_d50, "N116BCA-EA2"),
1931 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1157, &delay_200_500_e80_d50, "N116BGE-EA2"),
1932 EDP_PANEL_ENTRY('C', 'M', 'N', 0x115b, &delay_200_500_e80_d50, "N116BCN-EB1"),
1933 EDP_PANEL_ENTRY('C', 'M', 'N', 0x115d, &delay_200_500_e80_d50, "N116BCA-EA2"),
1934 EDP_PANEL_ENTRY('C', 'M', 'N', 0x115e, &delay_200_500_e80_d50, "N116BCA-EA1"),
1935 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1160, &delay_200_500_e80_d50, "N116BCJ-EAK"),
1936 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1161, &delay_200_500_e80, "N116BCP-EA2"),
1937 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1247, &delay_200_500_e80_d50, "N120ACA-EA1"),
1938 EDP_PANEL_ENTRY('C', 'M', 'N', 0x142b, &delay_200_500_e80_d50, "N140HCA-EAC"),
1939 EDP_PANEL_ENTRY('C', 'M', 'N', 0x142e, &delay_200_500_e80_d50, "N140BGA-EA4"),
1940 EDP_PANEL_ENTRY('C', 'M', 'N', 0x144f, &delay_200_500_e80_d50, "N140HGA-EA1"),
1941 EDP_PANEL_ENTRY('C', 'M', 'N', 0x1468, &delay_200_500_e80, "N140HGA-EA1"),
1942 EDP_PANEL_ENTRY('C', 'M', 'N', 0x14d4, &delay_200_500_e80_d50, "N140HCA-EAC"),
1943 EDP_PANEL_ENTRY('C', 'M', 'N', 0x14d6, &delay_200_500_e80_d50, "N140BGA-EA4"),
1944 EDP_PANEL_ENTRY('C', 'M', 'N', 0x14e5, &delay_200_500_e80_d50, "N140HGA-EA1"),
1946 EDP_PANEL_ENTRY('C', 'S', 'O', 0x1200, &delay_200_500_e50_p2e200, "MNC207QS1-1"),
1948 EDP_PANEL_ENTRY('C', 'S', 'W', 0x1100, &delay_200_500_e80_d50, "MNB601LS1-1"),
1949 EDP_PANEL_ENTRY('C', 'S', 'W', 0x1104, &delay_200_500_e50, "MNB601LS1-4"),
1953 EDP_PANEL_ENTRY('H', 'K', 'C', 0x2d5c, &delay_200_500_e200, "MB116AN01-2"),
1958 EDP_PANEL_ENTRY('I', 'V', 'O', 0x854b, &delay_200_500_p2e100, "R133NW4K-R0"),
1962 EDP_PANEL_ENTRY('K', 'D', 'B', 0x0624, &kingdisplay_kd116n21_30nv_a010.delay, "116N21-30NV-A010"),
1963 EDP_PANEL_ENTRY('K', 'D', 'B', 0x1118, &delay_200_500_e50, "KD116N29-30NK-A005"),
1964 EDP_PANEL_ENTRY('K', 'D', 'B', 0x1120, &delay_200_500_e80_d50, "116N29-30NK-C007"),
1967 EDP_PANEL_ENTRY('K', 'D', 'C', 0x044f, &delay_200_500_e50, "KD116N9-30NH-F3"),
1968 EDP_PANEL_ENTRY('K', 'D', 'C', 0x05f1, &delay_200_500_e80_d50, "KD116N5-30NV-G7"),
1973 EDP_PANEL_ENTRY('L', 'G', 'D', 0x0497, &delay_200_500_e200_d200, "LP116WH7-SPB1"),
1974 EDP_PANEL_ENTRY('L', 'G', 'D', 0x052c, &delay_200_500_e200_d200, "LP133WF2-SPL7"),
1976 EDP_PANEL_ENTRY('L', 'G', 'D', 0x054a, &delay_200_500_e200_d200, "LP116WH8-SPC1"),
1988 EDP_PANEL_ENTRY('S', 'T', 'A', 0x0100, &delay_100_500_e200, "2081116HHD028001-51D"),
2006 for (panel = edp_panels; panel->ident.panel_id; panel++) in find_edp_panel()
2007 if (drm_edid_match(edid, &panel->ident)) in find_edp_panel()
2010 for (panel = edp_panels; panel->ident.panel_id; panel++) in find_edp_panel()
2011 if (panel->ident.panel_id == panel_id) in find_edp_panel()
2021 /* Skip one since "edp-panel" is only supported on DP AUX bus */ in panel_edp_platform_probe()
2022 id = of_match_node(platform_of_match + 1, pdev->dev.of_node); in panel_edp_platform_probe()
2024 return -ENODEV; in panel_edp_platform_probe()
2026 return panel_edp_probe(&pdev->dev, id->data, NULL); in panel_edp_platform_probe()
2031 panel_edp_remove(&pdev->dev); in panel_edp_platform_remove()
2036 panel_edp_shutdown(&pdev->dev); in panel_edp_platform_shutdown()
2047 .name = "panel-edp",
2060 id = of_match_node(platform_of_match, aux_ep->dev.of_node); in panel_edp_dp_aux_ep_probe()
2062 return -ENODEV; in panel_edp_dp_aux_ep_probe()
2064 return panel_edp_probe(&aux_ep->dev, id->data, aux_ep->aux); in panel_edp_dp_aux_ep_probe()
2069 panel_edp_remove(&aux_ep->dev); in panel_edp_dp_aux_ep_remove()
2074 panel_edp_shutdown(&aux_ep->dev); in panel_edp_dp_aux_ep_shutdown()
2079 .name = "panel-simple-dp-aux",