diff options
30 files changed, 126 insertions, 436 deletions
| diff --git a/api/api_display.c b/api/api_display.c index 643917088..c167db7b1 100644 --- a/api/api_display.c +++ b/api/api_display.c @@ -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  	} diff --git a/arch/arm/cpu/pxa/Makefile b/arch/arm/cpu/pxa/Makefile index e08883256..9f63c3401 100644 --- a/arch/arm/cpu/pxa/Makefile +++ b/arch/arm/cpu/pxa/Makefile @@ -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 diff --git a/arch/powerpc/cpu/mpc8xx/Makefile b/arch/powerpc/cpu/mpc8xx/Makefile index 0d1a12c45..ef10e2d02 100644 --- a/arch/powerpc/cpu/mpc8xx/Makefile +++ b/arch/powerpc/cpu/mpc8xx/Makefile @@ -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 diff --git a/board/cm_t35/display.c b/board/cm_t35/display.c index 2f78bad6e..a004ea1d8 100644 --- a/board/cm_t35/display.c +++ b/board/cm_t35/display.c @@ -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; diff --git a/board/mcc200/lcd.c b/board/mcc200/lcd.c index 893f4b7cb..24f0abddf 100644 --- a/board/mcc200/lcd.c +++ b/board/mcc200/lcd.c @@ -68,19 +68,6 @@ 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 @@ -88,13 +75,6 @@ short console_row = 0;  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   */  extern int serial_init_dev (unsigned long dev_base); @@ -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++) { diff --git a/common/lcd.c b/common/lcd.c index 77914adbc..b98eea669 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -83,9 +83,35 @@  #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;  } - -/************************************************************************/ -/************************************************************************/ diff --git a/drivers/video/Makefile b/drivers/video/Makefile index e8cecca55..53952ab07 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile @@ -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 index ffa1c399e..000000000 --- a/drivers/video/amba.c +++ /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, ®s->cntl); - -	writel(config->tim0, ®s->tim0); -	writel(config->tim1, ®s->tim1); -	writel(config->tim2, ®s->tim2); -	writel(config->tim3, ®s->tim3); -	writel((u32)lcdbase, ®s->ubas); -	/* finally, enable */ -	writel(cntl | CNTL_LCDEN, ®s->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; -} diff --git a/drivers/video/atmel_hlcdfb.c b/drivers/video/atmel_hlcdfb.c index b10ca4b67..fc9589774 100644 --- a/drivers/video/atmel_hlcdfb.c +++ b/drivers/video/atmel_hlcdfb.c @@ -29,16 +29,6 @@  #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 diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c index c02ffd803..2afeab2ff 100644 --- a/drivers/video/atmel_lcdfb.c +++ b/drivers/video/atmel_lcdfb.c @@ -29,16 +29,6 @@  #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 diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c index 26f673a96..61e1058ad 100644 --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -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) diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c index ee0ed06d6..c0f1830dc 100644 --- a/drivers/video/exynos_fb.c +++ b/drivers/video/exynos_fb.c @@ -33,15 +33,7 @@  #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(); diff --git a/arch/powerpc/cpu/mpc8xx/lcd.c b/drivers/video/mpc8xx_lcd.c index 4b88b21b3..f0f728e22 100644 --- a/arch/powerpc/cpu/mpc8xx/lcd.c +++ b/drivers/video/mpc8xx_lcd.c @@ -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) diff --git a/arch/arm/cpu/pxa/pxafb.c b/drivers/video/pxa_lcd.c index 987fa0682..b40ec3689 100644 --- a/arch/arm/cpu/pxa/pxafb.c +++ b/drivers/video/pxa_lcd.c @@ -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  ------------------- */ @@ -361,14 +335,6 @@ void lcd_ctrl_init (void *lcdbase)  }  /*----------------------------------------------------------------------*/ -#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  lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue) @@ -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						*/  /************************************************************************/ diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c index afcb00881..8d533955a 100644 --- a/drivers/video/tegra.c +++ b/drivers/video/tegra.c @@ -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) diff --git a/include/configs/R360MPI.h b/include/configs/R360MPI.h index 868a0b804..60cccffc4 100644 --- a/include/configs/R360MPI.h +++ b/include/configs/R360MPI.h @@ -39,6 +39,7 @@  #define	CONFIG_SYS_TEXT_BASE	0x40000000  #define CONFIG_LCD +#define CONFIG_MPC8XX_LCD  #undef  CONFIG_EDT32F10  #define CONFIG_SHARP_LQ057Q3DC02 diff --git a/include/configs/RBC823.h b/include/configs/RBC823.h index b042c6702..d4bcc62e4 100644 --- a/include/configs/RBC823.h +++ b/include/configs/RBC823.h @@ -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		*/ diff --git a/include/configs/RPXlite_DW.h b/include/configs/RPXlite_DW.h index 67ab1e962..d8e28d5ea 100644 --- a/include/configs/RPXlite_DW.h +++ b/include/configs/RPXlite_DW.h @@ -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 diff --git a/include/configs/RRvision.h b/include/configs/RRvision.h index e2b22f0ba..e2ea01638 100644 --- a/include/configs/RRvision.h +++ b/include/configs/RRvision.h @@ -110,7 +110,9 @@  #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 */ diff --git a/include/configs/TQM823L.h b/include/configs/TQM823L.h index 9fac5d15c..cccf3afb6 100644 --- a/include/configs/TQM823L.h +++ b/include/configs/TQM823L.h @@ -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*/ diff --git a/include/configs/TQM823M.h b/include/configs/TQM823M.h index 932f158b2..b2d1af0dd 100644 --- a/include/configs/TQM823M.h +++ b/include/configs/TQM823M.h @@ -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 diff --git a/include/configs/lubbock.h b/include/configs/lubbock.h index 5886a155d..b99a05690 100644 --- a/include/configs/lubbock.h +++ b/include/configs/lubbock.h @@ -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 diff --git a/include/configs/lwmon.h b/include/configs/lwmon.h index df4978161..3c02b73d8 100644 --- a/include/configs/lwmon.h +++ b/include/configs/lwmon.h @@ -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	*/ diff --git a/include/configs/palmld.h b/include/configs/palmld.h index 3f9802ca0..4ee2e46cd 100644 --- a/include/configs/palmld.h +++ b/include/configs/palmld.h @@ -72,6 +72,7 @@  #define	CONFIG_CMD_MMC  #define	CONFIG_CMD_IDE  #define	CONFIG_LCD +#define	CONFIG_PXA_LCD  /*   * MMC Card Configuration diff --git a/include/configs/palmtc.h b/include/configs/palmtc.h index 64771e7e8..70fe05c51 100644 --- a/include/configs/palmtc.h +++ b/include/configs/palmtc.h @@ -74,6 +74,7 @@  #define	CONFIG_CMD_ENV  #define	CONFIG_CMD_MMC  #define	CONFIG_LCD +#define	CONFIG_PXA_LCD  /*   * MMC Card Configuration diff --git a/include/configs/pxa255_idp.h b/include/configs/pxa255_idp.h index 5a15af6b6..39c167fc6 100644 --- a/include/configs/pxa255_idp.h +++ b/include/configs/pxa255_idp.h @@ -59,6 +59,7 @@  #undef CONFIG_LCD  #ifdef CONFIG_LCD +#define CONFIG_PXA_LCD  #define CONFIG_SHARP_LM8V31  #endif diff --git a/include/configs/svm_sc8xx.h b/include/configs/svm_sc8xx.h index 2b24997f8..3c8c74d59 100644 --- a/include/configs/svm_sc8xx.h +++ b/include/configs/svm_sc8xx.h @@ -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 */ diff --git a/include/configs/v37.h b/include/configs/v37.h index e36d2491c..f9965db3c 100644 --- a/include/configs/v37.h +++ b/include/configs/v37.h @@ -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 diff --git a/include/configs/zipitz2.h b/include/configs/zipitz2.h index b92f70b53..f79dd3bbd 100644 --- a/include/configs/zipitz2.h +++ b/include/configs/zipitz2.h @@ -103,6 +103,7 @@  #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 diff --git a/include/lcd.h b/include/lcd.h index 4ac4ddd1e..267915219 100644 --- a/include/lcd.h +++ b/include/lcd.h @@ -32,31 +32,22 @@  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 */ @@ -433,33 +421,5 @@ int lcd_get_size(int *line_length);  #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_ */ |