static int rotator_dst_set_transf(struct device *dev, enum drm_exynos_degree degree, enum drm_exynos_flip flip) { struct rot_context *rot = dev_get_drvdata(dev); struct drm_exynos_ipp_property *property = &rot->property; struct drm_exynos_ipp_config *config = &property->config[EXYNOS_DRM_OPS_DST]; /* Check validity */ switch (degree) { case EXYNOS_DRM_DEGREE_0: case EXYNOS_DRM_DEGREE_90: case EXYNOS_DRM_DEGREE_180: case EXYNOS_DRM_DEGREE_270: /* No problem */ break; default: DRM_ERROR("invalid degree\n"); return -EINVAL; } switch (flip) { case EXYNOS_DRM_FLIP_NONE: case EXYNOS_DRM_FLIP_VERTICAL: case EXYNOS_DRM_FLIP_HORIZONTAL: /* No problem */ break; default: DRM_ERROR("invalid flip\n"); return -EINVAL; } /* Set transform configuration */ config->ops_id = EXYNOS_DRM_OPS_DST; config->degree = degree; config->flip = flip; rotator_reg_set_flip(rot, config->flip); rotator_reg_set_rotation(rot, config->degree); /* Check degree for setting buffer size swap */ if ((degree == EXYNOS_DRM_DEGREE_90) || (degree == EXYNOS_DRM_DEGREE_270)) return 1; else return 0; }
static int rotator_dst_set_transf(struct device *dev, enum drm_exynos_degree degree, enum drm_exynos_flip flip) { struct rot_context *rot = dev_get_drvdata(dev); /* Set transform configuration */ rotator_reg_set_flip(rot, flip); rotator_reg_set_rotation(rot, degree); /* Check degree for setting buffer size swap */ if ((degree == EXYNOS_DRM_DEGREE_90) || (degree == EXYNOS_DRM_DEGREE_270)) return 1; else return 0; }