diff options
33 files changed, 628 insertions, 216 deletions
| diff --git a/MAINTAINERS b/MAINTAINERS index 54eeab7ba..fd0c65c8d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -813,6 +813,7 @@ Thierry Reding <thierry.reding@avionic-design.de>  	plutux		Tegra2 (ARM7 & A9 Dual Core)  	medcom		Tegra2 (ARM7 & A9 Dual Core) +	tec		Tegra2 (ARM7 & A9 Dual Core)  Christian Riesch <christian.riesch@omicron.at>  Manfred Rudigier <manfred.rudigier@omicron.at> @@ -2229,6 +2229,20 @@ The following options need to be configured:  		the environment like the "source" command or the  		boot command first. +		CONFIG_ENV_VARS_UBOOT_CONFIG + +		Define this in order to add variables describing the +		U-Boot build configuration to the default environment. +		These will be named arch, cpu, board, vendor, and soc. + +		Enabling this option will cause the following to be defined: + +		- CONFIG_SYS_ARCH +		- CONFIG_SYS_CPU +		- CONFIG_SYS_BOARD +		- CONFIG_SYS_VENDOR +		- CONFIG_SYS_SOC +  - DataFlash Support:  		CONFIG_HAS_DATAFLASH diff --git a/arch/arm/cpu/armv7/tegra2/Makefile b/arch/arm/cpu/armv7/tegra2/Makefile index 08c4137a3..80da4536d 100644 --- a/arch/arm/cpu/armv7/tegra2/Makefile +++ b/arch/arm/cpu/armv7/tegra2/Makefile @@ -39,6 +39,7 @@ COBJS-$(CONFIG_TEGRA_CLOCK_SCALING) += emc.o  COBJS-$(CONFIG_TEGRA_PMU) += pmu.o  COBJS-$(CONFIG_USB_EHCI_TEGRA) += usb.o  COBJS-$(CONFIG_TEGRA2_LP0) += crypto.o warmboot.o warmboot_avp.o +COBJS-$(CONFIG_CMD_ENTERRCM) += cmd_enterrcm.o  COBJS	:= $(COBJS-y)  SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c) diff --git a/arch/arm/cpu/armv7/tegra2/cmd_enterrcm.c b/arch/arm/cpu/armv7/tegra2/cmd_enterrcm.c new file mode 100644 index 000000000..2fcd107df --- /dev/null +++ b/arch/arm/cpu/armv7/tegra2/cmd_enterrcm.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved. + * + * Derived from code (arch/arm/lib/reset.c) that is: + * + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Marius Groeger <mgroeger@sysgo.de> + * + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Alex Zuepke <azu@sysgo.de> + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> + * + * (C) Copyright 2004 + * DAVE Srl + * http://www.dave-tech.it + * http://www.wawnet.biz + * mailto:info@wawnet.biz + * + * (C) Copyright 2004 Texas Insturments + * + * 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, see <http://www.gnu.org/licenses/>. + */ + +#include <common.h> +#include <asm/arch/tegra2.h> +#include <asm/arch/pmc.h> + +static int do_enterrcm(cmd_tbl_t *cmdtp, int flag, int argc, +		       char * const argv[]) +{ +	struct pmc_ctlr *pmc = (struct pmc_ctlr *)TEGRA2_PMC_BASE; + +	puts("Entering RCM...\n"); +	udelay(50000); + +	pmc->pmc_scratch0 = 2; +	disable_interrupts(); +	reset_cpu(0); + +	return 0; +} + +U_BOOT_CMD( +	enterrcm, 1, 0, do_enterrcm, +	"reset Tegra and enter USB Recovery Mode", +	"" +); diff --git a/arch/arm/cpu/armv7/tegra2/funcmux.c b/arch/arm/cpu/armv7/tegra2/funcmux.c index 820ba4e90..4a31a4cf0 100644 --- a/arch/arm/cpu/armv7/tegra2/funcmux.c +++ b/arch/arm/cpu/armv7/tegra2/funcmux.c @@ -209,9 +209,30 @@ int funcmux_select(enum periph_id id, int config)  				pinmux_set_func(grp[i], PMUX_FUNC_KBC);  				pinmux_set_pullupdown(grp[i], PMUX_PULL_UP);  			} +		} +		break; -			break; +	case PERIPH_ID_USB2: +		if (config == FUNCMUX_USB2_ULPI) { +			pinmux_set_func(PINGRP_UAA, PMUX_FUNC_ULPI); +			pinmux_set_func(PINGRP_UAB, PMUX_FUNC_ULPI); +			pinmux_set_func(PINGRP_UDA, PMUX_FUNC_ULPI); + +			pinmux_tristate_disable(PINGRP_UAA); +			pinmux_tristate_disable(PINGRP_UAB); +			pinmux_tristate_disable(PINGRP_UDA);  		} +		break; + +	case PERIPH_ID_SPI1: +		if (config == FUNCMUX_SPI1_GMC_GMD) { +			pinmux_set_func(PINGRP_GMC, PMUX_FUNC_SFLASH); +			pinmux_set_func(PINGRP_GMD, PMUX_FUNC_SFLASH); + +			pinmux_tristate_disable(PINGRP_GMC); +			pinmux_tristate_disable(PINGRP_GMD); +		} +		break;  	default:  		debug("%s: invalid periph_id %d", __func__, id); diff --git a/arch/arm/cpu/armv7/tegra2/usb.c b/arch/arm/cpu/armv7/tegra2/usb.c index c80de7f6a..5f2b24375 100644 --- a/arch/arm/cpu/armv7/tegra2/usb.c +++ b/arch/arm/cpu/armv7/tegra2/usb.c @@ -290,7 +290,7 @@ static int init_usb_controller(struct fdt_usb *config,  			break;  		udelay(1);  	} -	if (loop_count == 100000) +	if (!loop_count)  		return -1;  	return 0; diff --git a/arch/arm/include/asm/arch-tegra2/funcmux.h b/arch/arm/include/asm/arch-tegra2/funcmux.h index b16c49612..dcd512f08 100644 --- a/arch/arm/include/asm/arch-tegra2/funcmux.h +++ b/arch/arm/include/asm/arch-tegra2/funcmux.h @@ -51,6 +51,12 @@ enum {  	FUNCMUX_SDMMC4_ATC_ATD_8BIT = 0,  	FUNCMUX_SDMMC4_ATB_GMA_4_BIT,  	FUNCMUX_SDMMC4_ATB_GMA_GME_8_BIT, + +	/* USB configs */ +	FUNCMUX_USB2_ULPI = 0, + +	/* Serial Flash configs */ +	FUNCMUX_SPI1_GMC_GMD = 0,  };  /** diff --git a/arch/arm/include/asm/arch-tegra2/tegra2.h b/arch/arm/include/asm/arch-tegra2/tegra2.h index 3c8d8a84b..13d68c017 100644 --- a/arch/arm/include/asm/arch-tegra2/tegra2.h +++ b/arch/arm/include/asm/arch-tegra2/tegra2.h @@ -45,6 +45,7 @@  #define NV_PA_CSITE_BASE	0x70040000  #define TEGRA_USB1_BASE		0xC5000000  #define TEGRA_USB3_BASE		0xC5008000 +#define TEGRA_USB_ADDR_MASK	0xFFFFC000  #define TEGRA2_SDRC_CS0		NV_PA_SDRAM_BASE  #define LOW_LEVEL_SRAM_STACK	0x4000FFFC diff --git a/board/avionic-design/common/tamonten.c b/board/avionic-design/common/tamonten.c index f23b65704..2c14462eb 100644 --- a/board/avionic-design/common/tamonten.c +++ b/board/avionic-design/common/tamonten.c @@ -1,7 +1,7 @@  /*   *  (C) Copyright 2010,2011   *  NVIDIA Corporation <www.nvidia.com> - *  (C) Copyright 2011 + *  (C) Copyright 2011-2012   *  Avionic Design GmbH <www.avionic-design.de>   *   * See file CREDITS for list of people who contributed to this @@ -36,75 +36,50 @@  #include <asm/arch/pinmux.h>  #include <asm/arch/uart.h>  #include <asm/arch/mmc.h> -#include "tamonten.h" -#ifdef CONFIG_TEGRA2_MMC +#ifdef CONFIG_TEGRA_MMC  #include <mmc.h>  #endif -DECLARE_GLOBAL_DATA_PTR; - -const struct tegra2_sysinfo sysinfo = { -	CONFIG_TEGRA2_BOARD_STRING -}; -  /* - * Routine: timer_init - * Description: init the timestamp and lastinc value + * Routine: gpio_config_uart + * Description: Does nothing on Tamonten - no conflict w/SPI.   */ -int timer_init(void) +void gpio_config_uart(void)  { -	return 0;  } -#ifdef CONFIG_TEGRA2_MMC -/* - * Routine: pin_mux_mmc - * Description: setup the pin muxes/tristate values for the SDMMC(s) - */ -static void pin_mux_mmc(void) +#ifdef CONFIG_BOARD_EARLY_INIT_F +void gpio_early_init(void)  { -	funcmux_select(PERIPH_ID_SDMMC4, FUNCMUX_SDMMC4_ATB_GMA_GME_8_BIT); +	gpio_request(GPIO_PI4, NULL); +	gpio_direction_output(GPIO_PI4, 1);  }  #endif +#ifdef CONFIG_TEGRA_MMC  /* - * Routine: board_init - * Description: Early hardware init. + * Routine: pin_mux_mmc + * Description: setup the pin muxes/tristate values for the SDMMC(s)   */ -int board_init(void) +static void pin_mux_mmc(void)  { -	clock_init(); -	clock_verify(); - -	/* boot param addr */ -	gd->bd->bi_boot_params = (NV_PA_SDRAM_BASE + 0x100); - -	return 0; +	funcmux_select(PERIPH_ID_SDMMC4, FUNCMUX_SDMMC4_ATB_GMA_GME_8_BIT); +	/* for write-protect GPIO PI6 */ +	pinmux_tristate_disable(PINGRP_ATA); +	/* for CD GPIO PH2 */ +	pinmux_tristate_disable(PINGRP_ATD);  } -#ifdef CONFIG_TEGRA2_MMC  /* this is a weak define that we are overriding */  int board_mmc_init(bd_t *bd)  { -	debug("board_mmc_init called\n");  	/* Enable muxes, etc. for SDMMC controllers */  	pin_mux_mmc(); -	gpio_config_mmc(); -	debug("board_mmc_init: init eMMC\n"); -	/* init dev 0, eMMC chip, with 4-bit bus */ -	tegra2_mmc_init(0, 4, -1, GPIO_PH2); +	/* init dev 0, SD slot, with 4-bit bus */ +	tegra2_mmc_init(0, 4, GPIO_PI6, GPIO_PH2);  	return 0;  }  #endif - -#ifdef CONFIG_BOARD_EARLY_INIT_F -int board_early_init_f(void) -{ -	/* Initialize selected UARTs */ -	board_init_uart_f(); -	return 0; -} -#endif /* EARLY_INIT */ diff --git a/board/avionic-design/common/tamonten.h b/board/avionic-design/common/tamonten.h deleted file mode 100644 index 0e60b0fad..000000000 --- a/board/avionic-design/common/tamonten.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - *  (C) Copyright 2010,2011 - *  NVIDIA Corporation <www.nvidia.com> - *  (C) Copyright 2011 - *  Avionic Design GmbH <www.avionic-design.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 _TAMONTEN_H_ -#define _TAMONTEN_H_ - -void tegra2_start(void); -void gpio_config_mmc(void); - -#endif /* TAMONTEN_H */ diff --git a/board/avionic-design/dts/tegra2-medcom.dts b/board/avionic-design/dts/tegra2-medcom.dts new file mode 100644 index 000000000..fc52f9ce4 --- /dev/null +++ b/board/avionic-design/dts/tegra2-medcom.dts @@ -0,0 +1,58 @@ +/dts-v1/; + +/include/ ARCH_CPU_DTS + +/ { +	model = "Avionic Design Medcom-Wide"; +	compatible = "avionic-design,medcom", "nvidia,tegra20"; + +	aliases { +		usb0 = "/usb@c5008000"; +	}; + +	memory { +		reg = <0x00000000 0x20000000>; +	}; + +	clocks { +		clk_32k: clk_32k { +			clock-frequency = <32000>; +		}; + +		osc { +			clock-frequency = <12000000>; +		}; +	}; + +	clock@60006000 { +		clocks = <&clk_32k &osc>; +	}; + +	serial@70006300 { +		clock-frequency = <216000000>; +	}; + +	i2c@7000c000 { +		status = "disabled"; +	}; + +	i2c@7000c400 { +		status = "disabled"; +	}; + +	i2c@7000c500 { +		status = "disabled"; +	}; + +	i2c@7000d000 { +		status = "disabled"; +	}; + +	usb@c5000000 { +		status = "disabled"; +	}; + +	usb@c5004000 { +		status = "disabled"; +	}; +}; diff --git a/board/avionic-design/dts/tegra2-plutux.dts b/board/avionic-design/dts/tegra2-plutux.dts new file mode 100644 index 000000000..cef49ad80 --- /dev/null +++ b/board/avionic-design/dts/tegra2-plutux.dts @@ -0,0 +1,58 @@ +/dts-v1/; + +/include/ ARCH_CPU_DTS + +/ { +	model = "Avionic Design Plutux"; +	compatible = "avionic-design,plutux", "nvidia,tegra20"; + +	aliases { +		usb0 = "/usb@c5008000"; +	}; + +	memory { +		reg = <0x00000000 0x20000000>; +	}; + +	clocks { +		clk_32k: clk_32k { +			clock-frequency = <32000>; +		}; + +		osc { +			clock-frequency = <12000000>; +		}; +	}; + +	clock@60006000 { +		clocks = <&clk_32k &osc>; +	}; + +	serial@70006300 { +		clock-frequency = <216000000>; +	}; + +	i2c@7000c000 { +		status = "disabled"; +	}; + +	i2c@7000c400 { +		status = "disabled"; +	}; + +	i2c@7000c500 { +		status = "disabled"; +	}; + +	i2c@7000d000 { +		status = "disabled"; +	}; + +	usb@c5000000 { +		status = "disabled"; +	}; + +	usb@c5004000 { +		status = "disabled"; +	}; +}; diff --git a/board/avionic-design/dts/tegra2-tec.dts b/board/avionic-design/dts/tegra2-tec.dts new file mode 100644 index 000000000..9faebd8bc --- /dev/null +++ b/board/avionic-design/dts/tegra2-tec.dts @@ -0,0 +1,58 @@ +/dts-v1/; + +/include/ ARCH_CPU_DTS + +/ { +	model = "Avionic Design Tamonten Evaluation Carrier"; +	compatible = "avionic-design,tec", "nvidia,tegra20"; + +	aliases { +		usb0 = "/usb@c5008000"; +	}; + +	memory { +		reg = <0x00000000 0x20000000>; +	}; + +	clocks { +		clk_32k: clk_32k { +			clock-frequency = <32000>; +		}; + +		osc { +			clock-frequency = <12000000>; +		}; +	}; + +	clock@60006000 { +		clocks = <&clk_32k &osc>; +	}; + +	serial@70006300 { +		clock-frequency = <216000000>; +	}; + +	i2c@7000c000 { +		status = "disabled"; +	}; + +	i2c@7000c400 { +		status = "disabled"; +	}; + +	i2c@7000c500 { +		status = "disabled"; +	}; + +	i2c@7000d000 { +		status = "disabled"; +	}; + +	usb@c5000000 { +		status = "disabled"; +	}; + +	usb@c5004000 { +		status = "disabled"; +	}; +}; diff --git a/board/avionic-design/medcom/Makefile b/board/avionic-design/medcom/Makefile index b0c318c43..d96d04306 100644 --- a/board/avionic-design/medcom/Makefile +++ b/board/avionic-design/medcom/Makefile @@ -1,7 +1,7 @@  #  #  (C) Copyright 2010,2011  #  NVIDIA Corporation <www.nvidia.com> -#  (C) Copyright 2011 +#  (C) Copyright 2011,2012  #  Avionic Design GmbH <www.avionic-design.de>  #  #  See file CREDITS for list of people who contributed to this @@ -26,12 +26,12 @@  include $(TOPDIR)/config.mk  ifneq ($(OBJTREE),$(SRCTREE)) -$(shell mkdir -p $(obj)../common) +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)  endif  LIB	= $(obj)lib$(BOARD).o -COBJS	:= $(BOARD).o +COBJS	:= ../../nvidia/common/board.o  COBJS	+= ../common/tamonten.o  SRCS	:= $(COBJS:.o=.c) diff --git a/board/avionic-design/medcom/medcom.c b/board/avionic-design/medcom/medcom.c deleted file mode 100644 index 42c80940c..000000000 --- a/board/avionic-design/medcom/medcom.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - *  (C) Copyright 2010,2011 - *  NVIDIA Corporation <www.nvidia.com> - *  (C) Copyright 2011 - *  Avionic Design GmbH <www.avionic-design.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/io.h> -#include <asm/gpio.h> -#include <asm/arch/tegra2.h> -#ifdef CONFIG_TEGRA2_MMC -#include <mmc.h> -#endif - -#ifdef CONFIG_TEGRA2_MMC -/* - * Routine: gpio_config_mmc - * Description: Set GPIOs for SD card - */ -void gpio_config_mmc(void) -{ -	/* configure pin as input for card detect */ -	gpio_request(GPIO_PH2, "SD4 CD"); -	gpio_direction_input(GPIO_PH2); -} -#endif diff --git a/board/avionic-design/plutux/Makefile b/board/avionic-design/plutux/Makefile index b0c318c43..d96d04306 100644 --- a/board/avionic-design/plutux/Makefile +++ b/board/avionic-design/plutux/Makefile @@ -1,7 +1,7 @@  #  #  (C) Copyright 2010,2011  #  NVIDIA Corporation <www.nvidia.com> -#  (C) Copyright 2011 +#  (C) Copyright 2011,2012  #  Avionic Design GmbH <www.avionic-design.de>  #  #  See file CREDITS for list of people who contributed to this @@ -26,12 +26,12 @@  include $(TOPDIR)/config.mk  ifneq ($(OBJTREE),$(SRCTREE)) -$(shell mkdir -p $(obj)../common) +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)  endif  LIB	= $(obj)lib$(BOARD).o -COBJS	:= $(BOARD).o +COBJS	:= ../../nvidia/common/board.o  COBJS	+= ../common/tamonten.o  SRCS	:= $(COBJS:.o=.c) diff --git a/board/avionic-design/plutux/plutux.c b/board/avionic-design/plutux/plutux.c deleted file mode 100644 index 42c80940c..000000000 --- a/board/avionic-design/plutux/plutux.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - *  (C) Copyright 2010,2011 - *  NVIDIA Corporation <www.nvidia.com> - *  (C) Copyright 2011 - *  Avionic Design GmbH <www.avionic-design.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/io.h> -#include <asm/gpio.h> -#include <asm/arch/tegra2.h> -#ifdef CONFIG_TEGRA2_MMC -#include <mmc.h> -#endif - -#ifdef CONFIG_TEGRA2_MMC -/* - * Routine: gpio_config_mmc - * Description: Set GPIOs for SD card - */ -void gpio_config_mmc(void) -{ -	/* configure pin as input for card detect */ -	gpio_request(GPIO_PH2, "SD4 CD"); -	gpio_direction_input(GPIO_PH2); -} -#endif diff --git a/board/avionic-design/tec/Makefile b/board/avionic-design/tec/Makefile new file mode 100644 index 000000000..d96d04306 --- /dev/null +++ b/board/avionic-design/tec/Makefile @@ -0,0 +1,50 @@ +# +#  (C) Copyright 2010,2011 +#  NVIDIA Corporation <www.nvidia.com> +#  (C) Copyright 2011,2012 +#  Avionic Design GmbH <www.avionic-design.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 $(TOPDIR)/config.mk + +ifneq ($(OBJTREE),$(SRCTREE)) +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common) +endif + +LIB	= $(obj)lib$(BOARD).o + +COBJS	:= ../../nvidia/common/board.o +COBJS	+= ../common/tamonten.o + +SRCS	:= $(COBJS:.o=.c) +OBJS	:= $(addprefix $(obj),$(COBJS)) + +$(LIB):	$(obj).depend $(OBJS) +	$(call cmd_link_o_target, $(OBJS)) + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/compal/paz00/paz00.c b/board/compal/paz00/paz00.c index 0c09ce0a4..ec678746d 100644 --- a/board/compal/paz00/paz00.c +++ b/board/compal/paz00/paz00.c @@ -20,7 +20,7 @@  #include <asm/arch/pinmux.h>  #include <asm/arch/mmc.h>  #include <asm/gpio.h> -#ifdef CONFIG_TEGRA2_MMC +#ifdef CONFIG_TEGRA_MMC  #include <mmc.h>  #endif @@ -32,7 +32,7 @@ void gpio_config_uart(void)  {  } -#ifdef CONFIG_TEGRA2_MMC +#ifdef CONFIG_TEGRA_MMC  /*   * Routine: pin_mux_mmc   * Description: setup the pin muxes/tristate values for the SDMMC(s) diff --git a/board/compulab/trimslice/trimslice.c b/board/compulab/trimslice/trimslice.c index 7167c914e..1ac15f8da 100644 --- a/board/compulab/trimslice/trimslice.c +++ b/board/compulab/trimslice/trimslice.c @@ -30,7 +30,7 @@  #include <asm/arch/pinmux.h>  #include <asm/arch/mmc.h>  #include <asm/gpio.h> -#ifdef CONFIG_TEGRA2_MMC +#ifdef CONFIG_TEGRA_MMC  #include <mmc.h>  #endif @@ -42,6 +42,11 @@ void gpio_config_uart(void)  {  } +void pin_mux_spi(void) +{ +	funcmux_select(PERIPH_ID_SPI1, FUNCMUX_SPI1_GMC_GMD); +} +  /*   * Routine: pin_mux_mmc   * Description: setup the pin muxes/tristate values for the SDMMC(s) diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c index 2e2213359..e65fc9e84 100644 --- a/board/nvidia/common/board.c +++ b/board/nvidia/common/board.c @@ -64,6 +64,12 @@ void __pin_mux_usb(void)  void pin_mux_usb(void) __attribute__((weak, alias("__pin_mux_usb"))); +void __pin_mux_spi(void) +{ +} + +void pin_mux_spi(void) __attribute__((weak, alias("__pin_mux_spi"))); +  /*   * Routine: power_det_init   * Description: turn off power detects @@ -94,7 +100,8 @@ int board_init(void)  #ifdef CONFIG_SPI_UART_SWITCH  	gpio_config_uart();  #endif -#ifdef CONFIG_TEGRA2_SPI +#ifdef CONFIG_TEGRA_SPI +	pin_mux_spi();  	spi_init();  #endif  	/* boot param addr */ @@ -132,11 +139,18 @@ int board_init(void)  }  #ifdef CONFIG_BOARD_EARLY_INIT_F +static void __gpio_early_init(void) +{ +} + +void gpio_early_init(void) __attribute__((weak, alias("__gpio_early_init"))); +  int board_early_init_f(void)  {  	board_init_uart_f();  	/* Initialize periph GPIOs */ +	gpio_early_init();  #ifdef CONFIG_SPI_UART_SWITCH  	gpio_early_init_uart();  #else diff --git a/board/nvidia/common/board.h b/board/nvidia/common/board.h index 09fb158f4..dada4c4f9 100644 --- a/board/nvidia/common/board.h +++ b/board/nvidia/common/board.h @@ -25,6 +25,7 @@  #define _BOARD_H_  void gpio_config_uart(void); +void gpio_early_init(void);  void gpio_early_init_uart(void);  /* diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c index 9edd3c5c4..2ef22900d 100644 --- a/board/ti/beagle/beagle.c +++ b/board/ti/beagle/beagle.c @@ -68,6 +68,7 @@  #define BBTOYS_VGA			0x02000B00  #define BBTOYS_LCD			0x03000B00  #define BCT_BRETTL3			0x01000F00 +#define BCT_BRETTL4			0x02000F00  #define BEAGLE_NO_EEPROM		0xffffffff  DECLARE_GLOBAL_DATA_PTR; @@ -417,8 +418,11 @@ int misc_init_r(void)  		printf("Recognized BeagleBoardToys LCD board\n");  		break;;  	case BCT_BRETTL3: -	    printf("Recognized bct electronic GmbH brettl3 board\n"); -	    break; +		printf("Recognized bct electronic GmbH brettl3 board\n"); +		break; +	case BCT_BRETTL4: +		printf("Recognized bct electronic GmbH brettl4 board\n"); +		break;  	case BEAGLE_NO_EEPROM:  		printf("No EEPROM on expansion board\n");  		setenv("buddy", "none"); diff --git a/boards.cfg b/boards.cfg index 1a5dcabe4..2d36d8333 100644 --- a/boards.cfg +++ b/boards.cfg @@ -282,6 +282,7 @@ colibri_pxa270               arm         pxa         -                   toradex  jornada                      arm         sa1100  plutux                       arm         armv7       plutux              avionic-design tegra2  medcom                       arm         armv7       medcom              avionic-design tegra2 +tec                          arm         armv7       tec                 avionic-design tegra2  paz00                        arm         armv7       paz00               compal         tegra2  trimslice                    arm         armv7       trimslice           compulab       tegra2  atngw100                     avr32       at32ap      -                   atmel          at32ap700x diff --git a/common/env_common.c b/common/env_common.c index c33d22d75..d9e990dbb 100644 --- a/common/env_common.c +++ b/common/env_common.c @@ -116,6 +116,17 @@ const uchar default_environment[] = {  #if defined(CONFIG_PCI_BOOTDELAY) && (CONFIG_PCI_BOOTDELAY > 0)  	"pcidelay="	MK_STR(CONFIG_PCI_BOOTDELAY)	"\0"  #endif +#ifdef	CONFIG_ENV_VARS_UBOOT_CONFIG +	"arch="		CONFIG_SYS_ARCH			"\0" +	"cpu="		CONFIG_SYS_CPU			"\0" +	"board="	CONFIG_SYS_BOARD		"\0" +#ifdef CONFIG_SYS_VENDOR +	"vendor="	CONFIG_SYS_VENDOR		"\0" +#endif +#ifdef CONFIG_SYS_SOC +	"soc="		CONFIG_SYS_SOC			"\0" +#endif +#endif  #ifdef	CONFIG_EXTRA_ENV_SETTINGS  	CONFIG_EXTRA_ENV_SETTINGS  #endif diff --git a/common/env_embedded.c b/common/env_embedded.c index 80fb29dd5..387287888 100644 --- a/common/env_embedded.c +++ b/common/env_embedded.c @@ -179,6 +179,17 @@ env_t environment __PPCENV__ = {  #if defined(CONFIG_PCI_BOOTDELAY) && (CONFIG_PCI_BOOTDELAY > 0)  	"pcidelay="	MK_STR(CONFIG_PCI_BOOTDELAY)	"\0"  #endif +#ifdef	CONFIG_ENV_VARS_UBOOT_CONFIG +	"arch="		CONFIG_SYS_ARCH			"\0" +	"cpu="		CONFIG_SYS_CPU			"\0" +	"board="	CONFIG_SYS_BOARD		"\0" +#ifdef CONFIG_SYS_VENDOR +	"vendor="	CONFIG_SYS_VENDOR		"\0" +#endif +#ifdef CONFIG_SYS_SOC +	"soc="		CONFIG_SYS_SOC			"\0" +#endif +#endif  #ifdef	CONFIG_EXTRA_ENV_SETTINGS  	CONFIG_EXTRA_ENV_SETTINGS  #endif diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index a7e105b99..4646b2950 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c @@ -1,5 +1,5 @@  /* - * Copyright (c) 2009 NVIDIA Corporation + * Copyright (c) 2009-2012 NVIDIA Corporation   *   * See file CREDITS for list of people who contributed to this   * project. @@ -29,6 +29,22 @@  #include <asm/errno.h>  #include <asm/arch/usb.h> +/* + * A known hardware issue where Connect Status Change bit of PORTSC register + * of USB1 controller will be set after Port Reset. + * We have to clear it in order for later device enumeration to proceed. + * This ehci_powerup_fixup overrides the weak function ehci_powerup_fixup + * in "ehci-hcd.c". + */ +void ehci_powerup_fixup(uint32_t *status_reg, uint32_t *reg) +{ +	mdelay(50); +	if (((u32) status_reg & TEGRA_USB_ADDR_MASK) != TEGRA_USB1_BASE) +		return; +	/* For EHCI_PS_CSC to be cleared in ehci_hcd.c */ +	if (ehci_readl(status_reg) & EHCI_PS_CSC) +		*reg |= EHCI_PS_CSC; +}  /*   * Create the appropriate control structures to manage diff --git a/include/configs/medcom.h b/include/configs/medcom.h index bdea7c9c5..c84db03e7 100644 --- a/include/configs/medcom.h +++ b/include/configs/medcom.h @@ -1,7 +1,7 @@  /*   *  (C) Copyright 2010,2011   *  NVIDIA Corporation <www.nvidia.com> - *  (C) Copyright 2011 + *  (C) Copyright 2011-2012   *  Avionic Design GmbH <www.avionic-design.de>   *   * See file CREDITS for list of people who contributed to this @@ -28,6 +28,11 @@  #include "tegra2-common.h" +/* Enable fdt support for Medcom. Flash the image in u-boot-dtb.bin */ +#define CONFIG_DEFAULT_DEVICE_TREE	tegra2-medcom +#define CONFIG_OF_CONTROL +#define CONFIG_OF_SEPARATE +  /* High-level configuration options */  #define V_PROMPT			"Tegra2 (Medcom) # "  #define CONFIG_TEGRA2_BOARD_STRING	"Avionic Design Medcom" @@ -47,6 +52,20 @@  #define CONFIG_TEGRA_MMC  #define CONFIG_CMD_MMC +/* USB host support */ +#define CONFIG_USB_EHCI +#define CONFIG_USB_EHCI_TEGRA +#define CONFIG_USB_STORAGE +#define CONFIG_CMD_USB + +/* USB networking support */ +#define CONFIG_USB_HOST_ETHER +#define CONFIG_USB_ETHER_SMSC95XX + +/* General networking support */ +#define CONFIG_CMD_NET +#define CONFIG_CMD_DHCP +  #define CONFIG_DOS_PARTITION  #define CONFIG_EFI_PARTITION  #define CONFIG_CMD_EXT2 diff --git a/include/configs/plutux.h b/include/configs/plutux.h index 6397eb104..9870590bd 100644 --- a/include/configs/plutux.h +++ b/include/configs/plutux.h @@ -1,7 +1,7 @@  /*   *  (C) Copyright 2010,2011   *  NVIDIA Corporation <www.nvidia.com> - *  (C) Copyright 2011 + *  (C) Copyright 2011-2012   *  Avionic Design GmbH <www.avionic-design.de>   *   * See file CREDITS for list of people who contributed to this @@ -28,6 +28,11 @@  #include "tegra2-common.h" +/* Enable fdt support for Plutux. Flash the image in u-boot-dtb.bin */ +#define CONFIG_DEFAULT_DEVICE_TREE	tegra2-plutux +#define CONFIG_OF_CONTROL +#define CONFIG_OF_SEPARATE +  /* High-level configuration options */  #define V_PROMPT			"Tegra2 (Plutux) # "  #define CONFIG_TEGRA2_BOARD_STRING	"Avionic Design Plutux" @@ -47,6 +52,20 @@  #define CONFIG_TEGRA_MMC  #define CONFIG_CMD_MMC +/* USB host support */ +#define CONFIG_USB_EHCI +#define CONFIG_USB_EHCI_TEGRA +#define CONFIG_USB_STORAGE +#define CONFIG_CMD_USB + +/* USB networking support */ +#define CONFIG_USB_HOST_ETHER +#define CONFIG_USB_ETHER_SMSC95XX + +/* General networking support */ +#define CONFIG_CMD_NET +#define CONFIG_CMD_DHCP +  #define CONFIG_DOS_PARTITION  #define CONFIG_EFI_PARTITION  #define CONFIG_CMD_EXT2 diff --git a/include/configs/tec.h b/include/configs/tec.h new file mode 100644 index 000000000..3d0a78825 --- /dev/null +++ b/include/configs/tec.h @@ -0,0 +1,82 @@ +/* + *  (C) Copyright 2010,2011 + *  NVIDIA Corporation <www.nvidia.com> + *  (C) Copyright 2011-2012 + *  Avionic Design GmbH <www.avionic-design.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 __CONFIG_H +#define __CONFIG_H + +#include "tegra2-common.h" + +/* Enable fdt support for TEC. Flash the image in u-boot-dtb.bin */ +#define CONFIG_DEFAULT_DEVICE_TREE	tegra2-tec +#define CONFIG_OF_CONTROL +#define CONFIG_OF_SEPARATE + +/* High-level configuration options */ +#define V_PROMPT			"Tegra2 (TEC) # " +#define CONFIG_TEGRA2_BOARD_STRING	"Avionic Design Tamonten Evaluation Carrier" +#define CONFIG_SYS_BOARD_ODMDATA	0x2b0d8011 + +/* Board-specific serial config */ +#define CONFIG_SERIAL_MULTI +#define CONFIG_TEGRA2_ENABLE_UARTD	/* UARTD: debug UART */ +#define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE + +#define CONFIG_BOARD_EARLY_INIT_F + +#define CONFIG_ENV_IS_NOWHERE + +/* SD/MMC */ +#define CONFIG_MMC +#define CONFIG_GENERIC_MMC +#define CONFIG_TEGRA_MMC +#define CONFIG_CMD_MMC + +/* USB host support */ +#define CONFIG_USB_EHCI +#define CONFIG_USB_EHCI_TEGRA +#define CONFIG_USB_STORAGE +#define CONFIG_CMD_USB + +/* USB networking support */ +#define CONFIG_USB_HOST_ETHER +#define CONFIG_USB_ETHER_SMSC95XX + +/* General networking support */ +#define CONFIG_CMD_NET +#define CONFIG_CMD_DHCP + +#define CONFIG_DOS_PARTITION +#define CONFIG_EFI_PARTITION +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT + +#define CONFIG_FIT + +#define CONFIG_BOOTCOMMAND				\ +	"mmc rescan;"					\ +	"ext2load mmc 0 0x17000000 /boot/uImage;"	\ +	"bootm" + +#endif /* __CONFIG_H */ diff --git a/include/configs/tegra2-common-post.h b/include/configs/tegra2-common-post.h index 0484a522d..c21fc28df 100644 --- a/include/configs/tegra2-common-post.h +++ b/include/configs/tegra2-common-post.h @@ -31,15 +31,15 @@  #else  #ifdef CONFIG_CMD_EXT2 -#define BOOTCMD_FS_EXT2 "ext2 " +#define BOOT_FSTYPE_EXT2 "ext2 "  #else -#define BOOTCMD_FS_EXT2 "" +#define BOOT_FSTYPE_EXT2 ""  #endif  #ifdef CONFIG_CMD_FAT -#define BOOTCMD_FS_FAT "fat" +#define BOOT_FSTYPE_FAT "fat"  #else -#define BOOTCMD_FS_FAT "" +#define BOOT_FSTYPE_FAT ""  #endif  #ifdef CONFIG_CMD_MMC @@ -47,71 +47,103 @@  	"mmc_boot=" \  		"setenv devtype mmc; " \  		"if mmc dev ${devnum}; then " \ -			"run script_boot; " \ +			"run scan_boot; " \  		"fi\0" \ -	"mmc0_boot=setenv devnum 0; run mmc_boot;\0" \ -	"mmc1_boot=setenv devnum 1; run mmc_boot;\0" \ -	"bootcmd_mmc=run mmc1_boot; run mmc0_boot\0" -#define BOOTCMD_MMC "run bootcmd_mmc; " +	"bootcmd_mmc0=setenv devnum 0; run mmc_boot;\0" \ +	"bootcmd_mmc1=setenv devnum 1; run mmc_boot;\0" +#define BOOT_TARGETS_MMC "mmc1 mmc0"  #else  #define BOOTCMDS_MMC "" -#define BOOTCMD_MMC "" +#define BOOT_TARGETS_MMC ""  #endif  #ifdef CONFIG_CMD_USB +#define BOOTCMD_INIT_USB "run usb_init; "  #define BOOTCMDS_USB \ +	"usb_init=" \ +		"if ${usb_need_init}; then " \ +			"set usb_need_init false; " \ +			"usb start 0; " \ +		"fi\0" \ +	\  	"usb_boot=" \  		"setenv devtype usb; " \ +		BOOTCMD_INIT_USB \  		"if usb dev ${devnum}; then " \ -			"run script_boot; " \ +			"run scan_boot; " \  		"fi\0" \ -	"usb0_boot=setenv devnum 0; run usb_boot;\0" \ -	"bootcmd_usb=run usb0_boot\0" -#define BOOTCMD_USB "run bootcmd_usb; " -#define BOOTCMD_INIT_USB "usb start 0; " +	\ +	"bootcmd_usb0=setenv devnum 0; run usb_boot;\0" +#define BOOT_TARGETS_USB "usb0"  #else -#define BOOTCMDS_USB "" -#define BOOTCMD_USB ""  #define BOOTCMD_INIT_USB "" +#define BOOTCMDS_USB "" +#define BOOT_TARGETS_USB ""  #endif  #ifdef CONFIG_CMD_DHCP  #define BOOTCMDS_DHCP \  	"bootcmd_dhcp=" \ +		BOOTCMD_INIT_USB \  		"if dhcp ${scriptaddr} boot.scr.uimg; then "\  			"source ${scriptaddr}; " \  		"fi\0" -#define BOOTCMD_DHCP "run bootcmd_dhcp; " +#define BOOT_TARGETS_DHCP "dhcp"  #else  #define BOOTCMDS_DHCP "" -#define BOOTCMD_DHCP "" +#define BOOT_TARGETS_DHCP ""  #endif  #define BOOTCMDS_COMMON \  	"scriptaddr=0x400000\0" \ +	\  	"rootpart=1\0" \ -	"script_boot="													\ -		"for fs in " BOOTCMD_FS_EXT2 BOOTCMD_FS_FAT "; do "							\ -		    "for prefix in / /boot/; do "									\ -			"for script in boot.scr.uimg boot.scr; do "							\ -			    "echo Scanning ${devtype} ${devnum}:${rootpart} ${fs} ${prefix}${script} ...; "		\ -			    "if ${fs}load ${devtype} ${devnum}:${rootpart} ${scriptaddr} ${prefix}${script}; then "	\ -				"echo ${script} found! Executing ...;"							\ -				"source ${scriptaddr};"									\ -			    "fi; "											\ -			"done; "											\ -		    "done; "												\ -		"done;\0"												\ +	\ +	"script_boot="                                                    \ +		"if ${fs}load ${devtype} ${devnum}:${rootpart} "          \ +				"${scriptaddr} ${prefix}${script}; then " \ +			"echo ${script} found! Executing ...;"            \ +			"source ${scriptaddr};"                           \ +		"fi;\0"                                                   \ +	\ +	"scan_boot="                                                      \ +		"echo Scanning ${devtype} ${devnum}...; "                 \ +		"for fs in ${boot_fstypes}; do "                          \ +			"for prefix in ${boot_prefixes}; do "             \ +				"for script in ${boot_scripts}; do "      \ +					"run script_boot; "               \ +				"done; "                                  \ +			"done; "                                          \ +		"done;\0"                                                 \ +	\ +	"boot_targets=" \ +		BOOT_TARGETS_MMC " " \ +		BOOT_TARGETS_USB " " \ +		BOOT_TARGETS_DHCP " " \ +		"\0" \ +	\ +	"boot_fstypes=" \ +		BOOT_FSTYPE_EXT2 " " \ +		BOOT_FSTYPE_FAT " " \ +		"\0" \ +	\ +	"boot_prefixes=/ /boot/\0" \ +	\ +	"boot_scripts=boot.scr.uimg boot.scr\0" \ +	\  	BOOTCMDS_MMC \  	BOOTCMDS_USB \  	BOOTCMDS_DHCP -#define CONFIG_BOOTCOMMAND BOOTCMD_INIT_USB BOOTCMD_USB BOOTCMD_MMC BOOTCMD_DHCP +#define CONFIG_BOOTCOMMAND \ +	"for target in ${boot_targets}; do run bootcmd_${target}; done"  #endif  #define CONFIG_EXTRA_ENV_SETTINGS \  	TEGRA2_DEVICE_SETTINGS \ +	"fdt_load=0x01000000\0" \ +	"fdt_high=01100000\0" \  	BOOTCMDS_COMMON  #endif /* __TEGRA2_COMMON_POST_H */ diff --git a/include/configs/tegra2-common.h b/include/configs/tegra2-common.h index 94e1aa628..680776270 100644 --- a/include/configs/tegra2-common.h +++ b/include/configs/tegra2-common.h @@ -68,6 +68,7 @@  #endif  /* Environment */ +#define CONFIG_ENV_VARS_UBOOT_CONFIG  #define CONFIG_ENV_SIZE			0x2000	/* Total Size Environment */  /* @@ -192,4 +193,6 @@  #define CONFIG_TEGRA_GPIO  #define CONFIG_CMD_GPIO +#define CONFIG_CMD_ENTERRCM +#define CONFIG_CMD_BOOTZ  #endif /* __TEGRA2_COMMON_H */ @@ -161,6 +161,14 @@ for i in ${TARGETS} ; do  	echo "#define CONFIG_${i}" >>config.h ;  done +echo "#define CONFIG_SYS_ARCH  \"${arch}\""  >> config.h +echo "#define CONFIG_SYS_CPU   \"${cpu}\""   >> config.h +echo "#define CONFIG_SYS_BOARD \"${board}\"" >> config.h + +[ "${vendor}" ] && echo "#define CONFIG_SYS_VENDOR \"${vendor}\"" >> config.h + +[ "${soc}"    ] && echo "#define CONFIG_SYS_SOC    \"${soc}\""    >> config.h +  cat << EOF >> config.h  #define CONFIG_BOARDDIR board/$BOARDDIR  #include <config_cmd_defaults.h> |