Lines Matching refs:imxpd
54 struct imx_parallel_display *imxpd = con_to_imxpd(connector); in imx_pd_connector_get_modes() local
55 struct device_node *np = imxpd->dev->of_node; in imx_pd_connector_get_modes()
58 if (imxpd->panel && imxpd->panel->funcs && in imx_pd_connector_get_modes()
59 imxpd->panel->funcs->get_modes) { in imx_pd_connector_get_modes()
60 num_modes = imxpd->panel->funcs->get_modes(imxpd->panel); in imx_pd_connector_get_modes()
65 if (imxpd->edid) { in imx_pd_connector_get_modes()
66 drm_connector_update_edid_property(connector, imxpd->edid); in imx_pd_connector_get_modes()
67 num_modes = drm_add_edid_modes(connector, imxpd->edid); in imx_pd_connector_get_modes()
77 ret = of_get_drm_display_mode(np, &imxpd->mode, in imx_pd_connector_get_modes()
78 &imxpd->bus_flags, in imx_pd_connector_get_modes()
83 drm_mode_copy(mode, &imxpd->mode); in imx_pd_connector_get_modes()
95 struct imx_parallel_display *imxpd = con_to_imxpd(connector); in imx_pd_connector_best_encoder() local
97 return &imxpd->encoder; in imx_pd_connector_best_encoder()
102 struct imx_parallel_display *imxpd = enc_to_imxpd(encoder); in imx_pd_encoder_enable() local
104 drm_panel_prepare(imxpd->panel); in imx_pd_encoder_enable()
105 drm_panel_enable(imxpd->panel); in imx_pd_encoder_enable()
110 struct imx_parallel_display *imxpd = enc_to_imxpd(encoder); in imx_pd_encoder_disable() local
112 drm_panel_disable(imxpd->panel); in imx_pd_encoder_disable()
113 drm_panel_unprepare(imxpd->panel); in imx_pd_encoder_disable()
122 struct imx_parallel_display *imxpd = enc_to_imxpd(encoder); in imx_pd_encoder_atomic_check() local
124 if (!imxpd->bus_format && di->num_bus_formats) { in imx_pd_encoder_atomic_check()
128 imx_crtc_state->bus_flags = imxpd->bus_flags; in imx_pd_encoder_atomic_check()
129 imx_crtc_state->bus_format = imxpd->bus_format; in imx_pd_encoder_atomic_check()
161 struct imx_parallel_display *imxpd) in imx_pd_register() argument
163 struct drm_encoder *encoder = &imxpd->encoder; in imx_pd_register()
166 ret = imx_drm_encoder_parse_of(drm, encoder, imxpd->dev->of_node); in imx_pd_register()
175 imxpd->connector.dpms = DRM_MODE_DPMS_OFF; in imx_pd_register()
181 if (!imxpd->bridge) { in imx_pd_register()
182 drm_connector_helper_add(&imxpd->connector, in imx_pd_register()
184 drm_connector_init(drm, &imxpd->connector, in imx_pd_register()
189 if (imxpd->panel) in imx_pd_register()
190 drm_panel_attach(imxpd->panel, &imxpd->connector); in imx_pd_register()
192 if (imxpd->bridge) { in imx_pd_register()
193 ret = drm_bridge_attach(encoder, imxpd->bridge, NULL); in imx_pd_register()
195 dev_err(imxpd->dev, "failed to attach bridge: %d\n", in imx_pd_register()
200 drm_connector_attach_encoder(&imxpd->connector, encoder); in imx_pd_register()
211 struct imx_parallel_display *imxpd; in imx_pd_bind() local
216 imxpd = devm_kzalloc(dev, sizeof(*imxpd), GFP_KERNEL); in imx_pd_bind()
217 if (!imxpd) in imx_pd_bind()
220 edidp = of_get_property(np, "edid", &imxpd->edid_len); in imx_pd_bind()
222 imxpd->edid = kmemdup(edidp, imxpd->edid_len, GFP_KERNEL); in imx_pd_bind()
235 imxpd->bus_format = bus_format; in imx_pd_bind()
238 ret = drm_of_find_panel_or_bridge(np, 1, 0, &imxpd->panel, &imxpd->bridge); in imx_pd_bind()
242 imxpd->dev = dev; in imx_pd_bind()
244 ret = imx_pd_register(drm, imxpd); in imx_pd_bind()
248 dev_set_drvdata(dev, imxpd); in imx_pd_bind()
256 struct imx_parallel_display *imxpd = dev_get_drvdata(dev); in imx_pd_unbind() local
258 if (imxpd->panel) in imx_pd_unbind()
259 drm_panel_detach(imxpd->panel); in imx_pd_unbind()
261 kfree(imxpd->edid); in imx_pd_unbind()