All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anatolij Gustschin <agust@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] [PATCH] ppc4xx: Rework Lime support for lwmon5
Date: Fri, 11 Jan 2008 15:31:09 +0100	[thread overview]
Message-ID: <47877DAD.90903@denx.de> (raw)


Rework Lime support for lwmon5 using new video driver

Signed-off-by: Anatolij Gustschin <agust@denx.de>
---
 board/lwmon5/lwmon5.c    |  157 +++++++++++++++++++++++++---------------------
 include/configs/lwmon5.h |   16 +++++
 2 files changed, 101 insertions(+), 72 deletions(-)

diff --git a/board/lwmon5/lwmon5.c b/board/lwmon5/lwmon5.c
index 9b24a7e..815c01f 100644
--- a/board/lwmon5/lwmon5.c
+++ b/board/lwmon5/lwmon5.c
@@ -234,78 +234,6 @@ int misc_init_r(void)
 	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
 	 */
 	misc_init_r_kbd();
@@ -562,3 +490,88 @@ U_BOOT_CMD(
 	"eepromwp- eeprom write protect off/on\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 */
diff --git a/include/configs/lwmon5.h b/include/configs/lwmon5.h
index 0bf536b..c5c2724 100644
--- a/include/configs/lwmon5.h
+++ b/include/configs/lwmon5.h
@@ -248,6 +248,18 @@
 #define CONFIG_HAS_ETH1		1	/* add support for "eth1addr"	*/
 #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 */
 #ifdef CONFIG_440EPX
 #define CONFIG_USB_OHCI
@@ -294,6 +306,10 @@
 #define CONFIG_CMD_REGINFO
 #define CONFIG_CMD_SDRAM
 
+#ifdef CONFIG_VIDEO
+#define CONFIG_CMD_BMP
+#endif
+
 #ifdef CONFIG_440EPX
 #define CONFIG_CMD_USB
 #endif
-- 
1.5.3.3

             reply	other threads:[~2008-01-11 14:31 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-11 14:31 Anatolij Gustschin [this message]
2008-01-11 14:54 ` [U-Boot-Users] [PATCH] ppc4xx: Rework Lime support for lwmon5 Stefan Roese

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47877DAD.90903@denx.de \
    --to=agust@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.