Lines Matching refs:mixer_ctx

777 static int mixer_resources_init(struct mixer_context *mixer_ctx)  in mixer_resources_init()  argument
779 struct device *dev = &mixer_ctx->pdev->dev; in mixer_resources_init()
783 spin_lock_init(&mixer_ctx->reg_slock); in mixer_resources_init()
785 mixer_ctx->mixer = devm_clk_get(dev, "mixer"); in mixer_resources_init()
786 if (IS_ERR(mixer_ctx->mixer)) { in mixer_resources_init()
791 mixer_ctx->hdmi = devm_clk_get(dev, "hdmi"); in mixer_resources_init()
792 if (IS_ERR(mixer_ctx->hdmi)) { in mixer_resources_init()
794 return PTR_ERR(mixer_ctx->hdmi); in mixer_resources_init()
797 mixer_ctx->sclk_hdmi = devm_clk_get(dev, "sclk_hdmi"); in mixer_resources_init()
798 if (IS_ERR(mixer_ctx->sclk_hdmi)) { in mixer_resources_init()
802 res = platform_get_resource(mixer_ctx->pdev, IORESOURCE_MEM, 0); in mixer_resources_init()
808 mixer_ctx->mixer_regs = devm_ioremap(dev, res->start, in mixer_resources_init()
810 if (mixer_ctx->mixer_regs == NULL) { in mixer_resources_init()
815 ret = platform_get_irq(mixer_ctx->pdev, 0); in mixer_resources_init()
818 mixer_ctx->irq = ret; in mixer_resources_init()
820 ret = devm_request_irq(dev, mixer_ctx->irq, mixer_irq_handler, in mixer_resources_init()
821 0, "drm_mixer", mixer_ctx); in mixer_resources_init()
830 static int vp_resources_init(struct mixer_context *mixer_ctx) in vp_resources_init() argument
832 struct device *dev = &mixer_ctx->pdev->dev; in vp_resources_init()
835 mixer_ctx->vp = devm_clk_get(dev, "vp"); in vp_resources_init()
836 if (IS_ERR(mixer_ctx->vp)) { in vp_resources_init()
841 if (test_bit(MXR_BIT_HAS_SCLK, &mixer_ctx->flags)) { in vp_resources_init()
842 mixer_ctx->sclk_mixer = devm_clk_get(dev, "sclk_mixer"); in vp_resources_init()
843 if (IS_ERR(mixer_ctx->sclk_mixer)) { in vp_resources_init()
847 mixer_ctx->mout_mixer = devm_clk_get(dev, "mout_mixer"); in vp_resources_init()
848 if (IS_ERR(mixer_ctx->mout_mixer)) { in vp_resources_init()
853 if (mixer_ctx->sclk_hdmi && mixer_ctx->mout_mixer) in vp_resources_init()
854 clk_set_parent(mixer_ctx->mout_mixer, in vp_resources_init()
855 mixer_ctx->sclk_hdmi); in vp_resources_init()
858 res = platform_get_resource(mixer_ctx->pdev, IORESOURCE_MEM, 1); in vp_resources_init()
864 mixer_ctx->vp_regs = devm_ioremap(dev, res->start, in vp_resources_init()
866 if (mixer_ctx->vp_regs == NULL) { in vp_resources_init()
874 static int mixer_initialize(struct mixer_context *mixer_ctx, in mixer_initialize() argument
879 mixer_ctx->drm_dev = drm_dev; in mixer_initialize()
882 ret = mixer_resources_init(mixer_ctx); in mixer_initialize()
884 DRM_DEV_ERROR(mixer_ctx->dev, in mixer_initialize()
889 if (test_bit(MXR_BIT_VP_ENABLED, &mixer_ctx->flags)) { in mixer_initialize()
891 ret = vp_resources_init(mixer_ctx); in mixer_initialize()
893 DRM_DEV_ERROR(mixer_ctx->dev, in mixer_initialize()
899 return exynos_drm_register_dma(drm_dev, mixer_ctx->dev, in mixer_initialize()
900 &mixer_ctx->dma_priv); in mixer_initialize()
903 static void mixer_ctx_remove(struct mixer_context *mixer_ctx) in mixer_ctx_remove() argument
905 exynos_drm_unregister_dma(mixer_ctx->drm_dev, mixer_ctx->dev, in mixer_ctx_remove()
906 &mixer_ctx->dma_priv); in mixer_ctx_remove()
911 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_enable_vblank() local
913 __set_bit(MXR_BIT_VSYNC, &mixer_ctx->flags); in mixer_enable_vblank()
914 if (!test_bit(MXR_BIT_POWERED, &mixer_ctx->flags)) in mixer_enable_vblank()
918 mixer_reg_writemask(mixer_ctx, MXR_INT_STATUS, ~0, MXR_INT_CLEAR_VSYNC); in mixer_enable_vblank()
919 mixer_reg_writemask(mixer_ctx, MXR_INT_EN, ~0, MXR_INT_EN_VSYNC); in mixer_enable_vblank()
926 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_disable_vblank() local
928 __clear_bit(MXR_BIT_VSYNC, &mixer_ctx->flags); in mixer_disable_vblank()
930 if (!test_bit(MXR_BIT_POWERED, &mixer_ctx->flags)) in mixer_disable_vblank()
934 mixer_reg_writemask(mixer_ctx, MXR_INT_STATUS, ~0, MXR_INT_CLEAR_VSYNC); in mixer_disable_vblank()
935 mixer_reg_writemask(mixer_ctx, MXR_INT_EN, 0, MXR_INT_EN_VSYNC); in mixer_disable_vblank()
953 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_update_plane() local
955 DRM_DEV_DEBUG_KMS(mixer_ctx->dev, "win: %d\n", plane->index); in mixer_update_plane()
957 if (!test_bit(MXR_BIT_POWERED, &mixer_ctx->flags)) in mixer_update_plane()
961 vp_video_buffer(mixer_ctx, plane); in mixer_update_plane()
963 mixer_graph_buffer(mixer_ctx, plane); in mixer_update_plane()
969 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_disable_plane() local
972 DRM_DEV_DEBUG_KMS(mixer_ctx->dev, "win: %d\n", plane->index); in mixer_disable_plane()
974 if (!test_bit(MXR_BIT_POWERED, &mixer_ctx->flags)) in mixer_disable_plane()
977 spin_lock_irqsave(&mixer_ctx->reg_slock, flags); in mixer_disable_plane()
978 mixer_cfg_layer(mixer_ctx, plane->index, 0, false); in mixer_disable_plane()
979 spin_unlock_irqrestore(&mixer_ctx->reg_slock, flags); in mixer_disable_plane()
984 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_atomic_flush() local
986 if (!test_bit(MXR_BIT_POWERED, &mixer_ctx->flags)) in mixer_atomic_flush()
989 mixer_enable_sync(mixer_ctx); in mixer_atomic_flush()