diff mbox

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

Message ID 1337270584-10753-1-git-send-email-swarren@wwwdotorg.org
State Accepted
Commit 39e37118398158d98f0e9b926d69af289ae7e7b8
Headers show

Commit Message

Stephen Warren May 17, 2012, 4:03 p.m. UTC
From: Stephen Warren <swarren@nvidia.com>

Signed-off-by: Stephen Warren <swarren@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

Comments

Konstantin Sinyuk May 30, 2012, 3:35 p.m. UTC | #1
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@nvidia.com>
>
> Signed-off-by: Stephen Warren<swarren@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@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@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@c5008000";
> +	};
> +
> +	memory {
> +		reg =<0x00000000 0x40000000>;
> +	};
> +
> +	clocks {
> +		clk_32k: clk_32k {
> +			clock-frequency =<32000>;
> +		};
> +		osc {
> +			clock-frequency =<12000000>;
> +		};
> +	};
> +
> +	clock@60006000 {
> +		clocks =<&clk_32k&osc>;
> +	};
> +
> +	serial@70006000 {
> +		clock-frequency =<216000000>;
> +	};
> +
> +	i2c@7000c000 {
> +		status = "disabled";
> +	};
> +
> +	i2c@7000c400 {
> +		status = "disabled";
> +	};
> +
> +	i2c@7000c500 {
> +		status = "disabled";
> +	};
> +
> +	i2c@7000d000 {
> +		status = "disabled";
> +	};
> +
> +	usb@c5004000 {
> +		status = "disabled";
> +	};
> +
> +	usb@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
Stephen Warren May 30, 2012, 4:22 p.m. UTC | #2
On 05/30/2012 09:35 AM, Konstantin Sinyuk wrote:
> 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:

>> diff --git a/board/compulab/dts/tegra2-trimslice.dts

>> +    usb@c5004000 {
>> +        status = "disabled";
>> +    };
>> +
>> +    usb@c5004000 {
>> +        status = "disabled";
>> +    };
> 
> This looks like a typo?

Yes indeed. I'll send a patch to fix that up.

>> diff --git a/board/compulab/trimslice/Makefile

>> +#  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?

Hmm. Well, all the existing code I'm basing these patches on has that
license header. I don't feel strongly enough to change it now this patch
is checked in. Feel free to submit a patch to clean this up, but if you
do, I'd prefer if you made everything Tegra-related consistent.

>> +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?

Yes, the Tegra board support is evolving and may not be optimally
structured right now. The logic above is what's needed given the current
state. Perhaps this will move to a better location in the future. I
don't plan on making that change right now though; I don't want to
conflict with other changes I know people are making such as moving a
bunch of code around to support a separate SPL.

>> diff --git a/include/configs/trimslice.h b/include/configs/trimslice.h

>> +/* High-level configuration options */
>> +#define V_PROMPT        "Tegra2 (TrimSlice) # "
> 
> Can this, please be "TrimSlice #"

That wouldn't be consistent with any of the other Tegra boards though.
Is there a specific need for the prompt to be different?

>> +#define CONFIG_TEGRA2_BOARD_STRING    "NVIDIA Trimslice"
> 
> Can this, please be "CompuLab TrimSlice"

Sure, that's just something I forgot to update when copying from another
board's config file.

>> +/* 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?

Yes, 300d8011 is wrong, and you're just getting lucky that it's working
for you since nothing actually uses the ODMDATA fields that are wrong.

The "d8" in the ODMDATA means to use UART D as the debug UART. However,
TrimSlice uses UART A, and hence needs "c0" here.

Without this change, the mainline kernel config option
CONFIG_TEGRA_DEBUG_UART_AUTO_ODMDATA (which affects where
DEBUG_LL/earlyprintk output is routed) will not work correctly.

>> +/* 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?

A later change has removed the SMSC95XX support since as you say, that
chip is not present on the board. However, I actively use an ASIX USB
Ethernet dongle with TrimSlice, so do need that config option enabled.
Perhaps it can be removed if/when Tegra PCIe support is added to
mainline U-Boot, so the built-in Ethernet adapter can be used instead.
Igor Grinberg May 31, 2012, 8:45 a.m. UTC | #3
On 05/30/12 19:22, Stephen Warren wrote:
> On 05/30/2012 09:35 AM, Konstantin Sinyuk wrote:
>> 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:
> 
>>> diff --git a/board/compulab/dts/tegra2-trimslice.dts
> 
>>> +    usb@c5004000 {
>>> +        status = "disabled";
>>> +    };
>>> +
>>> +    usb@c5004000 {
>>> +        status = "disabled";
>>> +    };
>>
>> This looks like a typo?
> 
> Yes indeed. I'll send a patch to fix that up.
> 
>>> diff --git a/board/compulab/trimslice/Makefile
> 
>>> +#  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?
> 
> Hmm. Well, all the existing code I'm basing these patches on has that
> license header. I don't feel strongly enough to change it now this patch
> is checked in. Feel free to submit a patch to clean this up, but if you
> do, I'd prefer if you made everything Tegra-related consistent.

Ok, I see, the reason I don't like the postal addresses was explained
by Russell King some time ago (I can't find it right now) and was about
the postal address is subject to change without prior notice (and it did
several times before) and that will leave majority of files with the wrong
address... I consider it a bad practice.
But I don't really insist on this.

Now you say, that the patch has already been checked in...
Tom, can we have a short notice on this,
may be an email (e.g. Applied, thanks!) to the list, so we know
which patches went in and which are still pending?
I know we can look at your repository, but still...

> 
>>> +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?
> 
> Yes, the Tegra board support is evolving and may not be optimally
> structured right now. The logic above is what's needed given the current
> state. Perhaps this will move to a better location in the future. I
> don't plan on making that change right now though; I don't want to
> conflict with other changes I know people are making such as moving a
> bunch of code around to support a separate SPL.

Ok.

> 
>>> diff --git a/include/configs/trimslice.h b/include/configs/trimslice.h
> 
>>> +/* High-level configuration options */
>>> +#define V_PROMPT        "Tegra2 (TrimSlice) # "
>>
>> Can this, please be "TrimSlice #"
> 
> That wouldn't be consistent with any of the other Tegra boards though.
> Is there a specific need for the prompt to be different?

