mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-09 12:13:00 -04:00
ppc4xx: Rework Lime support for lwmon5
Rework Lime support for lwmon5 using new video driver Signed-off-by: Anatolij Gustschin <agust@denx.de>
This commit is contained in:
parent
ff41ffc93c
commit
d610a60730
@ -233,78 +233,6 @@ int misc_init_r(void)
|
|||||||
reg = mfdcr(plb4_acr) & ~PLB4_ACR_WRP;
|
reg = mfdcr(plb4_acr) & ~PLB4_ACR_WRP;
|
||||||
mtdcr(plb4_acr, reg);
|
mtdcr(plb4_acr, reg);
|
||||||
|
|
||||||
/*
|
|
||||||
* Reset Lime controller
|
|
||||||
*/
|
|
||||||
gpio_write_bit(CFG_GPIO_LIME_S, 1);
|
|
||||||
udelay(500);
|
|
||||||
gpio_write_bit(CFG_GPIO_LIME_RST, 1);
|
|
||||||
|
|
||||||
/* Lime memory clock adjusted to 100MHz */
|
|
||||||
out_be32((void *)CFG_LIME_SDRAM_CLOCK, CFG_LIME_CLOCK_100MHZ);
|
|
||||||
/* Wait untill time expired. Because of requirements in lime manual */
|
|
||||||
udelay(300);
|
|
||||||
/* Write lime controller memory parameters */
|
|
||||||
out_be32((void *)CFG_LIME_MMR, CFG_LIME_MMR_VALUE);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Init display controller
|
|
||||||
*/
|
|
||||||
/* Setup dot clock (internal PLL, division rate 1/16) */
|
|
||||||
out_be32((void *)0xc1fd0100, 0x00000f00);
|
|
||||||
|
|
||||||
/* Lime L0 init (16 bpp, 640x480) */
|
|
||||||
out_be32((void *)0xc1fd0020, 0x801401df);
|
|
||||||
out_be32((void *)0xc1fd0024, 0x0);
|
|
||||||
out_be32((void *)0xc1fd0028, 0x0);
|
|
||||||
out_be32((void *)0xc1fd002c, 0x0);
|
|
||||||
out_be32((void *)0xc1fd0110, 0x0);
|
|
||||||
out_be32((void *)0xc1fd0114, 0x0);
|
|
||||||
out_be32((void *)0xc1fd0118, 0x01df0280);
|
|
||||||
|
|
||||||
/* Display timing init */
|
|
||||||
out_be32((void *)0xc1fd0004, 0x031f0000);
|
|
||||||
out_be32((void *)0xc1fd0008, 0x027f027f);
|
|
||||||
out_be32((void *)0xc1fd000c, 0x015f028f);
|
|
||||||
out_be32((void *)0xc1fd0010, 0x020c0000);
|
|
||||||
out_be32((void *)0xc1fd0014, 0x01df01ea);
|
|
||||||
out_be32((void *)0xc1fd0018, 0x0);
|
|
||||||
out_be32((void *)0xc1fd001c, 0x01e00280);
|
|
||||||
|
|
||||||
#if 1
|
|
||||||
/*
|
|
||||||
* Clear framebuffer using Lime's drawing engine
|
|
||||||
* (draw blue rect. with white border around it)
|
|
||||||
*/
|
|
||||||
/* Setup mode and fbbase, xres, fg, bg */
|
|
||||||
out_be32((void *)0xc1ff0420, 0x8300);
|
|
||||||
out_be32((void *)0xc1ff0440, 0x0000);
|
|
||||||
out_be32((void *)0xc1ff0444, 0x0280);
|
|
||||||
out_be32((void *)0xc1ff0480, 0x7fff);
|
|
||||||
out_be32((void *)0xc1ff0484, 0x0000);
|
|
||||||
/* Reset clipping rectangle */
|
|
||||||
out_be32((void *)0xc1ff0454, 0x0000);
|
|
||||||
out_be32((void *)0xc1ff0458, 0x0280);
|
|
||||||
out_be32((void *)0xc1ff045c, 0x0000);
|
|
||||||
out_be32((void *)0xc1ff0460, 0x01e0);
|
|
||||||
/* Draw white rect. */
|
|
||||||
out_be32((void *)0xc1ff04a0, 0x09410000);
|
|
||||||
out_be32((void *)0xc1ff04a0, 0x00000000);
|
|
||||||
out_be32((void *)0xc1ff04a0, 0x01e00280);
|
|
||||||
udelay(2000);
|
|
||||||
/* Draw blue rect. */
|
|
||||||
out_be32((void *)0xc1ff0480, 0x001f);
|
|
||||||
out_be32((void *)0xc1ff04a0, 0x09410000);
|
|
||||||
out_be32((void *)0xc1ff04a0, 0x00010001);
|
|
||||||
out_be32((void *)0xc1ff04a0, 0x01de027e);
|
|
||||||
#endif
|
|
||||||
/* Display enable, L0 layer */
|
|
||||||
out_be32((void *)0xc1fd0100, 0x80010f00);
|
|
||||||
|
|
||||||
/* TFT-LCD enable - PWM duty, lamp on */
|
|
||||||
out_be32((void *)0xc4000024, 0x64);
|
|
||||||
out_be32((void *)0xc4000020, 0x701);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Init matrix keyboard
|
* Init matrix keyboard
|
||||||
*/
|
*/
|
||||||
@ -562,3 +490,88 @@ U_BOOT_CMD(
|
|||||||
"eepromwp- eeprom write protect off/on\n",
|
"eepromwp- eeprom write protect off/on\n",
|
||||||
"<on|off> - enable (on) or disable (off) I2C EEPROM write protect\n"
|
"<on|off> - enable (on) or disable (off) I2C EEPROM write protect\n"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#if defined(CONFIG_VIDEO)
|
||||||
|
#include <video_fb.h>
|
||||||
|
#include <mb862xx.h>
|
||||||
|
|
||||||
|
extern GraphicDevice mb862xx;
|
||||||
|
|
||||||
|
static const gdc_regs init_regs [] =
|
||||||
|
{
|
||||||
|
{0x0100, 0x00000f00},
|
||||||
|
{0x0020, 0x801401df},
|
||||||
|
{0x0024, 0x00000000},
|
||||||
|
{0x0028, 0x00000000},
|
||||||
|
{0x002c, 0x00000000},
|
||||||
|
{0x0110, 0x00000000},
|
||||||
|
{0x0114, 0x00000000},
|
||||||
|
{0x0118, 0x01df0280},
|
||||||
|
{0x0004, 0x031f0000},
|
||||||
|
{0x0008, 0x027f027f},
|
||||||
|
{0x000c, 0x015f028f},
|
||||||
|
{0x0010, 0x020c0000},
|
||||||
|
{0x0014, 0x01df01ea},
|
||||||
|
{0x0018, 0x00000000},
|
||||||
|
{0x001c, 0x01e00280},
|
||||||
|
{0x0100, 0x80010f00},
|
||||||
|
{0x0, 0x0}
|
||||||
|
};
|
||||||
|
|
||||||
|
const gdc_regs *board_get_regs (void)
|
||||||
|
{
|
||||||
|
return init_regs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns Lime base address */
|
||||||
|
unsigned int board_video_init (void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Reset Lime controller
|
||||||
|
*/
|
||||||
|
gpio_write_bit(CFG_GPIO_LIME_S, 1);
|
||||||
|
udelay(500);
|
||||||
|
gpio_write_bit(CFG_GPIO_LIME_RST, 1);
|
||||||
|
|
||||||
|
/* Lime memory clock adjusted to 100MHz */
|
||||||
|
out_be32((void *)CFG_LIME_SDRAM_CLOCK, CFG_LIME_CLOCK_100MHZ);
|
||||||
|
/* Wait untill time expired. Because of requirements in lime manual */
|
||||||
|
udelay(300);
|
||||||
|
/* Write lime controller memory parameters */
|
||||||
|
out_be32((void *)CFG_LIME_MMR, CFG_LIME_MMR_VALUE);
|
||||||
|
|
||||||
|
mb862xx.winSizeX = 640;
|
||||||
|
mb862xx.winSizeY = 480;
|
||||||
|
mb862xx.gdfBytesPP = 2;
|
||||||
|
mb862xx.gdfIndex = GDF_15BIT_555RGB;
|
||||||
|
|
||||||
|
return CFG_LIME_BASE_0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_backlight_switch (int flag)
|
||||||
|
{
|
||||||
|
if (flag) {
|
||||||
|
/* pwm duty, lamp on */
|
||||||
|
out_be32((void *)(CFG_FPGA_BASE_0 + 0x00000024), 0x64);
|
||||||
|
out_be32((void *)(CFG_FPGA_BASE_0 + 0x00000020), 0x701);
|
||||||
|
} else {
|
||||||
|
/* lamp off */
|
||||||
|
out_be32((void *)(CFG_FPGA_BASE_0 + 0x00000024), 0x00);
|
||||||
|
out_be32((void *)(CFG_FPGA_BASE_0 + 0x00000020), 0x00);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_CONSOLE_EXTRA_INFO)
|
||||||
|
/*
|
||||||
|
* Return text to be printed besides the logo.
|
||||||
|
*/
|
||||||
|
void video_get_info_str (int line_number, char *info)
|
||||||
|
{
|
||||||
|
if (line_number == 1) {
|
||||||
|
strcpy (info, " Board: Lwmon5 (Liebherr Elektronik GmbH)");
|
||||||
|
} else {
|
||||||
|
info [0] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif /* CONFIG_VIDEO */
|
||||||
|
@ -248,6 +248,18 @@
|
|||||||
#define CONFIG_HAS_ETH1 1 /* add support for "eth1addr" */
|
#define CONFIG_HAS_ETH1 1 /* add support for "eth1addr" */
|
||||||
#define CONFIG_PHY1_ADDR 1
|
#define CONFIG_PHY1_ADDR 1
|
||||||
|
|
||||||
|
/* Video console */
|
||||||
|
#define CONFIG_VIDEO
|
||||||
|
#define CONFIG_VIDEO_MB862xx
|
||||||
|
#define CONFIG_CFB_CONSOLE
|
||||||
|
#define CONFIG_VIDEO_LOGO
|
||||||
|
#define CONFIG_CONSOLE_EXTRA_INFO
|
||||||
|
#define VIDEO_FB_16BPP_PIXEL_SWAP
|
||||||
|
|
||||||
|
#define CONFIG_VGA_AS_SINGLE_DEVICE
|
||||||
|
#define CONFIG_VIDEO_SW_CURSOR
|
||||||
|
#define CONFIG_SPLASH_SCREEN
|
||||||
|
|
||||||
/* USB */
|
/* USB */
|
||||||
#ifdef CONFIG_440EPX
|
#ifdef CONFIG_440EPX
|
||||||
#define CONFIG_USB_OHCI
|
#define CONFIG_USB_OHCI
|
||||||
@ -294,6 +306,10 @@
|
|||||||
#define CONFIG_CMD_REGINFO
|
#define CONFIG_CMD_REGINFO
|
||||||
#define CONFIG_CMD_SDRAM
|
#define CONFIG_CMD_SDRAM
|
||||||
|
|
||||||
|
#ifdef CONFIG_VIDEO
|
||||||
|
#define CONFIG_CMD_BMP
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_440EPX
|
#ifdef CONFIG_440EPX
|
||||||
#define CONFIG_CMD_USB
|
#define CONFIG_CMD_USB
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user