[PATCH 2/7] [ARM] s3c-fb: Added window source selection.

Krzysztof Helt krzysztof.h1 at poczta.fm
Sat Oct 3 01:23:33 EDT 2009


On Fri, 11 Sep 2009 20:04:52 +0200
Pawel Osciak <p.osciak at samsung.com> wrote:

> It is now possible to switch between local bus and DMA as the source
> for a window. Local source mode can handle RGB and YCbCr formats.
> 
> Reviewed-by: Marek Szyprowski <m.szyprowski at samsung.com>
> Reviewed-by: Kyungmin Park <kyungmin.park at samsung.com>
> Signed-off-by: Pawel Osciak <p.osciak at samsung.com>
> 
> ---
>  arch/arm/plat-s3c/include/plat/regs-fb.h |    1 +
>  arch/arm/plat-s3c/include/plat/s3c-fb.h  |    9 ++++++
>  drivers/video/s3c-fb.c                   |   40 ++++++++++++++++++++++++++++++
>  3 files changed, 50 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/plat-s3c/include/plat/regs-fb.h b/arch/arm/plat-s3c/include/plat/regs-fb.h
> index 8d3071d..4c024ca 100644
> --- a/arch/arm/plat-s3c/include/plat/regs-fb.h
> +++ b/arch/arm/plat-s3c/include/plat/regs-fb.h
> @@ -170,6 +170,7 @@
>  /* WINCONx */
>  
>  
> +#define WINCONx(_x)				(0x20 + ((_x) * 4))
>  #define WINCONx_BITSWP				(1 << 18)
>  #define WINCONx_BYTSWP				(1 << 17)
>  #define WINCONx_HAWSWP				(1 << 16)
> diff --git a/arch/arm/plat-s3c/include/plat/s3c-fb.h b/arch/arm/plat-s3c/include/plat/s3c-fb.h
> index 0aebc40..b08f9ad 100644
> --- a/arch/arm/plat-s3c/include/plat/s3c-fb.h
> +++ b/arch/arm/plat-s3c/include/plat/s3c-fb.h
> @@ -26,6 +26,12 @@ typedef enum s3c_fb_color_key_mode {
>  	S3CFB_COLORKEY_MODE_FG = 1
>  } s3c_fb_color_key_mode_t;
>  
> +typedef enum s3c_fb_source {
> +	S3CFB_SOURCE_DMA = 0,
> +	S3CFB_SOURCE_LOCAL_RGB = 1,
> +	S3CFB_SOURCE_LOCAL_YCbCr = 2
> +} s3c_fb_source_t;
> +

There is no need to use typedef here (see Documentation/CodingStyle). It is used in one place only, anyway.

>  #ifndef FBIO_WAITFORVSYNC
>  #define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
>  #endif
> @@ -41,5 +47,8 @@ typedef enum s3c_fb_color_key_mode {
>  /* param: 1 - on, 0 - off */
>  #define S3CFB_IOCTL_COLOR_KEY_ENABLE	_IO(S3CFB_IOCTL_MAGIC, 3)
>  
> +
> +/* Param: s3c_fb_source */
> +#define S3CFB_IOCTL_SET_SOURCE		_IO(S3CFB_IOCTL_MAGIC, 5)
>  #endif /* __LINUX_S3C_FB_H__ */
>  
> diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c
> index 2de3151..28622c0 100644
> --- a/drivers/video/s3c-fb.c
> +++ b/drivers/video/s3c-fb.c
> @@ -960,6 +960,43 @@ static int s3c_fb_set_color_key_mode(struct s3c_fb_win *win,
>  	return 0;
>  }
>  
> +static int s3c_fb_set_source(struct s3c_fb_win *win, s3c_fb_source_t source)
> +{
> +	struct s3c_fb *sfb = win->parent;
> +	int wincon_reg, new_val;
> +
> +	if (win->index > 2) {
> +		dev_err(sfb->dev, "Source change not supported for window %d\n",
> +			win->index);
> +		return -EINVAL;
> +	}
> +
> +	wincon_reg = readl(sfb->regs + WINCONx(win->index));
> +	new_val = wincon_reg;
> +
> +	switch (source) {
> +	case S3CFB_SOURCE_DMA:
> +		new_val &= ~(WINCONx_ENLOCAL | WINCONx_YCbCr);
> +		break;
> +	case S3CFB_SOURCE_LOCAL_RGB:
> +		new_val &= ~WINCONx_YCbCr;
> +		new_val |= WINCONx_ENLOCAL;
> +		break;
> +	case S3CFB_SOURCE_LOCAL_YCbCr:
> +		new_val |= WINCONx_YCbCr | WINCONx_ENLOCAL;
> +		break;
> +	default:
> +		return -EINVAL;
> +	}
> +
> +	/* The window has to be disabled during source switch */
> +	writel(wincon_reg & ~WINCONx_ENWIN, sfb->regs + WINCONx(win->index));
> +	new_val |= WINCONx_ENWIN;
> +	writel(new_val, sfb->regs + WINCONx(win->index));
> +
> +	return 0;
> +}
> +
>  static int s3c_fb_ioctl(struct fb_info *info, unsigned int cmd,
>  			unsigned long arg)
>  {
> @@ -999,6 +1036,9 @@ static int s3c_fb_ioctl(struct fb_info *info, unsigned int cmd,
>  	case S3CFB_IOCTL_COLOR_KEY_ENABLE:
>  		return s3c_fb_color_key_enable(win, arg);
>  
> +
> +	case S3CFB_IOCTL_SET_SOURCE:
> +		return s3c_fb_set_source(win, arg);
>  	default:
>  		return -ENOTTY;
>  	}
> -- 
> 1.6.4.2.253.g0b1fac
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


----------------------------------------------------------------------
Nie boisz sie wampirow!
A wiêc Graj >>> http://link.interia.pl/f2390




More information about the linux-arm-kernel mailing list