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>
30 files changed:
api/api_display.c
arch/arm/cpu/pxa/Makefile
arch/powerpc/cpu/mpc8xx/Makefile
board/cm_t35/display.c
board/mcc200/lcd.c
common/lcd.c
drivers/video/Makefile
drivers/video/amba.c [deleted file]
drivers/video/atmel_hlcdfb.c
drivers/video/atmel_lcdfb.c
drivers/video/cfb_console.c
drivers/video/exynos_fb.c
drivers/video/mpc8xx_lcd.c [moved from arch/powerpc/cpu/mpc8xx/lcd.c with 92% similarity]
drivers/video/pxa_lcd.c [moved from arch/arm/cpu/pxa/pxafb.c with 93% similarity]
drivers/video/tegra.c
include/configs/R360MPI.h
include/configs/RBC823.h
include/configs/RPXlite_DW.h
include/configs/RRvision.h
include/configs/TQM823L.h
include/configs/TQM823M.h
include/configs/lubbock.h
include/configs/lwmon.h
include/configs/palmld.h
include/configs/palmtc.h
include/configs/pxa255_idp.h
include/configs/svm_sc8xx.h
include/configs/v37.h
include/configs/zipitz2.h
include/lcd.h

index 6439170..c167db7 100644 (file)
@@ -45,8 +45,8 @@ int display_get_info(int type, struct display_info *di)
        case DISPLAY_TYPE_LCD:
                di->pixel_width  = panel_info.vl_col;
                di->pixel_height = panel_info.vl_row;
-               di->screen_rows = CONSOLE_ROWS;
-               di->screen_cols = CONSOLE_COLS;
+               di->screen_rows = lcd_get_screen_rows();
+               di->screen_cols = lcd_get_screen_columns();
                break;
 #endif
        }
index e088832..9f63c34 100644 (file)
@@ -33,7 +33,6 @@ COBJS-$(CONFIG_CPU_PXA27X)    = pxa2xx.o
 COBJS-y        += cpuinfo.o
 
 COBJS  = $(COBJS-y)
-COBJS  += pxafb.o
 COBJS  += timer.o
 COBJS  += usb.o
 
index 0d1a12c..ef10e2d 100644 (file)
@@ -37,7 +37,6 @@ COBJS-y       += fec.o
 COBJS-$(CONFIG_OF_LIBFDT) += fdt.o
 COBJS-y        += i2c.o
 COBJS-y        += interrupts.o
-COBJS-y        += lcd.o
 COBJS-y        += scc.o
 COBJS-y        += serial.o
 COBJS-y        += speed.o
index 2f78bad..a004ea1 100644 (file)
@@ -381,14 +381,6 @@ static enum display_type env_parse_displaytype(char *displaytype)
        return NONE;
 }
 
