Lines Matching full:drm

12 #include <drm/clients/drm_client_setup.h>
13 #include <drm/drm_atomic.h>
14 #include <drm/drm_atomic_helper.h>
15 #include <drm/drm_blend.h>
16 #include <drm/drm_bridge.h>
17 #include <drm/drm_bridge_connector.h>
18 #include <drm/drm_connector.h>
19 #include <drm/drm_crtc.h>
20 #include <drm/drm_device.h>
21 #include <drm/drm_drv.h>
22 #include <drm/drm_encoder.h>
23 #include <drm/drm_fbdev_dma.h>
24 #include <drm/drm_fourcc.h>
25 #include <drm/drm_framebuffer.h>
26 #include <drm/drm_gem_dma_helper.h>
27 #include <drm/drm_gem_framebuffer_helper.h>
28 #include <drm/drm_managed.h>
29 #include <drm/drm_mode_config.h>
30 #include <drm/drm_plane.h>
31 #include <drm/drm_probe_helper.h>
32 #include <drm/drm_simple_kms_helper.h>
33 #include <drm/drm_vblank.h>
45 static inline struct zynqmp_dpsub *to_zynqmp_dpsub(struct drm_device *drm) in to_zynqmp_dpsub() argument
47 return container_of(drm, struct zynqmp_dpsub_drm, dev)->dpsub; in to_zynqmp_dpsub()
51 * DRM Planes
127 * implicitly after DPSUB reset during display mode change. DRM in zynqmp_dpsub_plane_atomic_update()
153 for (i = 0; i < ARRAY_SIZE(dpsub->drm->planes); i++) { in zynqmp_dpsub_create_planes()
155 struct drm_plane *plane = &dpsub->drm->planes[i]; in zynqmp_dpsub_create_planes()
167 ret = drm_universal_plane_init(&dpsub->drm->dev, plane, 0, in zynqmp_dpsub_create_planes()
186 * DRM CRTC
319 struct drm_plane *plane = &dpsub->drm->planes[ZYNQMP_DPSUB_LAYER_GFX]; in zynqmp_dpsub_create_crtc()
320 struct drm_crtc *crtc = &dpsub->drm->crtc; in zynqmp_dpsub_create_crtc()
323 ret = drm_crtc_init_with_planes(&dpsub->drm->dev, crtc, plane, in zynqmp_dpsub_create_crtc()
338 u32 possible_crtcs = drm_crtc_mask(&dpsub->drm->crtc); in zynqmp_dpsub_map_crtc_to_plane()
341 for (i = 0; i < ARRAY_SIZE(dpsub->drm->planes); i++) in zynqmp_dpsub_map_crtc_to_plane()
342 dpsub->drm->planes[i].possible_crtcs = possible_crtcs; in zynqmp_dpsub_map_crtc_to_plane()
354 drm_crtc_handle_vblank(&dpsub->drm->crtc); in zynqmp_dpsub_drm_handle_vblank()
362 struct drm_device *drm, in zynqmp_dpsub_dumb_create() argument
365 struct zynqmp_dpsub *dpsub = to_zynqmp_dpsub(drm); in zynqmp_dpsub_dumb_create()
371 return drm_gem_dma_dumb_create_internal(file_priv, drm, args); in zynqmp_dpsub_dumb_create()
375 zynqmp_dpsub_fb_create(struct drm_device *drm, struct drm_file *file_priv, in zynqmp_dpsub_fb_create() argument
378 struct zynqmp_dpsub *dpsub = to_zynqmp_dpsub(drm); in zynqmp_dpsub_fb_create()
386 return drm_gem_fb_create(drm, file_priv, &cmd); in zynqmp_dpsub_fb_create()
396 * DRM/KMS Driver
418 struct drm_encoder *encoder = &dpsub->drm->encoder; in zynqmp_dpsub_kms_init()
434 encoder->possible_crtcs |= drm_crtc_mask(&dpsub->drm->crtc); in zynqmp_dpsub_kms_init()
435 drm_simple_encoder_init(&dpsub->drm->dev, encoder, DRM_MODE_ENCODER_NONE); in zynqmp_dpsub_kms_init()
445 connector = drm_bridge_connector_init(&dpsub->drm->dev, encoder); in zynqmp_dpsub_kms_init()
465 static void zynqmp_dpsub_drm_release(struct drm_device *drm, void *res) in zynqmp_dpsub_drm_release() argument
475 struct drm_device *drm; in zynqmp_dpsub_drm_init() local
481 * dpsub->drm will remain NULL, which tells the caller that it must in zynqmp_dpsub_drm_init()
490 drm = &dpdrm->dev; in zynqmp_dpsub_drm_init()
492 ret = drmm_add_action(drm, zynqmp_dpsub_drm_release, dpdrm); in zynqmp_dpsub_drm_init()
496 dpsub->drm = dpdrm; in zynqmp_dpsub_drm_init()
499 ret = drmm_mode_config_init(drm); in zynqmp_dpsub_drm_init()
503 drm->mode_config.funcs = &zynqmp_dpsub_mode_config_funcs; in zynqmp_dpsub_drm_init()
504 drm->mode_config.min_width = 0; in zynqmp_dpsub_drm_init()
505 drm->mode_config.min_height = 0; in zynqmp_dpsub_drm_init()
506 drm->mode_config.max_width = ZYNQMP_DISP_MAX_WIDTH; in zynqmp_dpsub_drm_init()
507 drm->mode_config.max_height = ZYNQMP_DISP_MAX_HEIGHT; in zynqmp_dpsub_drm_init()
509 ret = drm_vblank_init(drm, 1); in zynqmp_dpsub_drm_init()
517 drm_kms_helper_poll_init(drm); in zynqmp_dpsub_drm_init()
519 /* Reset all components and register the DRM device. */ in zynqmp_dpsub_drm_init()
520 drm_mode_config_reset(drm); in zynqmp_dpsub_drm_init()
522 ret = drm_dev_register(drm, 0); in zynqmp_dpsub_drm_init()
527 drm_client_setup_with_fourcc(drm, DRM_FORMAT_RGB888); in zynqmp_dpsub_drm_init()
532 drm_kms_helper_poll_fini(drm); in zynqmp_dpsub_drm_init()
538 struct drm_device *drm = &dpsub->drm->dev; in zynqmp_dpsub_drm_cleanup() local
540 drm_dev_unplug(drm); in zynqmp_dpsub_drm_cleanup()
541 drm_atomic_helper_shutdown(drm); in zynqmp_dpsub_drm_cleanup()
542 drm_encoder_cleanup(&dpsub->drm->encoder); in zynqmp_dpsub_drm_cleanup()
543 drm_kms_helper_poll_fini(drm); in zynqmp_dpsub_drm_cleanup()