[U-Boot] [PATCH 04/13] lcd: mpc8xx: move mpc823 specific fb_put_byte to mpc8xx_lcd.c
Nikita Kiryanov
nikita at compulab.co.il
Thu Jan 29 12:21:36 CET 2015
Reduce the amount of platform dependant code in common/lcd.c by moving MPC823
specific implementation of fb_put_byte() to mpc8xx_lcd.c. Since we must also
have a default implementation for everybody else, make the remainder of the
code into a weak function.
Signed-off-by: Nikita Kiryanov <nikita at compulab.co.il>
Cc: Simon Glass <sjg at chromium.org>
Cc: Anatolij Gustschin <agust at denx.de>
---
common/lcd.c | 11 +++++------
drivers/video/mpc8xx_lcd.c | 7 +++++++
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/common/lcd.c b/common/lcd.c
index f17b35b..efd9a87 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -635,11 +635,10 @@ static void lcd_display_rle8_bitmap(bmp_image_t *bmp, ushort *cmap, uchar *fb,
}
#endif
-#if defined(CONFIG_MPC823)
-#define FB_PUT_BYTE(fb, from) *(fb)++ = (255 - *(from)++)
-#else
-#define FB_PUT_BYTE(fb, from) *(fb)++ = *(from)++
-#endif
+__weak void fb_put_byte(uchar **fb, uchar **from)
+{
+ *(*fb)++ = *(*from)++;
+}
#if defined(CONFIG_BMP_16BPP)
__weak void fb_put_word(uchar **fb, uchar **from)
@@ -764,7 +763,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
WATCHDOG_RESET();
for (j = 0; j < width; j++) {
if (bpix != 16) {
- FB_PUT_BYTE(fb, bmap);
+ fb_put_byte(&fb, &bmap);
} else {
*(uint16_t *)fb = cmap_base[*(bmap++)];
fb += sizeof(uint16_t) / sizeof(*fb);
diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
index 9d2e5ed..190c05a 100644
--- a/drivers/video/mpc8xx_lcd.c
+++ b/drivers/video/mpc8xx_lcd.c
@@ -364,6 +364,13 @@ ushort *configuration_get_cmap(void)
return (ushort *)&(cp->lcd_cmap[255 * sizeof(ushort)]);
}
+#if defined(CONFIG_MPC823)
+void fb_put_byte(uchar **fb, uchar **from)
+{
+ *(*fb)++ = (255 - *(*from)++);
+}
+#endif
+
void lcd_enable (void)
{
volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
--
1.9.1
More information about the U-Boot
mailing list