All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup
@ 2013-01-12 22:07 Jeroen Hofstee
  2013-01-12 22:07 ` [U-Boot] [PATCH 01/10] lcd, amba: remove this frame buffer driver since it is not used Jeroen Hofstee
                   ` (11 more replies)
  0 siblings, 12 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

As mentioned in http://lists.denx.de/pipermail/u-boot/2013-January/143459.html
there does not seem to be a good reason why the frame buffer driver
provide the variables for the lcd internal logic. So lets just remove it.
If there is any good reason for a framebuffer driver to "call up" it should
do so by a function call and not change the lcd its internal state (and
there is actually none doing so at the moment).

This patchset first removes unused drivers and places drivers useing
common/lcd.c in drivers/video. Then removes the unneeded globals and
thereafter finishes with some cleanups.

This patch goes after http://patchwork.ozlabs.org/patch/209692/
"common/lcd.c: cleanup use of global variables"

Jeroen Hofstee (10):
  lcd, amba: remove this frame buffer driver since it is not used
  lcd, tegra: remove unused cursor functions
  lcd, mpc8xx: move the mpc8xx frame buffer driver to drivers/video
  lcd, pxafb: move the pxafb to drivers/video
  common/lcd.c: cleanup use of global variables
  common/lcd.c: remove global lcd_base
  common/lcd: cosmetic: clean up a bit
  lcd, fb: cleanup, remove prototypes already in lcd.h and unused code
  api/api_display: use the getters for console size info
  common/lcd.c: move the macro's to the c file

 api/api_display.c                |    4 +-
 arch/arm/cpu/pxa/Makefile        |    1 -
 arch/arm/cpu/pxa/pxafb.c         |  650 --------------------------------------
 arch/powerpc/cpu/mpc8xx/Makefile |    1 -
 arch/powerpc/cpu/mpc8xx/lcd.c    |  618 ------------------------------------
 board/mcc200/lcd.c               |   21 +-
 common/lcd.c                     |  117 ++++---
 drivers/video/Makefile           |    3 +-
 drivers/video/amba.c             |   77 -----
 drivers/video/atmel_hlcdfb.c     |    8 -
 drivers/video/atmel_lcdfb.c      |    8 -
 drivers/video/exynos_fb.c        |   14 +-
 drivers/video/mpc8xx_lcd.c       |  564 +++++++++++++++++++++++++++++++++
 drivers/video/pxa_lcd.c          |  609 +++++++++++++++++++++++++++++++++++
 drivers/video/tegra.c            |   64 +---
 include/configs/R360MPI.h        |    1 +
 include/configs/RBC823.h         |    1 +
 include/configs/RPXlite_DW.h     |    1 +
 include/configs/RRvision.h       |    4 +-
 include/configs/TQM823L.h        |    1 +
 include/configs/TQM823M.h        |    1 +
 include/configs/lubbock.h        |    1 +
 include/configs/lwmon.h          |    1 +
 include/configs/palmld.h         |    1 +
 include/configs/palmtc.h         |    1 +
 include/configs/pxa255_idp.h     |    1 +
 include/configs/svm_sc8xx.h      |    1 +
 include/configs/v37.h            |    1 +
 include/configs/zipitz2.h        |    1 +
 include/lcd.h                    |   71 +----
 30 files changed, 1280 insertions(+), 1567 deletions(-)
 delete mode 100644 arch/arm/cpu/pxa/pxafb.c
 delete mode 100644 arch/powerpc/cpu/mpc8xx/lcd.c
 delete mode 100644 drivers/video/amba.c
 create mode 100644 drivers/video/mpc8xx_lcd.c
 create mode 100644 drivers/video/pxa_lcd.c

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 01/10] lcd, amba: remove this frame buffer driver since it is not used
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
@ 2013-01-12 22:07 ` Jeroen Hofstee
  2013-01-12 22:07 ` [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions Jeroen Hofstee
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

Since CONFIG_VIDEO_AMBA is not set by any board, it does not seem
to be used, so remove it since there is no way to (compile) test it.

cc: Alessandro Rubini <rubini@unipv.it>
cc: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 drivers/video/Makefile |    1 -
 drivers/video/amba.c   |   77 ------------------------------------------------
 2 files changed, 78 deletions(-)
 delete mode 100644 drivers/video/amba.c

diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 170a358..8ff3958 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -39,7 +39,6 @@ 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_COREBOOT) += coreboot_fb.o
 COBJS-$(CONFIG_VIDEO_CT69000) += ct69000.o videomodes.o
 COBJS-$(CONFIG_VIDEO_DA8XX) += da8xx-fb.o videomodes.o
diff --git a/drivers/video/amba.c b/drivers/video/amba.c
deleted file mode 100644
index b4fb47d..0000000
--- a/drivers/video/amba.c
+++ /dev/null
@@ -1,77 +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;
-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, &regs->cntl);
-
-	writel(config->tim0, &regs->tim0);
-	writel(config->tim1, &regs->tim1);
-	writel(config->tim2, &regs->tim2);
-	writel(config->tim3, &regs->tim3);
-	writel((u32)lcdbase, &regs->ubas);
-	/* finally, enable */
-	writel(cntl | CNTL_LCDEN, &regs->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;
-}
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
  2013-01-12 22:07 ` [U-Boot] [PATCH 01/10] lcd, amba: remove this frame buffer driver since it is not used Jeroen Hofstee
@ 2013-01-12 22:07 ` Jeroen Hofstee
  2013-01-12 22:17   ` Jeroen Hofstee
  2013-01-25 20:38   ` Simon Glass
  2013-01-12 22:07 ` [U-Boot] [PATCH 03/10] lcd, mpc8xx: move the mpc8xx frame buffer driver to drivers/video Jeroen Hofstee
                   ` (9 subsequent siblings)
  11 siblings, 2 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

cc: Anatolij Gustschin <agust@denx.de>
cc: Simon Glass <sjg.chromium.org>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 drivers/video/tegra.c |   52 -------------------------------------------------
 1 file changed, 52 deletions(-)

diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
index 3709d0b..26a96a5 100644
--- a/drivers/video/tegra.c
+++ b/drivers/video/tegra.c
@@ -73,62 +73,10 @@ vidinfo_t panel_info = {
 	.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_getfgcolor();
-			*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;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 03/10] lcd, mpc8xx: move the mpc8xx frame buffer driver to drivers/video
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
  2013-01-12 22:07 ` [U-Boot] [PATCH 01/10] lcd, amba: remove this frame buffer driver since it is not used Jeroen Hofstee
  2013-01-12 22:07 ` [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions Jeroen Hofstee
@ 2013-01-12 22:07 ` Jeroen Hofstee
  2013-01-12 22:07 ` [U-Boot] [PATCH 04/10] lcd, pxafb: move the pxafb " Jeroen Hofstee
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

Since the lcd code was compiled unconditionally in arch also
add CONFIG_MPC8XX_LCD to the boards using this driver.

cc: Anatolij Gustschin <agust@denx.de>
cc: John Zhan <zhanz@sinovee.com>
cc: Wolfgang Denk <wd@denx.de>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 arch/powerpc/cpu/mpc8xx/Makefile |    1 -
 arch/powerpc/cpu/mpc8xx/lcd.c    |  618 --------------------------------------
 drivers/video/Makefile           |    1 +
 drivers/video/mpc8xx_lcd.c       |  618 ++++++++++++++++++++++++++++++++++++++
 include/configs/R360MPI.h        |    1 +
 include/configs/RBC823.h         |    1 +
 include/configs/RPXlite_DW.h     |    1 +
 include/configs/RRvision.h       |    4 +-
 include/configs/TQM823L.h        |    1 +
 include/configs/TQM823M.h        |    1 +
 include/configs/lwmon.h          |    1 +
 include/configs/svm_sc8xx.h      |    1 +
 include/configs/v37.h            |    1 +
 13 files changed, 630 insertions(+), 620 deletions(-)
 delete mode 100644 arch/powerpc/cpu/mpc8xx/lcd.c
 create mode 100644 drivers/video/mpc8xx_lcd.c

diff --git a/arch/powerpc/cpu/mpc8xx/Makefile b/arch/powerpc/cpu/mpc8xx/Makefile
index 0d1a12c..ef10e2d 100644
--- a/arch/powerpc/cpu/mpc8xx/Makefile
+++ b/arch/powerpc/cpu/mpc8xx/Makefile
@@ -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
diff --git a/arch/powerpc/cpu/mpc8xx/lcd.c b/arch/powerpc/cpu/mpc8xx/lcd.c
deleted file mode 100644
index 4fd44ac..0000000
--- a/arch/powerpc/cpu/mpc8xx/lcd.c
+++ /dev/null
@@ -1,618 +0,0 @@
-/*
- * (C) Copyright 2001-2002
- * Wolfgang Denk, DENX Software Engineering -- wd at denx.de
- *
- * 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
- */
-
-/************************************************************************/
-/* ** HEADER FILES							*/
-/************************************************************************/
-
-/* #define DEBUG */
-
-#include <config.h>
-#include <common.h>
-#include <command.h>
-#include <watchdog.h>
-#include <version.h>
-#include <stdarg.h>
-#include <lcdvideo.h>
-#include <linux/types.h>
-#include <stdio_dev.h>
-#if defined(CONFIG_POST)
-#include <post.h>
-#endif
-#include <lcd.h>
-
-#ifdef CONFIG_LCD
-
-/************************************************************************/
-/* ** CONFIG STUFF -- should be moved to board config file		*/
-/************************************************************************/
-#ifndef CONFIG_LCD_INFO
-#define CONFIG_LCD_INFO		/* Display Logo, (C) and system info	*/
-#endif
-
-#if defined(CONFIG_V37) || defined(CONFIG_EDT32F10)
-#undef CONFIG_LCD_LOGO
-#undef CONFIG_LCD_INFO
-#endif
-
-/*----------------------------------------------------------------------*/
-#ifdef CONFIG_KYOCERA_KCS057QV1AJ
-/*
- *  Kyocera KCS057QV1AJ-G23. Passive, color, single scan.
- */
-#define LCD_BPP	LCD_COLOR4
-
-vidinfo_t panel_info = {
-    640, 480, 132, 99, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH,
-    LCD_BPP, 1, 0, 1, 0,  5, 0, 0, 0
-		/* wbl, vpw, lcdac, wbf */
-};
-#endif /* CONFIG_KYOCERA_KCS057QV1AJ */
-/*----------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------*/
-#ifdef CONFIG_HITACHI_SP19X001_Z1A
-/*
- *  Hitachi SP19X001-. Active, color, single scan.
- */
-vidinfo_t panel_info = {
-    640, 480, 154, 116, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH,
-    LCD_COLOR8, 1, 0, 1, 0, 0, 0, 0, 0
-		/* wbl, vpw, lcdac, wbf */
-};
-#endif /* CONFIG_HITACHI_SP19X001_Z1A */
-/*----------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------*/
-#ifdef CONFIG_NEC_NL6448AC33
-/*
- *  NEC NL6448AC33-18. Active, color, single scan.
- */
-vidinfo_t panel_info = {
-    640, 480, 132, 99, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
-    3, 0, 0, 1, 1, 144, 2, 0, 33
-		/* wbl, vpw, lcdac, wbf */
-};
-#endif /* CONFIG_NEC_NL6448AC33 */
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_NEC_NL6448BC20
-/*
- *  NEC NL6448BC20-08.  6.5", 640x480. Active, color, single scan.
- */
-vidinfo_t panel_info = {
-    640, 480, 132, 99, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
-    3, 0, 0, 1, 1, 144, 2, 0, 33
-		/* wbl, vpw, lcdac, wbf */
-};
-#endif /* CONFIG_NEC_NL6448BC20 */
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_NEC_NL6448BC33_54
-/*
- *  NEC NL6448BC33-54. 10.4", 640x480. Active, color, single scan.
- */
-vidinfo_t panel_info = {
-    640, 480, 212, 158, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
-    3, 0, 0, 1, 1, 144, 2, 0, 33
-		/* wbl, vpw, lcdac, wbf */
-};
-#endif /* CONFIG_NEC_NL6448BC33_54 */
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_SHARP_LQ104V7DS01
-/*
- *  SHARP LQ104V7DS01. 6.5", 640x480. Active, color, single scan.
- */
-vidinfo_t panel_info = {
-    640, 480, 132, 99, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_LOW,
-    3, 0, 0, 1, 1, 25, 1, 0, 33
-		/* wbl, vpw, lcdac, wbf */
-};
-#endif /* CONFIG_SHARP_LQ104V7DS01 */
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_SHARP_16x9
-/*
- * Sharp 320x240. Active, color, single scan.  It isn't 16x9, and I am
- * not sure what it is.......
- */
-vidinfo_t panel_info = {
-    320, 240, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH,
-    3, 0, 0, 1, 1, 15, 4, 0, 3
-};
-#endif /* CONFIG_SHARP_16x9 */
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_SHARP_LQ057Q3DC02
-/*
- * Sharp LQ057Q3DC02 display. Active, color, single scan.
- */
-#undef LCD_DF
-#define LCD_DF 12
-
-vidinfo_t panel_info = {
-    320, 240, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
-    3, 0, 0, 1, 1, 15, 4, 0, 3
-		/* wbl, vpw, lcdac, wbf */
-};
-#define CONFIG_LCD_INFO_BELOW_LOGO
-#endif /* CONFIG_SHARP_LQ057Q3DC02 */
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_SHARP_LQ64D341
-/*
- * Sharp LQ64D341 display, 640x480. Active, color, single scan.
- */
-vidinfo_t panel_info = {
-    640, 480, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
-    3, 0, 0, 1, 1, 128, 16, 0, 32
-		/* wbl, vpw, lcdac, wbf */
-};
-#endif /* CONFIG_SHARP_LQ64D341 */
-
-#ifdef CONFIG_SHARP_LQ065T9DR51U
-/*
- * Sharp LQ065T9DR51U display, 400x240. Active, color, single scan.
- */
-vidinfo_t panel_info = {
-    400, 240, 143, 79, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH,
-    3, 0, 0, 1, 1, 248, 4, 0, 35
-		/* wbl, vpw, lcdac, wbf */
-};
-#define CONFIG_LCD_INFO_BELOW_LOGO
-#endif /* CONFIG_SHARP_LQ065T9DR51U */
-
-#ifdef CONFIG_SHARP_LQ084V1DG21
-/*
- * Sharp LQ084V1DG21 display, 640x480. Active, color, single scan.
- */
-vidinfo_t panel_info = {
-    640, 480, 171, 129, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_LOW,
-    3, 0, 0, 1, 1, 160, 3, 0, 48
-		/* wbl, vpw, lcdac, wbf */
-};
-#endif /* CONFIG_SHARP_LQ084V1DG21 */
-
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_HLD1045
-/*
- * HLD1045 display, 640x480. Active, color, single scan.
- */
-vidinfo_t panel_info = {
-    640, 480, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
-    3, 0, 0, 1, 1, 160, 3, 0, 48
-		/* wbl, vpw, lcdac, wbf */
-};
-#endif /* CONFIG_HLD1045 */
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_PRIMEVIEW_V16C6448AC
-/*
- * Prime View V16C6448AC
- */
-vidinfo_t panel_info = {
-    640, 480, 130, 98, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
-    3, 0, 0, 1, 1, 144, 2, 0, 35
-		/* wbl, vpw, lcdac, wbf */
-};
-#endif /* CONFIG_PRIMEVIEW_V16C6448AC */
-
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_OPTREX_BW
-/*
- * Optrex   CBL50840-2 NF-FW 99 22 M5
- * or
- * Hitachi  LMG6912RPFC-00T
- * or
- * Hitachi  SP14Q002
- *
- * 320x240. Black & white.
- */
-#define OPTREX_BPP	0	/* 0 - monochrome,     1 bpp */
-				/* 1 -  4 grey levels, 2 bpp */
-				/* 2 - 16 grey levels, 4 bpp */
-vidinfo_t panel_info = {
-    320, 240, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW,
-    OPTREX_BPP, 0, 0, 0, 0, 0, 0, 0, 0, 4
-};
-#endif /* CONFIG_OPTREX_BW */
-
-/*-----------------------------------------------------------------*/
-#ifdef CONFIG_EDT32F10
-/*
- * Emerging Display Technologies 320x240. Passive, monochrome, single scan.
- */
-#define LCD_BPP		LCD_MONOCHROME
-#define LCD_DF		10
-
-vidinfo_t panel_info = {
-    320, 240, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW,
-    LCD_BPP,  0, 0, 0, 0, 33, 0, 0, 0
-};
-#endif
-/*----------------------------------------------------------------------*/
-
-
-int lcd_line_length;
-
-/*
- * 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 ----------------------- */
-/************************************************************************/
-
-/*
- * Calculate fb size for VIDEOLFB_ATAG.
- */
-ulong calc_fbsize (void)
-{
-	ulong size;
-	int line_length = (panel_info.vl_col * NBITS (panel_info.vl_bpix)) / 8;
-
-	size = line_length * panel_info.vl_row;
-
-	return size;
-}
-
-void lcd_ctrl_init (void *lcdbase)
-{
-	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-	volatile lcd823_t *lcdp = &immr->im_lcd;
-
-	uint lccrtmp;
-	uint lchcr_hpc_tmp;
-
-	/* Initialize the LCD control register according to the LCD
-	 * parameters defined.  We do everything here but enable
-	 * the controller.
-	 */
-
-#ifdef CONFIG_RPXLITE
-	/* This is special for RPXlite_DW Software Development Platform **[Sam]** */
-	panel_info.vl_dp = CONFIG_SYS_LOW;
-#endif
-
-	lccrtmp  = LCDBIT (LCCR_BNUM_BIT,
-		   (((panel_info.vl_row * panel_info.vl_col) * (1 << LCD_BPP)) / 128));
-
-	lccrtmp |= LCDBIT (LCCR_CLKP_BIT, panel_info.vl_clkp)	|
-		   LCDBIT (LCCR_OEP_BIT,  panel_info.vl_oep)	|
-		   LCDBIT (LCCR_HSP_BIT,  panel_info.vl_hsp)	|
-		   LCDBIT (LCCR_VSP_BIT,  panel_info.vl_vsp)	|
-		   LCDBIT (LCCR_DP_BIT,   panel_info.vl_dp)	|
-		   LCDBIT (LCCR_BPIX_BIT, panel_info.vl_bpix)	|
-		   LCDBIT (LCCR_LBW_BIT,  panel_info.vl_lbw)	|
-		   LCDBIT (LCCR_SPLT_BIT, panel_info.vl_splt)	|
-		   LCDBIT (LCCR_CLOR_BIT, panel_info.vl_clor)	|
-		   LCDBIT (LCCR_TFT_BIT,  panel_info.vl_tft);
-
-#if 0
-	lccrtmp |= ((SIU_LEVEL5 / 2) << 12);
-	lccrtmp |= LCCR_EIEN;
-#endif
-
-	lcdp->lcd_lccr = lccrtmp;
-	lcdp->lcd_lcsr = 0xFF;		/* Clear pending interrupts */
-
-	/* Initialize LCD controller bus priorities.
-	 */
-#ifdef CONFIG_RBC823
-	immr->im_siu_conf.sc_sdcr = (immr->im_siu_conf.sc_sdcr & ~0x0f) | 1;	/* RAID = 01, LAID = 00 */
-#else
-	immr->im_siu_conf.sc_sdcr &= ~0x0f;	/* RAID = LAID = 0 */
-
-	/* set SHFT/CLOCK division factor 4
-	 * This needs to be set based upon display type and processor
-	 * speed.  The TFT displays run about 20 to 30 MHz.
-	 * I was running 64 MHz processor speed.
-	 * The value for this divider must be chosen so the result is
-	 * an integer of the processor speed (i.e., divide by 3 with
-	 * 64 MHz would be bad).
-	 */
-	immr->im_clkrst.car_sccr &= ~0x1F;
-	immr->im_clkrst.car_sccr |= LCD_DF;	/* was 8 */
-
-#endif /* CONFIG_RBC823 */
-
-#if defined(CONFIG_RBC823)
-	/* Enable LCD on port D.
-	 */
-	immr->im_ioport.iop_pddat &= 0x0300;
-	immr->im_ioport.iop_pdpar |= 0x1CFF;
-	immr->im_ioport.iop_pddir |= 0x1CFF;
-
-	/* Configure LCD_ON, VEE_ON, CCFL_ON on port B.
-	 */
-	immr->im_cpm.cp_pbdat &= ~0x00005001;
-	immr->im_cpm.cp_pbpar &= ~0x00005001;
-	immr->im_cpm.cp_pbdir |=  0x00005001;
-#elif !defined(CONFIG_EDT32F10)
-	/* Enable LCD on port D.
-	 */
-	immr->im_ioport.iop_pdpar |= 0x1FFF;
-	immr->im_ioport.iop_pddir |= 0x1FFF;
-
-	/* Enable LCD_A/B/C on port B.
-	 */
-	immr->im_cpm.cp_pbpar |= 0x00005001;
-	immr->im_cpm.cp_pbdir |= 0x00005001;
-#else
-	/* Enable LCD on port D.
-	 */
-	immr->im_ioport.iop_pdpar |= 0x1DFF;
-	immr->im_ioport.iop_pdpar &= ~0x0200;
-	immr->im_ioport.iop_pddir |= 0x1FFF;
-	immr->im_ioport.iop_pddat |= 0x0200;
-#endif
-
-	/* Load the physical address of the linear frame buffer
-	 * into the LCD controller.
-	 * 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;
-
-	/* MORE HACKS...This must be updated according to 823 manual
-	 * for different panels.
-	 * Udi Finkelstein - done - see below:
-	 * Note: You better not try unsupported combinations such as
-	 * 4-bit wide passive dual scan LCD at 4/8 Bit color.
-	 */
-	lchcr_hpc_tmp =
-		(panel_info.vl_col *
-		 (panel_info.vl_tft ? 8 :
-			(((2 - panel_info.vl_lbw) << /* 4 bit=2, 8-bit = 1 */
-			 /* use << to mult by: single scan = 1, dual scan = 2 */
-			  panel_info.vl_splt) *
-			 (panel_info.vl_bpix | 1)))) >> 3; /* 2/4 BPP = 1, 8/16 BPP = 3 */
-
-	lcdp->lcd_lchcr = LCHCR_BO |
-			  LCDBIT (LCHCR_AT_BIT, 4) |
-			  LCDBIT (LCHCR_HPC_BIT, lchcr_hpc_tmp) |
-			  panel_info.vl_wbl;
-
-	lcdp->lcd_lcvcr = LCDBIT (LCVCR_VPW_BIT, panel_info.vl_vpw) |
-			  LCDBIT (LCVCR_LCD_AC_BIT, panel_info.vl_lcdac) |
-			  LCDBIT (LCVCR_VPC_BIT, panel_info.vl_row) |
-			  panel_info.vl_wbf;
-
-}
-
-/*----------------------------------------------------------------------*/
-
-#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)
-{
-	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 = ((red   & 0x0F) << 8) |
-		 ((green & 0x0F) << 4) |
-		  (blue  & 0x0F) ;
-#ifdef	CONFIG_SYS_INVERT_COLORS
-	colreg ^= 0x0FFF;
-#endif
-	*cmap_ptr = colreg;
-
-	debug ("setcolreg: reg %2d @ %p: R=%02X G=%02X B=%02X => %02X%02X\n",
-		regno, &(cp->lcd_cmap[regno * 2]),
-		red, green, blue,
-		cp->lcd_cmap[ regno * 2 ], cp->lcd_cmap[(regno * 2) + 1]);
-}
-#endif	/* LCD_COLOR8 */
-
-/*----------------------------------------------------------------------*/
-
-#if LCD_BPP == LCD_MONOCHROME
-static
-void lcd_initcolregs (void)
-{
-	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-	volatile cpm8xx_t *cp = &(immr->im_cpm);
-	ushort regno;
-
-	for (regno = 0; regno < 16; regno++) {
-		cp->lcd_cmap[regno * 2] = 0;
-		cp->lcd_cmap[(regno * 2) + 1] = regno & 0x0f;
-	}
-}
-#endif
-
-/*----------------------------------------------------------------------*/
-
-void lcd_enable (void)
-{
-	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-	volatile lcd823_t *lcdp = &immr->im_lcd;
-
-	/* Enable the LCD panel */
-#ifndef CONFIG_RBC823
-	immr->im_siu_conf.sc_sdcr |= (1 << (31 - 25));		/* LAM = 1 */
-#endif
-	lcdp->lcd_lccr |= LCCR_PON;
-
-#ifdef CONFIG_V37
-	/* Turn on display backlight */
-	immr->im_cpm.cp_pbpar |= 0x00008000;
-	immr->im_cpm.cp_pbdir |= 0x00008000;
-#elif defined(CONFIG_RBC823)
-	/* Turn on display backlight */
-	immr->im_cpm.cp_pbdat |= 0x00004000;
-#endif
-
-#if defined(CONFIG_LWMON)
-    {	uchar c = pic_read (0x60);
-#if defined(CONFIG_LCD) && defined(CONFIG_LWMON) && (CONFIG_POST & CONFIG_SYS_POST_SYSMON)
-	/* Enable LCD later in sysmon test, only if temperature is OK */
-#else
-	c |= 0x07;	/* Power on CCFL, Enable CCFL, Chip Enable LCD */
-#endif
-	pic_write (0x60, c);
-    }
-#endif /* CONFIG_LWMON */
-
-#if defined(CONFIG_R360MPI)
-    {
-	extern void r360_i2c_lcd_write (uchar data0, uchar data1);
-	unsigned long bgi, ctr;
-	char *p;
-
-	if ((p = getenv("lcdbgi")) != NULL) {
-		bgi = simple_strtoul (p, 0, 10) & 0xFFF;
-	} else {
-		bgi = 0xFFF;
-	}
-
-	if ((p = getenv("lcdctr")) != NULL) {
-		ctr = simple_strtoul (p, 0, 10) & 0xFFF;
-	} else {
-		ctr=0x7FF;
-	}
-
-	r360_i2c_lcd_write(0x10, 0x01);
-	r360_i2c_lcd_write(0x20, 0x01);
-	r360_i2c_lcd_write(0x30 | ((bgi>>8) & 0xF), bgi & 0xFF);
-	r360_i2c_lcd_write(0x40 | ((ctr>>8) & 0xF), ctr & 0xFF);
-    }
-#endif /* CONFIG_R360MPI */
-#ifdef CONFIG_RBC823
-	udelay(200000); /* wait 200ms */
-	/* Turn VEE_ON first */
-	immr->im_cpm.cp_pbdat |= 0x00000001;
-	udelay(200000); /* wait 200ms */
-	/* Now turn on LCD_ON */
-	immr->im_cpm.cp_pbdat |= 0x00001000;
-#endif
-#ifdef CONFIG_RRVISION
-	debug ("PC4->Output(1): enable LVDS\n");
-	debug ("PC5->Output(0): disable PAL clock\n");
-	immr->im_ioport.iop_pddir |=  0x1000;
-	immr->im_ioport.iop_pcpar &= ~(0x0C00);
-	immr->im_ioport.iop_pcdir |=   0x0C00 ;
-	immr->im_ioport.iop_pcdat |=   0x0800 ;
-	immr->im_ioport.iop_pcdat &= ~(0x0400);
-	debug ("PDPAR=0x%04X PDDIR=0x%04X PDDAT=0x%04X\n",
-	       immr->im_ioport.iop_pdpar,
-	       immr->im_ioport.iop_pddir,
-	       immr->im_ioport.iop_pddat);
-	debug ("PCPAR=0x%04X PCDIR=0x%04X PCDAT=0x%04X\n",
-	       immr->im_ioport.iop_pcpar,
-	       immr->im_ioport.iop_pcdir,
-	       immr->im_ioport.iop_pcdat);
-#endif
-}
-
-/*----------------------------------------------------------------------*/
-
-#if defined (CONFIG_RBC823)
-void lcd_disable (void)
-{
-	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-	volatile lcd823_t *lcdp = &immr->im_lcd;
-
-#if defined(CONFIG_LWMON)
-    {	uchar c = pic_read (0x60);
-	c &= ~0x07;	/* Power off CCFL, Disable CCFL, Chip Disable LCD */
-	pic_write (0x60, c);
-    }
-#elif defined(CONFIG_R360MPI)
-    {
-	extern void r360_i2c_lcd_write (uchar data0, uchar data1);
-
-	r360_i2c_lcd_write(0x10, 0x00);
-	r360_i2c_lcd_write(0x20, 0x00);
-	r360_i2c_lcd_write(0x30, 0x00);
-	r360_i2c_lcd_write(0x40, 0x00);
-    }
-#endif /* CONFIG_LWMON */
-	/* Disable the LCD panel */
-	lcdp->lcd_lccr &= ~LCCR_PON;
-#ifdef CONFIG_RBC823
-	/* Turn off display backlight, VEE and LCD_ON */
-	immr->im_cpm.cp_pbdat &= ~0x00005001;
-#else
-	immr->im_siu_conf.sc_sdcr &= ~(1 << (31 - 25));	/* LAM = 0 */
-#endif /* CONFIG_RBC823 */
-}
-#endif	/* NOT_USED_SO_FAR || CONFIG_RBC823 */
-
-
-/************************************************************************/
-
-#endif /* CONFIG_LCD */
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 8ff3958..20b2e6f 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -35,6 +35,7 @@ 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_S6E8AX0) += s6e8ax0.o
 COBJS-$(CONFIG_S6E63D6) += s6e63d6.o
 COBJS-$(CONFIG_LD9040) += ld9040.o
diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
new file mode 100644
index 0000000..4fd44ac
--- /dev/null
+++ b/drivers/video/mpc8xx_lcd.c
@@ -0,0 +1,618 @@
+/*
+ * (C) Copyright 2001-2002
+ * Wolfgang Denk, DENX Software Engineering -- wd@denx.de
+ *
+ * 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
+ */
+
+/************************************************************************/
+/* ** HEADER FILES							*/
+/************************************************************************/
+
+/* #define DEBUG */
+
+#include <config.h>
+#include <common.h>
+#include <command.h>
+#include <watchdog.h>
+#include <version.h>
+#include <stdarg.h>
+#include <lcdvideo.h>
+#include <linux/types.h>
+#include <stdio_dev.h>
+#if defined(CONFIG_POST)
+#include <post.h>
+#endif
+#include <lcd.h>
+
+#ifdef CONFIG_LCD
+
+/************************************************************************/
+/* ** CONFIG STUFF -- should be moved to board config file		*/
+/************************************************************************/
+#ifndef CONFIG_LCD_INFO
+#define CONFIG_LCD_INFO		/* Display Logo, (C) and system info	*/
+#endif
+
+#if defined(CONFIG_V37) || defined(CONFIG_EDT32F10)
+#undef CONFIG_LCD_LOGO
+#undef CONFIG_LCD_INFO
+#endif
+
+/*----------------------------------------------------------------------*/
+#ifdef CONFIG_KYOCERA_KCS057QV1AJ
+/*
+ *  Kyocera KCS057QV1AJ-G23. Passive, color, single scan.
+ */
+#define LCD_BPP	LCD_COLOR4
+
+vidinfo_t panel_info = {
+    640, 480, 132, 99, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH,
+    LCD_BPP, 1, 0, 1, 0,  5, 0, 0, 0
+		/* wbl, vpw, lcdac, wbf */
+};
+#endif /* CONFIG_KYOCERA_KCS057QV1AJ */
+/*----------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------*/
+#ifdef CONFIG_HITACHI_SP19X001_Z1A
+/*
+ *  Hitachi SP19X001-. Active, color, single scan.
+ */
+vidinfo_t panel_info = {
+    640, 480, 154, 116, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH,
+    LCD_COLOR8, 1, 0, 1, 0, 0, 0, 0, 0
+		/* wbl, vpw, lcdac, wbf */
+};
+#endif /* CONFIG_HITACHI_SP19X001_Z1A */
+/*----------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------*/
+#ifdef CONFIG_NEC_NL6448AC33
+/*
+ *  NEC NL6448AC33-18. Active, color, single scan.
+ */
+vidinfo_t panel_info = {
+    640, 480, 132, 99, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
+    3, 0, 0, 1, 1, 144, 2, 0, 33
+		/* wbl, vpw, lcdac, wbf */
+};
+#endif /* CONFIG_NEC_NL6448AC33 */
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_NEC_NL6448BC20
+/*
+ *  NEC NL6448BC20-08.  6.5", 640x480. Active, color, single scan.
+ */
+vidinfo_t panel_info = {
+    640, 480, 132, 99, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
+    3, 0, 0, 1, 1, 144, 2, 0, 33
+		/* wbl, vpw, lcdac, wbf */
+};
+#endif /* CONFIG_NEC_NL6448BC20 */
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_NEC_NL6448BC33_54
+/*
+ *  NEC NL6448BC33-54. 10.4", 640x480. Active, color, single scan.
+ */
+vidinfo_t panel_info = {
+    640, 480, 212, 158, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
+    3, 0, 0, 1, 1, 144, 2, 0, 33
+		/* wbl, vpw, lcdac, wbf */
+};
+#endif /* CONFIG_NEC_NL6448BC33_54 */
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_SHARP_LQ104V7DS01
+/*
+ *  SHARP LQ104V7DS01. 6.5", 640x480. Active, color, single scan.
+ */
+vidinfo_t panel_info = {
+    640, 480, 132, 99, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_LOW,
+    3, 0, 0, 1, 1, 25, 1, 0, 33
+		/* wbl, vpw, lcdac, wbf */
+};
+#endif /* CONFIG_SHARP_LQ104V7DS01 */
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_SHARP_16x9
+/*
+ * Sharp 320x240. Active, color, single scan.  It isn't 16x9, and I am
+ * not sure what it is.......
+ */
+vidinfo_t panel_info = {
+    320, 240, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH,
+    3, 0, 0, 1, 1, 15, 4, 0, 3
+};
+#endif /* CONFIG_SHARP_16x9 */
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_SHARP_LQ057Q3DC02
+/*
+ * Sharp LQ057Q3DC02 display. Active, color, single scan.
+ */
+#undef LCD_DF
+#define LCD_DF 12
+
+vidinfo_t panel_info = {
+    320, 240, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
+    3, 0, 0, 1, 1, 15, 4, 0, 3
+		/* wbl, vpw, lcdac, wbf */
+};
+#define CONFIG_LCD_INFO_BELOW_LOGO
+#endif /* CONFIG_SHARP_LQ057Q3DC02 */
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_SHARP_LQ64D341
+/*
+ * Sharp LQ64D341 display, 640x480. Active, color, single scan.
+ */
+vidinfo_t panel_info = {
+    640, 480, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
+    3, 0, 0, 1, 1, 128, 16, 0, 32
+		/* wbl, vpw, lcdac, wbf */
+};
+#endif /* CONFIG_SHARP_LQ64D341 */
+
+#ifdef CONFIG_SHARP_LQ065T9DR51U
+/*
+ * Sharp LQ065T9DR51U display, 400x240. Active, color, single scan.
+ */
+vidinfo_t panel_info = {
+    400, 240, 143, 79, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH,
+    3, 0, 0, 1, 1, 248, 4, 0, 35
+		/* wbl, vpw, lcdac, wbf */
+};
+#define CONFIG_LCD_INFO_BELOW_LOGO
+#endif /* CONFIG_SHARP_LQ065T9DR51U */
+
+#ifdef CONFIG_SHARP_LQ084V1DG21
+/*
+ * Sharp LQ084V1DG21 display, 640x480. Active, color, single scan.
+ */
+vidinfo_t panel_info = {
+    640, 480, 171, 129, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_LOW,
+    3, 0, 0, 1, 1, 160, 3, 0, 48
+		/* wbl, vpw, lcdac, wbf */
+};
+#endif /* CONFIG_SHARP_LQ084V1DG21 */
+
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_HLD1045
+/*
+ * HLD1045 display, 640x480. Active, color, single scan.
+ */
+vidinfo_t panel_info = {
+    640, 480, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
+    3, 0, 0, 1, 1, 160, 3, 0, 48
+		/* wbl, vpw, lcdac, wbf */
+};
+#endif /* CONFIG_HLD1045 */
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_PRIMEVIEW_V16C6448AC
+/*
+ * Prime View V16C6448AC
+ */
+vidinfo_t panel_info = {
+    640, 480, 130, 98, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW, CONFIG_SYS_LOW, CONFIG_SYS_HIGH,
+    3, 0, 0, 1, 1, 144, 2, 0, 35
+		/* wbl, vpw, lcdac, wbf */
+};
+#endif /* CONFIG_PRIMEVIEW_V16C6448AC */
+
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_OPTREX_BW
+/*
+ * Optrex   CBL50840-2 NF-FW 99 22 M5
+ * or
+ * Hitachi  LMG6912RPFC-00T
+ * or
+ * Hitachi  SP14Q002
+ *
+ * 320x240. Black & white.
+ */
+#define OPTREX_BPP	0	/* 0 - monochrome,     1 bpp */
+				/* 1 -  4 grey levels, 2 bpp */
+				/* 2 - 16 grey levels, 4 bpp */
+vidinfo_t panel_info = {
+    320, 240, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW,
+    OPTREX_BPP, 0, 0, 0, 0, 0, 0, 0, 0, 4
+};
+#endif /* CONFIG_OPTREX_BW */
+
+/*-----------------------------------------------------------------*/
+#ifdef CONFIG_EDT32F10
+/*
+ * Emerging Display Technologies 320x240. Passive, monochrome, single scan.
+ */
+#define LCD_BPP		LCD_MONOCHROME
+#define LCD_DF		10
+
+vidinfo_t panel_info = {
+    320, 240, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW,
+    LCD_BPP,  0, 0, 0, 0, 33, 0, 0, 0
+};
+#endif
+/*----------------------------------------------------------------------*/
+
+
+int lcd_line_length;
+
+/*
+ * 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 ----------------------- */
+/************************************************************************/
+
+/*
+ * Calculate fb size for VIDEOLFB_ATAG.
+ */
+ulong calc_fbsize (void)
+{
+	ulong size;
+	int line_length = (panel_info.vl_col * NBITS (panel_info.vl_bpix)) / 8;
+
+	size = line_length * panel_info.vl_row;
+
+	return size;
+}
+
+void lcd_ctrl_init (void *lcdbase)
+{
+	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
+	volatile lcd823_t *lcdp = &immr->im_lcd;
+
+	uint lccrtmp;
+	uint lchcr_hpc_tmp;
+
+	/* Initialize the LCD control register according to the LCD
+	 * parameters defined.  We do everything here but enable
+	 * the controller.
+	 */
+
+#ifdef CONFIG_RPXLITE
+	/* This is special for RPXlite_DW Software Development Platform **[Sam]** */
+	panel_info.vl_dp = CONFIG_SYS_LOW;
+#endif
+
+	lccrtmp  = LCDBIT (LCCR_BNUM_BIT,
+		   (((panel_info.vl_row * panel_info.vl_col) * (1 << LCD_BPP)) / 128));
+
+	lccrtmp |= LCDBIT (LCCR_CLKP_BIT, panel_info.vl_clkp)	|
+		   LCDBIT (LCCR_OEP_BIT,  panel_info.vl_oep)	|
+		   LCDBIT (LCCR_HSP_BIT,  panel_info.vl_hsp)	|
+		   LCDBIT (LCCR_VSP_BIT,  panel_info.vl_vsp)	|
+		   LCDBIT (LCCR_DP_BIT,   panel_info.vl_dp)	|
+		   LCDBIT (LCCR_BPIX_BIT, panel_info.vl_bpix)	|
+		   LCDBIT (LCCR_LBW_BIT,  panel_info.vl_lbw)	|
+		   LCDBIT (LCCR_SPLT_BIT, panel_info.vl_splt)	|
+		   LCDBIT (LCCR_CLOR_BIT, panel_info.vl_clor)	|
+		   LCDBIT (LCCR_TFT_BIT,  panel_info.vl_tft);
+
+#if 0
+	lccrtmp |= ((SIU_LEVEL5 / 2) << 12);
+	lccrtmp |= LCCR_EIEN;
+#endif
+
+	lcdp->lcd_lccr = lccrtmp;
+	lcdp->lcd_lcsr = 0xFF;		/* Clear pending interrupts */
+
+	/* Initialize LCD controller bus priorities.
+	 */
+#ifdef CONFIG_RBC823
+	immr->im_siu_conf.sc_sdcr = (immr->im_siu_conf.sc_sdcr & ~0x0f) | 1;	/* RAID = 01, LAID = 00 */
+#else
+	immr->im_siu_conf.sc_sdcr &= ~0x0f;	/* RAID = LAID = 0 */
+
+	/* set SHFT/CLOCK division factor 4
+	 * This needs to be set based upon display type and processor
+	 * speed.  The TFT displays run about 20 to 30 MHz.
+	 * I was running 64 MHz processor speed.
+	 * The value for this divider must be chosen so the result is
+	 * an integer of the processor speed (i.e., divide by 3 with
+	 * 64 MHz would be bad).
+	 */
+	immr->im_clkrst.car_sccr &= ~0x1F;
+	immr->im_clkrst.car_sccr |= LCD_DF;	/* was 8 */
+
+#endif /* CONFIG_RBC823 */
+
+#if defined(CONFIG_RBC823)
+	/* Enable LCD on port D.
+	 */
+	immr->im_ioport.iop_pddat &= 0x0300;
+	immr->im_ioport.iop_pdpar |= 0x1CFF;
+	immr->im_ioport.iop_pddir |= 0x1CFF;
+
+	/* Configure LCD_ON, VEE_ON, CCFL_ON on port B.
+	 */
+	immr->im_cpm.cp_pbdat &= ~0x00005001;
+	immr->im_cpm.cp_pbpar &= ~0x00005001;
+	immr->im_cpm.cp_pbdir |=  0x00005001;
+#elif !defined(CONFIG_EDT32F10)
+	/* Enable LCD on port D.
+	 */
+	immr->im_ioport.iop_pdpar |= 0x1FFF;
+	immr->im_ioport.iop_pddir |= 0x1FFF;
+
+	/* Enable LCD_A/B/C on port B.
+	 */
+	immr->im_cpm.cp_pbpar |= 0x00005001;
+	immr->im_cpm.cp_pbdir |= 0x00005001;
+#else
+	/* Enable LCD on port D.
+	 */
+	immr->im_ioport.iop_pdpar |= 0x1DFF;
+	immr->im_ioport.iop_pdpar &= ~0x0200;
+	immr->im_ioport.iop_pddir |= 0x1FFF;
+	immr->im_ioport.iop_pddat |= 0x0200;
+#endif
+
+	/* Load the physical address of the linear frame buffer
+	 * into the LCD controller.
+	 * 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;
+
+	/* MORE HACKS...This must be updated according to 823 manual
+	 * for different panels.
+	 * Udi Finkelstein - done - see below:
+	 * Note: You better not try unsupported combinations such as
+	 * 4-bit wide passive dual scan LCD at 4/8 Bit color.
+	 */
+	lchcr_hpc_tmp =
+		(panel_info.vl_col *
+		 (panel_info.vl_tft ? 8 :
+			(((2 - panel_info.vl_lbw) << /* 4 bit=2, 8-bit = 1 */
+			 /* use << to mult by: single scan = 1, dual scan = 2 */
+			  panel_info.vl_splt) *
+			 (panel_info.vl_bpix | 1)))) >> 3; /* 2/4 BPP = 1, 8/16 BPP = 3 */
+
+	lcdp->lcd_lchcr = LCHCR_BO |
+			  LCDBIT (LCHCR_AT_BIT, 4) |
+			  LCDBIT (LCHCR_HPC_BIT, lchcr_hpc_tmp) |
+			  panel_info.vl_wbl;
+
+	lcdp->lcd_lcvcr = LCDBIT (LCVCR_VPW_BIT, panel_info.vl_vpw) |
+			  LCDBIT (LCVCR_LCD_AC_BIT, panel_info.vl_lcdac) |
+			  LCDBIT (LCVCR_VPC_BIT, panel_info.vl_row) |
+			  panel_info.vl_wbf;
+
+}
+
+/*----------------------------------------------------------------------*/
+
+#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)
+{
+	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 = ((red   & 0x0F) << 8) |
+		 ((green & 0x0F) << 4) |
+		  (blue  & 0x0F) ;
+#ifdef	CONFIG_SYS_INVERT_COLORS
+	colreg ^= 0x0FFF;
+#endif
+	*cmap_ptr = colreg;
+
+	debug ("setcolreg: reg %2d @ %p: R=%02X G=%02X B=%02X => %02X%02X\n",
+		regno, &(cp->lcd_cmap[regno * 2]),
+		red, green, blue,
+		cp->lcd_cmap[ regno * 2 ], cp->lcd_cmap[(regno * 2) + 1]);
+}
+#endif	/* LCD_COLOR8 */
+
+/*----------------------------------------------------------------------*/
+
+#if LCD_BPP == LCD_MONOCHROME
+static
+void lcd_initcolregs (void)
+{
+	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
+	volatile cpm8xx_t *cp = &(immr->im_cpm);
+	ushort regno;
+
+	for (regno = 0; regno < 16; regno++) {
+		cp->lcd_cmap[regno * 2] = 0;
+		cp->lcd_cmap[(regno * 2) + 1] = regno & 0x0f;
+	}
+}
+#endif
+
+/*----------------------------------------------------------------------*/
+
+void lcd_enable (void)
+{
+	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
+	volatile lcd823_t *lcdp = &immr->im_lcd;
+
+	/* Enable the LCD panel */
+#ifndef CONFIG_RBC823
+	immr->im_siu_conf.sc_sdcr |= (1 << (31 - 25));		/* LAM = 1 */
+#endif
+	lcdp->lcd_lccr |= LCCR_PON;
+
+#ifdef CONFIG_V37
+	/* Turn on display backlight */
+	immr->im_cpm.cp_pbpar |= 0x00008000;
+	immr->im_cpm.cp_pbdir |= 0x00008000;
+#elif defined(CONFIG_RBC823)
+	/* Turn on display backlight */
+	immr->im_cpm.cp_pbdat |= 0x00004000;
+#endif
+
+#if defined(CONFIG_LWMON)
+    {	uchar c = pic_read (0x60);
+#if defined(CONFIG_LCD) && defined(CONFIG_LWMON) && (CONFIG_POST & CONFIG_SYS_POST_SYSMON)
+	/* Enable LCD later in sysmon test, only if temperature is OK */
+#else
+	c |= 0x07;	/* Power on CCFL, Enable CCFL, Chip Enable LCD */
+#endif
+	pic_write (0x60, c);
+    }
+#endif /* CONFIG_LWMON */
+
+#if defined(CONFIG_R360MPI)
+    {
+	extern void r360_i2c_lcd_write (uchar data0, uchar data1);
+	unsigned long bgi, ctr;
+	char *p;
+
+	if ((p = getenv("lcdbgi")) != NULL) {
+		bgi = simple_strtoul (p, 0, 10) & 0xFFF;
+	} else {
+		bgi = 0xFFF;
+	}
+
+	if ((p = getenv("lcdctr")) != NULL) {
+		ctr = simple_strtoul (p, 0, 10) & 0xFFF;
+	} else {
+		ctr=0x7FF;
+	}
+
+	r360_i2c_lcd_write(0x10, 0x01);
+	r360_i2c_lcd_write(0x20, 0x01);
+	r360_i2c_lcd_write(0x30 | ((bgi>>8) & 0xF), bgi & 0xFF);
+	r360_i2c_lcd_write(0x40 | ((ctr>>8) & 0xF), ctr & 0xFF);
+    }
+#endif /* CONFIG_R360MPI */
+#ifdef CONFIG_RBC823
+	udelay(200000); /* wait 200ms */
+	/* Turn VEE_ON first */
+	immr->im_cpm.cp_pbdat |= 0x00000001;
+	udelay(200000); /* wait 200ms */
+	/* Now turn on LCD_ON */
+	immr->im_cpm.cp_pbdat |= 0x00001000;
+#endif
+#ifdef CONFIG_RRVISION
+	debug ("PC4->Output(1): enable LVDS\n");
+	debug ("PC5->Output(0): disable PAL clock\n");
+	immr->im_ioport.iop_pddir |=  0x1000;
+	immr->im_ioport.iop_pcpar &= ~(0x0C00);
+	immr->im_ioport.iop_pcdir |=   0x0C00 ;
+	immr->im_ioport.iop_pcdat |=   0x0800 ;
+	immr->im_ioport.iop_pcdat &= ~(0x0400);
+	debug ("PDPAR=0x%04X PDDIR=0x%04X PDDAT=0x%04X\n",
+	       immr->im_ioport.iop_pdpar,
+	       immr->im_ioport.iop_pddir,
+	       immr->im_ioport.iop_pddat);
+	debug ("PCPAR=0x%04X PCDIR=0x%04X PCDAT=0x%04X\n",
+	       immr->im_ioport.iop_pcpar,
+	       immr->im_ioport.iop_pcdir,
+	       immr->im_ioport.iop_pcdat);
+#endif
+}
+
+/*----------------------------------------------------------------------*/
+
+#if defined (CONFIG_RBC823)
+void lcd_disable (void)
+{
+	volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
+	volatile lcd823_t *lcdp = &immr->im_lcd;
+
+#if defined(CONFIG_LWMON)
+    {	uchar c = pic_read (0x60);
+	c &= ~0x07;	/* Power off CCFL, Disable CCFL, Chip Disable LCD */
+	pic_write (0x60, c);
+    }
+#elif defined(CONFIG_R360MPI)
+    {
+	extern void r360_i2c_lcd_write (uchar data0, uchar data1);
+
+	r360_i2c_lcd_write(0x10, 0x00);
+	r360_i2c_lcd_write(0x20, 0x00);
+	r360_i2c_lcd_write(0x30, 0x00);
+	r360_i2c_lcd_write(0x40, 0x00);
+    }
+#endif /* CONFIG_LWMON */
+	/* Disable the LCD panel */
+	lcdp->lcd_lccr &= ~LCCR_PON;
+#ifdef CONFIG_RBC823
+	/* Turn off display backlight, VEE and LCD_ON */
+	immr->im_cpm.cp_pbdat &= ~0x00005001;
+#else
+	immr->im_siu_conf.sc_sdcr &= ~(1 << (31 - 25));	/* LAM = 0 */
+#endif /* CONFIG_RBC823 */
+}
+#endif	/* NOT_USED_SO_FAR || CONFIG_RBC823 */
+
+
+/************************************************************************/
+
+#endif /* CONFIG_LCD */
diff --git a/include/configs/R360MPI.h b/include/configs/R360MPI.h
index 868a0b8..60cccff 100644
--- a/include/configs/R360MPI.h
+++ b/include/configs/R360MPI.h
@@ -39,6 +39,7 @@
 #define	CONFIG_SYS_TEXT_BASE	0x40000000
 
 #define CONFIG_LCD
