Lines Matching refs:mixer_ctx
758 static int mixer_resources_init(struct mixer_context *mixer_ctx) in mixer_resources_init() argument
760 struct device *dev = &mixer_ctx->pdev->dev; in mixer_resources_init()
761 struct mixer_resources *mixer_res = &mixer_ctx->mixer_res; in mixer_resources_init()
784 res = platform_get_resource(mixer_ctx->pdev, IORESOURCE_MEM, 0); in mixer_resources_init()
797 res = platform_get_resource(mixer_ctx->pdev, IORESOURCE_IRQ, 0); in mixer_resources_init()
804 0, "drm_mixer", mixer_ctx); in mixer_resources_init()
814 static int vp_resources_init(struct mixer_context *mixer_ctx) in vp_resources_init() argument
816 struct device *dev = &mixer_ctx->pdev->dev; in vp_resources_init()
817 struct mixer_resources *mixer_res = &mixer_ctx->mixer_res; in vp_resources_init()
826 if (mixer_ctx->has_sclk) { in vp_resources_init()
843 res = platform_get_resource(mixer_ctx->pdev, IORESOURCE_MEM, 1); in vp_resources_init()
859 static int mixer_initialize(struct mixer_context *mixer_ctx, in mixer_initialize() argument
866 mixer_ctx->drm_dev = drm_dev; in mixer_initialize()
867 mixer_ctx->pipe = priv->pipe++; in mixer_initialize()
870 ret = mixer_resources_init(mixer_ctx); in mixer_initialize()
876 if (mixer_ctx->vp_enabled) { in mixer_initialize()
878 ret = vp_resources_init(mixer_ctx); in mixer_initialize()
885 if (!is_drm_iommu_supported(mixer_ctx->drm_dev)) in mixer_initialize()
888 return drm_iommu_attach_device(mixer_ctx->drm_dev, mixer_ctx->dev); in mixer_initialize()
891 static void mixer_ctx_remove(struct mixer_context *mixer_ctx) in mixer_ctx_remove() argument
893 if (is_drm_iommu_supported(mixer_ctx->drm_dev)) in mixer_ctx_remove()
894 drm_iommu_detach_device(mixer_ctx->drm_dev, mixer_ctx->dev); in mixer_ctx_remove()
899 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_enable_vblank() local
900 struct mixer_resources *res = &mixer_ctx->mixer_res; in mixer_enable_vblank()
902 if (!mixer_ctx->powered) { in mixer_enable_vblank()
903 mixer_ctx->int_en |= MXR_INT_EN_VSYNC; in mixer_enable_vblank()
916 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_disable_vblank() local
917 struct mixer_resources *res = &mixer_ctx->mixer_res; in mixer_disable_vblank()
925 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_win_commit() local
929 mutex_lock(&mixer_ctx->mixer_mutex); in mixer_win_commit()
930 if (!mixer_ctx->powered) { in mixer_win_commit()
931 mutex_unlock(&mixer_ctx->mixer_mutex); in mixer_win_commit()
934 mutex_unlock(&mixer_ctx->mixer_mutex); in mixer_win_commit()
936 if (win > 1 && mixer_ctx->vp_enabled) in mixer_win_commit()
937 vp_video_buffer(mixer_ctx, win); in mixer_win_commit()
939 mixer_graph_buffer(mixer_ctx, win); in mixer_win_commit()
941 mixer_ctx->planes[win].enabled = true; in mixer_win_commit()
946 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_win_disable() local
947 struct mixer_resources *res = &mixer_ctx->mixer_res; in mixer_win_disable()
952 mutex_lock(&mixer_ctx->mixer_mutex); in mixer_win_disable()
953 if (!mixer_ctx->powered) { in mixer_win_disable()
954 mutex_unlock(&mixer_ctx->mixer_mutex); in mixer_win_disable()
955 mixer_ctx->planes[win].resume = false; in mixer_win_disable()
958 mutex_unlock(&mixer_ctx->mixer_mutex); in mixer_win_disable()
961 mixer_vsync_set_update(mixer_ctx, false); in mixer_win_disable()
963 mixer_cfg_layer(mixer_ctx, win, false); in mixer_win_disable()
965 mixer_vsync_set_update(mixer_ctx, true); in mixer_win_disable()
968 mixer_ctx->planes[win].enabled = false; in mixer_win_disable()
973 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_wait_for_vblank() local
976 mutex_lock(&mixer_ctx->mixer_mutex); in mixer_wait_for_vblank()
977 if (!mixer_ctx->powered) { in mixer_wait_for_vblank()
978 mutex_unlock(&mixer_ctx->mixer_mutex); in mixer_wait_for_vblank()
981 mutex_unlock(&mixer_ctx->mixer_mutex); in mixer_wait_for_vblank()
983 err = drm_vblank_get(mixer_ctx->drm_dev, mixer_ctx->pipe); in mixer_wait_for_vblank()
989 atomic_set(&mixer_ctx->wait_vsync_event, 1); in mixer_wait_for_vblank()
995 if (!wait_event_timeout(mixer_ctx->wait_vsync_queue, in mixer_wait_for_vblank()
996 !atomic_read(&mixer_ctx->wait_vsync_event), in mixer_wait_for_vblank()
1000 drm_vblank_put(mixer_ctx->drm_dev, mixer_ctx->pipe); in mixer_wait_for_vblank()