[U-Boot] [PATCH V2] tegra: Compulab TrimSlice board support

Konstantin Sinyuk kostyas at compulab.co.il
Wed May 30 17:35:42 CEST 2012


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<swarren at nvidia.com>
>
> Signed-off-by: Stephen Warren<swarren at nvidia.com>
> ---
> 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<swarren at nvidia.com>
>
>   	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<weber at corscience.de>
> 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<www.nvidia.com>
> +#
> +#
> +#  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<www.nvidia.com>
> + *
> + * 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<i2c.h>
> +#include<asm/io.h>
> +#include<asm/arch/tegra2.h>
> +#include<asm/arch/clock.h>
> +#include<asm/arch/funcmux.h>
> +#include<asm/arch/pinmux.h>
> +#include<asm/arch/mmc.h>
> +#include<asm/gpio.h>
> +#ifdef CONFIG_TEGRA2_MMC
> +#include<mmc.h>
> +#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<www.nvidia.com>
> + *
> + * 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<asm/sizes.h>
> +#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



More information about the U-Boot mailing list