public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Bo Shen <voice.shen@atmel.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V2 02/13] lcd: split configuration_get_cmap
Date: Wed, 4 Feb 2015 15:25:24 +0800	[thread overview]
Message-ID: <54D1C964.6050805@atmel.com> (raw)
In-Reply-To: <1422963152-17634-3-git-send-email-nikita@compulab.co.il>

Hi Nikita Kiryanov,

On 02/03/2015 07:32 PM, Nikita Kiryanov wrote:
> configuration_get_cmap() is multiple platform-specific functions stuffed into
> one function. Split it into multiple versions, and move each version to the
> appropriate driver to reduce the #ifdef complexity.
>
> Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
> Reviewed-by: Simon Glass <sjg@chromium.org>
> Cc: Bo Shen <voice.shen@atmel.com>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Anatolij Gustschin <agust@denx.de>
> ---
> Changes in V2:
> 	- Minor commit message update
> 	- ushort *configuration_get_cmap(void) prototype is defined only once
> 	  instead of for each #ifdef CONFIG_*
>
>   common/lcd.c                 | 19 -------------------
>   drivers/video/atmel_hlcdfb.c | 13 +++++++++++++
>   drivers/video/atmel_lcdfb.c  |  5 +++++
>   drivers/video/exynos_fb.c    |  9 +++++++++
>   drivers/video/mpc8xx_lcd.c   |  7 +++++++
>   drivers/video/pxa_lcd.c      |  6 ++++++
>   include/lcd.h                |  7 +++++++
>   7 files changed, 47 insertions(+), 19 deletions(-)
>
> diff --git a/common/lcd.c b/common/lcd.c
> index 1195a54..0f6c2e4 100644
> --- a/common/lcd.c
> +++ b/common/lcd.c
> @@ -383,25 +383,6 @@ int lcd_getbgcolor(void)
>   /************************************************************************/
>   /* ** Chipset depending Bitmap / Logo stuff...                          */
>   /************************************************************************/
> -static inline ushort *configuration_get_cmap(void)
> -{
> -#if defined CONFIG_CPU_PXA
> -	struct pxafb_info *fbi = &panel_info.pxa;
> -	return (ushort *)fbi->palette;
> -#elif defined(CONFIG_MPC823)
> -	immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
> -	cpm8xx_t *cp = &(immr->im_cpm);
> -	return (ushort *)&(cp->lcd_cmap[255 * sizeof(ushort)]);
> -#elif defined(CONFIG_ATMEL_LCD)
> -	return (ushort *)(panel_info.mmio + ATMEL_LCDC_LUT(0));
> -#elif !defined(CONFIG_ATMEL_HLCD) && !defined(CONFIG_EXYNOS_FB)
> -	return panel_info.cmap;
> -#elif defined(CONFIG_LCD_LOGO)
> -	return bmp_logo_palette;
> -#else
> -	return NULL;
> -#endif
> -}
>
>   #ifdef CONFIG_LCD_LOGO
>   void bitmap_plot(int x, int y)
> diff --git a/drivers/video/atmel_hlcdfb.c b/drivers/video/atmel_hlcdfb.c
> index 935ae42..0ce2370 100644
> --- a/drivers/video/atmel_hlcdfb.c
> +++ b/drivers/video/atmel_hlcdfb.c
> @@ -13,6 +13,10 @@
>   #include <lcd.h>
>   #include <atmel_hlcdc.h>
>
> +#if defined(CONFIG_LCD_LOGO)
> +#include <bmp_logo.h>
> +#endif

I think we can include this file directly.

>   /* configurable parameters */
>   #define ATMEL_LCDC_CVAL_DEFAULT		0xc8
>   #define ATMEL_LCDC_DMA_BURST_LEN	8
> @@ -37,6 +41,15 @@ void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue)
>   		panel_info.mmio + ATMEL_LCDC_LUT(regno));
>   }
>
> +ushort *configuration_get_cmap(void)
> +{
> +#if defined(CONFIG_LCD_LOGO)
> +	return bmp_logo_palette;
> +#else
> +	return NULL;
> +#endif
> +}

