diff mbox

[4/7] drm/omap: DRM_REFLECT_* instead of mirror boolean

Message ID 1495007804-6133-5-git-send-email-tomi.valkeinen@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Tomi Valkeinen May 17, 2017, 7:56 a.m. UTC
Change dispc driver to use the DRM_REFLECT flags instead of a mirror
boolean.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
 drivers/gpu/drm/omapdrm/dss/dispc.c   | 24 ++++++++++--------------
 drivers/gpu/drm/omapdrm/dss/omapdss.h |  2 --
 drivers/gpu/drm/omapdrm/omap_plane.c  |  1 -
 3 files changed, 10 insertions(+), 17 deletions(-)

Comments

Laurent Pinchart May 23, 2017, 1:15 p.m. UTC | #1
Hi Tomi,

Thank you for the patch.

On Wednesday 17 May 2017 10:56:41 Tomi Valkeinen wrote:
> Change dispc driver to use the DRM_REFLECT flags instead of a mirror
> boolean.

Patch 3/7 has

		/* must use FIR for YUV422 if rotated */
		if (rotation != DRM_ROTATE_0)
			scale_x = scale_y = true;

Shouldn't it be (rotation & DRM_ROTATE_MASK) != DRM_ROTATE_0 now ?

Apart from that,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> ---
>  drivers/gpu/drm/omapdrm/dss/dispc.c   | 24 ++++++++++--------------
>  drivers/gpu/drm/omapdrm/dss/omapdss.h |  2 --
>  drivers/gpu/drm/omapdrm/omap_plane.c  |  1 -
>  3 files changed, 10 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c
> b/drivers/gpu/drm/omapdrm/dss/dispc.c index 612170a96bdd..a25db6e25165
> 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dispc.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
> @@ -1804,15 +1804,14 @@ static void dispc_ovl_set_scaling(enum omap_plane_id
> plane, }
> 
>  static void dispc_ovl_set_rotation_attrs(enum omap_plane_id plane, u8
> rotation, -		enum omap_dss_rotation_type rotation_type,
> -		bool mirroring, u32 fourcc)
> +		enum omap_dss_rotation_type rotation_type, u32 fourcc)
>  {
>  	bool row_repeat = false;
>  	int vidrot = 0;
> 
>  	if (fourcc == DRM_FORMAT_YUYV || fourcc == DRM_FORMAT_UYVY) {
> 
> -		if (mirroring) {
> +		if (rotation & DRM_REFLECT_X) {
>  			switch (rotation & DRM_ROTATE_MASK) {
>  			case DRM_ROTATE_0:
>  				vidrot = 2;
> @@ -2367,7 +2366,7 @@ static int dispc_ovl_setup_common(enum omap_plane_id
> plane, enum omap_overlay_caps caps, u32 paddr, u32 p_uv_addr,
>  		u16 screen_width, int pos_x, int pos_y, u16 width, u16 height,
>  		u16 out_width, u16 out_height, u32 fourcc,
> -		u8 rotation, bool mirror, u8 zorder, u8 pre_mult_alpha,
> +		u8 rotation, u8 zorder, u8 pre_mult_alpha,
>  		u8 global_alpha, enum omap_dss_rotation_type rotation_type,
>  		bool replication, const struct videomode *vm,
>  		bool mem_to_mem)
> @@ -2515,8 +2514,7 @@ static int dispc_ovl_setup_common(enum omap_plane_id
> plane, dispc_ovl_set_vid_color_conv(plane, cconv);
>  	}
> 
> -	dispc_ovl_set_rotation_attrs(plane, rotation, rotation_type, mirror,
> -			fourcc);
> +	dispc_ovl_set_rotation_attrs(plane, rotation, rotation_type, fourcc);
> 
>  	dispc_ovl_set_zorder(plane, caps, zorder);
>  	dispc_ovl_set_pre_mult_alpha(plane, caps, pre_mult_alpha);
> @@ -2537,17 +2535,17 @@ static int dispc_ovl_setup(enum omap_plane_id plane,
> const bool replication = true;
> 
>  	DSSDBG("dispc_ovl_setup %d, pa %pad, pa_uv %pad, sw %d, %d,%d, %dx%d -
>"
> -		" %dx%d, cmode %x, rot %d, mir %d, chan %d repl %d\n",
> +		" %dx%d, cmode %x, rot %d, chan %d repl %d\n",
>  		plane, &oi->paddr, &oi->p_uv_addr, oi->screen_width, oi-
>pos_x,
>  		oi->pos_y, oi->width, oi->height, oi->out_width, oi-
>out_height,
> -		oi->fourcc, oi->rotation, oi->mirror, channel, replication);
> +		oi->fourcc, oi->rotation, channel, replication);
> 
>  	dispc_ovl_set_channel_out(plane, channel);
> 
>  	r = dispc_ovl_setup_common(plane, caps, oi->paddr, oi->p_uv_addr,
>  		oi->screen_width, oi->pos_x, oi->pos_y, oi->width, oi->height,
>  		oi->out_width, oi->out_height, oi->fourcc, oi->rotation,
> -		oi->mirror, oi->zorder, oi->pre_mult_alpha, oi->global_alpha,
> +		oi->zorder, oi->pre_mult_alpha, oi->global_alpha,
>  		oi->rotation_type, replication, vm, mem_to_mem);
> 
>  	return r;
> @@ -2569,13 +2567,12 @@ int dispc_wb_setup(const struct
> omap_dss_writeback_info *wi, OMAP_DSS_OVL_CAP_SCALE |
> OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA;
> 
>  	DSSDBG("dispc_wb_setup, pa %x, pa_uv %x, %d,%d -> %dx%d, cmode %x, "
> -		"rot %d, mir %d\n", wi->paddr, wi->p_uv_addr, in_width,
> -		in_height, wi->width, wi->height, wi->fourcc, wi->rotation,
> -		wi->mirror);
> +		"rot %d\n", wi->paddr, wi->p_uv_addr, in_width,
> +		in_height, wi->width, wi->height, wi->fourcc, wi->rotation);
> 
>  	r = dispc_ovl_setup_common(plane, caps, wi->paddr, wi->p_uv_addr,
>  		wi->buf_width, pos_x, pos_y, in_width, in_height, wi->width,
> -		wi->height, wi->fourcc, wi->rotation, wi->mirror, zorder,
> +		wi->height, wi->fourcc, wi->rotation, zorder,
>  		wi->pre_mult_alpha, global_alpha, wi->rotation_type,
>  		replication, vm, mem_to_mem);
> 
> @@ -3916,7 +3913,6 @@ static const struct dispc_errata_i734_data {
>  		.fourcc = DRM_FORMAT_XRGB8888,
>  		.rotation = DRM_ROTATE_0,
>  		.rotation_type = OMAP_DSS_ROT_NONE,
> -		.mirror = 0,
>  		.pos_x = 0, .pos_y = 0,
>  		.out_width = 0, .out_height = 0,
>  		.global_alpha = 0xff,
> diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h
> b/drivers/gpu/drm/omapdrm/dss/omapdss.h index daf792496882..e9d6b72eb69e
> 100644
> --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
> +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
> @@ -259,7 +259,6 @@ struct omap_overlay_info {
>  	u32 fourcc;
>  	u8 rotation;
>  	enum omap_dss_rotation_type rotation_type;
> -	bool mirror;
> 
>  	u16 pos_x;
>  	u16 pos_y;
> @@ -307,7 +306,6 @@ struct omap_dss_writeback_info {
>  	u32 fourcc;
>  	u8 rotation;
>  	enum omap_dss_rotation_type rotation_type;
> -	bool mirror;
>  	u8 pre_mult_alpha;
>  };
> 
> diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c
> b/drivers/gpu/drm/omapdrm/omap_plane.c index 0ea97aa15c19..9fe97c71763f
> 100644
> --- a/drivers/gpu/drm/omapdrm/omap_plane.c
> +++ b/drivers/gpu/drm/omapdrm/omap_plane.c
> @@ -67,7 +67,6 @@ static void omap_plane_atomic_update(struct drm_plane
> *plane, info.rotation_type = OMAP_DSS_ROT_NONE;
>  	info.rotation = DRM_ROTATE_0;
>  	info.global_alpha = 0xff;
> -	info.mirror = 0;
>  	info.zorder = state->zpos;
> 
>  	/* update scanout: */
Tomi Valkeinen May 23, 2017, 1:21 p.m. UTC | #2
On 23/05/17 16:15, Laurent Pinchart wrote:
> Hi Tomi,
> 
> Thank you for the patch.
> 
> On Wednesday 17 May 2017 10:56:41 Tomi Valkeinen wrote:
>> Change dispc driver to use the DRM_REFLECT flags instead of a mirror
>> boolean.
> 
> Patch 3/7 has
> 
> 		/* must use FIR for YUV422 if rotated */
> 		if (rotation != DRM_ROTATE_0)
> 			scale_x = scale_y = true;
> 
> Shouldn't it be (rotation & DRM_ROTATE_MASK) != DRM_ROTATE_0 now ?

Yep, I'll fix that. Thanks!

 Tomi
diff mbox

Patch

diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c
index 612170a96bdd..a25db6e25165 100644
--- a/drivers/gpu/drm/omapdrm/dss/dispc.c
+++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
@@ -1804,15 +1804,14 @@  static void dispc_ovl_set_scaling(enum omap_plane_id plane,
 }
 
 static void dispc_ovl_set_rotation_attrs(enum omap_plane_id plane, u8 rotation,
-		enum omap_dss_rotation_type rotation_type,
-		bool mirroring, u32 fourcc)
+		enum omap_dss_rotation_type rotation_type, u32 fourcc)
 {
 	bool row_repeat = false;
 	int vidrot = 0;
 
 	if (fourcc == DRM_FORMAT_YUYV || fourcc == DRM_FORMAT_UYVY) {
 
-		if (mirroring) {
+		if (rotation & DRM_REFLECT_X) {
 			switch (rotation & DRM_ROTATE_MASK) {
 			case DRM_ROTATE_0:
 				vidrot = 2;
@@ -2367,7 +2366,7 @@  static int dispc_ovl_setup_common(enum omap_plane_id plane,
 		enum omap_overlay_caps caps, u32 paddr, u32 p_uv_addr,
 		u16 screen_width, int pos_x, int pos_y, u16 width, u16 height,
 		u16 out_width, u16 out_height, u32 fourcc,
-		u8 rotation, bool mirror, u8 zorder, u8 pre_mult_alpha,
+		u8 rotation, u8 zorder, u8 pre_mult_alpha,
 		u8 global_alpha, enum omap_dss_rotation_type rotation_type,
 		bool replication, const struct videomode *vm,
 		bool mem_to_mem)
@@ -2515,8 +2514,7 @@  static int dispc_ovl_setup_common(enum omap_plane_id plane,
 		dispc_ovl_set_vid_color_conv(plane, cconv);
 	}
 
-	dispc_ovl_set_rotation_attrs(plane, rotation, rotation_type, mirror,
-			fourcc);
+	dispc_ovl_set_rotation_attrs(plane, rotation, rotation_type, fourcc);
 
 	dispc_ovl_set_zorder(plane, caps, zorder);
 	dispc_ovl_set_pre_mult_alpha(plane, caps, pre_mult_alpha);
@@ -2537,17 +2535,17 @@  static int dispc_ovl_setup(enum omap_plane_id plane,
 	const bool replication = true;
 
 	DSSDBG("dispc_ovl_setup %d, pa %pad, pa_uv %pad, sw %d, %d,%d, %dx%d ->"
-		" %dx%d, cmode %x, rot %d, mir %d, chan %d repl %d\n",
+		" %dx%d, cmode %x, rot %d, chan %d repl %d\n",
 		plane, &oi->paddr, &oi->p_uv_addr, oi->screen_width, oi->pos_x,
 		oi->pos_y, oi->width, oi->height, oi->out_width, oi->out_height,
-		oi->fourcc, oi->rotation, oi->mirror, channel, replication);
+		oi->fourcc, oi->rotation, channel, replication);
 
 	dispc_ovl_set_channel_out(plane, channel);
 
 	r = dispc_ovl_setup_common(plane, caps, oi->paddr, oi->p_uv_addr,
 		oi->screen_width, oi->pos_x, oi->pos_y, oi->width, oi->height,
 		oi->out_width, oi->out_height, oi->fourcc, oi->rotation,
-		oi->mirror, oi->zorder, oi->pre_mult_alpha, oi->global_alpha,
+		oi->zorder, oi->pre_mult_alpha, oi->global_alpha,
 		oi->rotation_type, replication, vm, mem_to_mem);
 
 	return r;
@@ -2569,13 +2567,12 @@  int dispc_wb_setup(const struct omap_dss_writeback_info *wi,
 		OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA;
 
 	DSSDBG("dispc_wb_setup, pa %x, pa_uv %x, %d,%d -> %dx%d, cmode %x, "
-		"rot %d, mir %d\n", wi->paddr, wi->p_uv_addr, in_width,
-		in_height, wi->width, wi->height, wi->fourcc, wi->rotation,
-		wi->mirror);
+		"rot %d\n", wi->paddr, wi->p_uv_addr, in_width,
+		in_height, wi->width, wi->height, wi->fourcc, wi->rotation);
 
 	r = dispc_ovl_setup_common(plane, caps, wi->paddr, wi->p_uv_addr,
 		wi->buf_width, pos_x, pos_y, in_width, in_height, wi->width,
-		wi->height, wi->fourcc, wi->rotation, wi->mirror, zorder,
+		wi->height, wi->fourcc, wi->rotation, zorder,
 		wi->pre_mult_alpha, global_alpha, wi->rotation_type,
 		replication, vm, mem_to_mem);
 
@@ -3916,7 +3913,6 @@  static const struct dispc_errata_i734_data {
 		.fourcc = DRM_FORMAT_XRGB8888,
 		.rotation = DRM_ROTATE_0,
 		.rotation_type = OMAP_DSS_ROT_NONE,
-		.mirror = 0,
 		.pos_x = 0, .pos_y = 0,
 		.out_width = 0, .out_height = 0,
 		.global_alpha = 0xff,
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
index daf792496882..e9d6b72eb69e 100644
--- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
+++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
@@ -259,7 +259,6 @@  struct omap_overlay_info {
 	u32 fourcc;
 	u8 rotation;
 	enum omap_dss_rotation_type rotation_type;
-	bool mirror;
 
 	u16 pos_x;
 	u16 pos_y;
@@ -307,7 +306,6 @@  struct omap_dss_writeback_info {
 	u32 fourcc;
 	u8 rotation;
 	enum omap_dss_rotation_type rotation_type;
-	bool mirror;
 	u8 pre_mult_alpha;
 };
 
diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c
index 0ea97aa15c19..9fe97c71763f 100644
--- a/drivers/gpu/drm/omapdrm/omap_plane.c
+++ b/drivers/gpu/drm/omapdrm/omap_plane.c
@@ -67,7 +67,6 @@  static void omap_plane_atomic_update(struct drm_plane *plane,
 	info.rotation_type = OMAP_DSS_ROT_NONE;
 	info.rotation = DRM_ROTATE_0;
 	info.global_alpha = 0xff;
-	info.mirror = 0;
 	info.zorder = state->zpos;
 
 	/* update scanout: */