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
next prev parent 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