Here, I think no need to do the CONFIG_LCD_LOGO check, return 
bmp_logo_palette directly, as it will be used when use bmp command in 8 
bit mode. However, no hardware to test LCDC work or not in 8 bit mode :(

>   void lcd_ctrl_init(void *lcdbase)
>   {
>   	unsigned long value;
> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> index 3cf008c..fa6a82c 100644
> --- a/drivers/video/atmel_lcdfb.c
> +++ b/drivers/video/atmel_lcdfb.c
> @@ -29,6 +29,11 @@
>   #define lcdc_readl(mmio, reg)		__raw_readl((mmio)+(reg))
>   #define lcdc_writel(mmio, reg, val)	__raw_writel((val), (mmio)+(reg))
>
> +ushort *configuration_get_cmap(void)
> +{
> +	return (ushort *)(panel_info.mmio + ATMEL_LCDC_LUT(0));
> +}
> +
>   void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue)
>   {
>   #if defined(CONFIG_ATMEL_LCD_BGR555)
> diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
> index be35b98..c5d7330 100644
> --- a/drivers/video/exynos_fb.c
> +++ b/drivers/video/exynos_fb.c
> @@ -37,6 +37,15 @@ vidinfo_t panel_info  = {
>   };
>   #endif
>
> +ushort *configuration_get_cmap(void)
> +{
> +#if defined(CONFIG_LCD_LOGO)
> +	return bmp_logo_palette;
> +#else
> +	return NULL;
> +#endif
> +}
> +
>   static void exynos_lcd_init_mem(void *lcdbase, vidinfo_t *vid)
>   {
>   	unsigned long palette_size;
> diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
> index add7215..9d2e5ed 100644
> --- a/drivers/video/mpc8xx_lcd.c
> +++ b/drivers/video/mpc8xx_lcd.c
> @@ -357,6 +357,13 @@ lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue)
>
>   /*----------------------------------------------------------------------*/
>
> +ushort *configuration_get_cmap(void)
> +{
> +	immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
> +	cpm8xx_t *cp = &(immr->im_cpm);
> +	return (ushort *)&(cp->lcd_cmap[255 * sizeof(ushort)]);
> +}
> +
>   void lcd_enable (void)
>   {
>   	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
> diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c
> index f66f615..04105d4 100644
> --- a/drivers/video/pxa_lcd.c
> +++ b/drivers/video/pxa_lcd.c
> @@ -342,6 +342,12 @@ static int pxafb_init (vidinfo_t *vid);
>   /* ---------------  PXA chipset specific functions  ------------------- */
>   /************************************************************************/
>
> +ushort *configuration_get_cmap(void)
> +{
> +	struct pxafb_info *fbi = &panel_info.pxa;
> +	return (ushort *)fbi->palette;
> +}
> +
>   void lcd_ctrl_init (void *lcdbase)
>   {
>   	pxafb_init_mem(lcdbase, &panel_info);
> diff --git a/include/lcd.h b/include/lcd.h
> index fbba6a2..4ada617 100644
> --- a/include/lcd.h
> +++ b/include/lcd.h
> @@ -60,8 +60,15 @@ typedef struct vidinfo {
>
>   	void	*priv;		/* Pointer to driver-specific data */
>   } vidinfo_t;
> +
> +static __maybe_unused ushort *configuration_get_cmap(void)
> +{
> +	return panel_info.cmap;
> +}
>   #endif
>
> +ushort *configuration_get_cmap(void);
> +
>   extern vidinfo_t panel_info;
>
>   /* Video functions */
>

Best Regards,
Bo Shen

  reply	other threads:[~2015-02-04  7:25 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-03 11:32 [U-Boot] [PATCH V2 00/13] common lcd refactor Nikita Kiryanov
2015-02-03 11:32 ` [U-Boot] [PATCH V2 01/13] lcd: move platform-specific structs to their own headers Nikita Kiryanov
2015-02-04  6:48   ` Bo Shen
2015-02-03 11:32 ` [U-Boot] [PATCH V2 02/13] lcd: split configuration_get_cmap Nikita Kiryanov
2015-02-04  7:25   ` Bo Shen [this message]
2015-02-08 11:35     ` Nikita Kiryanov
2015-02-09  3:43       ` Bo Shen
2015-02-03 11:32 ` [U-Boot] [PATCH V2 03/13] lcd: atmel: move atmel-specific fb_put_word to atmel_lcdfb Nikita Kiryanov
2015-02-04  7:26   ` Bo Shen
2015-02-03 11:32 ` [U-Boot] [PATCH V2 04/13] lcd: mpc8xx: move mpc823-specific fb_put_byte to mpc8xx_lcd.c Nikita Kiryanov
2015-02-03 11:32 ` [U-Boot] [PATCH V2 05/13] lcd: atmel: introduce lcd_logo_set_cmap Nikita Kiryanov
2015-02-03 11:32 ` [U-Boot] [PATCH V2 06/13] lcd: mpc823: move mpc823-specific lcd_logo_set_cmap code to mpc8xx_lcd.c Nikita Kiryanov
2015-02-03 11:32 ` [U-Boot] [PATCH V2 07/13] lcd: logo: move generic cmap setting to lcd_logo_set_cmap() Nikita Kiryanov
2015-02-03 11:32 ` [U-Boot] [PATCH V2 08/13] lcd: introduce lcd_set_cmap Nikita Kiryanov
2015-02-03 11:32 ` [U-Boot] [PATCH V2 09/13] lcd: remove unused includes Nikita Kiryanov
2015-02-03 11:32 ` [U-Boot] [PATCH V2 10/13] lcd: various cleanups Nikita Kiryanov
2015-02-03 11:32 ` [U-Boot] [PATCH V2 11/13] lcd: rename bitmap_plot to better represent its functionality Nikita Kiryanov
2015-02-03 11:32 ` [U-Boot] [PATCH V2 12/13] lcd: dt: extract simplefb support Nikita Kiryanov
2015-02-03 11:32 ` [U-Boot] [PATCH V2 13/13] lcd: split splash code into its own function Nikita Kiryanov
2015-02-04  2:37 ` [U-Boot] [PATCH V2 00/13] common lcd refactor Josh Wu
2015-02-04  8:03 ` Bo Shen
2015-02-10 12:43 ` Anatolij Gustschin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54D1C964.6050805@atmel.com \
    --to=voice.shen@atmel.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox