Lines Matching refs:dpsub
47 return container_of(drm, struct zynqmp_dpsub_drm, dev)->dpsub; in to_zynqmp_dpsub()
80 struct zynqmp_dpsub *dpsub = to_zynqmp_dpsub(plane->dev); in zynqmp_dpsub_plane_atomic_disable() local
81 struct zynqmp_disp_layer *layer = dpsub->layers[plane->index]; in zynqmp_dpsub_plane_atomic_disable()
89 zynqmp_disp_blend_set_global_alpha(dpsub->disp, false, in zynqmp_dpsub_plane_atomic_disable()
98 struct zynqmp_dpsub *dpsub = to_zynqmp_dpsub(plane->dev); in zynqmp_dpsub_plane_atomic_update() local
99 struct zynqmp_disp_layer *layer = dpsub->layers[plane->index]; in zynqmp_dpsub_plane_atomic_update()
121 zynqmp_disp_blend_set_global_alpha(dpsub->disp, true, in zynqmp_dpsub_plane_atomic_update()
144 static int zynqmp_dpsub_create_planes(struct zynqmp_dpsub *dpsub) in zynqmp_dpsub_create_planes() argument
149 for (i = 0; i < ARRAY_SIZE(dpsub->drm->planes); i++) { in zynqmp_dpsub_create_planes()
150 struct zynqmp_disp_layer *layer = dpsub->layers[i]; in zynqmp_dpsub_create_planes()
151 struct drm_plane *plane = &dpsub->drm->planes[i]; in zynqmp_dpsub_create_planes()
163 ret = drm_universal_plane_init(&dpsub->drm->dev, plane, 0, in zynqmp_dpsub_create_planes()
187 return container_of(crtc, struct zynqmp_dpsub_drm, crtc)->dpsub; in crtc_to_dpsub()
193 struct zynqmp_dpsub *dpsub = crtc_to_dpsub(crtc); in zynqmp_dpsub_crtc_atomic_enable() local
197 pm_runtime_get_sync(dpsub->dev); in zynqmp_dpsub_crtc_atomic_enable()
199 zynqmp_disp_setup_clock(dpsub->disp, adjusted_mode->clock * 1000); in zynqmp_dpsub_crtc_atomic_enable()
201 ret = clk_prepare_enable(dpsub->vid_clk); in zynqmp_dpsub_crtc_atomic_enable()
203 dev_err(dpsub->dev, "failed to enable a pixel clock\n"); in zynqmp_dpsub_crtc_atomic_enable()
204 pm_runtime_put_sync(dpsub->dev); in zynqmp_dpsub_crtc_atomic_enable()
208 zynqmp_disp_enable(dpsub->disp); in zynqmp_dpsub_crtc_atomic_enable()
219 struct zynqmp_dpsub *dpsub = crtc_to_dpsub(crtc); in zynqmp_dpsub_crtc_atomic_disable() local
231 zynqmp_disp_disable(dpsub->disp); in zynqmp_dpsub_crtc_atomic_disable()
242 clk_disable_unprepare(dpsub->vid_clk); in zynqmp_dpsub_crtc_atomic_disable()
243 pm_runtime_put_sync(dpsub->dev); in zynqmp_dpsub_crtc_atomic_disable()
288 struct zynqmp_dpsub *dpsub = crtc_to_dpsub(crtc); in zynqmp_dpsub_crtc_enable_vblank() local
290 zynqmp_dp_enable_vblank(dpsub->dp); in zynqmp_dpsub_crtc_enable_vblank()
297 struct zynqmp_dpsub *dpsub = crtc_to_dpsub(crtc); in zynqmp_dpsub_crtc_disable_vblank() local
299 zynqmp_dp_disable_vblank(dpsub->dp); in zynqmp_dpsub_crtc_disable_vblank()
313 static int zynqmp_dpsub_create_crtc(struct zynqmp_dpsub *dpsub) in zynqmp_dpsub_create_crtc() argument
315 struct drm_plane *plane = &dpsub->drm->planes[ZYNQMP_DPSUB_LAYER_GFX]; in zynqmp_dpsub_create_crtc()
316 struct drm_crtc *crtc = &dpsub->drm->crtc; in zynqmp_dpsub_create_crtc()
319 ret = drm_crtc_init_with_planes(&dpsub->drm->dev, crtc, plane, in zynqmp_dpsub_create_crtc()
332 static void zynqmp_dpsub_map_crtc_to_plane(struct zynqmp_dpsub *dpsub) in zynqmp_dpsub_map_crtc_to_plane() argument
334 u32 possible_crtcs = drm_crtc_mask(&dpsub->drm->crtc); in zynqmp_dpsub_map_crtc_to_plane()
337 for (i = 0; i < ARRAY_SIZE(dpsub->drm->planes); i++) in zynqmp_dpsub_map_crtc_to_plane()
338 dpsub->drm->planes[i].possible_crtcs = possible_crtcs; in zynqmp_dpsub_map_crtc_to_plane()
348 void zynqmp_dpsub_drm_handle_vblank(struct zynqmp_dpsub *dpsub) in zynqmp_dpsub_drm_handle_vblank() argument
350 drm_crtc_handle_vblank(&dpsub->drm->crtc); in zynqmp_dpsub_drm_handle_vblank()
361 struct zynqmp_dpsub *dpsub = to_zynqmp_dpsub(drm); in zynqmp_dpsub_dumb_create() local
365 args->pitch = ALIGN(pitch, dpsub->dma_align); in zynqmp_dpsub_dumb_create()
374 struct zynqmp_dpsub *dpsub = to_zynqmp_dpsub(drm); in zynqmp_dpsub_fb_create() local
380 cmd.pitches[i] = ALIGN(cmd.pitches[i], dpsub->dma_align); in zynqmp_dpsub_fb_create()
412 static int zynqmp_dpsub_kms_init(struct zynqmp_dpsub *dpsub) in zynqmp_dpsub_kms_init() argument
414 struct drm_encoder *encoder = &dpsub->drm->encoder; in zynqmp_dpsub_kms_init()
419 ret = zynqmp_dpsub_create_planes(dpsub); in zynqmp_dpsub_kms_init()
423 ret = zynqmp_dpsub_create_crtc(dpsub); in zynqmp_dpsub_kms_init()
427 zynqmp_dpsub_map_crtc_to_plane(dpsub); in zynqmp_dpsub_kms_init()
430 encoder->possible_crtcs |= drm_crtc_mask(&dpsub->drm->crtc); in zynqmp_dpsub_kms_init()
431 drm_simple_encoder_init(&dpsub->drm->dev, encoder, DRM_MODE_ENCODER_NONE); in zynqmp_dpsub_kms_init()
433 ret = drm_bridge_attach(encoder, dpsub->bridge, NULL, in zynqmp_dpsub_kms_init()
436 dev_err(dpsub->dev, "failed to attach bridge to encoder\n"); in zynqmp_dpsub_kms_init()
441 connector = drm_bridge_connector_init(&dpsub->drm->dev, encoder); in zynqmp_dpsub_kms_init()
443 dev_err(dpsub->dev, "failed to created connector\n"); in zynqmp_dpsub_kms_init()
449 dev_err(dpsub->dev, "failed to attach connector to encoder\n"); in zynqmp_dpsub_kms_init()
460 zynqmp_dpsub_release(dpdrm->dpsub); in zynqmp_dpsub_drm_release()
463 int zynqmp_dpsub_drm_init(struct zynqmp_dpsub *dpsub) in zynqmp_dpsub_drm_init() argument
475 dpdrm = devm_drm_dev_alloc(dpsub->dev, &zynqmp_dpsub_drm_driver, in zynqmp_dpsub_drm_init()
480 dpdrm->dpsub = dpsub; in zynqmp_dpsub_drm_init()
487 dpsub->drm = dpdrm; in zynqmp_dpsub_drm_init()
506 ret = zynqmp_dpsub_kms_init(dpsub); in zynqmp_dpsub_drm_init()
527 void zynqmp_dpsub_drm_cleanup(struct zynqmp_dpsub *dpsub) in zynqmp_dpsub_drm_cleanup() argument
529 struct drm_device *drm = &dpsub->drm->dev; in zynqmp_dpsub_drm_cleanup()