+#define CONFIG_MPC8XX_LCD
 #undef  CONFIG_EDT32F10
 #define CONFIG_SHARP_LQ057Q3DC02
 
diff --git a/include/configs/RBC823.h b/include/configs/RBC823.h
index b042c67..d4bcc62 100644
--- a/include/configs/RBC823.h
+++ b/include/configs/RBC823.h
@@ -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		*/
diff --git a/include/configs/RPXlite_DW.h b/include/configs/RPXlite_DW.h
index 67ab1e9..d8e28d5 100644
--- a/include/configs/RPXlite_DW.h
+++ b/include/configs/RPXlite_DW.h
@@ -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
 
diff --git a/include/configs/RRvision.h b/include/configs/RRvision.h
index e2b22f0..e2ea016 100644
--- a/include/configs/RRvision.h
+++ b/include/configs/RRvision.h
@@ -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 */
diff --git a/include/configs/TQM823L.h b/include/configs/TQM823L.h
index 9fac5d1..cccf3af 100644
--- a/include/configs/TQM823L.h
+++ b/include/configs/TQM823L.h
@@ -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*/
diff --git a/include/configs/TQM823M.h b/include/configs/TQM823M.h
index 932f158..b2d1af0 100644
--- a/include/configs/TQM823M.h
+++ b/include/configs/TQM823M.h
@@ -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
 
diff --git a/include/configs/lwmon.h b/include/configs/lwmon.h
index df49781..3c02b73 100644
--- a/include/configs/lwmon.h
+++ b/include/configs/lwmon.h
@@ -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	*/
diff --git a/include/configs/svm_sc8xx.h b/include/configs/svm_sc8xx.h
index 2b24997..3c8c74d 100644
--- a/include/configs/svm_sc8xx.h
+++ b/include/configs/svm_sc8xx.h
@@ -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 */
diff --git a/include/configs/v37.h b/include/configs/v37.h
index e36d249..f9965db 100644
--- a/include/configs/v37.h
+++ b/include/configs/v37.h
@@ -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
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 04/10] lcd, pxafb: move the pxafb to drivers/video
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                   ` (2 preceding siblings ...)
  2013-01-12 22:07 ` [U-Boot] [PATCH 03/10] lcd, mpc8xx: move the mpc8xx frame buffer driver to drivers/video Jeroen Hofstee
