Merge branch 'for-v2013.04'
Conflicts: drivers/video/Makefile Signed-off-by: Anatolij Gustschin <agust@denx.de>
This commit is contained in:
commit
d0f34f10f1
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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++) {
|
||||
|
133
common/lcd.c
133
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
|
||||
|
||||
ulong lcd_setmem (ulong addr);
|
||||
#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
|
||||
|
||||
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,23 +119,26 @@ 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 short console_col;
|
||||
static short console_row;
|
||||
|
||||
static void *lcd_console_address;
|
||||
static void *lcd_base; /* Start of framebuffer memory */
|
||||
|
||||
static char lcd_flush_dcache; /* 1 to flush dcache after each lcd update */
|
||||
|
||||
|
||||
#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 */
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
/* Flush LCD activity to the caches */
|
||||
@ -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;
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
/************************************************************************/
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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();
|
||||
|
@ -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)
|
@ -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 */
|
||||
/************************************************************************/
|
@ -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)
|
||||
|
@ -39,6 +39,7 @@
|
||||
#define CONFIG_SYS_TEXT_BASE 0x40000000
|
||||
|
||||
#define CONFIG_LCD
|
||||
#define CONFIG_MPC8XX_LCD
|
||||
#undef CONFIG_EDT32F10
|
||||
#define CONFIG_SHARP_LQ057Q3DC02
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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*/
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -72,6 +72,7 @@
|
||||
#define CONFIG_CMD_MMC
|
||||
#define CONFIG_CMD_IDE
|
||||
#define CONFIG_LCD
|
||||
#define CONFIG_PXA_LCD
|
||||
|
||||
/*
|
||||
* MMC Card Configuration
|
||||
|
@ -74,6 +74,7 @@
|
||||
#define CONFIG_CMD_ENV
|
||||
#define CONFIG_CMD_MMC
|
||||
#define CONFIG_LCD
|
||||
#define CONFIG_PXA_LCD
|
||||
|
||||
/*
|
||||
* MMC Card Configuration
|
||||
|
@ -59,6 +59,7 @@
|
||||
|
||||
#undef CONFIG_LCD
|
||||
#ifdef CONFIG_LCD
|
||||
#define CONFIG_PXA_LCD
|
||||
#define CONFIG_SHARP_LM8V31
|
||||
#endif
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
@ -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_ */
|
||||
|
Loading…
Reference in New Issue
Block a user