Add "cls" function to MPC823 LCD driver so we can reinitialize the
display even after showing a bitmap
This commit is contained in:
parent
021bfcd3c6
commit
c3f4d17e05
@ -2,6 +2,9 @@
|
|||||||
Changes since U-Boot 1.1.1:
|
Changes since U-Boot 1.1.1:
|
||||||
======================================================================
|
======================================================================
|
||||||
|
|
||||||
|
* Add "cls" function to MPC823 LCD driver so we can reinitialize the
|
||||||
|
display even after showing a bitmap
|
||||||
|
|
||||||
* Patch by Josef Wagner, 04 Jun 2004:
|
* Patch by Josef Wagner, 04 Jun 2004:
|
||||||
- DDR Ram support for PM520 (MPC5200)
|
- DDR Ram support for PM520 (MPC5200)
|
||||||
- support for different flash types (PM520)
|
- support for different flash types (PM520)
|
||||||
|
|||||||
@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
#include <command.h>
|
||||||
#include <watchdog.h>
|
#include <watchdog.h>
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
@ -434,8 +435,9 @@ static void lcd_drawchars (ushort x, ushort y, uchar *str, int count);
|
|||||||
static inline void lcd_puts_xy (ushort x, ushort y, uchar *s);
|
static inline void lcd_puts_xy (ushort x, ushort y, uchar *s);
|
||||||
static inline void lcd_putc_xy (ushort x, ushort y, uchar c);
|
static inline void lcd_putc_xy (ushort x, ushort y, uchar c);
|
||||||
|
|
||||||
int lcd_init (void *lcdbase);
|
static int lcd_init (void *lcdbase);
|
||||||
|
|
||||||
|
static int lcd_clear (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]);
|
||||||
static void lcd_ctrl_init (void *lcdbase);
|
static void lcd_ctrl_init (void *lcdbase);
|
||||||
static void lcd_enable (void);
|
static void lcd_enable (void);
|
||||||
static void *lcd_logo (void);
|
static void *lcd_logo (void);
|
||||||
@ -718,13 +720,8 @@ int drv_lcd_init (void)
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
int lcd_init (void *lcdbase)
|
static int lcd_clear (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
/* Initialize the lcd controller */
|
|
||||||
debug ("[LCD] Initializing LCD frambuffer at %p\n", lcdbase);
|
|
||||||
|
|
||||||
lcd_ctrl_init (lcdbase);
|
|
||||||
|
|
||||||
#if LCD_BPP == LCD_MONOCHROME
|
#if LCD_BPP == LCD_MONOCHROME
|
||||||
/* Setting the palette */
|
/* Setting the palette */
|
||||||
lcd_initcolregs();
|
lcd_initcolregs();
|
||||||
@ -758,13 +755,33 @@ int lcd_init (void *lcdbase)
|
|||||||
COLOR_MASK(lcd_getbgcolor()),
|
COLOR_MASK(lcd_getbgcolor()),
|
||||||
lcd_line_length*panel_info.vl_row);
|
lcd_line_length*panel_info.vl_row);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lcd_enable ();
|
|
||||||
|
|
||||||
/* Paint the logo and retrieve LCD base address */
|
/* Paint the logo and retrieve LCD base address */
|
||||||
debug ("[LCD] Drawing the logo...\n");
|
debug ("[LCD] Drawing the logo...\n");
|
||||||
lcd_console_address = lcd_logo ();
|
lcd_console_address = lcd_logo ();
|
||||||
|
|
||||||
|
console_col = 0;
|
||||||
|
console_row = 0;
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
U_BOOT_CMD(
|
||||||
|
cls, 1, 1, lcd_clear,
|
||||||
|
"cls - clear screen\n",
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static int lcd_init (void *lcdbase)
|
||||||
|
{
|
||||||
|
/* Initialize the lcd controller */
|
||||||
|
debug ("[LCD] Initializing LCD frambuffer at %p\n", lcdbase);
|
||||||
|
|
||||||
|
lcd_ctrl_init (lcdbase);
|
||||||
|
lcd_clear (NULL, 1, 1, NULL); /* dummy args */
|
||||||
|
lcd_enable ();
|
||||||
|
|
||||||
/* Initialize the console */
|
/* Initialize the console */
|
||||||
console_col = 0;
|
console_col = 0;
|
||||||
#ifdef LCD_INFO_BELOW_LOGO
|
#ifdef LCD_INFO_BELOW_LOGO
|
||||||
|
|||||||
@ -297,12 +297,7 @@
|
|||||||
*
|
*
|
||||||
* If this is a 80 MHz CPU, set PLL multiplication factor to 5 (5*16=80)!
|
* If this is a 80 MHz CPU, set PLL multiplication factor to 5 (5*16=80)!
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_80MHz /* for 80 MHz, we use a 16 MHz clock * 5 */
|
|
||||||
#define CFG_PLPRCR \
|
|
||||||
( (5-1)<<PLPRCR_MF_SHIFT | PLPRCR_TEXPS | PLPRCR_TMIST )
|
|
||||||
#else /* up to 66 MHz we use a 1:1 clock */
|
|
||||||
#define CFG_PLPRCR (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
|
#define CFG_PLPRCR (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
|
||||||
#endif /* CONFIG_80MHz */
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------
|
/*-----------------------------------------------------------------------
|
||||||
* SCCR - System Clock and reset Control Register 15-27
|
* SCCR - System Clock and reset Control Register 15-27
|
||||||
@ -311,33 +306,15 @@
|
|||||||
* power management and some other internal clocks
|
* power management and some other internal clocks
|
||||||
*/
|
*/
|
||||||
#define SCCR_MASK SCCR_EBDF11
|
#define SCCR_MASK SCCR_EBDF11
|
||||||
#ifdef CONFIG_80MHz /* for 80 MHz, we use a 16 MHz clock * 5 */
|
#define CFG_SCCR (SCCR_COM00 | SCCR_DFSYNC00 | SCCR_DFBRG00 | \
|
||||||
#define CFG_SCCR (/* SCCR_TBS | */ \
|
|
||||||
SCCR_COM00 | SCCR_DFSYNC00 | SCCR_DFBRG00 | \
|
|
||||||
SCCR_DFNL000 | SCCR_DFNH000 | SCCR_DFLCD000 | \
|
SCCR_DFNL000 | SCCR_DFNH000 | SCCR_DFLCD000 | \
|
||||||
SCCR_DFALCD00)
|
SCCR_DFALCD00)
|
||||||
#else /* up to 66 MHz we use a 1:1 clock */
|
|
||||||
#define CFG_SCCR (SCCR_TBS | \
|
|
||||||
SCCR_COM00 | SCCR_DFSYNC00 | SCCR_DFBRG00 | \
|
|
||||||
SCCR_DFNL000 | SCCR_DFNH000 | SCCR_DFLCD000 | \
|
|
||||||
SCCR_DFALCD00)
|
|
||||||
#endif /* CONFIG_80MHz */
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------
|
/*-----------------------------------------------------------------------
|
||||||
* PCMCIA stuff
|
* PCMCIA stuff
|
||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifndef CONFIG_HMI10
|
|
||||||
#define CFG_PCMCIA_MEM_ADDR (0xE0000000)
|
|
||||||
#define CFG_PCMCIA_MEM_SIZE ( 64 << 20 )
|
|
||||||
#define CFG_PCMCIA_DMA_ADDR (0xE4000000)
|
|
||||||
#define CFG_PCMCIA_DMA_SIZE ( 64 << 20 )
|
|
||||||
#define CFG_PCMCIA_ATTRB_ADDR (0xE8000000)
|
|
||||||
#define CFG_PCMCIA_ATTRB_SIZE ( 64 << 20 )
|
|
||||||
#define CFG_PCMCIA_IO_ADDR (0xEC000000)
|
|
||||||
#define CFG_PCMCIA_IO_SIZE ( 64 << 20 )
|
|
||||||
#else /* CONFIG_HMI10 */
|
|
||||||
#define CFG_PCMCIA_MEM_ADDR (0xE0100000)
|
#define CFG_PCMCIA_MEM_ADDR (0xE0100000)
|
||||||
#define CFG_PCMCIA_MEM_SIZE ( 64 << 20 )
|
#define CFG_PCMCIA_MEM_SIZE ( 64 << 20 )
|
||||||
#define CFG_PCMCIA_DMA_ADDR (0xE4100000)
|
#define CFG_PCMCIA_DMA_ADDR (0xE4100000)
|
||||||
@ -348,7 +325,6 @@
|
|||||||
#define CFG_PCMCIA_IO_SIZE ( 64 << 20 )
|
#define CFG_PCMCIA_IO_SIZE ( 64 << 20 )
|
||||||
#define PCMCIA_MEM_WIN_NO 5
|
#define PCMCIA_MEM_WIN_NO 5
|
||||||
#define NSCU_OE_INV 1 /* PCMCIA_GCRX_CXOE is inverted */
|
#define NSCU_OE_INV 1 /* PCMCIA_GCRX_CXOE is inverted */
|
||||||
#endif
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------
|
/*-----------------------------------------------------------------------
|
||||||
* IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
|
* IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
|
||||||
@ -405,19 +381,8 @@
|
|||||||
/*
|
/*
|
||||||
* FLASH timing:
|
* FLASH timing:
|
||||||
*/
|
*/
|
||||||
#if defined(CONFIG_80MHz)
|
|
||||||
/* 80 MHz CPU - 40 MHz bus: ACS = 00, TRLX = 0, CSNT = 1, SCY = 3, EHTR = 1 */
|
|
||||||
#define CFG_OR_TIMING_FLASH (OR_ACS_DIV1 | 0 | OR_CSNT_SAM | \
|
|
||||||
OR_SCY_3_CLK | OR_EHTR | OR_BI)
|
|
||||||
#elif defined(CONFIG_66MHz)
|
|
||||||
/* 66 MHz CPU - 66 MHz bus: ACS = 00, TRLX = 1, CSNT = 1, SCY = 3, EHTR = 1 */
|
|
||||||
#define CFG_OR_TIMING_FLASH (OR_ACS_DIV1 | OR_TRLX | OR_CSNT_SAM | \
|
#define CFG_OR_TIMING_FLASH (OR_ACS_DIV1 | OR_TRLX | OR_CSNT_SAM | \
|
||||||
OR_SCY_3_CLK | OR_EHTR | OR_BI)
|
OR_SCY_3_CLK | OR_EHTR | OR_BI)
|
||||||
#else /* 50 MHz */
|
|
||||||
/* 50 MHz CPU - 50 MHz bus: ACS = 00, TRLX = 1, CSNT = 1, SCY = 2, EHTR = 1 */
|
|
||||||
#define CFG_OR_TIMING_FLASH (OR_ACS_DIV1 | OR_TRLX | OR_CSNT_SAM | \
|
|
||||||
OR_SCY_2_CLK | OR_EHTR | OR_BI)
|
|
||||||
#endif /*CONFIG_??MHz */
|
|
||||||
|
|
||||||
#define CFG_OR0_REMAP (CFG_REMAP_OR_AM | CFG_OR_TIMING_FLASH)
|
#define CFG_OR0_REMAP (CFG_REMAP_OR_AM | CFG_OR_TIMING_FLASH)
|
||||||
#define CFG_OR0_PRELIM (CFG_PRELIM_OR_AM | CFG_OR_TIMING_FLASH)
|
#define CFG_OR0_PRELIM (CFG_PRELIM_OR_AM | CFG_OR_TIMING_FLASH)
|
||||||
@ -478,13 +443,9 @@
|
|||||||
* 66 Mhz => 66.000.000 / Divider = 129
|
* 66 Mhz => 66.000.000 / Divider = 129
|
||||||
* 80 Mhz => 80.000.000 / Divider = 156
|
* 80 Mhz => 80.000.000 / Divider = 156
|
||||||
*/
|
*/
|
||||||
#if defined(CONFIG_80MHz)
|
|
||||||
#define CFG_MAMR_PTA 156
|
#define CFG_PTA_PER_CLK ((4096 * 32 * 1000) / (4 * 64))
|
||||||
#elif defined(CONFIG_66MHz)
|
#define CFG_MAMR_PTA 98
|
||||||
#define CFG_MAMR_PTA 129
|
|
||||||
#else /* 50 MHz */
|
|
||||||
#define CFG_MAMR_PTA 98
|
|
||||||
#endif /*CONFIG_??MHz */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For 16 MBit, refresh rates could be 31.3 us
|
* For 16 MBit, refresh rates could be 31.3 us
|
||||||
|
|||||||
@ -37,7 +37,7 @@ extern char lcd_is_enabled;
|
|||||||
|
|
||||||
/* Video functions */
|
/* Video functions */
|
||||||
|
|
||||||
int lcd_init (void *lcdbase);
|
/* int lcd_init (void *lcdbase); */
|
||||||
void lcd_putc (const char c);
|
void lcd_putc (const char c);
|
||||||
void lcd_puts (const char *s);
|
void lcd_puts (const char *s);
|
||||||
void lcd_printf (const char *fmt, ...);
|
void lcd_printf (const char *fmt, ...);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user