@ 2013-01-12 22:07 ` Jeroen Hofstee
  2013-01-13  0:37   ` Marek Vasut
  2013-01-12 22:07 ` [U-Boot] [PATCH 05/10] common/lcd.c: cleanup use of global variables Jeroen Hofstee
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

Since the lcd code was compiled unconditionally for pxa also add
CONFIG_PXA_LCD to the boards using this framebuffer. Since the
driver/video contains video and lcd driver add lcd to the name
to make clear it belongs to common/lcd.c.

cc: Anatolij Gustschin <agust@denx.de>
cc: Cliff Brake <cliff.brake@gmail.com>
cc: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 arch/arm/cpu/pxa/Makefile    |    1 -
 arch/arm/cpu/pxa/pxafb.c     |  650 ------------------------------------------
 drivers/video/Makefile       |    1 +
 drivers/video/pxa_lcd.c      |  650 ++++++++++++++++++++++++++++++++++++++++++
 include/configs/lubbock.h    |    1 +
 include/configs/palmld.h     |    1 +
 include/configs/palmtc.h     |    1 +
 include/configs/pxa255_idp.h |    1 +
 include/configs/zipitz2.h    |    1 +
 9 files changed, 656 insertions(+), 651 deletions(-)
 delete mode 100644 arch/arm/cpu/pxa/pxafb.c
 create mode 100644 drivers/video/pxa_lcd.c

diff --git a/arch/arm/cpu/pxa/Makefile b/arch/arm/cpu/pxa/Makefile
index e088832..9f63c34 100644
--- a/arch/arm/cpu/pxa/Makefile
+++ b/arch/arm/cpu/pxa/Makefile
@@ -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
 
diff --git a/arch/arm/cpu/pxa/pxafb.c b/arch/arm/cpu/pxa/pxafb.c
deleted file mode 100644
index 25747b1..0000000
--- a/arch/arm/cpu/pxa/pxafb.c
+++ /dev/null
@@ -1,650 +0,0 @@
-/*
- * PXA LCD Controller
- *
- * (C) Copyright 2001-2002
- * Wolfgang Denk, DENX Software Engineering -- wd at denx.de
- *
- * 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
- */
-
-/************************************************************************/
-/* ** HEADER FILES							*/
-/************************************************************************/
-
-#include <config.h>
-#include <common.h>
-#include <version.h>
-#include <stdarg.h>
-#include <linux/types.h>
-#include <stdio_dev.h>
-#include <lcd.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/io.h>
-
-/* #define DEBUG */
-
-#ifdef CONFIG_LCD
-
-/*----------------------------------------------------------------------*/
-/*
- * Define panel bpp, LCCR0, LCCR3 and panel_info video struct for
- * your display.
- */
-
-#ifdef CONFIG_PXA_VGA
-/* LCD outputs connected to a video DAC  */
-# define LCD_BPP	LCD_COLOR8
-
-/* you have to set lccr0 and lccr3 (including pcd) */
-# define REG_LCCR0	0x003008f8
-# define REG_LCCR3	0x0300FF01
-
-/* 640x480x16 @ 61 Hz */
-vidinfo_t panel_info = {
-	.vl_col		= 640,
-	.vl_row		= 480,
-	.vl_width	= 640,
-	.vl_height	= 480,
-	.vl_clkp	= CONFIG_SYS_HIGH,
-	.vl_oep		= CONFIG_SYS_HIGH,
-	.vl_hsp		= CONFIG_SYS_HIGH,
-	.vl_vsp		= CONFIG_SYS_HIGH,
-	.vl_dp		= CONFIG_SYS_HIGH,
-	.vl_bpix	= LCD_BPP,
-	.vl_lbw		= 0,
-	.vl_splt	= 0,
-	.vl_clor	= 0,
-	.vl_tft		= 1,
-	.vl_hpw		= 40,
-	.vl_blw		= 56,
-	.vl_elw		= 56,
-	.vl_vpw		= 20,
-	.vl_bfw		= 8,
-	.vl_efw		= 8,
-};
-#endif /* CONFIG_PXA_VIDEO */
-
-/*----------------------------------------------------------------------*/
-#ifdef CONFIG_SHARP_LM8V31
-
-# define LCD_BPP	LCD_COLOR8
-# define LCD_INVERT_COLORS	/* Needed for colors to be correct, but why?	*/
-
-/* you have to set lccr0 and lccr3 (including pcd) */
-# define REG_LCCR0	0x0030087C
-# define REG_LCCR3	0x0340FF08
-
-vidinfo_t panel_info = {
-	.vl_col		= 640,
-	.vl_row		= 480,
-	.vl_width	= 157,
-	.vl_height	= 118,
-	.vl_clkp	= CONFIG_SYS_HIGH,
-	.vl_oep		= CONFIG_SYS_HIGH,
-	.vl_hsp		= CONFIG_SYS_HIGH,
-	.vl_vsp		= CONFIG_SYS_HIGH,
-	.vl_dp		= CONFIG_SYS_HIGH,
-	.vl_bpix	= LCD_BPP,
-	.vl_lbw		= 0,
-	.vl_splt	= 1,
-	.vl_clor	= 1,
-	.vl_tft		= 0,
-	.vl_hpw		= 1,
-	.vl_blw		= 3,
-	.vl_elw		= 3,
-	.vl_vpw		= 1,
-	.vl_bfw		= 0,
-	.vl_efw		= 0,
-};
-#endif /* CONFIG_SHARP_LM8V31 */
-/*----------------------------------------------------------------------*/
-#ifdef CONFIG_VOIPAC_LCD
-
-# define LCD_BPP	LCD_COLOR8
-# define LCD_INVERT_COLORS
-
-/* you have to set lccr0 and lccr3 (including pcd) */
-# define REG_LCCR0	0x043008f8
-# define REG_LCCR3	0x0340FF08
-
-vidinfo_t panel_info = {
-	.vl_col		= 640,
-	.vl_row		= 480,
-	.vl_width	= 157,
-	.vl_height	= 118,
-	.vl_clkp	= CONFIG_SYS_HIGH,
-	.vl_oep		= CONFIG_SYS_HIGH,
-	.vl_hsp		= CONFIG_SYS_HIGH,
-	.vl_vsp		= CONFIG_SYS_HIGH,
-	.vl_dp		= CONFIG_SYS_HIGH,
-	.vl_bpix	= LCD_BPP,
-	.vl_lbw		= 0,
-	.vl_splt	= 1,
-	.vl_clor	= 1,
-	.vl_tft		= 1,
-	.vl_hpw		= 32,
-	.vl_blw		= 144,
-	.vl_elw		= 32,
-	.vl_vpw		= 2,
-	.vl_bfw		= 13,
-	.vl_efw		= 30,
-};
-#endif /* CONFIG_VOIPAC_LCD */
-
-/*----------------------------------------------------------------------*/
-#ifdef CONFIG_HITACHI_SX14
-/* Hitachi SX14Q004-ZZA color STN LCD */
-#define LCD_BPP		LCD_COLOR8
-
-/* you have to set lccr0 and lccr3 (including pcd) */
-#define REG_LCCR0	0x00301079
-#define REG_LCCR3	0x0340FF20
-
-vidinfo_t panel_info = {
-	.vl_col		= 320,
-	.vl_row		= 240,
-	.vl_width	= 167,
-	.vl_height	= 109,
-	.vl_clkp	= CONFIG_SYS_HIGH,
-	.vl_oep		= CONFIG_SYS_HIGH,
-	.vl_hsp		= CONFIG_SYS_HIGH,
-	.vl_vsp		= CONFIG_SYS_HIGH,
-	.vl_dp		= CONFIG_SYS_HIGH,
-	.vl_bpix	= LCD_BPP,
-	.vl_lbw		= 1,
-	.vl_splt	= 0,
-	.vl_clor	= 1,
-	.vl_tft		= 0,
-	.vl_hpw		= 1,
-	.vl_blw		= 1,
-	.vl_elw		= 1,
-	.vl_vpw		= 7,
-	.vl_bfw		= 0,
-	.vl_efw		= 0,
-};
-#endif /* CONFIG_HITACHI_SX14 */
-
-/*----------------------------------------------------------------------*/
-#ifdef CONFIG_LMS283GF05
-
-# define LCD_BPP	LCD_COLOR8
-/*# define LCD_INVERT_COLORS*/
-
-/* you have to set lccr0 and lccr3 (including pcd) */
-# define REG_LCCR0	0x043008f8
-# define REG_LCCR3	0x03b00009
-
-vidinfo_t panel_info = {
-	.vl_col		= 240,
-	.vl_row		= 320,
-	.vl_width	= 240,
-	.vl_height	= 320,
-	.vl_clkp	= CONFIG_SYS_HIGH,
-	.vl_oep		= CONFIG_SYS_LOW,
-	.vl_hsp		= CONFIG_SYS_LOW,
-	.vl_vsp		= CONFIG_SYS_LOW,
-	.vl_dp		= CONFIG_SYS_HIGH,
-	.vl_bpix	= LCD_BPP,
-	.vl_lbw		= 0,
-	.vl_splt	= 1,
-	.vl_clor	= 1,
-	.vl_tft		= 1,
-	.vl_hpw		= 4,
-	.vl_blw		= 4,
-	.vl_elw		= 8,
-	.vl_vpw		= 4,
-	.vl_bfw		= 4,
-	.vl_efw		= 8,
-};
-#endif /* CONFIG_LMS283GF05 */
-
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_ACX517AKN
-
-# define LCD_BPP	LCD_COLOR8
-
-/* you have to set lccr0 and lccr3 (including pcd) */
-# define REG_LCCR0	0x003008f9
-# define REG_LCCR3	0x03700006
-
-vidinfo_t panel_info = {
-	.vl_col		= 320,
-	.vl_row		= 320,
-	.vl_width	= 320,
-	.vl_height	= 320,
-	.vl_clkp	= CONFIG_SYS_HIGH,
-	.vl_oep		= CONFIG_SYS_LOW,
-	.vl_hsp		= CONFIG_SYS_LOW,
-	.vl_vsp		= CONFIG_SYS_LOW,
-	.vl_dp		= CONFIG_SYS_HIGH,
-	.vl_bpix	= LCD_BPP,
-	.vl_lbw		= 0,
-	.vl_splt	= 1,
-	.vl_clor	= 1,
-	.vl_tft		= 1,
-	.vl_hpw		= 0x04,
-	.vl_blw		= 0x1c,
-	.vl_elw		= 0x08,
-	.vl_vpw		= 0x01,
-	.vl_bfw		= 0x07,
-	.vl_efw		= 0x08,
-};
-#endif /* CONFIG_ACX517AKN */
-
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_LQ038J7DH53
-
-# define LCD_BPP	LCD_COLOR8
-
-/* you have to set lccr0 and lccr3 (including pcd) */
-# define REG_LCCR0	0x003008f9
-# define REG_LCCR3	0x03700004
-
-vidinfo_t panel_info = {
-	.vl_col		= 320,
-	.vl_row		= 480,
-	.vl_width	= 320,
-	.vl_height	= 480,
-	.vl_clkp	= CONFIG_SYS_HIGH,
-	.vl_oep		= CONFIG_SYS_LOW,
-	.vl_hsp		= CONFIG_SYS_LOW,
-	.vl_vsp		= CONFIG_SYS_LOW,
-	.vl_dp		= CONFIG_SYS_HIGH,
-	.vl_bpix	= LCD_BPP,
-	.vl_lbw		= 0,
-	.vl_splt	= 1,
-	.vl_clor	= 1,
-	.vl_tft		= 1,
-	.vl_hpw		= 0x04,
-	.vl_blw		= 0x20,
-	.vl_elw		= 0x01,
-	.vl_vpw		= 0x01,
-	.vl_bfw		= 0x04,
-	.vl_efw		= 0x01,
-};
-#endif /* CONFIG_ACX517AKN */
-
-/*----------------------------------------------------------------------*/
-
-#ifdef CONFIG_LITTLETON_LCD
-# define LCD_BPP	LCD_COLOR8
-
-/* you have to set lccr0 and lccr3 (including pcd) */
-# define REG_LCCR0	0x003008f8
-# define REG_LCCR3	0x0300FF04
-
-vidinfo_t panel_info = {
-	.vl_col		= 480,
-	.vl_row		= 640,
-	.vl_width	= 480,
-	.vl_height	= 640,
-	.vl_clkp	= CONFIG_SYS_HIGH,
-	.vl_oep		= CONFIG_SYS_HIGH,
-	.vl_hsp		= CONFIG_SYS_HIGH,
-	.vl_vsp		= CONFIG_SYS_HIGH,
-	.vl_dp		= CONFIG_SYS_HIGH,
-	.vl_bpix	= LCD_BPP,
-	.vl_lbw		= 0,
-	.vl_splt	= 0,
-	.vl_clor	= 0,
-	.vl_tft		= 1,
-	.vl_hpw		= 9,
-	.vl_blw		= 8,
-	.vl_elw		= 24,
-	.vl_vpw		= 2,
-	.vl_bfw		= 2,
-	.vl_efw		= 4,
-};
-#endif /* CONFIG_LITTLETON_LCD */
-
-/*----------------------------------------------------------------------*/
-
-#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;
-
-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  ------------------- */
-/************************************************************************/
-
-void lcd_ctrl_init (void *lcdbase)
-{
-	pxafb_init_mem(lcdbase, &panel_info);
-	pxafb_init(&panel_info);
-	pxafb_setup_gpio(&panel_info);
-	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
-lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue)
-{
-	struct pxafb_info *fbi = &panel_info.pxa;
-	unsigned short *palette = (unsigned short *)fbi->palette;
-	u_int val;
-
-	if (regno < fbi->palette_size) {
-		val = ((red << 8) & 0xf800);
-		val |= ((green << 4) & 0x07e0);
-		val |= (blue & 0x001f);
-
-#ifdef LCD_INVERT_COLORS
-		palette[regno] = ~val;
-#else
-		palette[regno] = val;
-#endif
-	}
-
-	debug ("setcolreg: reg %2d @ %p: R=%02X G=%02X B=%02X => %04X\n",
-		regno, &palette[regno],
-		red, green, blue,
-		palette[regno]);
-}
-#endif /* LCD_COLOR8 */
-
-/*----------------------------------------------------------------------*/
-#if LCD_BPP == LCD_MONOCHROME
-void lcd_initcolregs (void)
-{
-	struct pxafb_info *fbi = &panel_info.pxa;
-	cmap = (ushort *)fbi->palette;
-	ushort regno;
-
-	for (regno = 0; regno < 16; regno++) {
-		cmap[regno * 2] = 0;
-		cmap[(regno * 2) + 1] = regno & 0x0f;
-	}
-}
-#endif /* LCD_MONOCHROME */
-
-/*----------------------------------------------------------------------*/
-void lcd_enable (void)
-{
-}
-
-/*----------------------------------------------------------------------*/
-#ifdef	NOT_USED_SO_FAR
-static void lcd_disable (void)
-{
-}
-#endif /* NOT_USED_SO_FAR */
-
-/*----------------------------------------------------------------------*/
-
-/************************************************************************/
-/* ** PXA255 specific routines						*/
-/************************************************************************/
-
-/*
- * Calculate fb size for VIDEOLFB_ATAG. Size returned contains fb,
- * descriptors and palette areas.
- */
-ulong calc_fbsize (void)
-{
-	ulong size;
-	int line_length = (panel_info.vl_col * NBITS (panel_info.vl_bpix)) / 8;
-
-	size = line_length * panel_info.vl_row;
-	size += PAGE_SIZE;
-
-	return size;
-}
-
-static int pxafb_init_mem (void *lcdbase, vidinfo_t *vid)
-{
-	u_long palette_mem_size;
-	struct pxafb_info *fbi = &vid->pxa;
-	int fb_size = vid->vl_row * (vid->vl_col * NBITS (vid->vl_bpix)) / 8;
-
-	fbi->screen = (u_long)lcdbase;
-
-	fbi->palette_size = NBITS(vid->vl_bpix) == 8 ? 256 : 16;
-	palette_mem_size = fbi->palette_size * sizeof(u16);
-
-	debug("palette_mem_size = 0x%08lx\n", (u_long) palette_mem_size);
-	/* locate palette and descs at end of page following fb */
-	fbi->palette = (u_long)lcdbase + fb_size + PAGE_SIZE - palette_mem_size;
-
-	return 0;
-}
-#ifdef	CONFIG_CPU_MONAHANS
-static inline void pxafb_setup_gpio (vidinfo_t *vid) {}
-#else
-static void pxafb_setup_gpio (vidinfo_t *vid)
-{
-	u_long lccr0;
-
-	/*
-	 * setup is based on type of panel supported
-	 */
-
-	lccr0 = vid->pxa.reg_lccr0;
-
-	/* 4 bit interface */
-	if ((lccr0 & LCCR0_CMS) && (lccr0 & LCCR0_SDS) && !(lccr0 & LCCR0_DPD))
-	{
-		debug("Setting GPIO for 4 bit data\n");
-		/* bits 58-61 */
-		writel(readl(GPDR1) | (0xf << 26), GPDR1);
-		writel((readl(GAFR1_U) & ~(0xff << 20)) | (0xaa << 20),
-			GAFR1_U);
-
-		/* bits 74-77 */
-		writel(readl(GPDR2) | (0xf << 10), GPDR2);
-		writel((readl(GAFR2_L) & ~(0xff << 20)) | (0xaa << 20),
-			GAFR2_L);
-	}
-
-	/* 8 bit interface */
-	else if (((lccr0 & LCCR0_CMS) && ((lccr0 & LCCR0_SDS) || (lccr0 & LCCR0_DPD))) ||
-		(!(lccr0 & LCCR0_CMS) && !(lccr0 & LCCR0_PAS) && !(lccr0 & LCCR0_SDS)))
-	{
-		debug("Setting GPIO for 8 bit data\n");
-		/* bits 58-65 */
-		writel(readl(GPDR1) | (0x3f << 26), GPDR1);
-		writel(readl(GPDR2) | (0x3), GPDR2);
-
-		writel((readl(GAFR1_U) & ~(0xfff << 20)) | (0xaaa << 20),
-			GAFR1_U);
-		writel((readl(GAFR2_L) & ~0xf) | (0xa), GAFR2_L);
-
-		/* bits 74-77 */
-		writel(readl(GPDR2) | (0xf << 10), GPDR2);
-		writel((readl(GAFR2_L) & ~(0xff << 20)) | (0xaa << 20),
-			GAFR2_L);
-	}
-
-	/* 16 bit interface */
-	else if (!(lccr0 & LCCR0_CMS) && ((lccr0 & LCCR0_SDS) || (lccr0 & LCCR0_PAS)))
-	{
-		debug("Setting GPIO for 16 bit data\n");
-		/* bits 58-77 */
-		writel(readl(GPDR1) | (0x3f << 26), GPDR1);
-		writel(readl(GPDR2) | 0x00003fff, GPDR2);
-
-		writel((readl(GAFR1_U) & ~(0xfff << 20)) | (0xaaa << 20),
-			GAFR1_U);
-		writel((readl(GAFR2_L) & 0xf0000000) | 0x0aaaaaaa, GAFR2_L);
-	}
-	else
-	{
-		printf("pxafb_setup_gpio: unable to determine bits per pixel\n");
-	}
-}
-#endif
-
-static void pxafb_enable_controller (vidinfo_t *vid)
-{
-	debug("Enabling LCD controller\n");
-
-	/* Sequence from 11.7.10 */
-	writel(vid->pxa.reg_lccr3, LCCR3);
-	writel(vid->pxa.reg_lccr2, LCCR2);
-	writel(vid->pxa.reg_lccr1, LCCR1);
-	writel(vid->pxa.reg_lccr0 & ~LCCR0_ENB, LCCR0);
-	writel(vid->pxa.fdadr0, FDADR0);
-	writel(vid->pxa.fdadr1, FDADR1);
-	writel(readl(LCCR0) | LCCR0_ENB, LCCR0);
-
-#ifdef	CONFIG_CPU_MONAHANS
-	writel(readl(CKENA) | CKENA_1_LCD, CKENA);
-#else
-	writel(readl(CKEN) | CKEN16_LCD, CKEN);
-#endif
-
-	debug("FDADR0 = 0x%08x\n", readl(FDADR0));
-	debug("FDADR1 = 0x%08x\n", readl(FDADR1));
-	debug("LCCR0 = 0x%08x\n", readl(LCCR0));
-	debug("LCCR1 = 0x%08x\n", readl(LCCR1));
-	debug("LCCR2 = 0x%08x\n", readl(LCCR2));
-	debug("LCCR3 = 0x%08x\n", readl(LCCR3));
-}
-
-static int pxafb_init (vidinfo_t *vid)
-{
-	struct pxafb_info *fbi = &vid->pxa;
-
-	debug("Configuring PXA LCD\n");
-
-	fbi->reg_lccr0 = REG_LCCR0;
-	fbi->reg_lccr3 = REG_LCCR3;
-
-	debug("vid: vl_col=%d hslen=%d lm=%d rm=%d\n",
-		vid->vl_col, vid->vl_hpw,
-		vid->vl_blw, vid->vl_elw);
-	debug("vid: vl_row=%d vslen=%d um=%d bm=%d\n",
-		vid->vl_row, vid->vl_vpw,
-		vid->vl_bfw, vid->vl_efw);
-
-	fbi->reg_lccr1 =
-		LCCR1_DisWdth(vid->vl_col) +
-		LCCR1_HorSnchWdth(vid->vl_hpw) +
-		LCCR1_BegLnDel(vid->vl_blw) +
-		LCCR1_EndLnDel(vid->vl_elw);
-
-	fbi->reg_lccr2 =
-		LCCR2_DisHght(vid->vl_row) +
-		LCCR2_VrtSnchWdth(vid->vl_vpw) +
-		LCCR2_BegFrmDel(vid->vl_bfw) +
-		LCCR2_EndFrmDel(vid->vl_efw);
-
-	fbi->reg_lccr3 = REG_LCCR3 & ~(LCCR3_HSP | LCCR3_VSP);
-	fbi->reg_lccr3 |= (vid->vl_hsp ? LCCR3_HorSnchL : LCCR3_HorSnchH)
-			| (vid->vl_vsp ? LCCR3_VrtSnchL : LCCR3_VrtSnchH);
-
-
-	/* setup dma descriptors */
-	fbi->dmadesc_fblow = (struct pxafb_dma_descriptor *)((unsigned int)fbi->palette - 3*16);
-	fbi->dmadesc_fbhigh = (struct pxafb_dma_descriptor *)((unsigned int)fbi->palette - 2*16);
-	fbi->dmadesc_palette = (struct pxafb_dma_descriptor *)((unsigned int)fbi->palette - 1*16);
-
-	#define BYTES_PER_PANEL	((fbi->reg_lccr0 & LCCR0_SDS) ? \
-		(vid->vl_col * vid->vl_row * NBITS(vid->vl_bpix) / 8 / 2) : \
-		(vid->vl_col * vid->vl_row * NBITS(vid->vl_bpix) / 8))
-
-	/* populate descriptors */
-	fbi->dmadesc_fblow->fdadr = (u_long)fbi->dmadesc_fblow;
-	fbi->dmadesc_fblow->fsadr = fbi->screen + BYTES_PER_PANEL;
-	fbi->dmadesc_fblow->fidr  = 0;
-	fbi->dmadesc_fblow->ldcmd = BYTES_PER_PANEL;
-
-	fbi->fdadr1 = (u_long)fbi->dmadesc_fblow; /* only used in dual-panel mode */
-
-	fbi->dmadesc_fbhigh->fsadr = fbi->screen;
-	fbi->dmadesc_fbhigh->fidr = 0;
-	fbi->dmadesc_fbhigh->ldcmd = BYTES_PER_PANEL;
-
-	fbi->dmadesc_palette->fsadr = fbi->palette;
-	fbi->dmadesc_palette->fidr  = 0;
-	fbi->dmadesc_palette->ldcmd = (fbi->palette_size * 2) | LDCMD_PAL;
-
-	if( NBITS(vid->vl_bpix) < 12)
-	{
-		/* assume any mode with <12 bpp is palette driven */
-		fbi->dmadesc_palette->fdadr = (u_long)fbi->dmadesc_fbhigh;
-		fbi->dmadesc_fbhigh->fdadr = (u_long)fbi->dmadesc_palette;
-		/* flips back and forth between pal and fbhigh */
-		fbi->fdadr0 = (u_long)fbi->dmadesc_palette;
-	}
-	else
-	{
-		/* palette shouldn't be loaded in true-color mode */
-		fbi->dmadesc_fbhigh->fdadr = (u_long)fbi->dmadesc_fbhigh;
-		fbi->fdadr0 = (u_long)fbi->dmadesc_fbhigh; /* no pal just fbhigh */
-	}
-
-	debug("fbi->dmadesc_fblow = 0x%lx\n", (u_long)fbi->dmadesc_fblow);
-	debug("fbi->dmadesc_fbhigh = 0x%lx\n", (u_long)fbi->dmadesc_fbhigh);
-	debug("fbi->dmadesc_palette = 0x%lx\n", (u_long)fbi->dmadesc_palette);
-
-	debug("fbi->dmadesc_fblow->fdadr = 0x%lx\n", fbi->dmadesc_fblow->fdadr);
-	debug("fbi->dmadesc_fbhigh->fdadr = 0x%lx\n", fbi->dmadesc_fbhigh->fdadr);
-	debug("fbi->dmadesc_palette->fdadr = 0x%lx\n", fbi->dmadesc_palette->fdadr);
-
-	debug("fbi->dmadesc_fblow->fsadr = 0x%lx\n", fbi->dmadesc_fblow->fsadr);
-	debug("fbi->dmadesc_fbhigh->fsadr = 0x%lx\n", fbi->dmadesc_fbhigh->fsadr);
-	debug("fbi->dmadesc_palette->fsadr = 0x%lx\n", fbi->dmadesc_palette->fsadr);
-
-	debug("fbi->dmadesc_fblow->ldcmd = 0x%lx\n", fbi->dmadesc_fblow->ldcmd);
-	debug("fbi->dmadesc_fbhigh->ldcmd = 0x%lx\n", fbi->dmadesc_fbhigh->ldcmd);
-	debug("fbi->dmadesc_palette->ldcmd = 0x%lx\n", fbi->dmadesc_palette->ldcmd);
-
-	return 0;
-}
-
-/************************************************************************/
-/************************************************************************/
-
-#endif /* CONFIG_LCD */
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 20b2e6f..250aebd 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -36,6 +36,7 @@ COBJS-$(CONFIG_EXYNOS_MIPI_DSIM) += exynos_mipi_dsi.o exynos_mipi_dsi_common.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
diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c
new file mode 100644
index 0000000..25747b1
--- /dev/null
+++ b/drivers/video/pxa_lcd.c
@@ -0,0 +1,650 @@
+/*
+ * PXA LCD Controller
+ *
+ * (C) Copyright 2001-2002
+ * Wolfgang Denk, DENX Software Engineering -- wd at denx.de
+ *
+ * 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
+ */
+
+/************************************************************************/
+/* ** HEADER FILES							*/
+/************************************************************************/
+
+#include <config.h>
+#include <common.h>
+#include <version.h>
+#include <stdarg.h>
+#include <linux/types.h>
+#include <stdio_dev.h>
+#include <lcd.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/io.h>
+
+/* #define DEBUG */
+
+#ifdef CONFIG_LCD
+
+/*----------------------------------------------------------------------*/
+/*
+ * Define panel bpp, LCCR0, LCCR3 and panel_info video struct for
+ * your display.
+ */
+
+#ifdef CONFIG_PXA_VGA
+/* LCD outputs connected to a video DAC  */
+# define LCD_BPP	LCD_COLOR8
+
+/* you have to set lccr0 and lccr3 (including pcd) */
+# define REG_LCCR0	0x003008f8
+# define REG_LCCR3	0x0300FF01
+
+/* 640x480x16 @ 61 Hz */
+vidinfo_t panel_info = {
+	.vl_col		= 640,
+	.vl_row		= 480,
+	.vl_width	= 640,
+	.vl_height	= 480,
+	.vl_clkp	= CONFIG_SYS_HIGH,
+	.vl_oep		= CONFIG_SYS_HIGH,
+	.vl_hsp		= CONFIG_SYS_HIGH,
+	.vl_vsp		= CONFIG_SYS_HIGH,
+	.vl_dp		= CONFIG_SYS_HIGH,
+	.vl_bpix	= LCD_BPP,
+	.vl_lbw		= 0,
+	.vl_splt	= 0,
+	.vl_clor	= 0,
+	.vl_tft		= 1,
+	.vl_hpw		= 40,
+	.vl_blw		= 56,
+	.vl_elw		= 56,
+	.vl_vpw		= 20,
+	.vl_bfw		= 8,
+	.vl_efw		= 8,
+};
+#endif /* CONFIG_PXA_VIDEO */
+
+/*----------------------------------------------------------------------*/
+#ifdef CONFIG_SHARP_LM8V31
+
+# define LCD_BPP	LCD_COLOR8
+# define LCD_INVERT_COLORS	/* Needed for colors to be correct, but why?	*/
+
+/* you have to set lccr0 and lccr3 (including pcd) */
+# define REG_LCCR0	0x0030087C
+# define REG_LCCR3	0x0340FF08
+
+vidinfo_t panel_info = {
+	.vl_col		= 640,
+	.vl_row		= 480,
+	.vl_width	= 157,
+	.vl_height	= 118,
+	.vl_clkp	= CONFIG_SYS_HIGH,
+	.vl_oep		= CONFIG_SYS_HIGH,
+	.vl_hsp		= CONFIG_SYS_HIGH,
+	.vl_vsp		= CONFIG_SYS_HIGH,
+	.vl_dp		= CONFIG_SYS_HIGH,
+	.vl_bpix	= LCD_BPP,
+	.vl_lbw		= 0,
+	.vl_splt	= 1,
+	.vl_clor	= 1,
+	.vl_tft		= 0,
+	.vl_hpw		= 1,
+	.vl_blw		= 3,
+	.vl_elw		= 3,
+	.vl_vpw		= 1,
+	.vl_bfw		= 0,
+	.vl_efw		= 0,
+};
+#endif /* CONFIG_SHARP_LM8V31 */
+/*----------------------------------------------------------------------*/
+#ifdef CONFIG_VOIPAC_LCD
+
+# define LCD_BPP	LCD_COLOR8
+# define LCD_INVERT_COLORS
+
+/* you have to set lccr0 and lccr3 (including pcd) */
+# define REG_LCCR0	0x043008f8
+# define REG_LCCR3	0x0340FF08
+
+vidinfo_t panel_info = {
+	.vl_col		= 640,
+	.vl_row		= 480,
+	.vl_width	= 157,
+	.vl_height	= 118,
+	.vl_clkp	= CONFIG_SYS_HIGH,
+	.vl_oep		= CONFIG_SYS_HIGH,
+	.vl_hsp		= CONFIG_SYS_HIGH,
+	.vl_vsp		= CONFIG_SYS_HIGH,
+	.vl_dp		= CONFIG_SYS_HIGH,
+	.vl_bpix	= LCD_BPP,
+	.vl_lbw		= 0,
+	.vl_splt	= 1,
+	.vl_clor	= 1,
+	.vl_tft		= 1,
+	.vl_hpw		= 32,
+	.vl_blw		= 144,
+	.vl_elw		= 32,
+	.vl_vpw		= 2,
+	.vl_bfw		= 13,
+	.vl_efw		= 30,
+};
+#endif /* CONFIG_VOIPAC_LCD */
+
+/*----------------------------------------------------------------------*/
+#ifdef CONFIG_HITACHI_SX14
+/* Hitachi SX14Q004-ZZA color STN LCD */
+#define LCD_BPP		LCD_COLOR8
+
+/* you have to set lccr0 and lccr3 (including pcd) */
+#define REG_LCCR0	0x00301079
+#define REG_LCCR3	0x0340FF20
+
+vidinfo_t panel_info = {
+	.vl_col		= 320,
+	.vl_row		= 240,
+	.vl_width	= 167,
+	.vl_height	= 109,
+	.vl_clkp	= CONFIG_SYS_HIGH,
+	.vl_oep		= CONFIG_SYS_HIGH,
+	.vl_hsp		= CONFIG_SYS_HIGH,
+	.vl_vsp		= CONFIG_SYS_HIGH,
+	.vl_dp		= CONFIG_SYS_HIGH,
+	.vl_bpix	= LCD_BPP,
+	.vl_lbw		= 1,
+	.vl_splt	= 0,
+	.vl_clor	= 1,
+	.vl_tft		= 0,
+	.vl_hpw		= 1,
+	.vl_blw		= 1,
+	.vl_elw		= 1,
+	.vl_vpw		= 7,
+	.vl_bfw		= 0,
+	.vl_efw		= 0,
+};
+#endif /* CONFIG_HITACHI_SX14 */
+
+/*----------------------------------------------------------------------*/
+#ifdef CONFIG_LMS283GF05
+
+# define LCD_BPP	LCD_COLOR8
+/*# define LCD_INVERT_COLORS*/
+
+/* you have to set lccr0 and lccr3 (including pcd) */
+# define REG_LCCR0	0x043008f8
+# define REG_LCCR3	0x03b00009
+
+vidinfo_t panel_info = {
+	.vl_col		= 240,
+	.vl_row		= 320,
+	.vl_width	= 240,
+	.vl_height	= 320,
+	.vl_clkp	= CONFIG_SYS_HIGH,
+	.vl_oep		= CONFIG_SYS_LOW,
+	.vl_hsp		= CONFIG_SYS_LOW,
+	.vl_vsp		= CONFIG_SYS_LOW,
+	.vl_dp		= CONFIG_SYS_HIGH,
+	.vl_bpix	= LCD_BPP,
+	.vl_lbw		= 0,
+	.vl_splt	= 1,
+	.vl_clor	= 1,
+	.vl_tft		= 1,
+	.vl_hpw		= 4,
+	.vl_blw		= 4,
+	.vl_elw		= 8,
+	.vl_vpw		= 4,
+	.vl_bfw		= 4,
+	.vl_efw		= 8,
+};
+#endif /* CONFIG_LMS283GF05 */
+
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_ACX517AKN
+
+# define LCD_BPP	LCD_COLOR8
+
+/* you have to set lccr0 and lccr3 (including pcd) */
+# define REG_LCCR0	0x003008f9
+# define REG_LCCR3	0x03700006
+
+vidinfo_t panel_info = {
+	.vl_col		= 320,
+	.vl_row		= 320,
+	.vl_width	= 320,
+	.vl_height	= 320,
+	.vl_clkp	= CONFIG_SYS_HIGH,
+	.vl_oep		= CONFIG_SYS_LOW,
+	.vl_hsp		= CONFIG_SYS_LOW,
+	.vl_vsp		= CONFIG_SYS_LOW,
+	.vl_dp		= CONFIG_SYS_HIGH,
+	.vl_bpix	= LCD_BPP,
+	.vl_lbw		= 0,
+	.vl_splt	= 1,
+	.vl_clor	= 1,
+	.vl_tft		= 1,
+	.vl_hpw		= 0x04,
+	.vl_blw		= 0x1c,
+	.vl_elw		= 0x08,
+	.vl_vpw		= 0x01,
+	.vl_bfw		= 0x07,
+	.vl_efw		= 0x08,
+};
+#endif /* CONFIG_ACX517AKN */
+
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_LQ038J7DH53
+
+# define LCD_BPP	LCD_COLOR8
+
+/* you have to set lccr0 and lccr3 (including pcd) */
+# define REG_LCCR0	0x003008f9
+# define REG_LCCR3	0x03700004
+
+vidinfo_t panel_info = {
+	.vl_col		= 320,
+	.vl_row		= 480,
+	.vl_width	= 320,
+	.vl_height	= 480,
+	.vl_clkp	= CONFIG_SYS_HIGH,
+	.vl_oep		= CONFIG_SYS_LOW,
+	.vl_hsp		= CONFIG_SYS_LOW,
+	.vl_vsp		= CONFIG_SYS_LOW,
+	.vl_dp		= CONFIG_SYS_HIGH,
+	.vl_bpix	= LCD_BPP,
+	.vl_lbw		= 0,
+	.vl_splt	= 1,
+	.vl_clor	= 1,
+	.vl_tft		= 1,
+	.vl_hpw		= 0x04,
+	.vl_blw		= 0x20,
+	.vl_elw		= 0x01,
+	.vl_vpw		= 0x01,
+	.vl_bfw		= 0x04,
+	.vl_efw		= 0x01,
+};
+#endif /* CONFIG_ACX517AKN */
+
+/*----------------------------------------------------------------------*/
+
+#ifdef CONFIG_LITTLETON_LCD
+# define LCD_BPP	LCD_COLOR8
+
+/* you have to set lccr0 and lccr3 (including pcd) */
+# define REG_LCCR0	0x003008f8
+# define REG_LCCR3	0x0300FF04
+
+vidinfo_t panel_info = {
+	.vl_col		= 480,
+	.vl_row		= 640,
+	.vl_width	= 480,
+	.vl_height	= 640,
+	.vl_clkp	= CONFIG_SYS_HIGH,
+	.vl_oep		= CONFIG_SYS_HIGH,
+	.vl_hsp		= CONFIG_SYS_HIGH,
+	.vl_vsp		= CONFIG_SYS_HIGH,
+	.vl_dp		= CONFIG_SYS_HIGH,
+	.vl_bpix	= LCD_BPP,
+	.vl_lbw		= 0,
+	.vl_splt	= 0,
+	.vl_clor	= 0,
+	.vl_tft		= 1,
+	.vl_hpw		= 9,
+	.vl_blw		= 8,
+	.vl_elw		= 24,
+	.vl_vpw		= 2,
+	.vl_bfw		= 2,
+	.vl_efw		= 4,
+};
+#endif /* CONFIG_LITTLETON_LCD */
+
+/*----------------------------------------------------------------------*/
+
+#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;
+
+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  ------------------- */
+/************************************************************************/
+
+void lcd_ctrl_init (void *lcdbase)
+{
+	pxafb_init_mem(lcdbase, &panel_info);
+	pxafb_init(&panel_info);
+	pxafb_setup_gpio(&panel_info);
+	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
+lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue)
+{
+	struct pxafb_info *fbi = &panel_info.pxa;
+	unsigned short *palette = (unsigned short *)fbi->palette;
+	u_int val;
+
+	if (regno < fbi->palette_size) {
+		val = ((red << 8) & 0xf800);
+		val |= ((green << 4) & 0x07e0);
+		val |= (blue & 0x001f);
+
+#ifdef LCD_INVERT_COLORS
+		palette[regno] = ~val;
+#else
+		palette[regno] = val;
+#endif
+	}
+
+	debug ("setcolreg: reg %2d @ %p: R=%02X G=%02X B=%02X => %04X\n",
+		regno, &palette[regno],
+		red, green, blue,
+		palette[regno]);
+}
+#endif /* LCD_COLOR8 */
+
+/*----------------------------------------------------------------------*/
+#if LCD_BPP == LCD_MONOCHROME
+void lcd_initcolregs (void)
+{
+	struct pxafb_info *fbi = &panel_info.pxa;
+	cmap = (ushort *)fbi->palette;
+	ushort regno;
+
+	for (regno = 0; regno < 16; regno++) {
+		cmap[regno * 2] = 0;
+		cmap[(regno * 2) + 1] = regno & 0x0f;
+	}
+}
+#endif /* LCD_MONOCHROME */
+
+/*----------------------------------------------------------------------*/
+void lcd_enable (void)
+{
+}
+
+/*----------------------------------------------------------------------*/
+#ifdef	NOT_USED_SO_FAR
+static void lcd_disable (void)
+{
+}
+#endif /* NOT_USED_SO_FAR */
+
+/*----------------------------------------------------------------------*/
+
+/************************************************************************/
+/* ** PXA255 specific routines						*/
+/************************************************************************/
+
+/*
+ * Calculate fb size for VIDEOLFB_ATAG. Size returned contains fb,
+ * descriptors and palette areas.
+ */
+ulong calc_fbsize (void)
+{
+	ulong size;
+	int line_length = (panel_info.vl_col * NBITS (panel_info.vl_bpix)) / 8;
+
+	size = line_length * panel_info.vl_row;
+	size += PAGE_SIZE;
+
+	return size;
+}
+
+static int pxafb_init_mem (void *lcdbase, vidinfo_t *vid)
+{
+	u_long palette_mem_size;
+	struct pxafb_info *fbi = &vid->pxa;
+	int fb_size = vid->vl_row * (vid->vl_col * NBITS (vid->vl_bpix)) / 8;
+
+	fbi->screen = (u_long)lcdbase;
+
+	fbi->palette_size = NBITS(vid->vl_bpix) == 8 ? 256 : 16;
+	palette_mem_size = fbi->palette_size * sizeof(u16);
+
+	debug("palette_mem_size = 0x%08lx\n", (u_long) palette_mem_size);
+	/* locate palette and descs at end of page following fb */
+	fbi->palette = (u_long)lcdbase + fb_size + PAGE_SIZE - palette_mem_size;
+
+	return 0;
+}
+#ifdef	CONFIG_CPU_MONAHANS
+static inline void pxafb_setup_gpio (vidinfo_t *vid) {}
+#else
+static void pxafb_setup_gpio (vidinfo_t *vid)
+{
+	u_long lccr0;
+
+	/*
+	 * setup is based on type of panel supported
+	 */
+
+	lccr0 = vid->pxa.reg_lccr0;
+
+	/* 4 bit interface */
+	if ((lccr0 & LCCR0_CMS) && (lccr0 & LCCR0_SDS) && !(lccr0 & LCCR0_DPD))
+	{
+		debug("Setting GPIO for 4 bit data\n");
+		/* bits 58-61 */
+		writel(readl(GPDR1) | (0xf << 26), GPDR1);
+		writel((readl(GAFR1_U) & ~(0xff << 20)) | (0xaa << 20),
+			GAFR1_U);
+
+		/* bits 74-77 */
+		writel(readl(GPDR2) | (0xf << 10), GPDR2);
+		writel((readl(GAFR2_L) & ~(0xff << 20)) | (0xaa << 20),
+			GAFR2_L);
+	}
+
+	/* 8 bit interface */
+	else if (((lccr0 & LCCR0_CMS) && ((lccr0 & LCCR0_SDS) || (lccr0 & LCCR0_DPD))) ||
+		(!(lccr0 & LCCR0_CMS) && !(lccr0 & LCCR0_PAS) && !(lccr0 & LCCR0_SDS)))
+	{
+		debug("Setting GPIO for 8 bit data\n");
+		/* bits 58-65 */
+		writel(readl(GPDR1) | (0x3f << 26), GPDR1);
+		writel(readl(GPDR2) | (0x3), GPDR2);
+
+		writel((readl(GAFR1_U) & ~(0xfff << 20)) | (0xaaa << 20),
+			GAFR1_U);
+		writel((readl(GAFR2_L) & ~0xf) | (0xa), GAFR2_L);
+
+		/* bits 74-77 */
+		writel(readl(GPDR2) | (0xf << 10), GPDR2);
+		writel((readl(GAFR2_L) & ~(0xff << 20)) | (0xaa << 20),
+			GAFR2_L);
+	}
+
+	/* 16 bit interface */
+	else if (!(lccr0 & LCCR0_CMS) && ((lccr0 & LCCR0_SDS) || (lccr0 & LCCR0_PAS)))
+	{
+		debug("Setting GPIO for 16 bit data\n");
+		/* bits 58-77 */
+		writel(readl(GPDR1) | (0x3f << 26), GPDR1);
+		writel(readl(GPDR2) | 0x00003fff, GPDR2);
+
+		writel((readl(GAFR1_U) & ~(0xfff << 20)) | (0xaaa << 20),
+			GAFR1_U);
+		writel((readl(GAFR2_L) & 0xf0000000) | 0x0aaaaaaa, GAFR2_L);
+	}
+	else
+	{
+		printf("pxafb_setup_gpio: unable to determine bits per pixel\n");
+	}
+}
+#endif
+
+static void pxafb_enable_controller (vidinfo_t *vid)
+{
+	debug("Enabling LCD controller\n");
+
+	/* Sequence from 11.7.10 */
+	writel(vid->pxa.reg_lccr3, LCCR3);
+	writel(vid->pxa.reg_lccr2, LCCR2);
+	writel(vid->pxa.reg_lccr1, LCCR1);
+	writel(vid->pxa.reg_lccr0 & ~LCCR0_ENB, LCCR0);
+	writel(vid->pxa.fdadr0, FDADR0);
+	writel(vid->pxa.fdadr1, FDADR1);
+	writel(readl(LCCR0) | LCCR0_ENB, LCCR0);
+
+#ifdef	CONFIG_CPU_MONAHANS
+	writel(readl(CKENA) | CKENA_1_LCD, CKENA);
+#else
+	writel(readl(CKEN) | CKEN16_LCD, CKEN);
+#endif
+
+	debug("FDADR0 = 0x%08x\n", readl(FDADR0));
+	debug("FDADR1 = 0x%08x\n", readl(FDADR1));
+	debug("LCCR0 = 0x%08x\n", readl(LCCR0));
+	debug("LCCR1 = 0x%08x\n", readl(LCCR1));
+	debug("LCCR2 = 0x%08x\n", readl(LCCR2));
+	debug("LCCR3 = 0x%08x\n", readl(LCCR3));
+}
+
+static int pxafb_init (vidinfo_t *vid)
+{
+	struct pxafb_info *fbi = &vid->pxa;
+
+	debug("Configuring PXA LCD\n");
+
+	fbi->reg_lccr0 = REG_LCCR0;
+	fbi->reg_lccr3 = REG_LCCR3;
+
+	debug("vid: vl_col=%d hslen=%d lm=%d rm=%d\n",
+		vid->vl_col, vid->vl_hpw,
+		vid->vl_blw, vid->vl_elw);
+	debug("vid: vl_row=%d vslen=%d um=%d bm=%d\n",
+		vid->vl_row, vid->vl_vpw,
+		vid->vl_bfw, vid->vl_efw);
+
+	fbi->reg_lccr1 =
+		LCCR1_DisWdth(vid->vl_col) +
+		LCCR1_HorSnchWdth(vid->vl_hpw) +
+		LCCR1_BegLnDel(vid->vl_blw) +
+		LCCR1_EndLnDel(vid->vl_elw);
+
+	fbi->reg_lccr2 =
+		LCCR2_DisHght(vid->vl_row) +
+		LCCR2_VrtSnchWdth(vid->vl_vpw) +
+		LCCR2_BegFrmDel(vid->vl_bfw) +
+		LCCR2_EndFrmDel(vid->vl_efw);
+
+	fbi->reg_lccr3 = REG_LCCR3 & ~(LCCR3_HSP | LCCR3_VSP);
+	fbi->reg_lccr3 |= (vid->vl_hsp ? LCCR3_HorSnchL : LCCR3_HorSnchH)
+			| (vid->vl_vsp ? LCCR3_VrtSnchL : LCCR3_VrtSnchH);
+
+
+	/* setup dma descriptors */
+	fbi->dmadesc_fblow = (struct pxafb_dma_descriptor *)((unsigned int)fbi->palette - 3*16);
+	fbi->dmadesc_fbhigh = (struct pxafb_dma_descriptor *)((unsigned int)fbi->palette - 2*16);
+	fbi->dmadesc_palette = (struct pxafb_dma_descriptor *)((unsigned int)fbi->palette - 1*16);
+
+	#define BYTES_PER_PANEL	((fbi->reg_lccr0 & LCCR0_SDS) ? \
+		(vid->vl_col * vid->vl_row * NBITS(vid->vl_bpix) / 8 / 2) : \
+		(vid->vl_col * vid->vl_row * NBITS(vid->vl_bpix) / 8))
+
+	/* populate descriptors */
+	fbi->dmadesc_fblow->fdadr = (u_long)fbi->dmadesc_fblow;
+	fbi->dmadesc_fblow->fsadr = fbi->screen + BYTES_PER_PANEL;
+	fbi->dmadesc_fblow->fidr  = 0;
+	fbi->dmadesc_fblow->ldcmd = BYTES_PER_PANEL;
+
+	fbi->fdadr1 = (u_long)fbi->dmadesc_fblow; /* only used in dual-panel mode */
+
+	fbi->dmadesc_fbhigh->fsadr = fbi->screen;
+	fbi->dmadesc_fbhigh->fidr = 0;
+	fbi->dmadesc_fbhigh->ldcmd = BYTES_PER_PANEL;
+
+	fbi->dmadesc_palette->fsadr = fbi->palette;
+	fbi->dmadesc_palette->fidr  = 0;
+	fbi->dmadesc_palette->ldcmd = (fbi->palette_size * 2) | LDCMD_PAL;
+
+	if( NBITS(vid->vl_bpix) < 12)
+	{
+		/* assume any mode with <12 bpp is palette driven */
+		fbi->dmadesc_palette->fdadr = (u_long)fbi->dmadesc_fbhigh;
+		fbi->dmadesc_fbhigh->fdadr = (u_long)fbi->dmadesc_palette;
+		/* flips back and forth between pal and fbhigh */
+		fbi->fdadr0 = (u_long)fbi->dmadesc_palette;
+	}
+	else
+	{
+		/* palette shouldn't be loaded in true-color mode */
+		fbi->dmadesc_fbhigh->fdadr = (u_long)fbi->dmadesc_fbhigh;
+		fbi->fdadr0 = (u_long)fbi->dmadesc_fbhigh; /* no pal just fbhigh */
+	}
+
+	debug("fbi->dmadesc_fblow = 0x%lx\n", (u_long)fbi->dmadesc_fblow);
+	debug("fbi->dmadesc_fbhigh = 0x%lx\n", (u_long)fbi->dmadesc_fbhigh);
+	debug("fbi->dmadesc_palette = 0x%lx\n", (u_long)fbi->dmadesc_palette);
+
+	debug("fbi->dmadesc_fblow->fdadr = 0x%lx\n", fbi->dmadesc_fblow->fdadr);
+	debug("fbi->dmadesc_fbhigh->fdadr = 0x%lx\n", fbi->dmadesc_fbhigh->fdadr);
+	debug("fbi->dmadesc_palette->fdadr = 0x%lx\n", fbi->dmadesc_palette->fdadr);
+
+	debug("fbi->dmadesc_fblow->fsadr = 0x%lx\n", fbi->dmadesc_fblow->fsadr);
+	debug("fbi->dmadesc_fbhigh->fsadr = 0x%lx\n", fbi->dmadesc_fbhigh->fsadr);
+	debug("fbi->dmadesc_palette->fsadr = 0x%lx\n", fbi->dmadesc_palette->fsadr);
+
+	debug("fbi->dmadesc_fblow->ldcmd = 0x%lx\n", fbi->dmadesc_fblow->ldcmd);
+	debug("fbi->dmadesc_fbhigh->ldcmd = 0x%lx\n", fbi->dmadesc_fbhigh->ldcmd);
+	debug("fbi->dmadesc_palette->ldcmd = 0x%lx\n", fbi->dmadesc_palette->ldcmd);
+
+	return 0;
+}
+
+/************************************************************************/
+/************************************************************************/
+
+#endif /* CONFIG_LCD */
diff --git a/include/configs/lubbock.h b/include/configs/lubbock.h
index 5886a15..b99a056 100644
--- a/include/configs/lubbock.h
+++ b/include/configs/lubbock.h
@@ -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
diff --git a/include/configs/palmld.h b/include/configs/palmld.h
index 3f9802c..4ee2e46 100644
--- a/include/configs/palmld.h
+++ b/include/configs/palmld.h
@@ -72,6 +72,7 @@
 #define	CONFIG_CMD_MMC
 #define	CONFIG_CMD_IDE
 #define	CONFIG_LCD
+#define	CONFIG_PXA_LCD
 
 /*
  * MMC Card Configuration
diff --git a/include/configs/palmtc.h b/include/configs/palmtc.h
index 64771e7..70fe05c 100644
--- a/include/configs/palmtc.h
+++ b/include/configs/palmtc.h
@@ -74,6 +74,7 @@
 #define	CONFIG_CMD_ENV
 #define	CONFIG_CMD_MMC
 #define	CONFIG_LCD
+#define	CONFIG_PXA_LCD
 
 /*
  * MMC Card Configuration
diff --git a/include/configs/pxa255_idp.h b/include/configs/pxa255_idp.h
index 5a15af6..39c167f 100644
--- a/include/configs/pxa255_idp.h
+++ b/include/configs/pxa255_idp.h
@@ -59,6 +59,7 @@
 
 #undef CONFIG_LCD
 #ifdef CONFIG_LCD
+#define CONFIG_PXA_LCD
 #define CONFIG_SHARP_LM8V31
 #endif
 
diff --git a/include/configs/zipitz2.h b/include/configs/zipitz2.h
index b92f70b..f79dd3b 100644
--- a/include/configs/zipitz2.h
+++ b/include/configs/zipitz2.h
@@ -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
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 05/10] common/lcd.c: cleanup use of global variables
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                   ` (3 preceding siblings ...)
  2013-01-12 22:07 ` [U-Boot] [PATCH 04/10] lcd, pxafb: move the pxafb " Jeroen Hofstee
@ 2013-01-12 22:07 ` Jeroen Hofstee
  2013-01-16  1:23   ` Bo Shen
  2013-01-12 22:07 ` [U-Boot] [PATCH 06/10] common/lcd.c: remove global lcd_base Jeroen Hofstee
                   ` (6 subsequent siblings)
  11 siblings, 1 reply; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

console_col, console_row, lcd_line_length, lcd_console_address had
to be declared in board / driver specific code, but were not actually
used there. Get rid of the global variables.

Cc: Alessandro Rubini <rubini@unipv.it>
Cc: Anatolij Gustschin <agust@denx.de>
Cc: Bo Shen <voice.shen@atmel.com>
Cc: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Marek Vasut <marek.vasut@gmail.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Nikita Kiryanov <nikita@compulab.co.il>
Cc: Simon Glass <sjg@chromium.org>
Cc: Stelian Pop <stelian@popies.net>
Cc: Tom Warren <twarren@nvidia.com>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 board/mcc200/lcd.c           |    6 ------
 common/lcd.c                 |    6 ++++++
 drivers/video/atmel_hlcdfb.c |    6 ------
 drivers/video/atmel_lcdfb.c  |    6 ------
 drivers/video/exynos_fb.c    |    6 ------
 drivers/video/mpc8xx_lcd.c   |    6 ------
 drivers/video/pxa_lcd.c      |    6 ------
 drivers/video/tegra.c        |    6 ------
 include/lcd.h                |    5 -----
 9 files changed, 6 insertions(+), 47 deletions(-)

diff --git a/board/mcc200/lcd.c b/board/mcc200/lcd.c
index 0f3f585..caf8d8b 100644
--- a/board/mcc200/lcd.c
+++ b/board/mcc200/lcd.c
@@ -68,16 +68,10 @@ vidinfo_t panel_info = {
 	LCD_WIDTH, LCD_HEIGHT, LCD_BPP
 };
 
-int lcd_line_length;
-
 /*
  * 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
diff --git a/common/lcd.c b/common/lcd.c
index b67724e..d3fd68d 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -99,9 +99,15 @@ static void lcd_setbgcolor(int color);
 
 static int lcd_color_fg;
 static int lcd_color_bg;
+static int lcd_line_length;
 
 char lcd_is_enabled = 0;
 
+static short console_col;
+static short console_row;
+
+static void *lcd_console_address;
+
 static char lcd_flush_dcache;	/* 1 to flush dcache after each lcd update */
 
 
diff --git a/drivers/video/atmel_hlcdfb.c b/drivers/video/atmel_hlcdfb.c
index e74eb65..32626cf 100644
--- a/drivers/video/atmel_hlcdfb.c
+++ b/drivers/video/atmel_hlcdfb.c
@@ -29,13 +29,7 @@
 #include <lcd.h>
 #include <atmel_hlcdc.h>
 
-int lcd_line_length;
-
 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
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index d96f175..370d9ca 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
@@ -29,13 +29,7 @@
 #include <lcd.h>
 #include <atmel_lcdc.h>
 
-int lcd_line_length;
-
 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
diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
index 3dd6100..3e5f868 100644
--- a/drivers/video/exynos_fb.c
+++ b/drivers/video/exynos_fb.c
@@ -33,13 +33,7 @@
 
 #include "exynos_fb.h"
 
-int lcd_line_length;
-
 void *lcd_base;
-void *lcd_console_address;
-
-short console_col;
-short console_row;
 
 static unsigned int panel_width, panel_height;
 
diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
index 4fd44ac..26ad432 100644
--- a/drivers/video/mpc8xx_lcd.c
+++ b/drivers/video/mpc8xx_lcd.c
@@ -256,16 +256,10 @@ vidinfo_t panel_info = {
 /*----------------------------------------------------------------------*/
 
 
-int lcd_line_length;
-
 /*
  * 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;
 
 /************************************************************************/
 
diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c
index 25747b1..57243ce 100644
--- a/drivers/video/pxa_lcd.c
+++ b/drivers/video/pxa_lcd.c
@@ -332,13 +332,7 @@ void lcd_getcolreg (ushort regno, ushort *red, ushort *green, ushort *blue);
 void lcd_ctrl_init	(void *lcdbase);
 void lcd_enable	(void);
 
-int lcd_line_length;
-
 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);
diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
index 26a96a5..0d1cfa9 100644
--- a/drivers/video/tegra.c
+++ b/drivers/video/tegra.c
@@ -60,13 +60,7 @@ enum {
 	LCD_MAX_LOG2_BPP	= 4,		/* 2^4 = 16 bpp */
 };
 
-int lcd_line_length;
-
 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 */
diff --git a/include/lcd.h b/include/lcd.h
index 7d8c41f..b8eea9c 100644
--- a/include/lcd.h
+++ b/include/lcd.h
@@ -31,16 +31,11 @@
 
 extern char lcd_is_enabled;
 
-extern int lcd_line_length;
-
 /*
  * 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);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 06/10] common/lcd.c: remove global lcd_base
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                   ` (4 preceding siblings ...)
  2013-01-12 22:07 ` [U-Boot] [PATCH 05/10] common/lcd.c: cleanup use of global variables Jeroen Hofstee
@ 2013-01-12 22:07 ` Jeroen Hofstee
  2013-01-16  1:24   ` Bo Shen
  2013-01-12 22:07 ` [U-Boot] [PATCH 07/10] common/lcd: cosmetic: clean up a bit Jeroen Hofstee
                   ` (5 subsequent siblings)
  11 siblings, 1 reply; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

lcd_base is available as gd->fb_base as well, there is no need
to keep a seperate copy.

Cc: Alessandro Rubini <rubini@unipv.it>
Cc: Anatolij Gustschin <agust@denx.de>
Cc: Bo Shen <voice.shen@atmel.com>
Cc: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Marek Vasut <marek.vasut@gmail.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Nikita Kiryanov <nikita@compulab.co.il>
Cc: Simon Glass <sjg@chromium.org>
Cc: Stelian Pop <stelian@popies.net>
Cc: Tom Warren <twarren@nvidia.com>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 board/mcc200/lcd.c           |    8 ++------
 common/lcd.c                 |    1 +
 drivers/video/atmel_hlcdfb.c |    2 --
 drivers/video/atmel_lcdfb.c  |    2 --
 drivers/video/exynos_fb.c    |    8 +++-----
 drivers/video/mpc8xx_lcd.c   |   12 ++----------
 drivers/video/pxa_lcd.c      |    2 --
 drivers/video/tegra.c        |    6 +-----
 include/lcd.h                |    5 -----
 9 files changed, 9 insertions(+), 37 deletions(-)

diff --git a/board/mcc200/lcd.c b/board/mcc200/lcd.c
index caf8d8b..feded49 100644
--- a/board/mcc200/lcd.c
+++ b/board/mcc200/lcd.c
@@ -68,10 +68,6 @@ vidinfo_t panel_info = {
 	LCD_WIDTH, LCD_HEIGHT, LCD_BPP
 };
 
-/*
- * Frame buffer memory information
- */
-void *lcd_base;			/* Start of framebuffer memory  */
 
 /*
  *  The device we use to communicate with PSoC
@@ -147,12 +143,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++) {
diff --git a/common/lcd.c b/common/lcd.c
index d3fd68d..02f4721 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -107,6 +107,7 @@ 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 */
 
diff --git a/drivers/video/atmel_hlcdfb.c b/drivers/video/atmel_hlcdfb.c
index 32626cf..fc95897 100644
--- a/drivers/video/atmel_hlcdfb.c
+++ b/drivers/video/atmel_hlcdfb.c
@@ -29,8 +29,6 @@
 #include <lcd.h>
 #include <atmel_hlcdc.h>
 
-void *lcd_base;				/* Start of framebuffer memory	*/
-
 /* configurable parameters */
 #define ATMEL_LCDC_CVAL_DEFAULT		0xc8
 #define ATMEL_LCDC_DMA_BURST_LEN	8
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index 370d9ca..2afeab2 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
@@ -29,8 +29,6 @@
 #include <lcd.h>
 #include <atmel_lcdc.h>
 
-void *lcd_base;				/* Start of framebuffer memory	*/
-
 /* configurable parameters */
 #define ATMEL_LCDC_CVAL_DEFAULT		0xc8
 #define ATMEL_LCDC_DMA_BURST_LEN	8
diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
index 3e5f868..6f3c85d 100644
--- a/drivers/video/exynos_fb.c
+++ b/drivers/video/exynos_fb.c
@@ -33,7 +33,7 @@
 
 #include "exynos_fb.h"
 
-void *lcd_base;
+DECLARE_GLOBAL_DATA_PTR;
 
 static unsigned int panel_width, panel_height;
 
@@ -44,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);
 }
 
@@ -135,7 +133,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));
 		draw_logo();
 	}
diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
index 26ad432..1aa1967 100644
--- a/drivers/video/mpc8xx_lcd.c
+++ b/drivers/video/mpc8xx_lcd.c
@@ -255,14 +255,6 @@ vidinfo_t panel_info = {
 #endif
 /*----------------------------------------------------------------------*/
 
-
-/*
- * Frame buffer memory information
- */
-void *lcd_base;			/* Start of framebuffer memory	*/
-
-/************************************************************************/
-
 void lcd_ctrl_init (void *lcdbase);
 void lcd_enable (void);
 #if LCD_BPP == LCD_COLOR8
@@ -392,8 +384,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.
diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c
index 57243ce..fef49c1 100644
--- a/drivers/video/pxa_lcd.c
+++ b/drivers/video/pxa_lcd.c
@@ -332,8 +332,6 @@ void lcd_getcolreg (ushort regno, ushort *red, ushort *green, ushort *blue);
 void lcd_ctrl_init	(void *lcdbase);
 void lcd_enable	(void);
 
-void *lcd_base;			/* Start of framebuffer memory	*/
-
 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);
diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
index 0d1cfa9..941551c 100644
--- a/drivers/video/tegra.c
+++ b/drivers/video/tegra.c
@@ -60,8 +60,6 @@ enum {
 	LCD_MAX_LOG2_BPP	= 4,		/* 2^4 = 16 bpp */
 };
 
-void *lcd_base;			/* Start of framebuffer memory	*/
-
 vidinfo_t panel_info = {
 	/* Insert a value here so that we don't end up in the BSS */
 	.vl_col = -1,
@@ -90,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);
@@ -112,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@%08X\n", disp_config->frame_buffer);
 }
 
 ulong calc_fbsize(void)
diff --git a/include/lcd.h b/include/lcd.h
index b8eea9c..d54a304 100644
--- a/include/lcd.h
+++ b/include/lcd.h
@@ -31,11 +31,6 @@
 
 extern char lcd_is_enabled;
 
-/*
- * Frame buffer memory information
- */
-extern void *lcd_base;			/* Start of framebuffer memory	*/
-
 extern struct vidinfo panel_info;
 
 extern void lcd_ctrl_init (void *lcdbase);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 07/10] common/lcd: cosmetic: clean up a bit
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                   ` (5 preceding siblings ...)
  2013-01-12 22:07 ` [U-Boot] [PATCH 06/10] common/lcd.c: remove global lcd_base Jeroen Hofstee
@ 2013-01-12 22:07 ` Jeroen Hofstee
  2013-03-29 11:04   ` Anatolij Gustschin
  2013-01-12 22:07 ` [U-Boot] [PATCH 08/10] lcd, fb: cleanup, remove prototypes already in lcd.h and unused code Jeroen Hofstee
                   ` (4 subsequent siblings)
  11 siblings, 1 reply; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

 - Make the brackets of the function calls more consistent
 - Remove really unnecessary brackets
 - Removes the extern from the function definitions
 - Remove curly brackets from single line statements
 - Remove lcd_setmem proto since it is already in common.h
 - Don't init globals to 0

cc: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 common/lcd.c  |   84 ++++++++++++++++++++++-----------------------------------
 include/lcd.h |   35 +++++++++++-------------
 2 files changed, 48 insertions(+), 71 deletions(-)

diff --git a/common/lcd.c b/common/lcd.c
index 02f4721..b21ce7f 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -83,15 +83,13 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-ulong lcd_setmem (ulong addr);
-
 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_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);
@@ -111,13 +109,6 @@ 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 */
@@ -156,7 +147,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;
@@ -168,9 +159,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,
@@ -181,16 +171,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();
-	}
 }
 
 /*----------------------------------------------------------------------*/
@@ -242,9 +229,9 @@ void lcd_puts(const char *s)
 		return;
 	}
 
-	while (*s) {
+	while (*s)
 		lcd_putc(*s++);
-	}
+
 	lcd_sync();
 }
 
@@ -291,7 +278,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) {
@@ -321,7 +308,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
 	}
 }
@@ -348,7 +335,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,
 };
@@ -369,7 +356,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];
 		}
 	}
@@ -387,12 +374,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_get_size(&lcd_line_length);
 
@@ -407,7 +394,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;
 }
@@ -446,11 +433,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;
@@ -480,7 +467,7 @@ static int lcd_init(void *lcdbase)
 	lcd_ctrl_init(lcdbase);
 	lcd_is_enabled = 1;
 	lcd_clear();
-	lcd_enable ();
+	lcd_enable();
 
 	/* Initialize the console */
 	console_col = 0;
@@ -521,7 +508,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;
 }
@@ -554,8 +542,6 @@ static int lcd_getbgcolor(void)
 	return lcd_color_bg;
 }
 
-/*----------------------------------------------------------------------*/
-
 /************************************************************************/
 /* ** Chipset depending Bitmap / Logo stuff...                          */
 /************************************************************************/
@@ -572,13 +558,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
@@ -651,7 +635,7 @@ 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 */
@@ -742,12 +726,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)
@@ -874,8 +857,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;
@@ -888,7 +871,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);
 
@@ -956,7 +939,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);
@@ -968,7 +951,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);
 
@@ -1003,7 +986,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;
 
@@ -1015,7 +998,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 */
@@ -1029,7 +1012,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 */
@@ -1089,7 +1072,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) */
 }
 
 void lcd_position_cursor(unsigned col, unsigned row)
@@ -1117,6 +1100,3 @@ int lcd_get_screen_columns(void)
 {
 	return CONSOLE_COLS;
 }
-
-/************************************************************************/
-/************************************************************************/
diff --git a/include/lcd.h b/include/lcd.h
index d54a304..c90a5c5 100644
--- a/include/lcd.h
+++ b/include/lcd.h
@@ -33,19 +33,19 @@ extern char lcd_is_enabled;
 
 extern struct vidinfo panel_info;
 
-extern void lcd_ctrl_init (void *lcdbase);
-extern void lcd_enable (void);
+void lcd_ctrl_init(void *lcdbase);
+void lcd_enable(void);
 
 /* setcolreg used in 8bpp/16bpp; initcolregs used in monochrome */
-extern void lcd_setcolreg (ushort regno,
+void lcd_setcolreg(ushort regno,
 				ushort red, ushort green, ushort blue);
-extern void lcd_initcolregs (void);
+void lcd_initcolregs(void);
 
-extern int lcd_getfgcolor(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
@@ -256,7 +256,6 @@ typedef struct vidinfo {
 	unsigned int sclk_div;
 
 	unsigned int dual_lcd_enabled;
-
 } vidinfo_t;
 
 void init_panel_info(vidinfo_t *vid);
@@ -281,14 +280,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);
 
@@ -348,7 +345,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
@@ -362,10 +359,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 */
@@ -433,7 +430,7 @@ int lcd_get_size(int *line_length);
 
 #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_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)
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 08/10] lcd, fb: cleanup, remove prototypes already in lcd.h and unused code
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                   ` (6 preceding siblings ...)
  2013-01-12 22:07 ` [U-Boot] [PATCH 07/10] common/lcd: cosmetic: clean up a bit Jeroen Hofstee
@ 2013-01-12 22:07 ` Jeroen Hofstee
  2013-01-12 22:07 ` [U-Boot] [PATCH 09/10] api/api_display: use the getters for console size info Jeroen Hofstee
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

cc: Anatolij Gustschin <agust@denx.de>
cc: Cliff Brake <cliff.brake@gmail.com>
cc: John Zhan <zhanz@sinovee.com>
cc: Marek Vasut <marek.vasut@gmail.com>
cc: Wolfgang Denk <wd@denx.de>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 board/mcc200/lcd.c         |    7 -------
 drivers/video/mpc8xx_lcd.c |   40 ----------------------------------------
 drivers/video/pxa_lcd.c    |   33 ---------------------------------
 3 files changed, 80 deletions(-)

diff --git a/board/mcc200/lcd.c b/board/mcc200/lcd.c
index feded49..9d9ce2b 100644
--- a/board/mcc200/lcd.c
+++ b/board/mcc200/lcd.c
@@ -75,13 +75,6 @@ vidinfo_t panel_info = {
 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
  */
 extern int serial_init_dev (unsigned long dev_base);
diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
index 1aa1967..f0f728e 100644
--- a/drivers/video/mpc8xx_lcd.c
+++ b/drivers/video/mpc8xx_lcd.c
@@ -253,23 +253,6 @@ vidinfo_t panel_info = {
     LCD_BPP,  0, 0, 0, 0, 33, 0, 0, 0
 };
 #endif
-/*----------------------------------------------------------------------*/
-
-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 ----------------------- */
@@ -415,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)
diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c
index fef49c1..b40ec36 100644
--- a/drivers/video/pxa_lcd.c
+++ b/drivers/video/pxa_lcd.c
@@ -317,26 +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);
-
 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  ------------------- */
@@ -351,14 +335,6 @@ void lcd_ctrl_init (void *lcdbase)
 }
 
 /*----------------------------------------------------------------------*/
-#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
 lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue)
@@ -406,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						*/
 /************************************************************************/
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 09/10] api/api_display: use the getters for console size info
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                   ` (7 preceding siblings ...)
  2013-01-12 22:07 ` [U-Boot] [PATCH 08/10] lcd, fb: cleanup, remove prototypes already in lcd.h and unused code Jeroen Hofstee
@ 2013-01-12 22:07 ` Jeroen Hofstee
  2013-01-15 18:14   ` Che-liang Chiou
  2013-01-12 22:07 ` [U-Boot] [PATCH 10/10] common/lcd.c: move the macro's to the c file Jeroen Hofstee
                   ` (2 subsequent siblings)
  11 siblings, 1 reply; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

cc: Che-Liang Chiou <clchiou@chromium.org>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 api/api_display.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/api/api_display.c b/api/api_display.c
index 6439170..c167db7 100644
--- a/api/api_display.c
+++ b/api/api_display.c
@@ -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
 	}
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 10/10] common/lcd.c: move the macro's to the c file
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                   ` (8 preceding siblings ...)
  2013-01-12 22:07 ` [U-Boot] [PATCH 09/10] api/api_display: use the getters for console size info Jeroen Hofstee
@ 2013-01-12 22:07 ` Jeroen Hofstee
  2013-03-29 11:05   ` Anatolij Gustschin
  2013-01-13 16:15 ` [U-Boot] [PATCH 01/10] lcd, amba: remove this frame buffer driver since it is not used Alessandro Rubini
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
  11 siblings, 1 reply; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:07 UTC (permalink / raw)
  To: u-boot

