summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2009-07-26 23:15:57 +0200
committerWolfgang Denk <wd@denx.de>2009-07-26 23:15:57 +0200
commit8bf7437c0127f417b566c93ffa59df7292a0e11f (patch)
tree88931de07c5cface7e846c494e07f41e2d7f8b16 /board
parente1491288743c3c3547c9b512d03f42eae530a114 (diff)
parent35cf3b57eafe3ee1f693e24267e0ecfefab60251 (diff)
downloadu-boot-imx-8bf7437c0127f417b566c93ffa59df7292a0e11f.zip
u-boot-imx-8bf7437c0127f417b566c93ffa59df7292a0e11f.tar.gz
u-boot-imx-8bf7437c0127f417b566c93ffa59df7292a0e11f.tar.bz2
Merge branch 'master' of git://git.denx.de/u-boot-video
Diffstat (limited to 'board')
-rw-r--r--board/BuS/EB+MCF-EV123/EB+MCF-EV123.c104
-rw-r--r--board/BuS/EB+MCF-EV123/Makefile2
-rw-r--r--board/BuS/EB+MCF-EV123/VCxK.c136
-rw-r--r--board/BuS/EB+MCF-EV123/VCxK.h48
-rw-r--r--board/mimc/mimc200/mimc200.c34
5 files changed, 123 insertions, 201 deletions
diff --git a/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c b/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c
index 73dfb3d..2fc3eaf 100644
--- a/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c
+++ b/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c
@@ -1,5 +1,5 @@
/*
- * (C) Copyright 2005
+ * (C) Copyright 2005-2009
* BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.de>
*
* (C) Copyright 2000-2003
@@ -27,7 +27,18 @@
#include <common.h>
#include <command.h>
#include "asm/m5282.h"
-#include "VCxK.h"
+#include <bmp_layout.h>
+#include <status_led.h>
+#include <bus_vcxk.h>
+
+/*---------------------------------------------------------------------------*/
+
+DECLARE_GLOBAL_DATA_PTR;
+
+unsigned long display_width;
+unsigned long display_height;
+
+/*---------------------------------------------------------------------------*/
int checkboard (void)
{
@@ -89,7 +100,6 @@ phys_size_t initdram (int board_type)
return size;
}
-
#if defined(CONFIG_SYS_DRAM_TEST)
int testdram (void)
{
@@ -126,37 +136,99 @@ int testdram (void)
int misc_init_r(void)
{
- init_vcxk();
+#ifdef CONFIG_HW_WATCHDOG
+ hw_watchdog_init();
+#endif
+#ifndef CONFIG_VIDEO
+ vcxk_init(16, 16);
+#endif
return 1;
}
+#if defined(CONFIG_VIDEO)
+
+/*
+ ****h* EB+CPU5282-T1/drv_video_init
+ * FUNCTION
+ ***
+ */
+
+int drv_video_init(void)
+{
+ char *s;
+ unsigned long splash;
+
+ printf("Init Video as ");
+
+ if ((s = getenv("displaywidth")) != NULL)
+ display_width = simple_strtoul(s, NULL, 10);
+ else
+ display_width = 256;
+
+ if ((s = getenv("displayheight")) != NULL)
+ display_height = simple_strtoul(s, NULL, 10);
+ else
+ display_height = 256;
+
+ printf("%lu x %lu pixel matrix\n", display_width, display_height);
+
+ MCFCCM_CCR &= ~MCFCCM_CCR_SZEN;
+ MCFGPIO_PEPAR &= ~MCFGPIO_PEPAR_PEPA2;
+
+ vcxk_init(display_width, display_height);
+
+#ifdef CONFIG_SPLASH_SCREEN
+ if ((s = getenv("splashimage")) != NULL) {
+ debug("use splashimage: %s\n", s);
+ splash = simple_strtoul(s, NULL, 16);
+ debug("use splashimage: %x\n", splash);
+ vcxk_acknowledge_wait();
+ video_display_bitmap(splash, 0, 0);
+ }
+#endif
+ return 0;
+}
+#endif
+
/*---------------------------------------------------------------------------*/
-int do_vcimage (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+#ifdef CONFIG_VIDEO
+int do_brightness(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
int rcode = 0;
- ulong source;
+ ulong side;
+ ulong bright;
switch (argc) {
- case 2:
- source = simple_strtoul(argv[1],NULL,16);
- vcxk_loadimage(source);
- rcode = 0;
+ case 3:
+ side = simple_strtoul(argv[1], NULL, 10);
+ bright = simple_strtoul(argv[2], NULL, 10);
+ if ((side >= 0) && (side <= 3) &&
+ (bright >= 0) && (bright <= 1000)) {
+ vcxk_setbrightness(side, bright);
+ rcode = 0;
+ } else {
+ printf("parameters out of range\n");
+ printf("Usage:\n%s\n", cmdtp->usage);
+ rcode = 1;
+ }
break;
default:
- cmd_usage(cmdtp);
+ printf("Usage:\n%s\n", cmdtp->usage);
rcode = 1;
break;
}
return rcode;
}
-/***************************************************/
+/*---------------------------------------------------------------------------*/
U_BOOT_CMD(
- vcimage, 2, 0, do_vcimage,
- "loads an image to Display",
- "vcimage addr"
+ bright, 3, 0, do_brightness,
+ "sets the display brightness\n",
+ " <side> <0..1000>\n side: 0/3=both; 1=first; 2=second\n"
);
-/* EOF EB+MCF-EV123c */
+#endif
+
+/* EOF EB+MCF-EV123.c */
diff --git a/board/BuS/EB+MCF-EV123/Makefile b/board/BuS/EB+MCF-EV123/Makefile
index ed3ac07..44961b9 100644
--- a/board/BuS/EB+MCF-EV123/Makefile
+++ b/board/BuS/EB+MCF-EV123/Makefile
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS = $(BOARD).o cfm_flash.o flash.o VCxK.o
+COBJS = $(BOARD).o cfm_flash.o flash.o
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
OBJS := $(addprefix $(obj),$(COBJS))
diff --git a/board/BuS/EB+MCF-EV123/VCxK.c b/board/BuS/EB+MCF-EV123/VCxK.c
deleted file mode 100644
index f2fe353..0000000
--- a/board/BuS/EB+MCF-EV123/VCxK.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * (C) Copyright 2005
- * BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.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
- */
-
-#include <common.h>
-#include <asm/m5282.h>
-#include "VCxK.h"
-
-vu_char *vcxk_bws = (vu_char *)(CONFIG_SYS_CS3_BASE);
-#define VCXK_BWS vcxk_bws
-
-static ulong vcxk_driver;
-
-
-ulong search_vcxk_driver(void);
-void vcxk_cls(void);
-void vcxk_setbrightness(short brightness);
-int vcxk_request(void);
-int vcxk_acknowledge_wait(void);
-void vcxk_clear(void);
-
-int init_vcxk(void)
-{
- VIDEO_Invert_CFG &= ~VIDEO_Invert_IO;
- VIDEO_INVERT_PORT |= VIDEO_INVERT_PIN;
- VIDEO_INVERT_DDR |= VIDEO_INVERT_PIN;
-
- VIDEO_REQUEST_PORT |= VIDEO_REQUEST_PIN;
- VIDEO_REQUEST_DDR |= VIDEO_REQUEST_PIN;
-
- VIDEO_ACKNOWLEDGE_DDR &= ~VIDEO_ACKNOWLEDGE_PIN;
-
- vcxk_driver = search_vcxk_driver();
- if (vcxk_driver)
- {
- /* use flash resist driver */
- }
- else
- {
- vcxk_cls();
- vcxk_cls();
- vcxk_setbrightness(1000);
- }
- VIDEO_ENABLE_DDR |= VIDEO_ENABLE_PIN;
- VIDEO_ENABLE_PORT |= VIDEO_ENABLE_PIN;
- VIDEO_ENABLE_PORT &= ~VIDEO_ENABLE_PIN;
- return 1;
-}
-
-void vcxk_loadimage(ulong source)
-{
- int cnt;
- vcxk_acknowledge_wait();
- for (cnt=0; cnt<16384; cnt++)
- {
- VCXK_BWS[cnt*2] = (*(vu_char*) source);
- source++;
- }
- vcxk_request();
-}
-
-void vcxk_cls(void)
-{
- vcxk_acknowledge_wait();
- vcxk_clear();
- vcxk_request();
-}
-
-void vcxk_clear(void)
-{
- int cnt;
- for (cnt=0; cnt<16384; cnt++)
- {
- VCXK_BWS[cnt*2] = 0x00;
- }
-}
-
-void vcxk_setbrightness(short brightness)
-{
- VCXK_BWS[0x8000]=(brightness >> 4) +2;
- VCXK_BWS[0xC000]= (brightness + 23) >> 8;
- VCXK_BWS[0xC001]= (brightness + 23) & 0xFF;
-}
-
-int vcxk_request(void)
-{
- if (vcxk_driver)
- {
- /* use flash resist driver */
- }
- else
- {
- VIDEO_REQUEST_PORT &= ~VIDEO_REQUEST_PIN;
- VIDEO_REQUEST_PORT |= VIDEO_REQUEST_PIN;
- }
- return 1;
-}
-
-int vcxk_acknowledge_wait(void)
-{
- if (vcxk_driver)
- {
- /* use flash resist driver */
- }
- else
- {
- while (!(VIDEO_ACKNOWLEDGE_PORT & VIDEO_ACKNOWLEDGE_PIN));
- }
- return 1;
-}
-
-ulong search_vcxk_driver(void)
-{
- return 0;
-}
-
-/* eof */
diff --git a/board/BuS/EB+MCF-EV123/VCxK.h b/board/BuS/EB+MCF-EV123/VCxK.h
deleted file mode 100644
index f591e5c..0000000
--- a/board/BuS/EB+MCF-EV123/VCxK.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * (C) Copyright 2005
- * BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.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
- */
-
-#ifndef __VCXK_H_
-#define __VCXK_H_
-
-extern int init_vcxk(void);
-void vcxk_loadimage(ulong source);
-
-#define VIDEO_ACKNOWLEDGE_PORT MCFGPTB_GPTPORT
-#define VIDEO_ACKNOWLEDGE_DDR MCFGPTB_GPTDDR
-#define VIDEO_ACKNOWLEDGE_PIN 0x0001
-
-#define VIDEO_ENABLE_PORT MCFGPTB_GPTPORT
-#define VIDEO_ENABLE_DDR MCFGPTB_GPTDDR
-#define VIDEO_ENABLE_PIN 0x0002
-
-#define VIDEO_REQUEST_PORT MCFGPTB_GPTPORT
-#define VIDEO_REQUEST_DDR MCFGPTB_GPTDDR
-#define VIDEO_REQUEST_PIN 0x0004
-
-#define VIDEO_Invert_CFG MCFGPIO_PEPAR
-#define VIDEO_Invert_IO MCFGPIO_PEPAR_PEPA2
-#define VIDEO_INVERT_PORT MCFGPIO_PORTE
-#define VIDEO_INVERT_DDR MCFGPIO_DDRE
-#define VIDEO_INVERT_PIN MCFGPIO_PORT2
-
-#endif
diff --git a/board/mimc/mimc200/mimc200.c b/board/mimc/mimc200/mimc200.c
index 6df741e..b773c1a 100644
--- a/board/mimc/mimc200/mimc200.c
+++ b/board/mimc/mimc200/mimc200.c
@@ -28,10 +28,40 @@
#include <asm/arch/gpio.h>
#include <asm/arch/hmatrix.h>
#include <asm/arch/portmux.h>
+#include <atmel_lcdc.h>
#include <lcd.h>
#include "../../../cpu/at32ap/hsmc3.h"
+#if defined(CONFIG_LCD)
+/* 480x272x16 @ 72 Hz */
+vidinfo_t panel_info = {
+ .vl_col = 480, /* Number of columns */
+ .vl_row = 272, /* Number of rows */
+ .vl_clk = 10000000, /* pixel clock in ps */
+ .vl_sync = ATMEL_LCDC_INVCLK_INVERTED |
+ ATMEL_LCDC_INVLINE_INVERTED |
+ ATMEL_LCDC_INVFRAME_INVERTED,
+ .vl_bpix = LCD_COLOR16, /* Bits per pixel, BPP = 2^n */
+ .vl_tft = 1, /* 0 = passive, 1 = TFT */
+ .vl_hsync_len = 42, /* Length of horizontal sync */
+ .vl_left_margin = 1, /* Time from sync to picture */
+ .vl_right_margin = 1, /* Time from picture to sync */
+ .vl_vsync_len = 1, /* Length of vertical sync */
+ .vl_upper_margin = 12, /* Time from sync to picture */
+ .vl_lower_margin = 1, /* Time from picture to sync */
+ .mmio = LCDC_BASE, /* Memory mapped registers */
+};
+
+void lcd_enable(void)
+{
+}
+
+void lcd_disable(void)
+{
+}
+#endif
+
DECLARE_GLOBAL_DATA_PTR;
static const struct sdram_config sdram_config = {
@@ -110,6 +140,10 @@ int board_early_init_f(void)
portmux_enable_mmci(0, PORTMUX_MMCI_4BIT, PORTMUX_DRIVE_LOW);
#endif
+#if defined(CONFIG_LCD)
+ portmux_enable_lcdc(1);
+#endif
+
return 0;
}