64 lines
1.3 KiB
C
64 lines
1.3 KiB
C
#include <config.h>
|
|
#include <common.h>
|
|
#include <command.h>
|
|
#include <version.h>
|
|
#include <stdarg.h>
|
|
#include <linux/types.h>
|
|
|
|
#include <lcd.h>
|
|
#include <asm/arc_pgu.h>
|
|
|
|
#ifdef CONFIG_LCD
|
|
|
|
char lcd_is_enabled;
|
|
|
|
int lcd_line_length;
|
|
int lcd_color_fg = 0xffff;
|
|
int lcd_color_bg = 0x0;
|
|
|
|
/*
|
|
* 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;
|
|
vidinfo_t panel_info = {
|
|
vl_col: 640,
|
|
vl_row: 480,
|
|
vl_bpix: 4,
|
|
hsync: 0x3f4f031f,
|
|
vsync: 0x020c01f0,
|
|
max_freq: 23850000
|
|
};
|
|
|
|
#define PGU_BASEADDR 0xC0FC8000
|
|
|
|
static arc_pgu *pgu_ptr = (arc_pgu *)PGU_BASEADDR;
|
|
|
|
void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue)
|
|
{
|
|
}
|
|
|
|
void lcd_ctrl_init(void *lcdbase)
|
|
{
|
|
lcd_base = lcdbase;
|
|
pgu_ptr->frm_start = (unsigned)lcdbase;
|
|
pgu_ptr->disp_dim = ENCODE_PGU_DIMS(panel_info.vl_col, panel_info.vl_row);
|
|
pgu_ptr->stride = 2 * panel_info.vl_col;
|
|
|
|
pgu_ptr->statctrl = STATCTRL_CONT_B_MASK | STATCTRL_PIX_FMT_RGB555 |
|
|
STATCTRL_HPOL_MASK | STATCTRL_VPOL_MASK | STATCTRL_DPOL_MASK;
|
|
}
|
|
|
|
void lcd_enable(void)
|
|
{
|
|
pgu_ptr->statctrl |= STATCTRL_REG_DISP_EN_MASK;
|
|
while ((pgu_ptr->statctrl & STATCTRL_DISP_BUSY_MASK) &&
|
|
(pgu_ptr->statctrl & STATCTRL_BU_BUSY_MASK));
|
|
}
|
|
|
|
#endif
|
|
|