Hide the console macros since some reference global data which is
no longer present.

cc: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 common/lcd.c  |   28 ++++++++++++++++++++++++++++
 include/lcd.h |   28 ----------------------------
 2 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/common/lcd.c b/common/lcd.c
index b21ce7f..1fc5e3b 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -81,6 +81,34 @@
 #define CONFIG_CONSOLE_SCROLL_LINES 1
 #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
+
 DECLARE_GLOBAL_DATA_PTR;
 
 static void lcd_drawchars(ushort x, ushort y, uchar *str, int count);
diff --git a/include/lcd.h b/include/lcd.h
index c90a5c5..8ff60b7 100644
--- a/include/lcd.h
+++ b/include/lcd.h
@@ -419,33 +419,5 @@ int lcd_get_size(int *line_length);
 #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_ */
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions
  2013-01-12 22:07 ` [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions Jeroen Hofstee
@ 2013-01-12 22:17   ` Jeroen Hofstee
  2013-01-25 20:38   ` Simon Glass
  1 sibling, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-12 22:17 UTC (permalink / raw)
  To: u-boot

I wrote down your mail address wrongly here. I will fix it in v2,
awaiting other comments.

On 01/12/2013 11:07 PM, Jeroen Hofstee wrote:
> cc: Anatolij Gustschin <agust@denx.de>
> cc: Simon Glass <sjg.chromium.org>
> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
> ---
>   drivers/video/tegra.c |   52 -------------------------------------------------
>   1 file changed, 52 deletions(-)
>
> diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
> index 3709d0b..26a96a5 100644
> --- a/drivers/video/tegra.c
> +++ b/drivers/video/tegra.c
> @@ -73,62 +73,10 @@ vidinfo_t panel_info = {
>   	.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_getfgcolor();
> -			*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;

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 04/10] lcd, pxafb: move the pxafb to drivers/video
  2013-01-12 22:07 ` [U-Boot] [PATCH 04/10] lcd, pxafb: move the pxafb " Jeroen Hofstee
