]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/glsdk-u-boot.git/commitdiff
Merge branch 'for-v2013.04'
authorAnatolij Gustschin <agust@denx.de>
Fri, 29 Mar 2013 12:54:10 +0000 (13:54 +0100)
committerAnatolij Gustschin <agust@denx.de>
Fri, 29 Mar 2013 12:54:10 +0000 (13:54 +0100)
Conflicts:
drivers/video/Makefile

Signed-off-by: Anatolij Gustschin <agust@denx.de>
1  2 
common/lcd.c
drivers/video/Makefile

diff --combined common/lcd.c
index 77914adbce558aca4a67607dcd3292519cf02275,195f1de617c07a508f579c70b5df57e53e013562..b98eea669692a977c5a7684e81b56e5328d8111b
  #define CONFIG_CONSOLE_SCROLL_LINES 1
  #endif
  
- DECLARE_GLOBAL_DATA_PTR;
+ /************************************************************************/
+ /* ** CONSOLE DEFINITIONS & FUNCTIONS                                 */
+ /************************************************************************/
+ #if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
+ # define CONSOLE_ROWS         ((panel_info.vl_row-BMP_LOGO_HEIGHT) \
+                                       / VIDEO_FONT_HEIGHT)
+ #else
+ # define CONSOLE_ROWS         (panel_info.vl_row / VIDEO_FONT_HEIGHT)
+ #endif
+ #define CONSOLE_COLS          (panel_info.vl_col / VIDEO_FONT_WIDTH)
+ #define CONSOLE_ROW_SIZE      (VIDEO_FONT_HEIGHT * lcd_line_length)
+ #define CONSOLE_ROW_FIRST     lcd_console_address
+ #define CONSOLE_ROW_SECOND    (lcd_console_address + CONSOLE_ROW_SIZE)
+ #define CONSOLE_ROW_LAST      (lcd_console_address + CONSOLE_SIZE \
+                                       - CONSOLE_ROW_SIZE)
+ #define CONSOLE_SIZE          (CONSOLE_ROW_SIZE * CONSOLE_ROWS)
+ #define CONSOLE_SCROLL_SIZE   (CONSOLE_SIZE - CONSOLE_ROW_SIZE)
  
- ulong lcd_setmem (ulong addr);
+ #if LCD_BPP == LCD_MONOCHROME
+ # define COLOR_MASK(c)                ((c)      | (c) << 1 | (c) << 2 | (c) << 3 | \
+                                (c) << 4 | (c) << 5 | (c) << 6 | (c) << 7)
+ #elif (LCD_BPP == LCD_COLOR8) || (LCD_BPP == LCD_COLOR16)
+ # define COLOR_MASK(c)                (c)
+ #else
+ # error Unsupported LCD BPP.
+ #endif
+ DECLARE_GLOBAL_DATA_PTR;
  
  static void lcd_drawchars(ushort x, ushort y, uchar *str, int count);
  static inline void lcd_puts_xy(ushort x, ushort y, uchar *s);