-int lcd_line_length;
-int lcd_color_fg;
-int lcd_color_bg;
-void *lcd_base;
-short console_col;
-short console_row;
-void *lcd_console_address;
-
 void lcd_ctrl_init(void *lcdbase)
 {
        struct prcm *prcm = (struct prcm *)PRCM_BASE;
index 893f4b7..24f0abd 100644 (file)
@@ -68,32 +68,12 @@ vidinfo_t panel_info = {
        LCD_WIDTH, LCD_HEIGHT, LCD_BPP
 };
 
-int lcd_line_length;
-
-int lcd_color_fg;
-int lcd_color_bg;
-
-/*
- * Frame buffer memory information
- */
-void *lcd_base;                        /* Start of framebuffer memory  */
-void *lcd_console_address;     /* Start of console buffer      */
-
-short console_col = 0;
-short console_row = 0;
 
 /*
  *  The device we use to communicate with PSoC
  */
 int serial_inited = 0;
 
-/*
- * Exported functions
- */
-void lcd_initcolregs (void);
-void lcd_ctrl_init (void *lcdbase);
-void lcd_enable (void);
-
 /*
  *  Imported functions to support the PSoC protocol
  */
@@ -156,12 +136,12 @@ void lcd_enable (void)
 
 #if !defined(SWAPPED_LCD)
        for (i=0; i<fb_size; i++) {
-               serial_putc_raw_dev (PSOC_PSC, ((char *)lcd_base)[i]);
+               serial_putc_raw_dev(PSOC_PSC, ((char *)gd->fb_base)[i]);
        }
 #else
     {
        int x, y, pwidth;
-       char *p = (char *)lcd_base;
+       char *p = (char *)gd->fb_base;
 
        pwidth = ((panel_info.vl_col+7) >> 3);
        for (y=0; y<panel_info.vl_row; y++) {
index 77914ad..b98eea6 100644 (file)
 #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 @@ static inline void lcd_putc_xy(ushort x, ushort y, uchar  c);
 
 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 @@ 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 @@ 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,
@@ -173,16 +201,13 @@ static inline void console_back(void)
 
 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 @@ void lcd_puts(const char *s)
                return;
        }
 
-       while (*s) {
+       while (*s)
                lcd_putc(*s++);
-       }
+
        lcd_sync();
 }
 
@@ -283,7 +308,7 @@ static void lcd_drawchars(ushort x, ushort y, uchar *str, int count)
 #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) {
@@ -313,7 +338,7 @@ static void lcd_drawchars(ushort x, ushort y, uchar *str, int count)
 #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 @@ static inline void lcd_putc_xy(ushort x, ushort y, uchar c)
 #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 @@ 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,12 +404,12 @@ 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_init(lcd_base);             /* LCD initialization */
 
@@ -397,7 +422,7 @@ int drv_lcd_init (void)
        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 +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;
@@ -472,7 +497,7 @@ static int lcd_init(void *lcdbase)
        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 @@ 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 @@ 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 @@ static int lcd_getbgcolor(void)
        return lcd_color_bg;
 }
 
-/*----------------------------------------------------------------------*/
-
 /************************************************************************/
 /* ** Chipset depending Bitmap / Logo stuff...                          */
 /************************************************************************/
@@ -566,13 +588,11 @@ static inline ushort *configuration_get_cmap(void)
        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 @@ 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.
@@ -645,12 +666,12 @@ void bitmap_plot(int x, int y)
                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 @@ static void draw_encoded_bitmap(ushort **fbp, ushort c, int cnt)
                *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 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
        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;
@@ -882,7 +902,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
 
        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);
 
@@ -950,7 +970,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
        }
 #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);
@@ -962,7 +982,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
        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);
 
@@ -997,7 +1017,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
                                }
                        }
                        bmap += (padded_width - width);
-                       fb   -= (byte_width + lcd_line_length);
+                       fb -= byte_width + lcd_line_length;
                }
                break;
 
@@ -1009,7 +1029,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
                                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 */
@@ -1023,7 +1043,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
                                *(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 @@ 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 @@ int lcd_get_screen_columns(void)
 {
        return CONSOLE_COLS;
 }
-
-/************************************************************************/
-/************************************************************************/
index e8cecca..53952ab 100644 (file)
@@ -35,11 +35,12 @@ COBJS-$(CONFIG_EXYNOS_MIPI_DSIM) += exynos_mipi_dsi.o exynos_mipi_dsi_common.o \
                                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
diff --git a/drivers/video/amba.c b/drivers/video/amba.c
deleted file mode 100644 (file)
index ffa1c39..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Driver for AMBA PrimeCell CLCD
- *
- * Copyright (C) 2009 Alessandro Rubini
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <lcd.h>
-#include <amba_clcd.h>
-
-/* These variables are required by lcd.c -- although it sets them by itself */
-int lcd_line_length;
-int lcd_color_fg;
-int lcd_color_bg;
-void *lcd_base;
-void *lcd_console_address;
-short console_col;
-short console_row;
-
-/*
- * To use this driver you need to provide the following in board files:
- *     a panel_info definition
- *     an lcd_enable function (can't define a weak default with current code)
- */
-
-/* There is nothing to do with color registers, we use true color */
-void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue)
-{
-       return;
-}
-
-/* Low level initialization of the logic cell: depends on panel_info */
-void lcd_ctrl_init(void *lcdbase)
-{
-       struct clcd_config *config;
-       struct clcd_registers *regs;
-       u32 cntl;
-
-       config = panel_info.priv;
-       regs = config->address;
-       cntl = config->cntl & ~CNTL_LCDEN;
-
-       /* Lazily, just copy the registers over: first control with disable */
-       writel(cntl, &regs->cntl);
-
-       writel(config->tim0, &regs->tim0);
-       writel(config->tim1, &regs->tim1);
-       writel(config->tim2, &regs->tim2);
-       writel(config->tim3, &regs->tim3);
-       writel((u32)lcdbase, &regs->ubas);
-       /* finally, enable */
-       writel(cntl | CNTL_LCDEN, &regs->cntl);
-}
-
-/* This is trivial, and copied from atmel_lcdfb.c */
-ulong calc_fbsize(void)
-{
-       return ((panel_info.vl_col * panel_info.vl_row *
-               NBITS(panel_info.vl_bpix)) / 8) + PAGE_SIZE;
-}
index b10ca4b..fc95897 100644 (file)
 #include <lcd.h>
 #include <atmel_hlcdc.h>
 
-int lcd_line_length;
-int lcd_color_fg;
-int lcd_color_bg;
-
-void *lcd_base;                                /* Start of framebuffer memory  */
-void *lcd_console_address;             /* Start of console buffer      */
-
-short console_col;
-short console_row;
-
 /* configurable parameters */
 #define ATMEL_LCDC_CVAL_DEFAULT                0xc8
 #define ATMEL_LCDC_DMA_BURST_LEN       8
index c02ffd8..2afeab2 100644 (file)
 #include <lcd.h>
 #include <atmel_lcdc.h>
 
-int lcd_line_length;
-int lcd_color_fg;
-int lcd_color_bg;
-
-void *lcd_base;                                /* Start of framebuffer memory  */
-void *lcd_console_address;             /* Start of console buffer      */
-
-short console_col;
-short console_row;
-
 /* configurable parameters */
 #define ATMEL_LCDC_CVAL_DEFAULT                0xc8
 #define ATMEL_LCDC_DMA_BURST_LEN       8
index 26f673a..61e1058 100644 (file)
@@ -1515,13 +1515,6 @@ int video_display_bitmap(ulong bmp_image, int x, int y)
 
        padded_line = (((width * bpp + 7) / 8) + 3) & ~0x3;
 
-       /*
-        * Just ignore elements which are completely beyond screen
-        * dimensions.
-        */
-       if ((x >= VIDEO_VISIBLE_COLS) || (y >= VIDEO_VISIBLE_ROWS))
-               return 0;
-
 #ifdef CONFIG_SPLASH_SCREEN_ALIGN
        if (x == BMP_ALIGN_CENTER)
                x = max(0, (VIDEO_VISIBLE_COLS - width) / 2);
@@ -1534,6 +1527,13 @@ int video_display_bitmap(ulong bmp_image, int x, int y)
                y = max(0, VIDEO_VISIBLE_ROWS - height + y + 1);
 #endif /* CONFIG_SPLASH_SCREEN_ALIGN */
 
+       /*
+        * Just ignore elements which are completely beyond screen
+        * dimensions.
+        */
+       if ((x >= VIDEO_VISIBLE_COLS) || (y >= VIDEO_VISIBLE_ROWS))
+               return 0;
+
        if ((x + width) > VIDEO_VISIBLE_COLS)
                width = VIDEO_VISIBLE_COLS - x;
        if ((y + height) > VIDEO_VISIBLE_ROWS)
index ee0ed06..c0f1830 100644 (file)
 
 #include "exynos_fb.h"
 
-int lcd_line_length;
-int lcd_color_fg;
-int lcd_color_bg;
-
-void *lcd_base;
-void *lcd_console_address;
-
-short console_col;
-short console_row;
+DECLARE_GLOBAL_DATA_PTR;
 
 static unsigned int panel_width, panel_height;
 
@@ -52,11 +44,9 @@ static void exynos_lcd_init_mem(void *lcdbase, vidinfo_t *vid)
 
        fb_size = vid->vl_row * vid->vl_col * (NBITS(vid->vl_bpix) >> 3);
 
-       lcd_base = lcdbase;
-
        palette_size = NBITS(vid->vl_bpix) == 8 ? 256 : 16;
 
-       exynos_fimd_lcd_init_mem((unsigned long)lcd_base,
+       exynos_fimd_lcd_init_mem((unsigned long)lcdbase,
                        (unsigned long)fb_size, palette_size);
 }
 
@@ -148,7 +138,7 @@ void lcd_ctrl_init(void *lcdbase)
 void lcd_enable(void)
 {
        if (panel_info.logo_on) {
-               memset(lcd_base, 0, panel_width * panel_height *
+               memset((void *) gd->fb_base, 0, panel_width * panel_height *
                                (NBITS(panel_info.vl_bpix) >> 3));
 #ifdef CONFIG_CMD_BMP
                draw_logo();
similarity index 92%
rename from arch/powerpc/cpu/mpc8xx/lcd.c
rename to drivers/video/mpc8xx_lcd.c
index 4b88b21..f0f728e 100644 (file)
@@ -253,40 +253,6 @@ vidinfo_t panel_info = {
     LCD_BPP,  0, 0, 0, 0, 33, 0, 0, 0
 };
 #endif
-/*----------------------------------------------------------------------*/
-
-
-int lcd_line_length;
-
-int lcd_color_fg;
-int lcd_color_bg;
-
-/*
- * Frame buffer memory information
- */
-void *lcd_base;                        /* Start of framebuffer memory  */
-void *lcd_console_address;     /* Start of console buffer      */
-
-short console_col;
-short console_row;
-
-/************************************************************************/
-
-void lcd_ctrl_init (void *lcdbase);
-void lcd_enable (void);
-#if LCD_BPP == LCD_COLOR8
-void lcd_setcolreg (ushort regno,
-                               ushort red, ushort green, ushort blue);
-#endif
-#if LCD_BPP == LCD_MONOCHROME
-void lcd_initcolregs (void);
-#endif
-
-#if defined(CONFIG_RBC823)
-void lcd_disable (void);
-#endif
-
-/************************************************************************/
 
 /************************************************************************/
 /* ----------------- chipset specific functions ----------------------- */
@@ -401,8 +367,8 @@ void lcd_ctrl_init (void *lcdbase)
         * BIG NOTE:  This has to be modified to load A and B depending
         * upon the split mode of the LCD.
         */
-       lcdp->lcd_lcfaa = (ulong)lcd_base;
-       lcdp->lcd_lcfba = (ulong)lcd_base;
+       lcdp->lcd_lcfaa = (ulong)lcdbase;
+       lcdp->lcd_lcfba = (ulong)lcdbase;
 
        /* MORE HACKS...This must be updated according to 823 manual
         * for different panels.
@@ -432,29 +398,6 @@ void lcd_ctrl_init (void *lcdbase)
 
 /*----------------------------------------------------------------------*/
 
-#ifdef NOT_USED_SO_FAR
-static void
-lcd_getcolreg (ushort regno, ushort *red, ushort *green, ushort *blue)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       volatile cpm8xx_t *cp = &(immr->im_cpm);
-       unsigned short colreg, *cmap_ptr;
-
-       cmap_ptr = (unsigned short *)&cp->lcd_cmap[regno * 2];
-
-       colreg = *cmap_ptr;
-#ifdef CONFIG_SYS_INVERT_COLORS
-       colreg ^= 0x0FFF;
-#endif
-
-       *red   = (colreg >> 8) & 0x0F;
-       *green = (colreg >> 4) & 0x0F;
-       *blue  =  colreg       & 0x0F;
-}
-#endif /* NOT_USED_SO_FAR */
-
-/*----------------------------------------------------------------------*/
-
 #if LCD_BPP == LCD_COLOR8
 void
 lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue)
similarity index 93%
rename from arch/arm/cpu/pxa/pxafb.c
rename to drivers/video/pxa_lcd.c
index 987fa06..b40ec36 100644 (file)
@@ -317,36 +317,10 @@ vidinfo_t panel_info = {
 
 /*----------------------------------------------------------------------*/
 
-#if LCD_BPP == LCD_COLOR8
-void lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue);
-#endif
-#if LCD_BPP == LCD_MONOCHROME
-void lcd_initcolregs (void);
-#endif
-
-#ifdef NOT_USED_SO_FAR
-void lcd_disable (void);
-void lcd_getcolreg (ushort regno, ushort *red, ushort *green, ushort *blue);
-#endif /* NOT_USED_SO_FAR */
-
-void lcd_ctrl_init     (void *lcdbase);
-void lcd_enable        (void);
-
-int lcd_line_length;
-int lcd_color_fg;
-int lcd_color_bg;
-
-void *lcd_base;                        /* Start of framebuffer memory  */
-void *lcd_console_address;             /* Start of console buffer      */
-
-short console_col;
-short console_row;
-
 static int pxafb_init_mem (void *lcdbase, vidinfo_t *vid);
 static void pxafb_setup_gpio (vidinfo_t *vid);
 static void pxafb_enable_controller (vidinfo_t *vid);
 static int pxafb_init (vidinfo_t *vid);
-/************************************************************************/
 
 /************************************************************************/
 /* ---------------  PXA chipset specific functions  ------------------- */
@@ -360,14 +334,6 @@ void lcd_ctrl_init (void *lcdbase)
        pxafb_enable_controller(&panel_info);
 }
 
-/*----------------------------------------------------------------------*/
-#ifdef NOT_USED_SO_FAR
-void
-lcd_getcolreg (ushort regno, ushort *red, ushort *green, ushort *blue)
-{
-}
-#endif /* NOT_USED_SO_FAR */
-
 /*----------------------------------------------------------------------*/
 #if LCD_BPP == LCD_COLOR8
 void
@@ -416,15 +382,6 @@ void lcd_enable (void)
 {
 }
 
-/*----------------------------------------------------------------------*/
-#ifdef NOT_USED_SO_FAR
-static void lcd_disable (void)
-{
-}
-#endif /* NOT_USED_SO_FAR */
-
-/*----------------------------------------------------------------------*/
-
 /************************************************************************/
 /* ** PXA255 specific routines                                         */
 /************************************************************************/
index afcb008..8d53395 100644 (file)
@@ -60,77 +60,15 @@ enum {
        LCD_MAX_LOG2_BPP        = 4,            /* 2^4 = 16 bpp */
 };
 
-int lcd_line_length;
-int lcd_color_fg;
-int lcd_color_bg;
-
-void *lcd_base;                        /* Start of framebuffer memory  */
-void *lcd_console_address;     /* Start of console buffer      */
-
-short console_col;
-short console_row;
-
 vidinfo_t panel_info = {
        /* Insert a value here so that we don't end up in the BSS */
        .vl_col = -1,
 };
 
-char lcd_cursor_enabled;
-
-ushort lcd_cursor_width;
-ushort lcd_cursor_height;
-
 #ifndef CONFIG_OF_CONTROL
 #error "You must enable CONFIG_OF_CONTROL to get Tegra LCD support"
 #endif
 
-void lcd_cursor_size(ushort width, ushort height)
-{
-       lcd_cursor_width = width;
-       lcd_cursor_height = height;
-}
-
-void lcd_toggle_cursor(void)
-{
-       ushort x, y;
-       uchar *dest;
-       ushort row;
-
-       x = console_col * lcd_cursor_width;
-       y = console_row * lcd_cursor_height;
-       dest = (uchar *)(lcd_base + y * lcd_line_length + x * (1 << LCD_BPP) /
-                       8);
-
-       for (row = 0; row < lcd_cursor_height; ++row, dest += lcd_line_length) {
-               ushort *d = (ushort *)dest;
-               ushort color;
-               int i;
-
-               for (i = 0; i < lcd_cursor_width; ++i) {
-                       color = *d;
-                       color ^= lcd_color_fg;
-                       *d = color;
-                       ++d;
-               }
-       }
-}
-
-void lcd_cursor_on(void)
-{
-       lcd_cursor_enabled = 1;
-       lcd_toggle_cursor();
-}
-void lcd_cursor_off(void)
-{
-       lcd_cursor_enabled = 0;
-       lcd_toggle_cursor();
-}
-
-char lcd_is_cursor_enabled(void)
-{
-       return lcd_cursor_enabled;
-}
-
 static void update_panel_size(struct fdt_disp_config *config)
 {
        panel_info.vl_col = config->width;
@@ -150,8 +88,6 @@ void lcd_ctrl_init(void *lcdbase)
 
        assert(disp_config);
 
-       lcd_base = (void *)disp_config->frame_buffer;
-
        /* Make sure that we can acommodate the selected LCD */
        assert(disp_config->width <= LCD_MAX_WIDTH);
        assert(disp_config->height <= LCD_MAX_HEIGHT);
@@ -172,7 +108,7 @@ void lcd_ctrl_init(void *lcdbase)
        /* Enable flushing after LCD writes if requested */
        lcd_set_flush_dcache(config.cache_type & FDT_LCD_CACHE_FLUSH);
 
-       debug("LCD frame buffer at %p\n", lcd_base);
+       debug("LCD frame buffer at %08X\n", disp_config->frame_buffer);
 }
 
 ulong calc_fbsize(void)
index 868a0b8..60cccff 100644 (file)
@@ -39,6 +39,7 @@
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
 #define CONFIG_LCD
+#define CONFIG_MPC8XX_LCD
 #undef  CONFIG_EDT32F10
 #define CONFIG_SHARP_LQ057Q3DC02
 
index b042c67..d4bcc62 100644 (file)
@@ -47,6 +47,7 @@
 #endif
 #define CONFIG_KEYBOARD                1       /* This board has a custom keybpard */
 #define CONFIG_LCD             1       /* use LCD controller ...       */
+#define CONFIG_MPC8XX_LCD
 #define CONFIG_HITACHI_SP19X001_Z1A    /* The LCD type we use */
 
 #define        CONFIG_8xx_CONS_SMC2    1       /* Console is on SMC2           */
index 67ab1e9..d8e28d5 100644 (file)
@@ -54,6 +54,7 @@
 #define        CONFIG_SYS_TEXT_BASE    0xff000000
 
 #ifdef CONFIG_LCD                      /* with LCD controller ?        */
+#define CONFIG_MPC8XX_LCD
 #define CONFIG_SPLASH_SCREEN           /* ... with splashscreen support*/
 #endif
 
index e2b22f0..e2ea016 100644 (file)
 #define        CONFIG_RTC_MPC8xx               /* use internal RTC of MPC8xx   */
 
 
-#ifndef CONFIG_LCD
+#ifdef CONFIG_LCD
+#define CONFIG_MPC8XX_LCD
+#else
 #define CONFIG_VIDEO           1       /* To enable the video initialization */
 
 /* Video related */
index 9fac5d1..cccf3af 100644 (file)
@@ -39,6 +39,7 @@
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
 #ifdef CONFIG_LCD                      /* with LCD controller ?        */
+#define CONFIG_MPC8XX_LCD
 #define CONFIG_LCD_LOGO                1       /* print our logo on the LCD    */
 #define CONFIG_LCD_INFO                1       /* ... and some board info      */
 #define        CONFIG_SPLASH_SCREEN            /* ... with splashscreen support*/
index 932f158..b2d1af0 100644 (file)
@@ -39,6 +39,7 @@
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
 #ifdef CONFIG_LCD                      /* with LCD controller ?        */
+#define CONFIG_MPC8XX_LCD
 /* #define CONFIG_NEC_NL6448BC20 1 / * use NEC NL6448BC20 display      */
 #endif
 
index 5886a15..b99a056 100644 (file)
@@ -38,6 +38,7 @@
 #define CONFIG_LUBBOCK         1       /* on an LUBBOCK Board      */
 #define CONFIG_LCD             1
 #ifdef CONFIG_LCD
+#define CONFIG_PXA_LCD
 #define CONFIG_SHARP_LM8V31
 #endif
 #define CONFIG_MMC
index df49781..3c02b73 100644 (file)
@@ -54,6 +54,7 @@
 #define CONFIG_MISC_INIT_R     1       /* Call misc_init_r()           */
 
 #define CONFIG_LCD             1       /* use LCD controller ...       */
+#define CONFIG_MPC8XX_LCD
 #define CONFIG_HLD1045         1       /* ... with a HLD1045 display   */
 
 #define CONFIG_LCD_LOGO                1       /* print our logo on the LCD    */
index 3f9802c..4ee2e46 100644 (file)
@@ -72,6 +72,7 @@
 #define        CONFIG_CMD_MMC
 #define        CONFIG_CMD_IDE
 #define        CONFIG_LCD
+#define        CONFIG_PXA_LCD
 
 /*
  * MMC Card Configuration
index 64771e7..70fe05c 100644 (file)
@@ -74,6 +74,7 @@
 #define        CONFIG_CMD_ENV
 #define        CONFIG_CMD_MMC
 #define        CONFIG_LCD
+#define        CONFIG_PXA_LCD
 
 /*
  * MMC Card Configuration
index 5a15af6..39c167f 100644 (file)
@@ -59,6 +59,7 @@
 
 #undef CONFIG_LCD
 #ifdef CONFIG_LCD
+#define CONFIG_PXA_LCD
 #define CONFIG_SHARP_LM8V31
 #endif
 
index 2b24997..3c8c74d 100644 (file)
@@ -38,6 +38,7 @@
 /* SC85T,SC860T, FEL8xx-AT(855T/860T) */
 /*#define CONFIG_FEL8xx_AT */
 /*#define CONFIG_LCD */
+/*#define CONFIG_MPC8XX_LCD*/
 /* if core > 50MHz , un-comment CONFIG_BUS_DIV2 */
 /* #define CONFIG_50MHz */
 /* #define CONFIG_66MHz */
index e36d249..f9965db 100644 (file)
@@ -39,6 +39,7 @@
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
 #define CONFIG_LCD
+#define CONFIG_MPC8XX_LCD
 #define CONFIG_SHARP_LQ084V1DG21
 #undef CONFIG_LCD_LOGO
 
index b92f70b..f79dd3b 100644 (file)
 #ifdef CONFIG_CMD_SPI
 #define        CONFIG_SOFT_SPI
 #define        CONFIG_LCD
+#define        CONFIG_PXA_LCD
 #define        CONFIG_LMS283GF05
 #define        CONFIG_VIDEO_LOGO
 #define        CONFIG_CMD_BMP
index 4ac4ddd..2679152 100644 (file)
 extern char lcd_is_enabled;
 
 extern int lcd_line_length;
-extern int lcd_color_fg;
-extern int lcd_color_bg;
 
-/*
- * Frame buffer memory information
- */
-extern void *lcd_base;         /* Start of framebuffer memory  */
-extern void *lcd_console_address;      /* Start of console buffer      */
-
-extern short console_col;
-extern short console_row;
 extern struct vidinfo panel_info;
 
-extern void lcd_ctrl_init (void *lcdbase);
-extern void lcd_enable (void);
-extern int board_splash_screen_prepare(void);
+void lcd_ctrl_init(void *lcdbase);
+void lcd_enable(void);
+int board_splash_screen_prepare(void);
 
 /* setcolreg used in 8bpp/16bpp; initcolregs used in monochrome */
-extern void lcd_setcolreg (ushort regno,
-                               ushort red, ushort green, ushort blue);
-extern void lcd_initcolregs (void);
+void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue);
+void lcd_initcolregs(void);
+
+int lcd_getfgcolor(void);
 
 /* gunzip_bmp used if CONFIG_VIDEO_BMP_GZIP */
-extern struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp);
-extern int bmp_display(ulong addr, int x, int y);
+struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp);
+int bmp_display(ulong addr, int x, int y);
 
 /**
  * Set whether we need to flush the dcache when changing the LCD image. This
@@ -267,7 +258,6 @@ typedef struct vidinfo {
        unsigned int sclk_div;
 
        unsigned int dual_lcd_enabled;
-
 } vidinfo_t;
 
 void init_panel_info(vidinfo_t *vid);
@@ -292,14 +282,12 @@ extern vidinfo_t panel_info;
 /* Video functions */
 
 #if defined(CONFIG_RBC823)
-void   lcd_disable     (void);
+void   lcd_disable(void);
 #endif
 
-
-/* int lcd_init        (void *lcdbase); */
-void   lcd_putc        (const char c);
-void   lcd_puts        (const char *s);
-void   lcd_printf      (const char *fmt, ...);
+void   lcd_putc(const char c);
+void   lcd_puts(const char *s);
+void   lcd_printf(const char *fmt, ...);
 void   lcd_clear(void);
 int    lcd_display_bitmap(ulong bmp_image, int x, int y);
 
@@ -359,7 +347,7 @@ int lcd_get_size(int *line_length);
  *  is connected, as we can't autodetect anything.
  */
 #define CONFIG_SYS_HIGH        0       /* Pins are active high                 */
-#define CONFIG_SYS_LOW         1       /* Pins are active low                  */
+#define CONFIG_SYS_LOW 1       /* Pins are active low                  */
 
 #define LCD_MONOCHROME 0
 #define LCD_COLOR2     1
@@ -373,10 +361,10 @@ int lcd_get_size(int *line_length);
 # define LCD_INFO_Y            (BMP_LOGO_HEIGHT + VIDEO_FONT_HEIGHT)
 #elif defined(CONFIG_LCD_LOGO)
 # define LCD_INFO_X            (BMP_LOGO_WIDTH + 4 * VIDEO_FONT_WIDTH)
-# define LCD_INFO_Y            (VIDEO_FONT_HEIGHT)
+# define LCD_INFO_Y            VIDEO_FONT_HEIGHT
 #else
-# define LCD_INFO_X            (VIDEO_FONT_WIDTH)
-# define LCD_INFO_Y            (VIDEO_FONT_HEIGHT)
+# define LCD_INFO_X            VIDEO_FONT_WIDTH
+# define LCD_INFO_Y            VIDEO_FONT_HEIGHT
 #endif
 
 /* Default to 8bpp if bit depth not specified */
@@ -432,34 +420,6 @@ int lcd_get_size(int *line_length);
 # define PAGE_SIZE     4096
 #endif
 
-/************************************************************************/
-/* ** 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)
-
-#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
-
 /************************************************************************/
 
 #endif /* _LCD_H_ */