@ 2013-01-13  0:37   ` Marek Vasut
  0 siblings, 0 replies; 33+ messages in thread
From: Marek Vasut @ 2013-01-13  0:37 UTC (permalink / raw)
  To: u-boot

Dear Jeroen Hofstee,

> Since the lcd code was compiled unconditionally for pxa also add
> CONFIG_PXA_LCD to the boards using this framebuffer. Since the
> driver/video contains video and lcd driver add lcd to the name
> to make clear it belongs to common/lcd.c.
> 
> cc: Anatolij Gustschin <agust@denx.de>
> cc: Cliff Brake <cliff.brake@gmail.com>
> cc: Marek Vasut <marek.vasut@gmail.com>
> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>

git format-patch -MC

Otherwise

Acked-by: Marek Vasut <marex@denx.de>

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 01/10] lcd, amba: remove this frame buffer driver since it is not used
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                   ` (9 preceding siblings ...)
  2013-01-12 22:07 ` [U-Boot] [PATCH 10/10] common/lcd.c: move the macro's to the c file Jeroen Hofstee
@ 2013-01-13 16:15 ` Alessandro Rubini
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
  11 siblings, 0 replies; 33+ messages in thread
From: Alessandro Rubini @ 2013-01-13 16:15 UTC (permalink / raw)
  To: u-boot

Hello.

> Since CONFIG_VIDEO_AMBA is not set by any board, it does not seem
> to be used, so remove it since there is no way to (compile) test it.

I used the driver on the nhk8815. But actually it looks like the
"later patch in this set", that my commit message references, was not
merged.  I remember I used it in 32-bit mode and had to hack some
things to make it work, inluding a fater memcopy as scrolling was very
slow.

I don't think I can resurrect my nhk8815 device any soon, and it looks
like nobody else is using this logic cell, so I'm fine removing the
driver.

Acked-by: Alessandro Rubini <rubini@unipv.it>

/alessandro

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 09/10] api/api_display: use the getters for console size info
  2013-01-12 22:07 ` [U-Boot] [PATCH 09/10] api/api_display: use the getters for console size info Jeroen Hofstee
@ 2013-01-15 18:14   ` Che-liang Chiou
  0 siblings, 0 replies; 33+ messages in thread
From: Che-liang Chiou @ 2013-01-15 18:14 UTC (permalink / raw)
  To: u-boot

Acked-by: Che-Liang Chiou <clchiou@chromium.org>

On Sat, Jan 12, 2013 at 2:07 PM, Jeroen Hofstee <jeroen@myspectrum.nl> wrote:
> cc: Che-Liang Chiou <clchiou@chromium.org>
> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
> ---
>  api/api_display.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/api/api_display.c b/api/api_display.c
> index 6439170..c167db7 100644
> --- a/api/api_display.c
> +++ b/api/api_display.c
> @@ -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
>         }
> --
> 1.7.9.5
>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 05/10] common/lcd.c: cleanup use of global variables
  2013-01-12 22:07 ` [U-Boot] [PATCH 05/10] common/lcd.c: cleanup use of global variables Jeroen Hofstee
@ 2013-01-16  1:23   ` Bo Shen
  0 siblings, 0 replies; 33+ messages in thread
From: Bo Shen @ 2013-01-16  1:23 UTC (permalink / raw)
  To: u-boot

On 1/13/2013 6:07, Jeroen Hofstee wrote:
> console_col, console_row, lcd_line_length, lcd_console_address had
> to be declared in board / driver specific code, but were not actually
> used there. Get rid of the global variables.
>
> Cc: Alessandro Rubini <rubini@unipv.it>
> Cc: Anatolij Gustschin <agust@denx.de>
> Cc: Bo Shen <voice.shen@atmel.com>
> Cc: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
> Cc: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Marek Vasut <marek.vasut@gmail.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> Cc: Nikita Kiryanov <nikita@compulab.co.il>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Stelian Pop <stelian@popies.net>
> Cc: Tom Warren <twarren@nvidia.com>
> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
> ---
>   board/mcc200/lcd.c           |    6 ------
>   common/lcd.c                 |    6 ++++++
>   drivers/video/atmel_hlcdfb.c |    6 ------
>   drivers/video/atmel_lcdfb.c  |    6 ------
>   drivers/video/exynos_fb.c    |    6 ------
>   drivers/video/mpc8xx_lcd.c   |    6 ------
>   drivers/video/pxa_lcd.c      |    6 ------
>   drivers/video/tegra.c        |    6 ------
>   include/lcd.h                |    5 -----
>   9 files changed, 6 insertions(+), 47 deletions(-)
>
> diff --git a/board/mcc200/lcd.c b/board/mcc200/lcd.c
> index 0f3f585..caf8d8b 100644
> --- a/board/mcc200/lcd.c
> +++ b/board/mcc200/lcd.c
> @@ -68,16 +68,10 @@ vidinfo_t panel_info = {
>   	LCD_WIDTH, LCD_HEIGHT, LCD_BPP
>   };
>
> -int lcd_line_length;
> -
>   /*
>    * 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
> diff --git a/common/lcd.c b/common/lcd.c
> index b67724e..d3fd68d 100644
> --- a/common/lcd.c
> +++ b/common/lcd.c
> @@ -99,9 +99,15 @@ static void lcd_setbgcolor(int color);
>
>   static int lcd_color_fg;
>   static int lcd_color_bg;
> +static int lcd_line_length;
>
>   char lcd_is_enabled = 0;
>
> +static short console_col;
> +static short console_row;
> +
> +static void *lcd_console_address;
> +
>   static char lcd_flush_dcache;	/* 1 to flush dcache after each lcd update */
>
>
> diff --git a/drivers/video/atmel_hlcdfb.c b/drivers/video/atmel_hlcdfb.c
> index e74eb65..32626cf 100644
> --- a/drivers/video/atmel_hlcdfb.c
> +++ b/drivers/video/atmel_hlcdfb.c
> @@ -29,13 +29,7 @@
>   #include <lcd.h>
>   #include <atmel_hlcdc.h>
>
> -int lcd_line_length;
> -
>   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
> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> index d96f175..370d9ca 100644
> --- a/drivers/video/atmel_lcdfb.c
> +++ b/drivers/video/atmel_lcdfb.c
> @@ -29,13 +29,7 @@
>   #include <lcd.h>
>   #include <atmel_lcdc.h>
>
> -int lcd_line_length;
> -
>   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

For Atmel part, it is ok for me.

Acked-by: Bo Shen <voice.shen@atmel.com>

Best Regards,
Bo Shen

> diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
> index 3dd6100..3e5f868 100644
> --- a/drivers/video/exynos_fb.c
> +++ b/drivers/video/exynos_fb.c
> @@ -33,13 +33,7 @@
>
>   #include "exynos_fb.h"
>
> -int lcd_line_length;
> -
>   void *lcd_base;
> -void *lcd_console_address;
> -
> -short console_col;
> -short console_row;
>
>   static unsigned int panel_width, panel_height;
>
> diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
> index 4fd44ac..26ad432 100644
> --- a/drivers/video/mpc8xx_lcd.c
> +++ b/drivers/video/mpc8xx_lcd.c
> @@ -256,16 +256,10 @@ vidinfo_t panel_info = {
>   /*----------------------------------------------------------------------*/
>
>
> -int lcd_line_length;
> -
>   /*
>    * 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;
>
>   /************************************************************************/
>
> diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c
> index 25747b1..57243ce 100644
> --- a/drivers/video/pxa_lcd.c
> +++ b/drivers/video/pxa_lcd.c
> @@ -332,13 +332,7 @@ void lcd_getcolreg (ushort regno, ushort *red, ushort *green, ushort *blue);
>   void lcd_ctrl_init	(void *lcdbase);
>   void lcd_enable	(void);
>
> -int lcd_line_length;
> -
>   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);
> diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
> index 26a96a5..0d1cfa9 100644
> --- a/drivers/video/tegra.c
> +++ b/drivers/video/tegra.c
> @@ -60,13 +60,7 @@ enum {
>   	LCD_MAX_LOG2_BPP	= 4,		/* 2^4 = 16 bpp */
>   };
>
> -int lcd_line_length;
> -
>   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 */
> diff --git a/include/lcd.h b/include/lcd.h
> index 7d8c41f..b8eea9c 100644
> --- a/include/lcd.h
> +++ b/include/lcd.h
> @@ -31,16 +31,11 @@
>
>   extern char lcd_is_enabled;
>
> -extern int lcd_line_length;
> -
>   /*
>    * 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);
>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 06/10] common/lcd.c: remove global lcd_base
  2013-01-12 22:07 ` [U-Boot] [PATCH 06/10] common/lcd.c: remove global lcd_base Jeroen Hofstee
@ 2013-01-16  1:24   ` Bo Shen
  0 siblings, 0 replies; 33+ messages in thread
From: Bo Shen @ 2013-01-16  1:24 UTC (permalink / raw)
  To: u-boot

On 1/13/2013 6:07, Jeroen Hofstee wrote:
> lcd_base is available as gd->fb_base as well, there is no need
> to keep a seperate copy.
>
> Cc: Alessandro Rubini <rubini@unipv.it>
> Cc: Anatolij Gustschin <agust@denx.de>
> Cc: Bo Shen <voice.shen@atmel.com>
> Cc: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
> Cc: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Marek Vasut <marek.vasut@gmail.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> Cc: Nikita Kiryanov <nikita@compulab.co.il>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Stelian Pop <stelian@popies.net>
> Cc: Tom Warren <twarren@nvidia.com>
> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
> ---
>   board/mcc200/lcd.c           |    8 ++------
>   common/lcd.c                 |    1 +
>   drivers/video/atmel_hlcdfb.c |    2 --
>   drivers/video/atmel_lcdfb.c  |    2 --
>   drivers/video/exynos_fb.c    |    8 +++-----
>   drivers/video/mpc8xx_lcd.c   |   12 ++----------
>   drivers/video/pxa_lcd.c      |    2 --
>   drivers/video/tegra.c        |    6 +-----
>   include/lcd.h                |    5 -----
>   9 files changed, 9 insertions(+), 37 deletions(-)
>
> diff --git a/board/mcc200/lcd.c b/board/mcc200/lcd.c
> index caf8d8b..feded49 100644
> --- a/board/mcc200/lcd.c
> +++ b/board/mcc200/lcd.c
> @@ -68,10 +68,6 @@ vidinfo_t panel_info = {
>   	LCD_WIDTH, LCD_HEIGHT, LCD_BPP
>   };
>
> -/*
> - * Frame buffer memory information
> - */
> -void *lcd_base;			/* Start of framebuffer memory  */
>
>   /*
>    *  The device we use to communicate with PSoC
> @@ -147,12 +143,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++) {
> diff --git a/common/lcd.c b/common/lcd.c
> index d3fd68d..02f4721 100644
> --- a/common/lcd.c
> +++ b/common/lcd.c
> @@ -107,6 +107,7 @@ 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 */
>
> diff --git a/drivers/video/atmel_hlcdfb.c b/drivers/video/atmel_hlcdfb.c
> index 32626cf..fc95897 100644
> --- a/drivers/video/atmel_hlcdfb.c
> +++ b/drivers/video/atmel_hlcdfb.c
> @@ -29,8 +29,6 @@
>   #include <lcd.h>
>   #include <atmel_hlcdc.h>
>
> -void *lcd_base;				/* Start of framebuffer memory	*/
> -
>   /* configurable parameters */
>   #define ATMEL_LCDC_CVAL_DEFAULT		0xc8
>   #define ATMEL_LCDC_DMA_BURST_LEN	8
> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> index 370d9ca..2afeab2 100644
> --- a/drivers/video/atmel_lcdfb.c
> +++ b/drivers/video/atmel_lcdfb.c
> @@ -29,8 +29,6 @@
>   #include <lcd.h>
>   #include <atmel_lcdc.h>
>
> -void *lcd_base;				/* Start of framebuffer memory	*/
> -
>   /* configurable parameters */
>   #define ATMEL_LCDC_CVAL_DEFAULT		0xc8
>   #define ATMEL_LCDC_DMA_BURST_LEN	8

For Atmel part, it is ok for me.

Acked-by: Bo Shen <voice.shen@atmel.com>

Best Regards,
Bo Shen

> diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
> index 3e5f868..6f3c85d 100644
> --- a/drivers/video/exynos_fb.c
> +++ b/drivers/video/exynos_fb.c
> @@ -33,7 +33,7 @@
>
>   #include "exynos_fb.h"
>
> -void *lcd_base;
> +DECLARE_GLOBAL_DATA_PTR;
>
>   static unsigned int panel_width, panel_height;
>
> @@ -44,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);
>   }
>
> @@ -135,7 +133,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));
>   		draw_logo();
>   	}
> diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
> index 26ad432..1aa1967 100644
> --- a/drivers/video/mpc8xx_lcd.c
> +++ b/drivers/video/mpc8xx_lcd.c
> @@ -255,14 +255,6 @@ vidinfo_t panel_info = {
>   #endif
>   /*----------------------------------------------------------------------*/
>
> -
> -/*
> - * Frame buffer memory information
> - */
> -void *lcd_base;			/* Start of framebuffer memory	*/
> -
> -/************************************************************************/
> -
>   void lcd_ctrl_init (void *lcdbase);
>   void lcd_enable (void);
>   #if LCD_BPP == LCD_COLOR8
> @@ -392,8 +384,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.
> diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c
> index 57243ce..fef49c1 100644
> --- a/drivers/video/pxa_lcd.c
> +++ b/drivers/video/pxa_lcd.c
> @@ -332,8 +332,6 @@ void lcd_getcolreg (ushort regno, ushort *red, ushort *green, ushort *blue);
>   void lcd_ctrl_init	(void *lcdbase);
>   void lcd_enable	(void);
>
> -void *lcd_base;			/* Start of framebuffer memory	*/
> -
>   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);
> diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
> index 0d1cfa9..941551c 100644
> --- a/drivers/video/tegra.c
> +++ b/drivers/video/tegra.c
> @@ -60,8 +60,6 @@ enum {
>   	LCD_MAX_LOG2_BPP	= 4,		/* 2^4 = 16 bpp */
>   };
>
> -void *lcd_base;			/* Start of framebuffer memory	*/
> -
>   vidinfo_t panel_info = {
>   	/* Insert a value here so that we don't end up in the BSS */
>   	.vl_col = -1,
> @@ -90,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);
> @@ -112,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)
> diff --git a/include/lcd.h b/include/lcd.h
> index b8eea9c..d54a304 100644
> --- a/include/lcd.h
> +++ b/include/lcd.h
> @@ -31,11 +31,6 @@
>
>   extern char lcd_is_enabled;
>
> -/*
> - * Frame buffer memory information
> - */
> -extern void *lcd_base;			/* Start of framebuffer memory	*/
> -
>   extern struct vidinfo panel_info;
>
>   extern void lcd_ctrl_init (void *lcdbase);
>

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup
  2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                   ` (10 preceding siblings ...)
  2013-01-13 16:15 ` [U-Boot] [PATCH 01/10] lcd, amba: remove this frame buffer driver since it is not used Alessandro Rubini
@ 2013-01-22 20:44 ` Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 01/10] lcd, amba: remove this driver since it is not used Jeroen Hofstee
                     ` (8 more replies)
  11 siblings, 9 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-22 20:44 UTC (permalink / raw)
  To: u-boot

As mentioned in http://lists.denx.de/pipermail/u-boot/2013-January/143459.html
there does not seem to be a good reason why the frame buffer driver
provide the variables for the lcd internal logic. So lets just remove it.
If there is any good reason for a framebuffer driver to "call up" it should
do so by a function call and not change the lcd its internal state (and
there is actually none doing so at the moment).

This patchset first removes unused drivers and places drivers useing
common/lcd.c in drivers/video. Then removes the unneeded globals and
thereafter finishes with some cleanups.

This patch goes after http://patchwork.ozlabs.org/patch/209692/
"common/lcd.c: cleanup use of global variables"

Version 2:
 Marek Vasut <marex@denx.de>: use format-patch -M to detect moves
 Adjust the commit message not to exceed the max line length
 Fix malformed email address.
 check-patch clean (adjusted a space in patch 6)
 remove bouncing email addresses and add acks
 patch 7 and 10 are unchanged and not reposted

Jeroen Hofstee (10):
  lcd, amba: remove this driver since it is not used
  lcd, tegra: remove unused cursor functions
  lcd, mpc8xx: move the mpc8xx driver to drivers/video
  lcd, pxafb: move the pxafb to drivers/video
  common/lcd.c: cleanup use of global variables
  common/lcd.c: remove global lcd_base
  common/lcd: cosmetic: clean up a bit
  lcd, fb: remove duplicated prototypes and unused code
  api/api_display: use the getters for console size info
  common/lcd.c: move the macro's to the c file

 api/api_display.c                                  |    4 +-
 arch/arm/cpu/pxa/Makefile                          |    1 -
 arch/powerpc/cpu/mpc8xx/Makefile                   |    1 -
 board/mcc200/lcd.c                                 |   21 +---
 common/lcd.c                                       |  117 +++++++++++---------
 drivers/video/Makefile                             |    3 +-
 drivers/video/amba.c                               |   77 -------------
 drivers/video/atmel_hlcdfb.c                       |    8 --
 drivers/video/atmel_lcdfb.c                        |    8 --
 drivers/video/exynos_fb.c                          |   14 +--
 .../cpu/mpc8xx/lcd.c => drivers/video/mpc8xx_lcd.c |   58 +---------
 .../arm/cpu/pxa/pxafb.c => drivers/video/pxa_lcd.c |   41 -------
 drivers/video/tegra.c                              |   64 +----------
 include/configs/R360MPI.h                          |    1 +
 include/configs/RBC823.h                           |    1 +
 include/configs/RPXlite_DW.h                       |    1 +
 include/configs/RRvision.h                         |    4 +-
 include/configs/TQM823L.h                          |    1 +
 include/configs/TQM823M.h                          |    1 +
 include/configs/lubbock.h                          |    1 +
 include/configs/lwmon.h                            |    1 +
 include/configs/palmld.h                           |    1 +
 include/configs/palmtc.h                           |    1 +
 include/configs/pxa255_idp.h                       |    1 +
 include/configs/svm_sc8xx.h                        |    1 +
 include/configs/v37.h                              |    1 +
 include/configs/zipitz2.h                          |    1 +
 include/lcd.h                                      |   71 +++---------
 28 files changed, 109 insertions(+), 396 deletions(-)
 delete mode 100644 drivers/video/amba.c
 rename arch/powerpc/cpu/mpc8xx/lcd.c => drivers/video/mpc8xx_lcd.c (92%)
 rename arch/arm/cpu/pxa/pxafb.c => drivers/video/pxa_lcd.c (93%)

--
1.7.9.5

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v2 01/10] lcd, amba: remove this driver since it is not used
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
@ 2013-01-22 20:44   ` Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 02/10] lcd, tegra: remove unused cursor functions Jeroen Hofstee
                     ` (7 subsequent siblings)
  8 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-22 20:44 UTC (permalink / raw)
  To: u-boot

Since CONFIG_VIDEO_AMBA is not set by any board, it does not seem
to be used, so remove it since there is no way to (compile) test it.

cc: Alessandro Rubini <rubini@unipv.it>
cc: Anatolij Gustschin <agust@denx.de>
Acked-by: Alessandro Rubini <rubini@unipv.it>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 drivers/video/Makefile |    1 -
 drivers/video/amba.c   |   77 ------------------------------------------------
 2 files changed, 78 deletions(-)
 delete mode 100644 drivers/video/amba.c

diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 170a358..8ff3958 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -39,7 +39,6 @@ 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_COREBOOT) += coreboot_fb.o
 COBJS-$(CONFIG_VIDEO_CT69000) += ct69000.o videomodes.o
 COBJS-$(CONFIG_VIDEO_DA8XX) += da8xx-fb.o videomodes.o
diff --git a/drivers/video/amba.c b/drivers/video/amba.c
deleted file mode 100644
index b4fb47d..0000000
--- a/drivers/video/amba.c
+++ /dev/null
@@ -1,77 +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;
-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, &regs->cntl);
-
-	writel(config->tim0, &regs->tim0);
-	writel(config->tim1, &regs->tim1);
-	writel(config->tim2, &regs->tim2);
-	writel(config->tim3, &regs->tim3);
-	writel((u32)lcdbase, &regs->ubas);
-	/* finally, enable */
-	writel(cntl | CNTL_LCDEN, &regs->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;
-}
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v2 02/10] lcd, tegra: remove unused cursor functions
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 01/10] lcd, amba: remove this driver since it is not used Jeroen Hofstee
@ 2013-01-22 20:44   ` Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 03/10] lcd, mpc8xx: move the mpc8xx driver to drivers/video Jeroen Hofstee
                     ` (6 subsequent siblings)
  8 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-22 20:44 UTC (permalink / raw)
  To: u-boot

cc: Anatolij Gustschin <agust@denx.de>
cc: Simon Glass <sjg@chromium.org>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 drivers/video/tegra.c |   52 -------------------------------------------------
 1 file changed, 52 deletions(-)

diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
index 3709d0b..26a96a5 100644
--- a/drivers/video/tegra.c
+++ b/drivers/video/tegra.c
@@ -73,62 +73,10 @@ vidinfo_t panel_info = {
 	.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_getfgcolor();
-			*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;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v2 03/10] lcd, mpc8xx: move the mpc8xx driver to drivers/video
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 01/10] lcd, amba: remove this driver since it is not used Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 02/10] lcd, tegra: remove unused cursor functions Jeroen Hofstee
@ 2013-01-22 20:44   ` Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 04/10] lcd, pxafb: move the pxafb " Jeroen Hofstee
                     ` (5 subsequent siblings)
  8 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-22 20:44 UTC (permalink / raw)
  To: u-boot

Since the lcd code was compiled unconditionally in arch also
add CONFIG_MPC8XX_LCD to the boards using this driver.

cc: Anatolij Gustschin <agust@denx.de>
cc: Wolfgang Denk <wd@denx.de>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 arch/powerpc/cpu/mpc8xx/Makefile                   |    1 -
 drivers/video/Makefile                             |    1 +
 .../cpu/mpc8xx/lcd.c => drivers/video/mpc8xx_lcd.c |    0
 include/configs/R360MPI.h                          |    1 +
 include/configs/RBC823.h                           |    1 +
 include/configs/RPXlite_DW.h                       |    1 +
 include/configs/RRvision.h                         |    4 +++-
 include/configs/TQM823L.h                          |    1 +
 include/configs/TQM823M.h                          |    1 +
 include/configs/lwmon.h                            |    1 +
 include/configs/svm_sc8xx.h                        |    1 +
 include/configs/v37.h                              |    1 +
 12 files changed, 12 insertions(+), 2 deletions(-)
 rename arch/powerpc/cpu/mpc8xx/lcd.c => drivers/video/mpc8xx_lcd.c (100%)

diff --git a/arch/powerpc/cpu/mpc8xx/Makefile b/arch/powerpc/cpu/mpc8xx/Makefile
index 0d1a12c..ef10e2d 100644
--- a/arch/powerpc/cpu/mpc8xx/Makefile
+++ b/arch/powerpc/cpu/mpc8xx/Makefile
@@ -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
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 8ff3958..20b2e6f 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -35,6 +35,7 @@ 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_S6E8AX0) += s6e8ax0.o
 COBJS-$(CONFIG_S6E63D6) += s6e63d6.o
 COBJS-$(CONFIG_LD9040) += ld9040.o
diff --git a/arch/powerpc/cpu/mpc8xx/lcd.c b/drivers/video/mpc8xx_lcd.c
similarity index 100%
rename from arch/powerpc/cpu/mpc8xx/lcd.c
rename to drivers/video/mpc8xx_lcd.c
diff --git a/include/configs/R360MPI.h b/include/configs/R360MPI.h
index 868a0b8..60cccff 100644
--- a/include/configs/R360MPI.h
+++ b/include/configs/R360MPI.h
@@ -39,6 +39,7 @@
 #define	CONFIG_SYS_TEXT_BASE	0x40000000
 
 #define CONFIG_LCD
+#define CONFIG_MPC8XX_LCD
 #undef  CONFIG_EDT32F10
 #define CONFIG_SHARP_LQ057Q3DC02
 
diff --git a/include/configs/RBC823.h b/include/configs/RBC823.h
index b042c67..d4bcc62 100644
--- a/include/configs/RBC823.h
+++ b/include/configs/RBC823.h
@@ -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		*/
diff --git a/include/configs/RPXlite_DW.h b/include/configs/RPXlite_DW.h
index 67ab1e9..d8e28d5 100644
--- a/include/configs/RPXlite_DW.h
+++ b/include/configs/RPXlite_DW.h
@@ -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
 
diff --git a/include/configs/RRvision.h b/include/configs/RRvision.h
index e2b22f0..e2ea016 100644
--- a/include/configs/RRvision.h
+++ b/include/configs/RRvision.h
@@ -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 */
diff --git a/include/configs/TQM823L.h b/include/configs/TQM823L.h
index 9fac5d1..cccf3af 100644
--- a/include/configs/TQM823L.h
+++ b/include/configs/TQM823L.h
@@ -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*/
diff --git a/include/configs/TQM823M.h b/include/configs/TQM823M.h
index 932f158..b2d1af0 100644
--- a/include/configs/TQM823M.h
+++ b/include/configs/TQM823M.h
@@ -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
 
diff --git a/include/configs/lwmon.h b/include/configs/lwmon.h
index df49781..3c02b73 100644
--- a/include/configs/lwmon.h
+++ b/include/configs/lwmon.h
@@ -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	*/
diff --git a/include/configs/svm_sc8xx.h b/include/configs/svm_sc8xx.h
index 2b24997..3c8c74d 100644
--- a/include/configs/svm_sc8xx.h
+++ b/include/configs/svm_sc8xx.h
@@ -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 */
diff --git a/include/configs/v37.h b/include/configs/v37.h
index e36d249..f9965db 100644
--- a/include/configs/v37.h
+++ b/include/configs/v37.h
@@ -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
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v2 04/10] lcd, pxafb: move the pxafb to drivers/video
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                     ` (2 preceding siblings ...)
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 03/10] lcd, mpc8xx: move the mpc8xx driver to drivers/video Jeroen Hofstee
@ 2013-01-22 20:44   ` Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 05/10] common/lcd.c: cleanup use of global variables Jeroen Hofstee
                     ` (4 subsequent siblings)
  8 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-22 20:44 UTC (permalink / raw)
  To: u-boot

Since the lcd code was compiled unconditionally for pxa also add
CONFIG_PXA_LCD to the boards using this framebuffer. Since
driver/video contains video and lcd drivers, add lcd to the name
to make clear it belongs to common/lcd.c.

cc: Anatolij Gustschin <agust@denx.de>
cc: Cliff Brake <cliff.brake@gmail.com>
cc: Marek Vasut <marek.vasut@gmail.com>
Acked-by: Marek Vasut <marex@denx.de>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 arch/arm/cpu/pxa/Makefile                          |    1 -
 drivers/video/Makefile                             |    1 +
 .../arm/cpu/pxa/pxafb.c => drivers/video/pxa_lcd.c |    0
 include/configs/lubbock.h                          |    1 +
 include/configs/palmld.h                           |    1 +
 include/configs/palmtc.h                           |    1 +
 include/configs/pxa255_idp.h                       |    1 +
 include/configs/zipitz2.h                          |    1 +
 8 files changed, 6 insertions(+), 1 deletion(-)
 rename arch/arm/cpu/pxa/pxafb.c => drivers/video/pxa_lcd.c (100%)

diff --git a/arch/arm/cpu/pxa/Makefile b/arch/arm/cpu/pxa/Makefile
index e088832..9f63c34 100644
--- a/arch/arm/cpu/pxa/Makefile
+++ b/arch/arm/cpu/pxa/Makefile
@@ -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
 
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 20b2e6f..250aebd 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -36,6 +36,7 @@ COBJS-$(CONFIG_EXYNOS_MIPI_DSIM) += exynos_mipi_dsi.o exynos_mipi_dsi_common.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
diff --git a/arch/arm/cpu/pxa/pxafb.c b/drivers/video/pxa_lcd.c
similarity index 100%
rename from arch/arm/cpu/pxa/pxafb.c
rename to drivers/video/pxa_lcd.c
diff --git a/include/configs/lubbock.h b/include/configs/lubbock.h
index 5886a15..b99a056 100644
--- a/include/configs/lubbock.h
+++ b/include/configs/lubbock.h
@@ -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
diff --git a/include/configs/palmld.h b/include/configs/palmld.h
index 3f9802c..4ee2e46 100644
--- a/include/configs/palmld.h
+++ b/include/configs/palmld.h
@@ -72,6 +72,7 @@
 #define	CONFIG_CMD_MMC
 #define	CONFIG_CMD_IDE
 #define	CONFIG_LCD
+#define	CONFIG_PXA_LCD
 
 /*
  * MMC Card Configuration
diff --git a/include/configs/palmtc.h b/include/configs/palmtc.h
index 64771e7..70fe05c 100644
--- a/include/configs/palmtc.h
+++ b/include/configs/palmtc.h
@@ -74,6 +74,7 @@
 #define	CONFIG_CMD_ENV
 #define	CONFIG_CMD_MMC
 #define	CONFIG_LCD
+#define	CONFIG_PXA_LCD
 
 /*
  * MMC Card Configuration
diff --git a/include/configs/pxa255_idp.h b/include/configs/pxa255_idp.h
index 5a15af6..39c167f 100644
--- a/include/configs/pxa255_idp.h
+++ b/include/configs/pxa255_idp.h
@@ -59,6 +59,7 @@
 
 #undef CONFIG_LCD
 #ifdef CONFIG_LCD
+#define CONFIG_PXA_LCD
 #define CONFIG_SHARP_LM8V31
 #endif
 
diff --git a/include/configs/zipitz2.h b/include/configs/zipitz2.h
index b92f70b..f79dd3b 100644
--- a/include/configs/zipitz2.h
+++ b/include/configs/zipitz2.h
@@ -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
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v2 05/10] common/lcd.c: cleanup use of global variables
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                     ` (3 preceding siblings ...)
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 04/10] lcd, pxafb: move the pxafb " Jeroen Hofstee
@ 2013-01-22 20:44   ` Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 06/10] common/lcd.c: remove global lcd_base Jeroen Hofstee
                     ` (3 subsequent siblings)
  8 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-22 20:44 UTC (permalink / raw)
  To: u-boot

console_col, console_row, lcd_line_length, lcd_console_address had
to be declared in board / driver specific code, but were not actually
used there. Get rid of the global variables.

for completeness, the ack of Bo Shen is for the atmel part
Cc: Alessandro Rubini <rubini@unipv.it>
Cc: Anatolij Gustschin <agust@denx.de>
Cc: Bo Shen <voice.shen@atmel.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Marek Vasut <marek.vasut@gmail.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Nikita Kiryanov <nikita@compulab.co.il>
Cc: Simon Glass <sjg@chromium.org>
Cc: Stelian Pop <stelian@popies.net>
Cc: Tom Warren <twarren@nvidia.com>
Acked-by: Bo Shen <voice.shen@atmel.com>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 board/mcc200/lcd.c           |    6 ------
 common/lcd.c                 |    6 ++++++
 drivers/video/atmel_hlcdfb.c |    6 ------
 drivers/video/atmel_lcdfb.c  |    6 ------
 drivers/video/exynos_fb.c    |    6 ------
 drivers/video/mpc8xx_lcd.c   |    6 ------
 drivers/video/pxa_lcd.c      |    6 ------
 drivers/video/tegra.c        |    6 ------
 include/lcd.h                |    5 -----
 9 files changed, 6 insertions(+), 47 deletions(-)

diff --git a/board/mcc200/lcd.c b/board/mcc200/lcd.c
index 0f3f585..caf8d8b 100644
--- a/board/mcc200/lcd.c
+++ b/board/mcc200/lcd.c
@@ -68,16 +68,10 @@ vidinfo_t panel_info = {
 	LCD_WIDTH, LCD_HEIGHT, LCD_BPP
 };
 
-int lcd_line_length;
-
 /*
  * 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
diff --git a/common/lcd.c b/common/lcd.c
index 2884f66..585ae8e 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -99,9 +99,15 @@ static void lcd_setbgcolor(int color);
 
 static int lcd_color_fg;
 static int lcd_color_bg;
+static int lcd_line_length;
 
 char lcd_is_enabled = 0;
 
+static short console_col;
+static short console_row;
+
+static void *lcd_console_address;
+
 static char lcd_flush_dcache;	/* 1 to flush dcache after each lcd update */
 
 
diff --git a/drivers/video/atmel_hlcdfb.c b/drivers/video/atmel_hlcdfb.c
index e74eb65..32626cf 100644
--- a/drivers/video/atmel_hlcdfb.c
+++ b/drivers/video/atmel_hlcdfb.c
@@ -29,13 +29,7 @@
 #include <lcd.h>
 #include <atmel_hlcdc.h>
 
-int lcd_line_length;
-
 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
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index d96f175..370d9ca 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
@@ -29,13 +29,7 @@
 #include <lcd.h>
 #include <atmel_lcdc.h>
 
-int lcd_line_length;
-
 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
diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
index 4536c5c..82b19e5 100644
--- a/drivers/video/exynos_fb.c
+++ b/drivers/video/exynos_fb.c
@@ -33,13 +33,7 @@
 
 #include "exynos_fb.h"
 
-int lcd_line_length;
-
 void *lcd_base;
-void *lcd_console_address;
-
-short console_col;
-short console_row;
 
 static unsigned int panel_width, panel_height;
 
diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
index 4fd44ac..26ad432 100644
--- a/drivers/video/mpc8xx_lcd.c
+++ b/drivers/video/mpc8xx_lcd.c
@@ -256,16 +256,10 @@ vidinfo_t panel_info = {
 /*----------------------------------------------------------------------*/
 
 
-int lcd_line_length;
-
 /*
  * 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;
 
 /************************************************************************/
 
diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c
index 25747b1..57243ce 100644
--- a/drivers/video/pxa_lcd.c
+++ b/drivers/video/pxa_lcd.c
@@ -332,13 +332,7 @@ void lcd_getcolreg (ushort regno, ushort *red, ushort *green, ushort *blue);
 void lcd_ctrl_init	(void *lcdbase);
 void lcd_enable	(void);
 
-int lcd_line_length;
-
 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);
diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
index 26a96a5..0d1cfa9 100644
--- a/drivers/video/tegra.c
+++ b/drivers/video/tegra.c
@@ -60,13 +60,7 @@ enum {
 	LCD_MAX_LOG2_BPP	= 4,		/* 2^4 = 16 bpp */
 };
 
-int lcd_line_length;
-
 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 */
diff --git a/include/lcd.h b/include/lcd.h
index 7d8c41f..b8eea9c 100644
--- a/include/lcd.h
+++ b/include/lcd.h
@@ -31,16 +31,11 @@
 
 extern char lcd_is_enabled;
 
-extern int lcd_line_length;
-
 /*
  * 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);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v2 06/10] common/lcd.c: remove global lcd_base
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                     ` (4 preceding siblings ...)
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 05/10] common/lcd.c: cleanup use of global variables Jeroen Hofstee
@ 2013-01-22 20:44   ` Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 08/10] lcd, fb: remove duplicated prototypes and unused code Jeroen Hofstee
                     ` (2 subsequent siblings)
  8 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-22 20:44 UTC (permalink / raw)
  To: u-boot

lcd_base is available as gd->fb_base as well, there is no need
to keep a seperate copy.

For completeness the ack of Bo Shen is for the atmel part.
Cc: Alessandro Rubini <rubini@unipv.it>
Cc: Anatolij Gustschin <agust@denx.de>
Cc: Bo Shen <voice.shen@atmel.com>
Cc: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Marek Vasut <marek.vasut@gmail.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Nikita Kiryanov <nikita@compulab.co.il>
Cc: Simon Glass <sjg@chromium.org>
Cc: Stelian Pop <stelian@popies.net>
Cc: Tom Warren <twarren@nvidia.com>
Acked-by: Bo Shen <voice.shen@atmel.com>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 board/mcc200/lcd.c           |    8 ++------
 common/lcd.c                 |    1 +
 drivers/video/atmel_hlcdfb.c |    2 --
 drivers/video/atmel_lcdfb.c  |    2 --
 drivers/video/exynos_fb.c    |    8 +++-----
 drivers/video/mpc8xx_lcd.c   |   12 ++----------
 drivers/video/pxa_lcd.c      |    2 --
 drivers/video/tegra.c        |    6 +-----
 include/lcd.h                |    5 -----
 9 files changed, 9 insertions(+), 37 deletions(-)

diff --git a/board/mcc200/lcd.c b/board/mcc200/lcd.c
index caf8d8b..1901908 100644
--- a/board/mcc200/lcd.c
+++ b/board/mcc200/lcd.c
@@ -68,10 +68,6 @@ vidinfo_t panel_info = {
 	LCD_WIDTH, LCD_HEIGHT, LCD_BPP
 };
 
-/*
- * Frame buffer memory information
- */
-void *lcd_base;			/* Start of framebuffer memory  */
 
 /*
  *  The device we use to communicate with PSoC
@@ -147,12 +143,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++) {
diff --git a/common/lcd.c b/common/lcd.c
index 585ae8e..59ca3b5 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -107,6 +107,7 @@ 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 */
 
