From patchwork Fri May 27 14:08:23 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatolij Gustschin X-Patchwork-Id: 97687 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 341D5B6F90 for ; Sat, 28 May 2011 00:09:28 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id E5E1A280F8; Fri, 27 May 2011 16:09:06 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nu5VDTpz8aDv; Fri, 27 May 2011 16:09:06 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 968FB280E7; Fri, 27 May 2011 16:08:44 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 0955E280A9 for ; Fri, 27 May 2011 16:08:39 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id c6gUgHzCzfRd for ; Fri, 27 May 2011 16:08:35 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-out.m-online.net (mail-out.m-online.net [212.18.0.9]) by theia.denx.de (Postfix) with ESMTP id DE461280AF for ; Fri, 27 May 2011 16:08:34 +0200 (CEST) Received: from frontend1.mail.m-online.net (unknown [192.168.8.180]) by mail-out.m-online.net (Postfix) with ESMTP id AE9871C0138C; Fri, 27 May 2011 16:08:34 +0200 (CEST) X-Auth-Info: tC1DpsEReD/Iv+sD13zW3G+mRxRL+jZClPuuF0yuaPI= Received: from localhost (p4FDE7632.dip.t-dialin.net [79.222.118.50]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA id 409B71C00078; Fri, 27 May 2011 16:08:34 +0200 (CEST) From: Anatolij Gustschin To: u-boot@lists.denx.de Date: Fri, 27 May 2011 16:08:23 +0200 Message-Id: <1306505304-9593-5-git-send-email-agust@denx.de> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1306505304-9593-1-git-send-email-agust@denx.de> References: <1306505304-9593-1-git-send-email-agust@denx.de> Subject: [U-Boot] [PATCH 4/5] mpc5200: digsy_mtc: add support for graphic extension board X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.9 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Add detection and initialisation for graphic extension board and support splash screen when booting. Enable "bmp" command in the board configuration and provide "disp" command to be able to switch the display on/off. Signed-off-by: Anatolij Gustschin Acked-by: Detlev Zundel --- board/digsy_mtc/Makefile | 7 +++-- board/digsy_mtc/cmd_disp.c | 54 +++++++++++++++++++++++++++++++++++++++++++ board/digsy_mtc/digsy_mtc.c | 49 +++++++++++++++++++++++++++++++++++++++ board/digsy_mtc/exbo.h | 17 +++++++++++++ include/configs/digsy_mtc.h | 27 +++++++++++++++++++++ 5 files changed, 151 insertions(+), 3 deletions(-) create mode 100644 board/digsy_mtc/cmd_disp.c create mode 100644 board/digsy_mtc/exbo.h diff --git a/board/digsy_mtc/Makefile b/board/digsy_mtc/Makefile index a40076c..19f5b3a 100644 --- a/board/digsy_mtc/Makefile +++ b/board/digsy_mtc/Makefile @@ -7,10 +7,11 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).o -COBJS := $(BOARD).o cmd_mtc.o +COBJS-y := $(BOARD).o cmd_mtc.o +COBJS-$(CONFIG_VIDEO) += cmd_disp.o -SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS)) +SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS-y)) SOBJS := $(addprefix $(obj),$(SOBJS)) $(LIB): $(obj).depend $(OBJS) diff --git a/board/digsy_mtc/cmd_disp.c b/board/digsy_mtc/cmd_disp.c new file mode 100644 index 0000000..16f0737 --- /dev/null +++ b/board/digsy_mtc/cmd_disp.c @@ -0,0 +1,54 @@ +/* + * (C) Copyright 2011 DENX Software Engineering, + * Anatolij Gustschin + * + * 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 +#include +#include +#include "exbo.h" + +static int cmd_disp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO; + + if (argc < 2) { + printf("%s\n", gpio->simple_dvo & GPIO_USB1_0 ? "on" : "off"); + return 0; + } + + if (!strncmp(argv[1], "on", 2)) { + gpio->simple_dvo |= GPIO_USB1_0; + } else if (!strncmp(argv[1], "off", 3)) { + gpio->simple_dvo &= ~GPIO_USB1_0; + } else { + cmd_usage(cmdtp); + return 1; + } + return 0; +} + +U_BOOT_CMD(disp, 2, 1, cmd_disp, + "disp [on/off] - switch display on/off", + "\n - print display on/off status\n" + "on\n - turn on\n" + "off\n - turn off\n" +); diff --git a/board/digsy_mtc/digsy_mtc.c b/board/digsy_mtc/digsy_mtc.c index 588face..219b61a 100644 --- a/board/digsy_mtc/digsy_mtc.c +++ b/board/digsy_mtc/digsy_mtc.c @@ -48,6 +48,8 @@ #endif #include #include +#include +#include "exbo.h" DECLARE_GLOBAL_DATA_PTR; @@ -207,6 +209,51 @@ int checkboard(void) return 0; } +#if defined(CONFIG_VIDEO) +static void exbo_hw_init(void) +{ + struct mpc5xxx_gpt *gpt = (struct mpc5xxx_gpt *)MPC5XXX_GPT; + struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO; + struct mpc5xxx_wu_gpio *wu_gpio = + (struct mpc5xxx_wu_gpio *)MPC5XXX_WU_GPIO; + unsigned char val; + + /* 1st, check if extension board is present */ + if (i2c_read(EXBO_EE_I2C_ADDRESS, 0, 1, &val, 1)) + return; + + /* configure IrDA pins (PSC6 port) as gpios */ + gpio->port_config &= 0xFF8FFFFF; + + /* Init for USB1_0, EE_CLK and EE_DI - Low */ + gpio->simple_ddr |= GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI; + gpio->simple_ode &= ~(GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI); + gpio->simple_dvo &= ~(GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI); + gpio->simple_gpioe |= GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI; + + /* Init for EE_DO, EE_CTS - Input */ + wu_gpio->ddr &= ~(GPIO_EE_DO | GPIO_EE_CTS); + wu_gpio->enable |= GPIO_EE_DO | GPIO_EE_CTS; + + /* Init for PX_~EN (USB1_9) - High */ + gpio->sint_ode &= ~GPIO_USB1_9; + gpio->sint_ddr |= GPIO_USB1_9; + gpio->sint_inten &= ~GPIO_USB1_9; + gpio->sint_dvo |= GPIO_USB1_9; + gpio->sint_gpioe |= GPIO_USB1_9; + + /* Init for ~OE Switch (GPIO3) - Timer_0 GPIO High */ + gpt[0].emsr = GPT_GPIO_ON; + /* Init for S Switch (GPIO4) - Timer_1 GPIO High */ + gpt[1].emsr = GPT_GPIO_ON; + + /* Power-On camera supply */ + gpio->simple_dvo |= GPIO_USB1_0; +} +#else +static inline void exbo_hw_init(void) {} +#endif /* CONFIG_VIDEO */ + int board_early_init_r(void) { #ifdef CONFIG_MPC52XX_SPI @@ -224,6 +271,8 @@ int board_early_init_r(void) /* enable CS0 */ setbits_be32((void *)MPC5XXX_ADDECR, (1 << 16)); + exbo_hw_init(); + #if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) /* Low level USB init, required for proper kernel operation */ usb_cpu_init(); diff --git a/board/digsy_mtc/exbo.h b/board/digsy_mtc/exbo.h new file mode 100644 index 0000000..ccc9d9c --- /dev/null +++ b/board/digsy_mtc/exbo.h @@ -0,0 +1,17 @@ +#ifndef _EXBO_H +#define _EXBO_H + +#define GPIO_USB1_0 0x00010000 /* Power-On pin */ +#define GPIO_USB1_9 0x00000008 /* PX_~EN pin */ + +#define GPIO_EE_DO 0x10000000 /* PSC6_0 (DO) pin */ +#define GPIO_EE_CTS 0x20000000 /* PSC6_1 (CTS) pin */ +#define GPIO_EE_DI 0x10000000 /* PSC6_2 (DI) pin */ +#define GPIO_EE_CLK 0x20000000 /* PSC6_3 (CLK) pin */ + +#define GPT_GPIO_ON 0x00000034 /* GPT as simple GPIO, high */ + +/* ExBo I2C Addresses */ +#define EXBO_EE_I2C_ADDRESS 0x56 + +#endif diff --git a/include/configs/digsy_mtc.h b/include/configs/digsy_mtc.h index 2b7ba4d..c2b642c 100644 --- a/include/configs/digsy_mtc.h +++ b/include/configs/digsy_mtc.h @@ -87,10 +87,37 @@ #define CONFIG_BZIP2 /* + * Video + */ +#define CONFIG_VIDEO + +#ifdef CONFIG_VIDEO +#define CONFIG_VIDEO_MB862xx +#define CONFIG_VIDEO_MB862xx_ACCEL +#define CONFIG_VIDEO_CORALP +#define CONFIG_CFB_CONSOLE +#define CONFIG_VIDEO_LOGO +#define CONFIG_VIDEO_SW_CURSOR +#define CONFIG_VGA_AS_SINGLE_DEVICE +#define CONFIG_SYS_CONSOLE_IS_IN_ENV +#define CONFIG_SPLASH_SCREEN +#define CONFIG_VIDEO_BMP_GZIP +#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (2 << 20) /* decompressed img */ + +/* Coral-PA clock frequency, geo and other both 133MHz */ +#define CONFIG_SYS_MB862xx_CCF 0x00050000 +/* Video SDRAM parameters */ +#define CONFIG_SYS_MB862xx_MMR 0x11d7fa72 +#endif + +/* * Command line configuration. */ #include +#ifdef CONFIG_VIDEO +#define CONFIG_CMD_BMP +#endif #define CONFIG_CMD_DFL #define CONFIG_CMD_CACHE #define CONFIG_CMD_DATE