[PATCH] pxa168fb: fix clear operation

Eric Miao eric.y.miao at gmail.com
Sun Sep 5 07:56:15 EDT 2010


On Mon, Aug 30, 2010 at 8:32 AM, Haojian Zhuang
<haojian.zhuang at gmail.com> wrote:
> While fb isn't active, we should clear CFG_GRA_ENA bit. The existing code
> can't clear this bit.
>
> Signed-off-by: Haojian Zhuang <haojian.zhuang at marvell.com>
> ---
>  drivers/video/pxa168fb.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/video/pxa168fb.c b/drivers/video/pxa168fb.c
> index ec2ddb2..3f112c9 100644
> --- a/drivers/video/pxa168fb.c
> +++ b/drivers/video/pxa168fb.c
> @@ -298,8 +298,8 @@ static void set_dma_control0(struct pxa168fb_info *fbi)
>         * Set bit to enable graphics DMA.
>         */
>        x = readl(fbi->reg_base + LCD_SPU_DMA_CTRL0);
> -       x |= fbi->active ? 0x00000100 : 0;
> -       fbi->active = 0;
> +       x &= ~CFG_GRA_ENA_MASK;
> +       x |= CFG_GRA_ENA(!!fbi->active);

This isn't very readable. And since CFG_GRA_ENA is actually a 1-bit
field, I'd recommend to change it to something like below:

diff --git a/drivers/video/pxa168fb.c b/drivers/video/pxa168fb.c
index 5d786bd..59fa751 100644
--- a/drivers/video/pxa168fb.c
+++ b/drivers/video/pxa168fb.c
@@ -298,8 +298,11 @@ static void set_dma_control0(struct pxa168fb_info *fbi)
 	 * Set bit to enable graphics DMA.
 	 */
 	x = readl(fbi->reg_base + LCD_SPU_DMA_CTRL0);
-	x |= fbi->active ? 0x00000100 : 0;
-	fbi->active = 0;
+
+	if (fbi->active)
+		x &= ~CFG_GRA_ENA;
+	else
+		x |= CFG_GRA_ENA;

 	/*
 	 * If we are in a pseudo-color mode, we need to enable
diff --git a/drivers/video/pxa168fb.h b/drivers/video/pxa168fb.h
index eee0927..e5c34a5 100644
--- a/drivers/video/pxa168fb.h
+++ b/drivers/video/pxa168fb.h
@@ -240,8 +240,7 @@
 #define     CFG_GRA_SWAPYU_MASK			0x00000400
 #define     CFG_YUV2RGB_GRA(cvrt)		((cvrt) << 9)
 #define     CFG_YUV2RGB_GRA_MASK		0x00000200
-#define     CFG_GRA_ENA(gra)			((gra) << 8)
-#define     CFG_GRA_ENA_MASK			0x00000100
+#define     CFG_GRA_ENA				0x10000100
 /* for video part */
 #define     CFG_DMA_FTOGGLE(toggle)		((toggle) << 7)
 #define     CFG_DMA_FTOGGLE_MASK		0x00000080
>
>        /*
>         * If we are in a pseudo-color mode, we need to enable
> --
> 1.5.6.5
>
>



More information about the linux-arm-kernel mailing list