I see and probably you are right...
On the second thought, it will not be consistent with other CompuLab boards
(which are not Tegra based), so this whole consistency thing...
I don't know... Let it be... After all, you have volunteered to maintain it :-)

> 
>>> +#define CONFIG_TEGRA2_BOARD_STRING    "NVIDIA Trimslice"
>>
>> Can this, please be "CompuLab TrimSlice"
> 
> Sure, that's just something I forgot to update when copying from another
> board's config file.

Thanks

> 
>>> +/* 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?
> 
> Yes, 300d8011 is wrong, and you're just getting lucky that it's working
> for you since nothing actually uses the ODMDATA fields that are wrong.
> 
> The "d8" in the ODMDATA means to use UART D as the debug UART. However,
> TrimSlice uses UART A, and hence needs "c0" here.
> 
> Without this change, the mainline kernel config option
> CONFIG_TEGRA_DEBUG_UART_AUTO_ODMDATA (which affects where
> DEBUG_LL/earlyprintk output is routed) will not work correctly.

Ok, I see, thanks for sharing this information.

> 
>>> +/* 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?
> 
> A later change has removed the SMSC95XX support since as you say, that
> chip is not present on the board. However, I actively use an ASIX USB
> Ethernet dongle with TrimSlice, so do need that config option enabled.
> Perhaps it can be removed if/when Tegra PCIe support is added to
> mainline U-Boot, so the built-in Ethernet adapter can be used instead.

Fare enough.
Thanks for the patches, information and the work you've done!
Igor Grinberg June 1, 2012, 6:48 a.m. UTC | #4
Hi Tom,

On 05/31/12 19:17, Tom Warren wrote:
> Igor,
> 
>> -----Original Message-----
>> From: Igor Grinberg [mailto:grinberg@compulab.co.il]
>> Sent: Thursday, May 31, 2012 1:45 AM
>> To: Stephen Warren
>> Cc: Konstantin Sinyuk; Tom Warren; u-boot@lists.denx.de
>> Subject: Re: [U-Boot] [PATCH V2] tegra: Compulab TrimSlice board support
>>
>> On 05/30/12 19:22, Stephen Warren wrote:
>>> On 05/30/2012 09:35 AM, Konstantin Sinyuk wrote:
>>>> 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:
>>>
>>>>> diff --git a/board/compulab/dts/tegra2-trimslice.dts
>>>
>>>>> +    usb@c5004000 {
>>>>> +        status = "disabled";
>>>>> +    };
>>>>> +
>>>>> +    usb@c5004000 {
>>>>> +        status = "disabled";
>>>>> +    };
>>>>
>>>> This looks like a typo?
>>>
>>> Yes indeed. I'll send a patch to fix that up.
>>>
>>>>> diff --git a/board/compulab/trimslice/Makefile
>>>
>>>>> +#  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?
>>>
>>> Hmm. Well, all the existing code I'm basing these patches on has that
>>> license header. I don't feel strongly enough to change it now this
>>> patch is checked in. Feel free to submit a patch to clean this up, but
>>> if you do, I'd prefer if you made everything Tegra-related consistent.
>>
>> Ok, I see, the reason I don't like the postal addresses was explained by
>> Russell King some time ago (I can't find it right now) and was about the
>> postal address is subject to change without prior notice (and it did several
>> times before) and that will leave majority of files with the wrong
>> address... I consider it a bad practice.
>> But I don't really insist on this.
>>
>> Now you say, that the patch has already been checked in...
>> Tom, can we have a short notice on this, may be an email (e.g. Applied,
>> thanks!) to the list, so we know which patches went in and which are still
>> pending?
>> I know we can look at your repository, but still...
> 
> You'll see a pull request to Albert Aribaud when I've collected enough patches to go into u-boot-tegra/master,
> and if your patch (or a patch you care about) has been checked in, you'll see it there.

Yes, but it will also be useful to know when you apply the patch to your tree, but please see below...

> I can't keep track of every contributor nor every Tegra board and remember to email them individually
> when code that affects them has been checked in.

And that is not what I was asking for...
I'm not asking if you can CC everybody you think is interested in the patch... No!
I'm asking if you can do a "Reply to all" to the patch (or a patch set) saying that the patch has been applied?
Many other maintainers do this (not only in U-Boot) and it is really convenient to have that short email.

> I can try to remember to add you to the CC when I send the pull request, but no guarantees. ;)

Thanks.

> 
> Also, if you are monitoring the mailing list, you can search for TrimSlice commits/discussions, etc. in each digest, on PatchWork, or gmane/pipermail, etc.

Well, monitoring mailing list will not help, if you don't "reply to all" (or at least reply to the list).
I you had replied to the list, I would have no questions... ;-)

> 
> Tom
>>
>>>
>>>>> +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?
>>>
>>> Yes, the Tegra board support is evolving and may not be optimally
>>> structured right now. The logic above is what's needed given the
>>> current state. Perhaps this will move to a better location in the
>>> future. I don't plan on making that change right now though; I don't
>>> want to conflict with other changes I know people are making such as
>>> moving a bunch of code around to support a separate SPL.
>>
>> Ok.
>>
>>>
>>>>> diff --git a/include/configs/trimslice.h
>>>>> b/include/configs/trimslice.h
>>>
>>>>> +/* High-level configuration options */
>>>>> +#define V_PROMPT        "Tegra2 (TrimSlice) # "
>>>>
>>>> Can this, please be "TrimSlice #"
>>>
>>> That wouldn't be consistent with any of the other Tegra boards though.
>>> Is there a specific need for the prompt to be different?
>>
>> I see and probably you are right...
>> On the second thought, it will not be consistent with other CompuLab boards
>> (which are not Tegra based), so this whole consistency thing...
>> I don't know... Let it be... After all, you have volunteered to maintain it
>> :-)
>>
>>>
>>>>> +#define CONFIG_TEGRA2_BOARD_STRING    "NVIDIA Trimslice"
>>>>
>>>> Can this, please be "CompuLab TrimSlice"
>>>
>>> Sure, that's just something I forgot to update when copying from
>>> another board's config file.
>>
>> Thanks
>>
>>>
>>>>> +/* 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?
>>>
>>> Yes, 300d8011 is wrong, and you're just getting lucky that it's
>>> working for you since nothing actually uses the ODMDATA fields that are
>> wrong.
>>>
>>> The "d8" in the ODMDATA means to use UART D as the debug UART.
>>> However, TrimSlice uses UART A, and hence needs "c0" here.
>>>
>>> Without this change, the mainline kernel config option
>>> CONFIG_TEGRA_DEBUG_UART_AUTO_ODMDATA (which affects where
>>> DEBUG_LL/earlyprintk output is routed) will not work correctly.
>>
>> Ok, I see, thanks for sharing this information.
>>
>>>
>>>>> +/* 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?
>>>
>>> A later change has removed the SMSC95XX support since as you say, that
>>> chip is not present on the board. However, I actively use an ASIX USB
>>> Ethernet dongle with TrimSlice, so do need that config option enabled.
>>> Perhaps it can be removed if/when Tegra PCIe support is added to
>>> mainline U-Boot, so the built-in Ethernet adapter can be used instead.
>>
>> Fare enough.
>> Thanks for the patches, information and the work you've done!
>>
>>
>> --
>> Regards,
>> Igor.
diff mbox

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index 7c161db..9d35c0e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -912,6 +912,7 @@  Stephen Warren <swarren@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@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@c5008000";
+	};
+
+	memory {
+		reg = <0x00000000 0x40000000>;
+	};
+
+	clocks {
+		clk_32k: clk_32k {
+			clock-frequency = <32000>;
+		};
+		osc {
+			clock-frequency = <12000000>;
+		};
+	};
+
+	clock@60006000 {
+		clocks = <&clk_32k &osc>;
+	};
+
+	serial@70006000 {
+		clock-frequency = <216000000>;
+	};
+
+	i2c@7000c000 {
+		status = "disabled";
+	};
+
+	i2c@7000c400 {
+		status = "disabled";
+	};
+
+	i2c@7000c500 {
+		status = "disabled";
+	};
+
+	i2c@7000d000 {
+		status = "disabled";
+	};
+
+	usb@c5004000 {
+		status = "disabled";
+	};
+
+	usb@c5004000 {
+		status = "disabled";
+	};
+};
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
+#
+
+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
+
+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) # "
+#define CONFIG_TEGRA2_BOARD_STRING	"NVIDIA 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 */
+
+#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
+
+/* General networking support */
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_DHCP
+
+#include "tegra2-common-post.h"
+
+#endif /* __CONFIG_H */