From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konstantin Sinyuk Date: Wed, 30 May 2012 18:35:42 +0300 Subject: [U-Boot] [PATCH V2] tegra: Compulab TrimSlice board support In-Reply-To: <1337270584-10753-1-git-send-email-swarren@wwwdotorg.org> References: <1337270584-10753-1-git-send-email-swarren@wwwdotorg.org> Message-ID: <4FC63E4E.9010506@compulab.co.il> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Stephen, Thanks for doing this! We highly appreciate your help. We (Igor and me) have several comments below... On 05/17/2012 07:03 PM, Stephen Warren wrote: > From: Stephen Warren > > Signed-off-by: Stephen Warren > --- > v2: Fixed unused variable warnings > --- > MAINTAINERS | 1 + > board/compulab/dts/tegra2-trimslice.dts | 57 ++++++++++++++++++++ > board/compulab/trimslice/Makefile | 49 +++++++++++++++++ > board/compulab/trimslice/trimslice.c | 73 +++++++++++++++++++++++++ > boards.cfg | 1 + > include/configs/trimslice.h | 89 +++++++++++++++++++++++++++++++ > 6 files changed, 270 insertions(+), 0 deletions(-) > create mode 100644 board/compulab/dts/tegra2-trimslice.dts > create mode 100644 board/compulab/trimslice/Makefile > create mode 100644 board/compulab/trimslice/trimslice.c > create mode 100644 include/configs/trimslice.h > > diff --git a/MAINTAINERS b/MAINTAINERS > index 7c161db..9d35c0e 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -912,6 +912,7 @@ Stephen Warren > > ventana Tegra2 (ARM7& A9 Dual Core) > paz00 Tegra2 (ARM7& A9 Dual Core) > + trimslice Tegra2 (ARM7& A9 Dual Core) > whistler Tegra2 (ARM7& A9 Dual Core) > > Thomas Weber > diff --git a/board/compulab/dts/tegra2-trimslice.dts b/board/compulab/dts/tegra2-trimslice.dts > new file mode 100644 > index 0000000..c707eb8 > --- /dev/null > +++ b/board/compulab/dts/tegra2-trimslice.dts > @@ -0,0 +1,57 @@ > +/dts-v1/; > + > +/include/ ARCH_CPU_DTS > + > +/ { > + model = "Compulab TrimSlice board"; > + compatible = "compulab,trimslice", "nvidia,tegra20"; > + > + aliases { > + usb0 = "/usb at c5008000"; > + }; > + > + memory { > + reg =<0x00000000 0x40000000>; > + }; > + > + clocks { > + clk_32k: clk_32k { > + clock-frequency =<32000>; > + }; > + osc { > + clock-frequency =<12000000>; > + }; > + }; > + > + clock at 60006000 { > + clocks =<&clk_32k&osc>; > + }; > + > + serial at 70006000 { > + clock-frequency =<216000000>; > + }; > + > + i2c at 7000c000 { > + status = "disabled"; > + }; > + > + i2c at 7000c400 { > + status = "disabled"; > + }; > + > + i2c at 7000c500 { > + status = "disabled"; > + }; > + > + i2c at 7000d000 { > + status = "disabled"; > + }; > + > + usb at c5004000 { > + status = "disabled"; > + }; > + > + usb at c5004000 { > + status = "disabled"; > + }; This looks like a typo? > +}; > diff --git a/board/compulab/trimslice/Makefile b/board/compulab/trimslice/Makefile > new file mode 100644 > index 0000000..bf624f4 > --- /dev/null > +++ b/board/compulab/trimslice/Makefile > @@ -0,0 +1,49 @@ > +# > +# (C) Copyright 2010-2012 > +# NVIDIA Corporation > +# > +# > +# 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 Can we, please not have the postal address here and all other files? > +# > + > +include $(TOPDIR)/config.mk > + > +ifneq ($(OBJTREE),$(SRCTREE)) > +$(shell mkdir -p $(obj)../../nvidia/common) > +endif > + > +LIB = $(obj)lib$(BOARD).o > + > +COBJS := $(BOARD).o > +COBJS += ../../nvidia/common/board.o > + I feel that the common board.c file should be in the common SoC location, like arch/arm/cpu/armv7/tegra2/ ? In fact there is already a board.c file there, so how about we move the common stuff there? > +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/compulab/trimslice/trimslice.c b/board/compulab/trimslice/trimslice.c > new file mode 100644 > index 0000000..7167c91 > --- /dev/null > +++ b/board/compulab/trimslice/trimslice.c > @@ -0,0 +1,73 @@ > +/* > + * (C) Copyright 2010-2012 > + * NVIDIA Corporation > + * > + * 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 > +#include > +#include > +#include > +#include > +#include > +#ifdef CONFIG_TEGRA2_MMC > +#include > +#endif > + > +/* > + * Routine: gpio_config_uart > + * Description: Does nothing on TrimSlice - no UART-related GPIOs. > + */ > +void gpio_config_uart(void) > +{ > +} > + > +/* > + * Routine: pin_mux_mmc > + * Description: setup the pin muxes/tristate values for the SDMMC(s) > + */ > +static void pin_mux_mmc(void) > +{ > + funcmux_select(PERIPH_ID_SDMMC1, FUNCMUX_SDMMC1_SDIO1_4BIT); > + funcmux_select(PERIPH_ID_SDMMC4, FUNCMUX_SDMMC4_ATB_GMA_4_BIT); > + > + /* For CD GPIO PP1 */ > + pinmux_tristate_disable(PINGRP_DAP3); > +} > + > +/* 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(); > + > + /* init dev 0 (SDMMC4), (micro-SD slot) with 4-bit bus */ > + tegra2_mmc_init(0, 4, -1, GPIO_PP1); > + > + /* init dev 3 (SDMMC1), (SD slot) with 4-bit bus */ > + tegra2_mmc_init(3, 4, -1, -1); > + > + return 0; > +} > diff --git a/boards.cfg b/boards.cfg > index a96b7d7..e983b05 100644 > --- a/boards.cfg > +++ b/boards.cfg > @@ -260,6 +260,7 @@ jornada arm sa1100 > plutux arm armv7 plutux avionic-design tegra2 > medcom arm armv7 medcom avionic-design tegra2 > paz00 arm armv7 paz00 compal tegra2 > +trimslice arm armv7 trimslice compulab tegra2 > atngw100 avr32 at32ap - atmel at32ap700x > atstk1002 avr32 at32ap atstk1000 atmel at32ap700x > atstk1003 avr32 at32ap atstk1000 atmel at32ap700x > diff --git a/include/configs/trimslice.h b/include/configs/trimslice.h > new file mode 100644 > index 0000000..dafca5e > --- /dev/null > +++ b/include/configs/trimslice.h > @@ -0,0 +1,89 @@ > +/* > + * (C) Copyright 2010-2012 > + * NVIDIA Corporation > + * > + * 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 > +#include "tegra2-common.h" > + > +/* Enable fdt support for TrimSlice. Flash the image in u-boot-dtb.bin */ > +#define CONFIG_DEFAULT_DEVICE_TREE tegra2-trimslice > +#define CONFIG_OF_CONTROL > +#define CONFIG_OF_SEPARATE > + > +/* High-level configuration options */ > +#define V_PROMPT "Tegra2 (TrimSlice) # " Can this, please be "TrimSlice #" > +#define CONFIG_TEGRA2_BOARD_STRING "NVIDIA Trimslice" Can this, please be "CompuLab TrimSlice" > + > +/* Board-specific serial config */ > +#define CONFIG_SERIAL_MULTI > +#define CONFIG_TEGRA2_ENABLE_UARTA > +#define CONFIG_TEGRA2_UARTA_GPU > +#define CONFIG_SYS_NS16550_COM1 NV_PA_APB_UARTA_BASE > + > +#define CONFIG_MACH_TYPE MACH_TYPE_TRIMSLICE > +#define CONFIG_SYS_BOARD_ODMDATA 0x300c0011 /* lp?, 1GB, UARTA */ In our downstream U-Boot, ODMDATA is 0x300d8011 /* lp1, 1GB, UARTA*/ Are you certain that your value is the correct one? > + > +#define CONFIG_BOARD_EARLY_INIT_F > + > +/* I2C */ > +#define CONFIG_TEGRA_I2C > +#define CONFIG_SYS_I2C_INIT_BOARD > +#define CONFIG_I2C_MULTI_BUS > +#define CONFIG_SYS_MAX_I2C_BUS 4 > +#define CONFIG_SYS_I2C_SPEED 100000 > +#define CONFIG_CMD_I2C > + > +/* SD/MMC */ > +#define CONFIG_MMC > +#define CONFIG_GENERIC_MMC > +#define CONFIG_TEGRA2_MMC > +#define CONFIG_CMD_MMC > + > +#define CONFIG_DOS_PARTITION > +#define CONFIG_EFI_PARTITION > +#define CONFIG_CMD_EXT2 > +#define CONFIG_CMD_FAT > + > +/* Environment not stored */ > +#define CONFIG_ENV_IS_NOWHERE > + > +/* 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 > +#define CONFIG_USB_ETHER_ASIX TrimSlice does not have any on-board Ethernet over USB devices. Do you connect them through the USB port? Or is it just a copy/paste from another board? > + > +/* General networking support */ > +#define CONFIG_CMD_NET > +#define CONFIG_CMD_DHCP > + > +#include "tegra2-common-post.h" > + > +#endif /* __CONFIG_H */ -- Best Regards, Konstantin