diff --git a/drivers/video/atmel_hlcdfb.c b/drivers/video/atmel_hlcdfb.c
index 32626cf..fc95897 100644
--- a/drivers/video/atmel_hlcdfb.c
+++ b/drivers/video/atmel_hlcdfb.c
@@ -29,8 +29,6 @@
 #include <lcd.h>
 #include <atmel_hlcdc.h>
 
-void *lcd_base;				/* Start of framebuffer memory	*/
-
 /* configurable parameters */
 #define ATMEL_LCDC_CVAL_DEFAULT		0xc8
 #define ATMEL_LCDC_DMA_BURST_LEN	8
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index 370d9ca..2afeab2 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
@@ -29,8 +29,6 @@
 #include <lcd.h>
 #include <atmel_lcdc.h>
 
-void *lcd_base;				/* Start of framebuffer memory	*/
-
 /* configurable parameters */
 #define ATMEL_LCDC_CVAL_DEFAULT		0xc8
 #define ATMEL_LCDC_DMA_BURST_LEN	8
diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
index 82b19e5..c0f1830 100644
--- a/drivers/video/exynos_fb.c
+++ b/drivers/video/exynos_fb.c
@@ -33,7 +33,7 @@
 
 #include "exynos_fb.h"
 
-void *lcd_base;
+DECLARE_GLOBAL_DATA_PTR;
 
 static unsigned int panel_width, panel_height;
 
@@ -44,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);
 }
 
@@ -140,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();
diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
index 26ad432..1aa1967 100644
--- a/drivers/video/mpc8xx_lcd.c
+++ b/drivers/video/mpc8xx_lcd.c
@@ -255,14 +255,6 @@ vidinfo_t panel_info = {
 #endif
 /*----------------------------------------------------------------------*/
 
-
-/*
- * Frame buffer memory information
- */
-void *lcd_base;			/* Start of framebuffer memory	*/
-
-/************************************************************************/
-
 void lcd_ctrl_init (void *lcdbase);
 void lcd_enable (void);
 #if LCD_BPP == LCD_COLOR8
@@ -392,8 +384,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.
diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c
index 57243ce..fef49c1 100644
--- a/drivers/video/pxa_lcd.c
+++ b/drivers/video/pxa_lcd.c
@@ -332,8 +332,6 @@ void lcd_getcolreg (ushort regno, ushort *red, ushort *green, ushort *blue);
 void lcd_ctrl_init	(void *lcdbase);
 void lcd_enable	(void);
 
-void *lcd_base;			/* Start of framebuffer memory	*/
-
 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);
diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
index 0d1cfa9..941551c 100644
--- a/drivers/video/tegra.c
+++ b/drivers/video/tegra.c
@@ -60,8 +60,6 @@ enum {
 	LCD_MAX_LOG2_BPP	= 4,		/* 2^4 = 16 bpp */
 };
 
-void *lcd_base;			/* Start of framebuffer memory	*/
-
 vidinfo_t panel_info = {
 	/* Insert a value here so that we don't end up in the BSS */
 	.vl_col = -1,
@@ -90,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);
@@ -112,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@%08X\n", disp_config->frame_buffer);
 }
 
 ulong calc_fbsize(void)
diff --git a/include/lcd.h b/include/lcd.h
index b8eea9c..d54a304 100644
--- a/include/lcd.h
+++ b/include/lcd.h
@@ -31,11 +31,6 @@
 
 extern char lcd_is_enabled;
 
-/*
- * Frame buffer memory information
- */
-extern void *lcd_base;			/* Start of framebuffer memory	*/
-
 extern struct vidinfo panel_info;
 
 extern void lcd_ctrl_init (void *lcdbase);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v2 08/10] lcd, fb: remove duplicated prototypes and unused code
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                     ` (5 preceding siblings ...)
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 06/10] common/lcd.c: remove global lcd_base Jeroen Hofstee
@ 2013-01-22 20:44   ` Jeroen Hofstee
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 09/10] api/api_display: use the getters for console size info Jeroen Hofstee
  2013-03-29 11:03   ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Anatolij Gustschin
  8 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-22 20:44 UTC (permalink / raw)
  To: u-boot

cc: Anatolij Gustschin <agust@denx.de>
cc: Cliff Brake <cliff.brake@gmail.com>
cc: John Zhan <zhanz@sinovee.com>
cc: Marek Vasut <marek.vasut@gmail.com>
cc: Wolfgang Denk <wd@denx.de>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 board/mcc200/lcd.c         |    7 -------
 drivers/video/mpc8xx_lcd.c |   40 ----------------------------------------
 drivers/video/pxa_lcd.c    |   33 ---------------------------------
 3 files changed, 80 deletions(-)

diff --git a/board/mcc200/lcd.c b/board/mcc200/lcd.c
index 1901908..24f0abd 100644
--- a/board/mcc200/lcd.c
+++ b/board/mcc200/lcd.c
@@ -75,13 +75,6 @@ vidinfo_t panel_info = {
 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
  */
 extern int serial_init_dev (unsigned long dev_base);
diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c
index 1aa1967..f0f728e 100644
--- a/drivers/video/mpc8xx_lcd.c
+++ b/drivers/video/mpc8xx_lcd.c
@@ -253,23 +253,6 @@ vidinfo_t panel_info = {
     LCD_BPP,  0, 0, 0, 0, 33, 0, 0, 0
 };
 #endif
-/*----------------------------------------------------------------------*/
-
-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 ----------------------- */
@@ -415,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)
diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c
index fef49c1..b40ec36 100644
--- a/drivers/video/pxa_lcd.c
+++ b/drivers/video/pxa_lcd.c
@@ -317,26 +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);
-
 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  ------------------- */
@@ -351,14 +335,6 @@ void lcd_ctrl_init (void *lcdbase)
 }
 
 /*----------------------------------------------------------------------*/
-#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
 lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue)
@@ -406,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						*/
 /************************************************************************/
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v2 09/10] api/api_display: use the getters for console size info
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                     ` (6 preceding siblings ...)
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 08/10] lcd, fb: remove duplicated prototypes and unused code Jeroen Hofstee
@ 2013-01-22 20:44   ` Jeroen Hofstee
  2013-03-29 11:03   ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Anatolij Gustschin
  8 siblings, 0 replies; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-22 20:44 UTC (permalink / raw)
  To: u-boot

cc: Che-Liang Chiou <clchiou@chromium.org>
Acked-by: Che-Liang Chiou <clchiou@chromium.org>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
---
 api/api_display.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/api/api_display.c b/api/api_display.c
index 6439170..c167db7 100644
--- a/api/api_display.c
+++ b/api/api_display.c
@@ -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
 	}
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions
  2013-01-12 22:07 ` [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions Jeroen Hofstee
  2013-01-12 22:17   ` Jeroen Hofstee
@ 2013-01-25 20:38   ` Simon Glass
  2013-01-25 21:18     ` Tom Warren
  1 sibling, 1 reply; 33+ messages in thread
From: Simon Glass @ 2013-01-25 20:38 UTC (permalink / raw)
  To: u-boot

+Tom

On Sun, Jan 13, 2013 at 11:07 AM, Jeroen Hofstee <jeroen@myspectrum.nl> wrote:
> cc: Anatolij Gustschin <agust@denx.de>
> cc: Simon Glass <sjg.chromium.org>
> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>

Acked-by: Simon Glass <sjg@chromium.org>

> ---
>  drivers/video/tegra.c |   52 -------------------------------------------------
>  1 file changed, 52 deletions(-)
>
> diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
> index 3709d0b..26a96a5 100644
> --- a/drivers/video/tegra.c
> +++ b/drivers/video/tegra.c
> @@ -73,62 +73,10 @@ vidinfo_t panel_info = {
>         .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_getfgcolor();
> -                       *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;
> --
> 1.7.9.5
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions
  2013-01-25 20:38   ` Simon Glass
@ 2013-01-25 21:18     ` Tom Warren
  2013-01-26 16:20       ` Jeroen Hofstee
  0 siblings, 1 reply; 33+ messages in thread
From: Tom Warren @ 2013-01-25 21:18 UTC (permalink / raw)
  To: u-boot

Jeroen,

How will this all go in? Do you expect Anatolij to take it in via the main repo (u-boot.git/master)?

LGTM, BTW

Tom

> -----Original Message-----
> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
> Sent: Friday, January 25, 2013 1:38 PM
> To: Jeroen Hofstee
> Cc: u-boot at lists.denx.de; Tom Warren
> Subject: Re: [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor
> functions
> 
> +Tom
> 
> On Sun, Jan 13, 2013 at 11:07 AM, Jeroen Hofstee <jeroen@myspectrum.nl>
> wrote:
> > cc: Anatolij Gustschin <agust@denx.de>
> > cc: Simon Glass <sjg.chromium.org>
> > Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
> 
> Acked-by: Simon Glass <sjg@chromium.org>
> 
> > ---
> >  drivers/video/tegra.c |   52 -------------------------------------------------
> >  1 file changed, 52 deletions(-)
> >
> > diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c index
> > 3709d0b..26a96a5 100644
> > --- a/drivers/video/tegra.c
> > +++ b/drivers/video/tegra.c
> > @@ -73,62 +73,10 @@ vidinfo_t panel_info = {
> >         .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_getfgcolor();
> > -                       *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;
> > --
> > 1.7.9.5
> >
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > http://lists.denx.de/mailman/listinfo/u-boot
--
nvpublic

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions
  2013-01-25 21:18     ` Tom Warren
@ 2013-01-26 16:20       ` Jeroen Hofstee
  2013-01-28 16:19         ` Tom Warren
  0 siblings, 1 reply; 33+ messages in thread
From: Jeroen Hofstee @ 2013-01-26 16:20 UTC (permalink / raw)
  To: u-boot

Hello Tom,

On 01/25/2013 10:18 PM, Tom Warren wrote:
> Jeroen,
>
> How will this all go in? Do you expect Anatolij to take it in via the main repo (u-boot.git/master)?
I am not sure I understand exactly what you mean, but yes there
are some conflicts awaiting. 2 pending drivers and another lcd
cleanup patch. And yes I think it is easier to rebase those then to
rebase this and Wolfgang's patch (if that is what you're asking),
since the variables are deleted step by step. So simply not adding
them is easier then getting rid of them again. The other lcd cleanup
is smaller. I don't know how much trouble the board config changes
will cause.

To not break the pending drivers a new version of
http://patchwork.ozlabs.org/patch/212378/ is needed though, since
it does not apply after this patch set. Since that patch contains 2 lines,
that should be easy (or can be manually merged by Anatolij).

But it is up to Anatolij, how this actually goes in and to which branch.

Regards,
Jeroen

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions
  2013-01-26 16:20       ` Jeroen Hofstee
@ 2013-01-28 16:19         ` Tom Warren
  0 siblings, 0 replies; 33+ messages in thread
From: Tom Warren @ 2013-01-28 16:19 UTC (permalink / raw)
  To: u-boot

Jeroen,

> -----Original Message-----
> From: Jeroen Hofstee [mailto:jeroen at myspectrum.nl]
> Sent: Saturday, January 26, 2013 9:20 AM
> To: Tom Warren
> Cc: Simon Glass; u-boot at lists.denx.de; Anatolij Gustschin
> Subject: Re: [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor
> functions
> 
> Hello Tom,
> 
> On 01/25/2013 10:18 PM, Tom Warren wrote:
> > Jeroen,
> >
> > How will this all go in? Do you expect Anatolij to take it in via the main repo
> (u-boot.git/master)?
> I am not sure I understand exactly what you mean, but yes there are some
> conflicts awaiting. 2 pending drivers and another lcd cleanup patch. And yes I
> think it is easier to rebase those then to rebase this and Wolfgang's patch (if
> that is what you're asking), since the variables are deleted step by step. So
> simply not adding them is easier then getting rid of them again. The other lcd
> cleanup is smaller. I don't know how much trouble the board config changes
> will cause.
> 
> To not break the pending drivers a new version of
> http://patchwork.ozlabs.org/patch/212378/ is needed though, since it does
> not apply after this patch set. Since that patch contains 2 lines, that should be
> easy (or can be manually merged by Anatolij).
> 
> But it is up to Anatolij, how this actually goes in and to which branch.
That's all I was asking - if I would be responsible for the tegra portion of the patch, or if it would all go in to TOT master.

I'll take your response to mean that I have nothing to do here for the u-boot-tegra repo.

Thanks
> 
> Regards,
> Jeroen
--
nvpublic

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup
  2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
                     ` (7 preceding siblings ...)
  2013-01-22 20:44   ` [U-Boot] [PATCH v2 09/10] api/api_display: use the getters for console size info Jeroen Hofstee
@ 2013-03-29 11:03   ` Anatolij Gustschin
  8 siblings, 0 replies; 33+ messages in thread
From: Anatolij Gustschin @ 2013-03-29 11:03 UTC (permalink / raw)
  To: u-boot

Hi,

On Tue, 22 Jan 2013 21:44:06 +0100
Jeroen Hofstee <jeroen@myspectrum.nl> wrote:

> As mentioned in http://lists.denx.de/pipermail/u-boot/2013-January/143459.html
> there does not seem to be a good reason why the frame buffer driver
> provide the variables for the lcd internal logic. So lets just remove it.
> If there is any good reason for a framebuffer driver to "call up" it should
> do so by a function call and not change the lcd its internal state (and
> there is actually none doing so at the moment).
> 
> This patchset first removes unused drivers and places drivers useing
> common/lcd.c in drivers/video. Then removes the unneeded globals and
> thereafter finishes with some cleanups.
> 
> This patch goes after http://patchwork.ozlabs.org/patch/209692/
> "common/lcd.c: cleanup use of global variables"
> 
> Version 2:
>  Marek Vasut <marex@denx.de>: use format-patch -M to detect moves
>  Adjust the commit message not to exceed the max line length
>  Fix malformed email address.
>  check-patch clean (adjusted a space in patch 6)
>  remove bouncing email addresses and add acks
>  patch 7 and 10 are unchanged and not reposted
> 
> Jeroen Hofstee (10):
>   lcd, amba: remove this driver since it is not used
>   lcd, tegra: remove unused cursor functions
>   lcd, mpc8xx: move the mpc8xx driver to drivers/video
>   lcd, pxafb: move the pxafb to drivers/video
>   common/lcd.c: cleanup use of global variables
>   common/lcd.c: remove global lcd_base
>   common/lcd: cosmetic: clean up a bit
>   lcd, fb: remove duplicated prototypes and unused code
>   api/api_display: use the getters for console size info
>   common/lcd.c: move the macro's to the c file
> 
>  api/api_display.c                                  |    4 +-
>  arch/arm/cpu/pxa/Makefile                          |    1 -
>  arch/powerpc/cpu/mpc8xx/Makefile                   |    1 -
>  board/mcc200/lcd.c                                 |   21 +---
>  common/lcd.c                                       |  117 +++++++++++---------
>  drivers/video/Makefile                             |    3 +-
>  drivers/video/amba.c                               |   77 -------------
>  drivers/video/atmel_hlcdfb.c                       |    8 --
>  drivers/video/atmel_lcdfb.c                        |    8 --
>  drivers/video/exynos_fb.c                          |   14 +--
>  .../cpu/mpc8xx/lcd.c => drivers/video/mpc8xx_lcd.c |   58 +---------
>  .../arm/cpu/pxa/pxafb.c => drivers/video/pxa_lcd.c |   41 -------
>  drivers/video/tegra.c                              |   64 +----------
>  include/configs/R360MPI.h                          |    1 +
>  include/configs/RBC823.h                           |    1 +
>  include/configs/RPXlite_DW.h                       |    1 +
>  include/configs/RRvision.h                         |    4 +-
>  include/configs/TQM823L.h                          |    1 +
>  include/configs/TQM823M.h                          |    1 +
>  include/configs/lubbock.h                          |    1 +
>  include/configs/lwmon.h                            |    1 +
>  include/configs/palmld.h                           |    1 +
>  include/configs/palmtc.h                           |    1 +
>  include/configs/pxa255_idp.h                       |    1 +
>  include/configs/svm_sc8xx.h                        |    1 +
>  include/configs/v37.h                              |    1 +
>  include/configs/zipitz2.h                          |    1 +
>  include/lcd.h                                      |   71 +++---------
>  28 files changed, 109 insertions(+), 396 deletions(-)
>  delete mode 100644 drivers/video/amba.c
>  rename arch/powerpc/cpu/mpc8xx/lcd.c => drivers/video/mpc8xx_lcd.c (92%)
>  rename arch/arm/cpu/pxa/pxafb.c => drivers/video/pxa_lcd.c (93%)

Merged this series after rebasing, also merged patches
7 and 10 from previous series. Thanks!

Anatolij

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 07/10] common/lcd: cosmetic: clean up a bit
  2013-01-12 22:07 ` [U-Boot] [PATCH 07/10] common/lcd: cosmetic: clean up a bit Jeroen Hofstee
@ 2013-03-29 11:04   ` Anatolij Gustschin
  0 siblings, 0 replies; 33+ messages in thread
From: Anatolij Gustschin @ 2013-03-29 11:04 UTC (permalink / raw)
  To: u-boot

Hi,

On Sat, 12 Jan 2013 23:07:56 +0100
Jeroen Hofstee <jeroen@myspectrum.nl> wrote:

>  - Make the brackets of the function calls more consistent
>  - Remove really unnecessary brackets
>  - Removes the extern from the function definitions
>  - Remove curly brackets from single line statements
>  - Remove lcd_setmem proto since it is already in common.h
>  - Don't init globals to 0
> 
> cc: Anatolij Gustschin <agust@denx.de>
> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
> ---
>  common/lcd.c  |   84 ++++++++++++++++++++++-----------------------------------
>  include/lcd.h |   35 +++++++++++-------------
>  2 files changed, 48 insertions(+), 71 deletions(-)

merged rebased patch, thanks!

Anatolij

^ permalink raw reply	[flat|nested] 33+ messages in thread

* [U-Boot] [PATCH 10/10] common/lcd.c: move the macro's to the c file
  2013-01-12 22:07 ` [U-Boot] [PATCH 10/10] common/lcd.c: move the macro's to the c file Jeroen Hofstee
@ 2013-03-29 11:05   ` Anatolij Gustschin
  0 siblings, 0 replies; 33+ messages in thread
From: Anatolij Gustschin @ 2013-03-29 11:05 UTC (permalink / raw)
  To: u-boot

On Sat, 12 Jan 2013 23:07:59 +0100
Jeroen Hofstee <jeroen@myspectrum.nl> wrote:

> Hide the console macros since some reference global data which is
> no longer present.
> 
> cc: Anatolij Gustschin <agust@denx.de>
> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
> ---
>  common/lcd.c  |   28 ++++++++++++++++++++++++++++
>  include/lcd.h |   28 ----------------------------
>  2 files changed, 28 insertions(+), 28 deletions(-)

merged rebased patch, thanks!

Anatolij

^ permalink raw reply	[flat|nested] 33+ messages in thread

end of thread, other threads:[~2013-03-29 11:05 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-12 22:07 [U-Boot] [PATCH 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
2013-01-12 22:07 ` [U-Boot] [PATCH 01/10] lcd, amba: remove this frame buffer driver since it is not used Jeroen Hofstee
2013-01-12 22:07 ` [U-Boot] [PATCH 02/10] lcd, tegra: remove unused cursor functions Jeroen Hofstee
2013-01-12 22:17   ` Jeroen Hofstee
2013-01-25 20:38   ` Simon Glass
2013-01-25 21:18     ` Tom Warren
2013-01-26 16:20       ` Jeroen Hofstee
2013-01-28 16:19         ` Tom Warren
2013-01-12 22:07 ` [U-Boot] [PATCH 03/10] lcd, mpc8xx: move the mpc8xx frame buffer driver to drivers/video Jeroen Hofstee
2013-01-12 22:07 ` [U-Boot] [PATCH 04/10] lcd, pxafb: move the pxafb " Jeroen Hofstee
2013-01-13  0:37   ` Marek Vasut
2013-01-12 22:07 ` [U-Boot] [PATCH 05/10] common/lcd.c: cleanup use of global variables Jeroen Hofstee
2013-01-16  1:23   ` Bo Shen
2013-01-12 22:07 ` [U-Boot] [PATCH 06/10] common/lcd.c: remove global lcd_base Jeroen Hofstee
2013-01-16  1:24   ` Bo Shen
2013-01-12 22:07 ` [U-Boot] [PATCH 07/10] common/lcd: cosmetic: clean up a bit Jeroen Hofstee
2013-03-29 11:04   ` Anatolij Gustschin
2013-01-12 22:07 ` [U-Boot] [PATCH 08/10] lcd, fb: cleanup, remove prototypes already in lcd.h and unused code Jeroen Hofstee
2013-01-12 22:07 ` [U-Boot] [PATCH 09/10] api/api_display: use the getters for console size info Jeroen Hofstee
2013-01-15 18:14   ` Che-liang Chiou
2013-01-12 22:07 ` [U-Boot] [PATCH 10/10] common/lcd.c: move the macro's to the c file Jeroen Hofstee
2013-03-29 11:05   ` Anatolij Gustschin
2013-01-13 16:15 ` [U-Boot] [PATCH 01/10] lcd, amba: remove this frame buffer driver since it is not used Alessandro Rubini
2013-01-22 20:44 ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Jeroen Hofstee
2013-01-22 20:44   ` [U-Boot] [PATCH v2 01/10] lcd, amba: remove this driver since it is not used Jeroen Hofstee
2013-01-22 20:44   ` [U-Boot] [PATCH v2 02/10] lcd, tegra: remove unused cursor functions Jeroen Hofstee
2013-01-22 20:44   ` [U-Boot] [PATCH v2 03/10] lcd, mpc8xx: move the mpc8xx driver to drivers/video Jeroen Hofstee
2013-01-22 20:44   ` [U-Boot] [PATCH v2 04/10] lcd, pxafb: move the pxafb " Jeroen Hofstee
2013-01-22 20:44   ` [U-Boot] [PATCH v2 05/10] common/lcd.c: cleanup use of global variables Jeroen Hofstee
2013-01-22 20:44   ` [U-Boot] [PATCH v2 06/10] common/lcd.c: remove global lcd_base Jeroen Hofstee
2013-01-22 20:44   ` [U-Boot] [PATCH v2 08/10] lcd, fb: remove duplicated prototypes and unused code Jeroen Hofstee
2013-01-22 20:44   ` [U-Boot] [PATCH v2 09/10] api/api_display: use the getters for console size info Jeroen Hofstee
2013-03-29 11:03   ` [U-Boot] [PATCH v2 00/10] common.lcd: remove globals and cleanup Anatolij Gustschin

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.