@@@ -93,22 -119,25 +119,25 @@@ static inline void lcd_putc_xy(ushort x
  
  static int lcd_init(void *lcdbase);
  
- static void *lcd_logo (void);
+ static void *lcd_logo(void);
  
  static int lcd_getbgcolor(void);
  static void lcd_setfgcolor(int color);
  static void lcd_setbgcolor(int color);
  
+ static int lcd_color_fg;
+ static int lcd_color_bg;
+ int lcd_line_length;
  char lcd_is_enabled = 0;
  
- static char lcd_flush_dcache; /* 1 to flush dcache after each lcd update */
+ static short console_col;
+ static short console_row;
  
+ static void *lcd_console_address;
+ static void *lcd_base;                        /* Start of framebuffer memory  */
  
- #ifdef        NOT_USED_SO_FAR
- static void lcd_getcolreg(ushort regno,
-                               ushort *red, ushort *green, ushort *blue);
- static int lcd_getfgcolor(void);
- #endif        /* NOT_USED_SO_FAR */
+ static char lcd_flush_dcache; /* 1 to flush dcache after each lcd update */
  
  /************************************************************************/
  
@@@ -148,7 -177,7 +177,7 @@@ static void console_scrollup(void
        /* Clear the last rows */
        memset(lcd_console_address + CONSOLE_SIZE - CONSOLE_ROW_SIZE * rows,
                COLOR_MASK(lcd_color_bg),
-              CONSOLE_ROW_SIZE * rows);
+               CONSOLE_ROW_SIZE * rows);
  
        lcd_sync();
        console_row -= rows;
@@@ -160,9 -189,8 +189,8 @@@ static inline void console_back(void
  {
        if (--console_col < 0) {
                console_col = CONSOLE_COLS-1 ;
-               if (--console_row < 0) {
+               if (--console_row < 0)
                        console_row = 0;
-               }
        }
  
        lcd_putc_xy(console_col * VIDEO_FONT_WIDTH,
  
  static inline void console_newline(void)
  {
-       ++console_row;
        console_col = 0;
  
        /* Check if we need to scroll the terminal */
-       if (console_row >= CONSOLE_ROWS) {
-               /* Scroll everything up */
+       if (++console_row >= CONSOLE_ROWS)
                console_scrollup();
-       } else {
+       else
                lcd_sync();
-       }
  }
  
  /*----------------------------------------------------------------------*/
@@@ -234,9 -259,9 +259,9 @@@ void lcd_puts(const char *s
                return;
        }
  
-       while (*s) {
+       while (*s)
                lcd_putc(*s++);
-       }
        lcd_sync();
  }
  
@@@ -283,7 -308,7 +308,7 @@@ static void lcd_drawchars(ushort x, ush
  #endif
  
  #if LCD_BPP == LCD_MONOCHROME
-               uchar rest = *d & -(1 << (8-off));
+               uchar rest = *d & -(1 << (8 - off));
                uchar sym;
  #endif
                for (i = 0; i < count; ++i) {
  #endif
                }
  #if LCD_BPP == LCD_MONOCHROME
-               *d  = rest | (*d & ((1 << (8-off)) - 1));
+               *d  = rest | (*d & ((1 << (8 - off)) - 1));
  #endif
        }
  }
@@@ -340,7 -365,7 +365,7 @@@ static inline void lcd_putc_xy(ushort x
  #define       N_BLK_VERT      2
  #define       N_BLK_HOR       3
  
- static int test_colors[N_BLK_HOR*N_BLK_VERT] = {
+ static int test_colors[N_BLK_HOR * N_BLK_VERT] = {
        CONSOLE_COLOR_RED,      CONSOLE_COLOR_GREEN,    CONSOLE_COLOR_YELLOW,
        CONSOLE_COLOR_BLUE,     CONSOLE_COLOR_MAGENTA,  CONSOLE_COLOR_CYAN,
  };
@@@ -361,7 -386,7 +386,7 @@@ static void test_pattern(void
        for (v = 0; v < v_max; ++v) {
                uchar iy = v / v_step;
                for (h = 0; h < h_max; ++h) {
-                       uchar ix = N_BLK_HOR * iy + (h/h_step);
+                       uchar ix = N_BLK_HOR * iy + h / h_step;
                        *pix++ = test_colors[ix];
                }
        }
@@@ -379,13 -404,15 +404,13 @@@ int lcd_get_size(int *line_length
        return *line_length * panel_info.vl_row;
  }
  
- int drv_lcd_init (void)
+ int drv_lcd_init(void)
  {
        struct stdio_dev lcddev;
        int rc;
  
-       lcd_base = (void *)(gd->fb_base);
+       lcd_base = (void *) gd->fb_base;
  
 -      lcd_get_size(&lcd_line_length);
 -
        lcd_init(lcd_base);             /* LCD initialization */
  
        /* Device initialization */
        lcddev.putc  = lcd_putc;                /* 'putc' function */
        lcddev.puts  = lcd_puts;                /* 'puts' function */
  
-       rc = stdio_register (&lcddev);
+       rc = stdio_register(&lcddev);
  
        return (rc == 0) ? 1 : rc;
  }
@@@ -436,11 -463,11 +461,11 @@@ void lcd_clear(void
        /* set framebuffer to background color */
        memset((char *)lcd_base,
                COLOR_MASK(lcd_getbgcolor()),
-               lcd_line_length*panel_info.vl_row);
+               lcd_line_length * panel_info.vl_row);
  #endif
        /* Paint the logo and retrieve LCD base address */
        debug("[LCD] Drawing the logo...\n");
-       lcd_console_address = lcd_logo ();
+       lcd_console_address = lcd_logo();
  
        console_col = 0;
        console_row = 0;
@@@ -468,11 -495,9 +493,11 @@@ static int lcd_init(void *lcdbase
        debug("[LCD] Initializing LCD frambuffer at %p\n", lcdbase);
  
        lcd_ctrl_init(lcdbase);
 +      lcd_get_size(&lcd_line_length);
 +      lcd_line_length = (panel_info.vl_col * NBITS(panel_info.vl_bpix)) / 8;
        lcd_is_enabled = 1;
        lcd_clear();
-       lcd_enable ();
+       lcd_enable();
  
        /* Initialize the console */
        console_col = 0;
@@@ -513,7 -538,8 +538,8 @@@ ulong lcd_setmem(ulong addr
        /* Allocate pages for the frame buffer. */
        addr -= size;
  
-       debug("Reserving %ldk for LCD Framebuffer at: %08lx\n", size>>10, addr);
+       debug("Reserving %ldk for LCD Framebuffer at: %08lx\n",
+             size >> 10, addr);
  
        return addr;
  }
@@@ -534,12 -560,10 +560,10 @@@ static void lcd_setbgcolor(int color
  
  /*----------------------------------------------------------------------*/
  
- #ifdef        NOT_USED_SO_FAR
- static int lcd_getfgcolor(void)
+ int lcd_getfgcolor(void)
  {
        return lcd_color_fg;
  }
- #endif        /* NOT_USED_SO_FAR */
  
  /*----------------------------------------------------------------------*/
  
@@@ -548,8 -572,6 +572,6 @@@ static int lcd_getbgcolor(void
        return lcd_color_bg;
  }
  
- /*----------------------------------------------------------------------*/
  /************************************************************************/
  /* ** Chipset depending Bitmap / Logo stuff...                          */
  /************************************************************************/
@@@ -566,13 -588,11 +588,11 @@@ static inline ushort *configuration_get
        return (ushort *)(panel_info.mmio + ATMEL_LCDC_LUT(0));
  #elif !defined(CONFIG_ATMEL_HLCD) && !defined(CONFIG_EXYNOS_FB)
        return panel_info.cmap;
- #else
- #if defined(CONFIG_LCD_LOGO)
+ #elif defined(CONFIG_LCD_LOGO)
        return bmp_logo_palette;
  #else
        return NULL;
  #endif
- #endif
  }
  
  #ifdef CONFIG_LCD_LOGO
@@@ -591,15 -611,16 +611,16 @@@ void bitmap_plot(int x, int y
        immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
        cpm8xx_t *cp = &(immr->im_cpm);
  #endif
+       unsigned bpix = NBITS(panel_info.vl_bpix);
  
        debug("Logo: width %d  height %d  colors %d  cmap %d\n",
                BMP_LOGO_WIDTH, BMP_LOGO_HEIGHT, BMP_LOGO_COLORS,
                ARRAY_SIZE(bmp_logo_palette));
  
        bmap = &bmp_logo_bitmap[0];
-       fb   = (uchar *)(lcd_base + y * lcd_line_length + x);
+       fb   = (uchar *)(lcd_base + y * lcd_line_length + x * bpix / 8);
  
-       if (NBITS(panel_info.vl_bpix) < 12) {
+       if (bpix < 12) {
                /* 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.
                for (i = 0; i < BMP_LOGO_HEIGHT; ++i) {
                        memcpy(fb, bmap, BMP_LOGO_WIDTH);
                        bmap += BMP_LOGO_WIDTH;
-                       fb   += panel_info.vl_col;
+                       fb += panel_info.vl_col;
                }
        }
        else { /* true color mode */
                u16 col16;
-               fb16 = (ushort *)(lcd_base + y * lcd_line_length + x);
+               fb16 = (ushort *)fb;
                for (i = 0; i < BMP_LOGO_HEIGHT; ++i) {
                        for (j = 0; j < BMP_LOGO_WIDTH; j++) {
                                col16 = bmp_logo_palette[(bmap[j]-16)];
@@@ -736,12 -757,11 +757,11 @@@ static void draw_encoded_bitmap(ushort 
                *fb++ = c;
                cnt--;
        }
-       (*fbp) = fb;
+       *fbp = fb;
  }
  
  /*
-  * Do not call this function directly, must be called from
-  * lcd_display_bitmap.
+  * Do not call this function directly, must be called from lcd_display_bitmap.
   */
  static void lcd_display_rle8_bitmap(bmp_image_t *bmp, ushort *cmap, uchar *fb,
                                    int x_off, int y_off)
@@@ -868,8 -888,8 +888,8 @@@ int lcd_display_bitmap(ulong bmp_image
        unsigned long pwidth = panel_info.vl_col;
        unsigned colors, bpix, bmp_bpix;
  
-       if (!bmp || !((bmp->header.signature[0] == 'B') &&
-               (bmp->header.signature[1] == 'M'))) {
+       if (!bmp || !(bmp->header.signature[0] == 'B' &&
+               bmp->header.signature[1] == 'M')) {
                printf("Error: no valid bmp image at %lx\n", bmp_image);
  
                return 1;
  
        bpix = NBITS(panel_info.vl_bpix);
  
-       if ((bpix != 1) && (bpix != 8) && (bpix != 16) && (bpix != 32)) {
+       if (bpix != 1 && bpix != 8 && bpix != 16 && bpix != 32) {
                printf ("Error: %d bit/pixel mode, but BMP has %d bit/pixel\n",
                        bpix, bmp_bpix);
  
        }
  #endif
  
-       padded_width = (width&0x3) ? ((width&~0x3)+4) : (width);
+       padded_width = (width & 0x3 ? (width & ~0x3) + 4 : width);
  
  #ifdef CONFIG_SPLASH_SCREEN_ALIGN
        splash_align_axis(&x, pwidth, width);
        if ((y + height) > panel_info.vl_row)
                height = panel_info.vl_row - y;
  
-       bmap = (uchar *)bmp + le32_to_cpu(bmp->header.data_offset);
+       bmap = (uchar *) bmp + le32_to_cpu(bmp->header.data_offset);
        fb   = (uchar *) (lcd_base +
                (y + height - 1) * lcd_line_length + x * bpix / 8);
  
                                }
                        }
                        bmap += (padded_width - width);
-                       fb   -= (byte_width + lcd_line_length);
+                       fb -= byte_width + lcd_line_length;
                }
                break;
  
                                fb_put_word(&fb, &bmap);
  
                        bmap += (padded_width - width) * 2;
-                       fb   -= (width * 2 + lcd_line_length);
+                       fb -= width * 2 + lcd_line_length;
                }
                break;
  #endif /* CONFIG_BMP_16BPP */
                                *(fb++) = *(bmap++);
                                *(fb++) = *(bmap++);
                        }
-                       fb  -= (lcd_line_length + width * (bpix / 8));
+                       fb -= lcd_line_length + width * (bpix / 8);
                }
                break;
  #endif /* CONFIG_BMP_32BPP */
@@@ -1098,7 -1118,7 +1118,7 @@@ static void *lcd_logo(void
        return (void *)((ulong)lcd_base + BMP_LOGO_HEIGHT * lcd_line_length);
  #else
        return (void *)lcd_base;
- #endif /* CONFIG_LCD_LOGO && !CONFIG_LCD_INFO_BELOW_LOGO */
+ #endif /* CONFIG_LCD_LOGO && !defined(CONFIG_LCD_INFO_BELOW_LOGO) */
  }
  
  #ifdef CONFIG_SPLASHIMAGE_GUARD
@@@ -1150,6 -1170,3 +1170,3 @@@ int lcd_get_screen_columns(void
  {
        return CONSOLE_COLS;
  }
- /************************************************************************/
- /************************************************************************/
diff --combined drivers/video/Makefile
index e8cecca55a93db2a663e31483a69603e4b0ccab9,250aebd5f6d48bc43cf9d6482069f0e43fd44a92..53952ab07e4ed613b10650d18dbaa762a7373d7a
@@@ -35,12 -35,12 +35,13 @@@ COBJS-$(CONFIG_EXYNOS_MIPI_DSIM) += exy
                                exynos_mipi_dsi_lowlevel.o
  COBJS-$(CONFIG_EXYNOS_PWM_BL) += exynos_pwm_bl.o
  COBJS-$(CONFIG_FSL_DIU_FB) += fsl_diu_fb.o videomodes.o
+ COBJS-$(CONFIG_MPC8XX_LCD) += mpc8xx_lcd.o
+ COBJS-$(CONFIG_PXA_LCD) += pxa_lcd.o
  COBJS-$(CONFIG_S6E8AX0) += s6e8ax0.o
  COBJS-$(CONFIG_S6E63D6) += s6e63d6.o
  COBJS-$(CONFIG_LD9040) += ld9040.o
  COBJS-$(CONFIG_SED156X) += sed156x.o
- COBJS-$(CONFIG_VIDEO_AMBA) += amba.o
 +COBJS-$(CONFIG_VIDEO_BCM2835) += bcm2835.o
  COBJS-$(CONFIG_VIDEO_COREBOOT) += coreboot_fb.o
  COBJS-$(CONFIG_VIDEO_CT69000) += ct69000.o videomodes.o
  COBJS-$(CONFIG_VIDEO_DA8XX) += da8xx-fb.o videomodes.o