static void hdmi_subdrv_remove(struct drm_device *drm_dev, struct device *dev) { struct drm_hdmi_context *ctx; struct exynos_drm_subdrv *subdrv = to_subdrv(dev); ctx = get_ctx_from_subdrv(subdrv); if (mixer_ops->iommu_on) mixer_ops->iommu_on(ctx->mixer_ctx->ctx, false); }
static int hdmi_subdrv_probe(struct drm_device *drm_dev, struct device *dev) { struct exynos_drm_subdrv *subdrv = to_subdrv(dev); struct drm_hdmi_context *ctx; struct platform_device *pdev = to_platform_device(dev); struct exynos_drm_common_hdmi_pd *pd; DRM_DEBUG_KMS("%s\n", __FILE__); pd = pdev->dev.platform_data; if (!pd) { DRM_DEBUG_KMS("platform data is null.\n"); return -EFAULT; } if (!pd->hdmi_dev) { DRM_DEBUG_KMS("hdmi device is null.\n"); return -EFAULT; } if (!pd->mixer_dev) { DRM_DEBUG_KMS("mixer device is null.\n"); return -EFAULT; } ctx = get_ctx_from_subdrv(subdrv); ctx->hdmi_ctx = (struct exynos_drm_hdmi_context *) to_context(pd->hdmi_dev); if (!ctx->hdmi_ctx) { DRM_DEBUG_KMS("hdmi context is null.\n"); return -EFAULT; } ctx->hdmi_ctx->drm_dev = drm_dev; ctx->mixer_ctx = (struct exynos_drm_hdmi_context *) to_context(pd->mixer_dev); if (!ctx->mixer_ctx) { DRM_DEBUG_KMS("mixer context is null.\n"); return -EFAULT; } ctx->mixer_ctx->drm_dev = drm_dev; return 0; }
static int hdmi_subdrv_probe(struct drm_device *drm_dev, struct device *dev) { struct exynos_drm_subdrv *subdrv = to_subdrv(dev); struct drm_hdmi_context *ctx; DRM_DEBUG_KMS("%s\n", __FILE__); if (!hdmi_ctx) { DRM_ERROR("hdmi context not initialized.\n"); return -EFAULT; } if (!mixer_ctx) { DRM_ERROR("mixer context not initialized.\n"); return -EFAULT; } ctx = get_ctx_from_subdrv(subdrv); if (!ctx) { DRM_ERROR("no drm hdmi context.\n"); return -EFAULT; } ctx->hdmi_ctx = hdmi_ctx; ctx->mixer_ctx = mixer_ctx; ctx->hdmi_ctx->drm_dev = drm_dev; ctx->mixer_ctx->drm_dev = drm_dev; if (mixer_ops->iommu_on) mixer_ops->iommu_on(ctx->mixer_ctx->ctx, true); return 0; }