Ejemplo n.º 1
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);
	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;
}