common/lcd cleanup
v3 cover common/lcd cleanup
This patch series attempts to simplify #ifdef complexity in common/lcd.c.
It was compile tested on Arm and PowerPC using MAKEALL
Changes in V3:
- Rebased on latest u-boot-video
- Removed volatile qualifiers in patch 3 since the use of volatile is discouraged and it looks like it is safe to remove them.
Changes in V2:
- Rebased on u-boot-video
- patches 2 and 3 of original patchset dropped because I'm not sure what to do about them
- simplify lcd_logo: used bitmap_display() to further simplify code
- simplify lcd_display_bitmap: fixed pointer increment error
- simplify lcd_display_bitmap: change to simplify lcd_logo breaks MCC200 board because it does not #define CONFIG_CMD_BMP. Added a local implementation of bitmap_display().
Nikita Kiryanov (4):
common lcd: simplify lcd_logo
common lcd: simplify lcd_display
common lcd: simplify core functions
common lcd: simplify lcd_display_bitmap
board/mcc200/lcd.c | 20 +++++++ common/lcd.c | 145 +++++++++++++++++++++++++++------------------------- 2 files changed, 96 insertions(+), 69 deletions(-)
Signature · 1 line
1.7.5.4
PATCH v3 1/4 common lcd: simplify lcd_logo
Simplify lcd_logo by extracting bmp unzip into its own function.
---
Changes in V2:
- used bitmap_display() to further simplify code
common/lcd.c | 12 +----------- 1 files changed, 1 insertions(+), 11 deletions(-)
common/lcd.c +1 -11
@@ -842,17 +842,7 @@ static void *lcd_logo(void) }#endif /* CONFIG_SPLASH_SCREEN_ALIGN */ -#ifdef CONFIG_VIDEO_BMP_GZIP -bmp_image_t *bmp = (bmp_image_t *)addr; -unsigned long len; - -if (!((bmp->header.signature[0 ] =='B' ) && - (bmp->header.signature[1 ] =='M' ))) { - addr = (ulong )gunzip_bmp (addr, &len); - } -#endif - -if (lcd_display_bitmap (addr, x, y) ==0 ) +if (bmp_display (addr, x, y) ==0 )return (void *)lcd_base; }#endif /* CONFIG_SPLASH_SCREEN */
Signature · 1 line
1.7.5.4
PATCH v3 2/4 common lcd: simplify lcd_display
In reply to Nikita KiryanovSimplify lcd_display by centralizing code into a funciton
--- common/lcd.c | 27 ++++++++++++++++++--------- 1 files changed, 18 insertions(+), 9 deletions(-)
common/lcd.c +18 -9
@@ -607,6 +607,22 @@ static inline void bitmap_plot(int x, int y) {}#ifdef CONFIG_SPLASH_SCREEN_ALIGN #define BMP_ALIGN_CENTER 0x7FFF + +static void splash_align_axis (int *axis,unsigned long panel_size, +unsigned long picture_size) +{ +unsigned long panel_picture_delta = panel_size - picture_size; +unsigned long axis_alignment; + +if (*axis ==BMP_ALIGN_CENTER ) + axis_alignment = panel_picture_delta /2 ; +else if (*axis <0 ) + axis_alignment = panel_picture_delta + *axis +1 ; +else +return ; + + *axis =max (0 , axis_alignment); +}#endif int lcd_display_bitmap (ulong bmp_image,int x,int y)
@@ -722,15 +738,8 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y) padded_line = (width&0x3 ) ? ((width&~0x3 )+4 ) : (width);#ifdef CONFIG_SPLASH_SCREEN_ALIGN -if (x ==BMP_ALIGN_CENTER ) - x =max (0 , (pwidth - width) /2 ); -else if (x <0 ) - x =max (0 , pwidth - width + x +1 ); - -if (y ==BMP_ALIGN_CENTER ) - y =max (0 , (panel_info.vl_row - height) /2 ); -else if (y <0 ) - y =max (0 , panel_info.vl_row - height + y +1 ); +splash_align_axis (&x, pwidth, width); +splash_align_axis (&y, panel_info.vl_row, height);#endif /* CONFIG_SPLASH_SCREEN_ALIGN */ if ((x + width) > pwidth)
Signature · 1 line
1.7.5.4
PATCH v3 3/4 common lcd: simplify core functions
In reply to Nikita KiryanovMove highly platform dependant code into its own function to reduce the number of #ifdefs in the bigger functions
---
Changes in V3:
- Removed volatile qualifiers in patch 3 since the use of volatile is discouraged and it looks like it is safe to remove them.
common/lcd.c | 62 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 30 insertions(+), 32 deletions(-)
common/lcd.c +30 -32
@@ -498,23 +498,37 @@ static int lcd_getbgcolor(void)/************************************************************************/ /* ** Chipset depending Bitmap / Logo stuff... */ /************************************************************************/ +static inline ushort *configuration_get_cmap (void ) +{ +#if definedCONFIG_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 )); +#else +return (ushort *)panel_info.cmap; +#endif +} +#ifdef CONFIG_LCD_LOGO void bitmap_plot (int x,int y) {#ifdef CONFIG_ATMEL_LCD -uint *cmap; +uint *cmap = (uint *)bmp_logo_palette;#else -ushort *cmap; +ushort *cmap = (ushort *)bmp_logo_palette;#endif ushort i, j;uchar *bmap;uchar *fb;ushort *fb16; -#if defined(CONFIG_CPU_PXA ) -struct pxafb_info *fbi = &panel_info.pxa; -#elif defined(CONFIG_MPC823 ) -volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR ; -volatile cpm8xx_t *cp = &(immr->im_cpm); +#if defined(CONFIG_MPC823 ) +immap_t *immr = (immap_t *)CONFIG_SYS_IMMR ; +cpm8xx_t *cp = &(immr->im_cpm);#endif debug("Logo: width %d height %d colors %d cmap %d\n",
@@ -525,20 +539,17 @@ void bitmap_plot(int x, int y) fb = (uchar *)(lcd_base + y * lcd_line_length + x);if (NBITS (panel_info.vl_bpix) <12 ) { -/* Leave room for default color map */ -#if defined(CONFIG_CPU_PXA ) - cmap = (ushort *) fbi->palette; -#elif defined(CONFIG_MPC823 ) +/* Leave room for default color map +* default case: generic system with no cmap (most likely 16bpp) +* cmap was set to the source palette, so no change is done. +* This avoids even more ifdefs in the next stanza +*/ +#if defined(CONFIG_MPC823 ) cmap = (ushort *) &(cp->lcd_cmap[BMP_LOGO_OFFSET *sizeof (ushort)]);#elif defined(CONFIG_ATMEL_LCD ) - cmap = (uint *) (panel_info.mmio +ATMEL_LCDC_LUT (0 )); + cmap = (uint *)configuration_get_cmap ();#else -/* -* default case: generic system with no cmap (most likely 16bpp) -* We set cmap to the source palette, so no change is done. -* This avoids even more ifdef in the next stanza -*/ - cmap = bmp_logo_palette; + cmap =configuration_get_cmap ();#endif WATCHDOG_RESET ();
@@ -639,12 +650,6 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)unsigned long width, height, byte_width;unsigned long pwidth = panel_info.vl_col;unsigned colors, bpix, bmp_bpix; -#if defined(CONFIG_CPU_PXA ) -struct pxafb_info *fbi = &panel_info.pxa; -#elif defined(CONFIG_MPC823 ) -volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR ; -volatile cpm8xx_t *cp = &(immr->im_cpm); -#endif if (!((bmp->header.signature[0 ] =='B' ) && (bmp->header.signature[1 ] =='M' ))) {
@@ -682,14 +687,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)#if !defined(CONFIG_MCC200 )/* MCC200 LCD doesn't need CMAP, supports 1bpp b&w only */ if (bmp_bpix ==8 ) { -#if defined(CONFIG_CPU_PXA ) - cmap = (ushort *)fbi->palette; -#elif defined(CONFIG_MPC823 ) - cmap = (ushort *)&(cp->lcd_cmap[255 *sizeof (ushort)]); -#elif !defined(CONFIG_ATMEL_LCD ) && !defined(CONFIG_EXYNOS_FB ) - cmap = panel_info.cmap; -#endif - + cmap =configuration_get_cmap (); cmap_base = cmap;/* Set color map */
Signature · 1 line
1.7.5.4
PATCH v3 4/4 common lcd: simplify lcd_display_bitmap
In reply to Nikita KiryanovMove highly platform dependant code into its own functions to reduce the number of #ifdefs in lcd_display_bitmap
To avoid breaking the mcc200 board which does not #define CONFIG_CMD_BMP, this patch also implements bmp_display() for mcc200.
---
Changes in V2:
- fixed pointer increment error
- change to simplify lcd_logo breaks MCC200 board because it does not #define CONFIG_CMD_BMP. Added a local implementation of bitmap_display().
board/mcc200/lcd.c | 20 ++++++++++++++++++++ common/lcd.c | 44 +++++++++++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 17 deletions(-)
board/mcc200/lcd.c +20 -0
@@ -21,6 +21,7 @@#include <common.h> #include <lcd.h> #include <mpc5xxx.h> +#include <malloc.h> #ifdef CONFIG_LCD
@@ -210,4 +211,23 @@ void show_progress (int size, int tot) }#endif + +int bmp_display (ulong addr,int x,int y) +{ +int ret; +bmp_image_t *bmp = (bmp_image_t *)addr; + +if (!bmp) { +printf ("There is no valid bmp file at the given address\n" ); +return 1 ; + } + + ret =lcd_display_bitmap ((ulong )bmp, x, y); + +if ((unsigned long )bmp != addr) +free (bmp); + +return ret; +} +#endif /* CONFIG_LCD */
common/lcd.c +27 -17
62 lines not on this page · raw message
Signature · 1 line
1.7.5.4
v3 cover common/lcd cleanup
In reply to Nikita KiryanovGentle ping.
Quoted 29 lines · Nikita Kiryanov
This patch series attempts to simplify #ifdef complexity in
common/lcd.c.It was compile tested on Arm and PowerPC using MAKEALL
Changes in V3:
- Rebased on latest u-boot-video
- Removed volatile qualifiers in patch 3 since the use of volatile is discouraged and it looks like it is safe to remove them.Changes in V2:
- Rebased on u-boot-video
- patches 2 and 3 of original patchset dropped because I'm not sure what to do about them
- simplifylcd_logo: usedbitmap_display()to further simplify code
- simplifylcd_display_bitmap: fixed pointer increment error
- simplifylcd_display_bitmap: change to simplifylcd_logobreaks MCC200 board because it does not #defineCONFIG_CMD_BMP. Added a local implementation ofbitmap_display().Nikita Kiryanov (4):
common lcd: simplifylcd_logo
common lcd: simplifylcd_display
common lcd: simplify core functions
common lcd: simplifylcd_display_bitmapboard/mcc200/lcd.c | 20 +++++++ common/lcd.c | 145 +++++++++++++++++++++++++++------------------------- 2 files changed, 96 insertions(+), 69 deletions(-)
v3 cover common/lcd cleanup
Gentle ping.
-----Original Message-----
From: [email protected] [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Nikita Kiryanov
Sent: Monday, August 20, 2012 9:16 AM
To: Nikita Kiryanov
Cc: u-boot at lists.denx.de
Subject: Re: [U-Boot] [PATCH V3 0/4] common/lcd cleanup
Gentle ping.
Quoted 7 lines · Nikita Kiryanov
This patch series attempts to simplify #ifdef complexity in
common/lcd.c.It was compile tested on Arm and PowerPC using MAKEALL
Changes in V3:
- Rebased on latest u-boot-video
- Removed volatile qualifiers in patch 3 since the use of volatile
is
Quoted 10 lines
discouraged and it looks like it is safe to remove them.
Changes in V2:
- Rebased on u-boot-video
- patches 2 and 3 of original patchset dropped because I'm not sure what to do about them
- simplifylcd_logo: usedbitmap_display()to further simplify code
- simplifylcd_display_bitmap: fixed pointer increment error
- simplifylcd_display_bitmap: change to simplifylcd_logobreaks MCC200 board because it does not #defineCONFIG_CMD_BMP. Added a
local
Quoted 10 lines
implementation of
bitmap_display().Nikita Kiryanov (4):
common lcd: simplifylcd_logo
common lcd: simplifylcd_display
common lcd: simplify core functions
common lcd: simplifylcd_display_bitmapboard/mcc200/lcd.c | 20 +++++++ common/lcd.c | 145
+++++++++++++++++++++++++++-------------------------
Quoted 2 lines
2 files changed, 96 insertions(+), 69 deletions(-)
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot
v3 cover common/lcd cleanup
In reply to Nikita KiryanovHi guys,
This series is waiting for several month already.
Only the V3 is one month old and hasn't got any comments so far. So, if Anatolij for some reason cannot deal with it, please merge it via a staging tree of yours.
Thanks
Quoted 29 lines · Nikita Kiryanov
This patch series attempts to simplify #ifdef complexity in
common/lcd.c.It was compile tested on Arm and PowerPC using MAKEALL
Changes in V3:
- Rebased on latest u-boot-video
- Removed volatile qualifiers in patch 3 since the use of volatile is discouraged and it looks like it is safe to remove them.Changes in V2:
- Rebased on u-boot-video
- patches 2 and 3 of original patchset dropped because I'm not sure what to do about them
- simplifylcd_logo: usedbitmap_display()to further simplify code
- simplifylcd_display_bitmap: fixed pointer increment error
- simplifylcd_display_bitmap: change to simplifylcd_logobreaks MCC200 board because it does not #defineCONFIG_CMD_BMP. Added a local implementation ofbitmap_display().Nikita Kiryanov (4):
common lcd: simplifylcd_logo
common lcd: simplifylcd_display
common lcd: simplify core functions
common lcd: simplifylcd_display_bitmapboard/mcc200/lcd.c | 20 +++++++ common/lcd.c | 145 +++++++++++++++++++++++++++------------------------- 2 files changed, 96 insertions(+), 69 deletions(-)
Signature · 2 lines
Regards, Igor.
v3 cover common/lcd cleanup
Dear Igor Grinberg,
Quoted 6 lines
Hi guys,
This series is waiting for several month already.
Only the V3 is one month old and hasn't got any comments so far. So, if Anatolij for some reason cannot deal with it, please merge it via a staging tree of yours.
Anatolij, poke?
It was probably forgotten, simple bump would suffice. Sorry for the delay.
Quoted 32 lines
Thanks
Quoted 29 lines · Nikita Kiryanov
This patch series attempts to simplify #ifdef complexity in
common/lcd.c.It was compile tested on Arm and PowerPC using MAKEALL
Changes in V3:
- Rebased on latest u-boot-video
- Removed volatile qualifiers in patch 3 since the use of volatile is discouraged and it looks like it is safe to remove them.Changes in V2:
- Rebased on u-boot-video
- patches 2 and 3 of original patchset dropped because I'm not sure what to do about them
- simplifylcd_logo: usedbitmap_display()to further simplify code
- simplifylcd_display_bitmap: fixed pointer increment error
- simplifylcd_display_bitmap: change to simplifylcd_logobreaks MCC200 board because it does not #defineCONFIG_CMD_BMP. Added a local implementation ofbitmap_display().Nikita Kiryanov (4):
common lcd: simplifylcd_logo
common lcd: simplifylcd_display
common lcd: simplify core functions
common lcd: simplifylcd_display_bitmapboard/mcc200/lcd.c | 20 +++++++ common/lcd.c | 145+++++++++++++++++++++++++++------------------------- 2 files changed, 96 insertions(+), 69 deletions(-)
Best regards,
Marek Vasut
v3 cover common/lcd cleanup
In reply to Igor GrinbergHi,
Quoted 6 lines · On Wed, 05 Sep 2012 09:51:12 +0300 Igor Grinberg <[email protected]>…
Hi guys,
This series is waiting for several month already.
Only the V3 is one month old and hasn't got any comments so far. So, if Anatolij for some reason cannot deal with it, please merge it via a staging tree of yours.
Sorry for the delay, I'm really busy with other projects and have only very limitted capacity to process U-Boot patches. These are not lost, and assigned to me at patchwork. For now I've applied this series, hope it will not break anything for all these affected platforms. But please do not expect me pushing to u-boot/master this week, Wolfgang won't pull this week anyway, I'm afraid.
Thanks for the patience, and sorry again
Anatolij
PATCH 1/1 common/lcd: fix build breakage for at91sam9x5ek and trats boards
In reply to Nikita KiryanovCommit 203c37b8c5556aad1901ce4954792afd718c7d42
(common lcd: simplify core functions)
and commit bfdcc65e1163b4891643c2a670570c478b9af2a4 (common lcd: simplify lcd_display_bitmap)
caused build breakage for at91sam9x5ek board configurations and for trats board. Fix these build errors.
--- common/lcd.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-)
common/lcd.c +10 -4
@@ -509,8 +509,14 @@ static inline ushort *configuration_get_cmap(void)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;#else -return (ushort *)panel_info.cmap; +#if defined(CONFIG_LCD_LOGO ) +return bmp_logo_palette; +#else +return NULL ; +#endif #endif }
@@ -636,10 +642,10 @@ static void splash_align_axis(int *axis, unsigned long panel_size, }#endif -#if definedCONFIG_CPU_PXA || defined(CONFIG_ATMEL_LCD ) -#define FB_PUT_BYTE (fb, from) *(fb)++ = *(from)++ -#elif defined(CONFIG_MPC823 ) || defined(CONFIG_MCC200 ) +#if defined(CONFIG_MPC823 ) || defined(CONFIG_MCC200 )#define FB_PUT_BYTE (fb, from) *(fb)++ = (255 - *(from)++) +#else +#define FB_PUT_BYTE (fb, from) *(fb)++ = *(from)++#endif #if defined(CONFIG_BMP_16BPP )
Signature · 1 line
1.7.7.6
PATCH 1/1 common/lcd: fix build breakage for at91sam9x5ek and trats boards
Quoted 49 lines · Anatolij Gustschin
Commit
203c37b8c5556aad1901ce4954792afd718c7d42
(common lcd: simplify core functions)and commit
bfdcc65e1163b4891643c2a670570c478b9af2a4(common lcd: simplifylcd_display_bitmap)caused build breakage for at91sam9x5ek board configurations and for trats board. Fix these build errors.
Signed-off-by Anatolij Gustschin <[email protected]>--- common/lcd.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-)common/lcd.c +10
-4@@ -509,8 +509,14 @@ static inline ushort *configuration_get_cmap(void)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;#else -return (ushort *)panel_info.cmap; +#if defined(CONFIG_LCD_LOGO ) +return bmp_logo_palette; +#else +return NULL ; +#endif #endif }@@ -636,10 +642,10 @@ static void splash_align_axis(int *axis, unsigned long panel_size, }#endif -#if definedCONFIG_CPU_PXA || defined(CONFIG_ATMEL_LCD ) -#define FB_PUT_BYTE (fb, from) *(fb)++ = *(from)++ -#elif defined(CONFIG_MPC823 ) || defined(CONFIG_MCC200 ) +#if defined(CONFIG_MPC823 ) || defined(CONFIG_MCC200 )#define FB_PUT_BYTE (fb, from) *(fb)++ = (255 - *(from)++) +#else +#define FB_PUT_BYTE (fb, from) *(fb)++ = *(from)++#endif #if defined(CONFIG_BMP_16BPP )
PATCH 1/1 common/lcd: fix build breakage for at91sam9x5ek and trats boards
In reply to Anatolij GustschinQuoted 6 lines · On Sat, 22 Sep 2012 18:55:53 +0200 Anatolij Gustschin <[email protected]> wrote:
Commit
203c37b8c5556aad1901ce4954792afd718c7d42
(common lcd: simplify core functions)and commit
bfdcc65e1163b4891643c2a670570c478b9af2a4(common lcd: simplifylcd_display_bitmap)
Quoted 7 lines
caused build breakage for at91sam9x5ek board configurations and for trats board. Fix these build errors.
Signed-off-by Anatolij Gustschin <[email protected]>--- common/lcd.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-)
Applied to u-boot-video/master.
Anatolij