Message ID | 1317923583-32762-4-git-send-email-swarren@nvidia.com |
---|---|
State | Superseded |
Headers | show |
Hi Stephen, On Thu, Oct 6, 2011 at 10:53 AM, Stephen Warren <swarren@nvidia.com> wrote: > Ventana is a board which is very similar to Seaboard. Support it by > re-using board/nvidia/seaboard/seaboard.c with minor run-time conditionals. > > Signed-off-by: Stephen Warren <swarren@nvidia.com> > --- > board/nvidia/seaboard/seaboard.c | 11 ++++++- > board/nvidia/ventana/Makefile | 55 ++++++++++++++++++++++++++++++++++++++ > boards.cfg | 1 + > include/configs/ventana.h | 55 ++++++++++++++++++++++++++++++++++++++ > 4 files changed, 120 insertions(+), 2 deletions(-) > create mode 100644 board/nvidia/ventana/Makefile > create mode 100644 include/configs/ventana.h > > diff --git a/board/nvidia/seaboard/seaboard.c b/board/nvidia/seaboard/seaboard.c > index be6ed12..260a56d 100644 > --- a/board/nvidia/seaboard/seaboard.c > +++ b/board/nvidia/seaboard/seaboard.c > @@ -31,10 +31,10 @@ > #endif > > /* > - * Routine: gpio_config_uart > + * Routine: gpio_config_uart_seaboard > * Description: Force GPIO_PI3 low on Seaboard so UART4 works. > */ > -void gpio_config_uart(void) > +void gpio_config_uart_seaboard(void) > { > int gp = GPIO_PI3; > struct gpio_ctlr *gpio = (struct gpio_ctlr *)NV_PA_GPIO_BASE; > @@ -55,6 +55,13 @@ void gpio_config_uart(void) > writel(val, &bank->gpio_dir_out[GPIO_PORT(gp)]); > } > > +void gpio_config_uart(void) > +{ > + if (machine_is_ventana()) > + return; > + gpio_config_uart_seaboard(); > +} Would it not be better to define a new board file ventana.c, as has been done with harmony? Is it because you are wanting to share gpio_config_mmc()? But you have written it out again for Harmony. Regards, Simon > + > #ifdef CONFIG_TEGRA2_MMC > /* > * Routine: pin_mux_mmc > diff --git a/board/nvidia/ventana/Makefile b/board/nvidia/ventana/Makefile > new file mode 100644 > index 0000000..029673f > --- /dev/null > +++ b/board/nvidia/ventana/Makefile > @@ -0,0 +1,55 @@ > +# > +# (C) Copyright 2010,2011 > +# 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)../common) > +endif > + > +LIB = $(obj)lib$(BOARD).o > + > +COBJS += ../seaboard/seaboard.o > +COBJS += ../common/board.o > + > +SRCS := $(COBJS:.o=.c) > +OBJS := $(addprefix $(obj),$(COBJS)) > + > +$(LIB): $(obj).depend $(OBJS) > + $(AR) $(ARFLAGS) $@ $(OBJS) > + > +clean: > + rm -f $(OBJS) > + > +distclean: clean > + rm -f $(LIB) core *.bak $(obj).depend > + > +######################################################################### > + > +# defines $(obj).depend target > +include $(SRCTREE)/rules.mk > + > +sinclude $(obj).depend > + > +######################################################################### > diff --git a/boards.cfg b/boards.cfg > index e5cb91b..e1ab6f9 100644 > --- a/boards.cfg > +++ b/boards.cfg > @@ -188,6 +188,7 @@ s5pc210_universal arm armv7 universal_c210 samsung > smdkv310 arm armv7 smdkv310 samsung s5pc2xx > harmony arm armv7 harmony nvidia tegra2 > seaboard arm armv7 seaboard nvidia tegra2 > +ventana arm armv7 ventana nvidia tegra2 > u8500_href arm armv7 u8500 st-ericsson u8500 > actux1_4_16 arm ixp actux1 - - actux1:FLASH2X2 > actux1_8_16 arm ixp actux1 - - actux1:FLASH1X8 > diff --git a/include/configs/ventana.h b/include/configs/ventana.h > new file mode 100644 > index 0000000..afd6ff6 > --- /dev/null > +++ b/include/configs/ventana.h > @@ -0,0 +1,55 @@ > +/* > + * (C) Copyright 2010,2011 > + * 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" > + > +/* High-level configuration options */ > +#define TEGRA2_SYSMEM "mem=384M@0M nvmem=128M@384M mem=512M@512M" > +#define V_PROMPT "Tegra2 (Ventana) # " > +#define CONFIG_TEGRA2_BOARD_STRING "NVIDIA Ventana" > + > +/* Board-specific serial config */ > +#define CONFIG_SERIAL_MULTI > +#define CONFIG_TEGRA2_ENABLE_UARTD > +#define CONFIG_SYS_NS16550_COM1 NV_PA_APB_UARTD_BASE > + > +#define CONFIG_MACH_TYPE MACH_TYPE_VENTANA > +#define CONFIG_SYS_BOARD_ODMDATA 0x300d8011 /* lp1, 1GB */ > + > +#define CONFIG_BOARD_EARLY_INIT_F > + > +/* 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 > +#endif /* __CONFIG_H */ > -- > 1.7.0.4 > >
Simon Glass wrote at Friday, October 07, 2011 6:03 PM: > On Thu, Oct 6, 2011 at 10:53 AM, Stephen Warren <swarren@nvidia.com> wrote: > > Ventana is a board which is very similar to Seaboard. Support it by > > re-using board/nvidia/seaboard/seaboard.c with minor run-time conditionals. ... > > diff --git a/board/nvidia/seaboard/seaboard.c b/board/nvidia/seaboard/seaboard.c > > index be6ed12..260a56d 100644 > > --- a/board/nvidia/seaboard/seaboard.c > > +++ b/board/nvidia/seaboard/seaboard.c > > @@ -31,10 +31,10 @@ > > #endif > > > > /* > > - * Routine: gpio_config_uart > > + * Routine: gpio_config_uart_seaboard > > * Description: Force GPIO_PI3 low on Seaboard so UART4 works. > > */ > > -void gpio_config_uart(void) > > +void gpio_config_uart_seaboard(void) > > { > > int gp = GPIO_PI3; > > struct gpio_ctlr *gpio = (struct gpio_ctlr *)NV_PA_GPIO_BASE; > > @@ -55,6 +55,13 @@ void gpio_config_uart(void) > > writel(val, &bank->gpio_dir_out[GPIO_PORT(gp)]); > > } > > > > +void gpio_config_uart(void) > > +{ > > + if (machine_is_ventana()) > > + return; > > + gpio_config_uart_seaboard(); > > +} > > Would it not be better to define a new board file ventana.c, as has > been done with harmony? Is it because you are wanting to share > gpio_config_mmc()? But you have written it out again for Harmony. Ventana and Seaboard are extremely similar boards; even as more features are supported, I imagine that a separate seaboard.c and ventana.c would continue to be mostly identical. The Linux kernel board files support Ventana within the Seaboard board file (alongside a few other similar boards) for this reason. Yes, harmony.c has its own copy of pin_mux_mmc()/board_mmc_init(); that's because Harmony's MMC configuration is at least partially different to Seaboard/Ventana's.
Hi Stephen, On Mon, Oct 10, 2011 at 9:00 AM, Stephen Warren <swarren@nvidia.com> wrote: > Simon Glass wrote at Friday, October 07, 2011 6:03 PM: >> On Thu, Oct 6, 2011 at 10:53 AM, Stephen Warren <swarren@nvidia.com> wrote: >> > Ventana is a board which is very similar to Seaboard. Support it by >> > re-using board/nvidia/seaboard/seaboard.c with minor run-time conditionals. > ... >> > diff --git a/board/nvidia/seaboard/seaboard.c b/board/nvidia/seaboard/seaboard.c >> > index be6ed12..260a56d 100644 >> > --- a/board/nvidia/seaboard/seaboard.c >> > +++ b/board/nvidia/seaboard/seaboard.c >> > @@ -31,10 +31,10 @@ >> > #endif >> > >> > /* >> > - * Routine: gpio_config_uart >> > + * Routine: gpio_config_uart_seaboard >> > * Description: Force GPIO_PI3 low on Seaboard so UART4 works. >> > */ >> > -void gpio_config_uart(void) >> > +void gpio_config_uart_seaboard(void) >> > { >> > int gp = GPIO_PI3; >> > struct gpio_ctlr *gpio = (struct gpio_ctlr *)NV_PA_GPIO_BASE; >> > @@ -55,6 +55,13 @@ void gpio_config_uart(void) >> > writel(val, &bank->gpio_dir_out[GPIO_PORT(gp)]); >> > } >> > >> > +void gpio_config_uart(void) >> > +{ >> > + if (machine_is_ventana()) >> > + return; >> > + gpio_config_uart_seaboard(); >> > +} >> >> Would it not be better to define a new board file ventana.c, as has >> been done with harmony? Is it because you are wanting to share >> gpio_config_mmc()? But you have written it out again for Harmony. > > Ventana and Seaboard are extremely similar boards; even as more features > are supported, I imagine that a separate seaboard.c and ventana.c would > continue to be mostly identical. The Linux kernel board files support > Ventana within the Seaboard board file (alongside a few other similar > boards) for this reason. > > Yes, harmony.c has its own copy of pin_mux_mmc()/board_mmc_init(); that's > because Harmony's MMC configuration is at least partially different to > Seaboard/Ventana's. OK, that sounds reasonable. We certainly want to avoid lots of duplicated code. Regards, Simon > > -- > nvpublic > >
diff --git a/board/nvidia/seaboard/seaboard.c b/board/nvidia/seaboard/seaboard.c index be6ed12..260a56d 100644 --- a/board/nvidia/seaboard/seaboard.c +++ b/board/nvidia/seaboard/seaboard.c @@ -31,10 +31,10 @@ #endif /* - * Routine: gpio_config_uart + * Routine: gpio_config_uart_seaboard * Description: Force GPIO_PI3 low on Seaboard so UART4 works. */ -void gpio_config_uart(void) +void gpio_config_uart_seaboard(void) { int gp = GPIO_PI3; struct gpio_ctlr *gpio = (struct gpio_ctlr *)NV_PA_GPIO_BASE; @@ -55,6 +55,13 @@ void gpio_config_uart(void) writel(val, &bank->gpio_dir_out[GPIO_PORT(gp)]); } +void gpio_config_uart(void) +{ + if (machine_is_ventana()) + return; + gpio_config_uart_seaboard(); +} + #ifdef CONFIG_TEGRA2_MMC /* * Routine: pin_mux_mmc diff --git a/board/nvidia/ventana/Makefile b/board/nvidia/ventana/Makefile new file mode 100644 index 0000000..029673f --- /dev/null +++ b/board/nvidia/ventana/Makefile @@ -0,0 +1,55 @@ +# +# (C) Copyright 2010,2011 +# 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)../common) +endif + +LIB = $(obj)lib$(BOARD).o + +COBJS += ../seaboard/seaboard.o +COBJS += ../common/board.o + +SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) + +$(LIB): $(obj).depend $(OBJS) + $(AR) $(ARFLAGS) $@ $(OBJS) + +clean: + rm -f $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak $(obj).depend + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/boards.cfg b/boards.cfg index e5cb91b..e1ab6f9 100644 --- a/boards.cfg +++ b/boards.cfg @@ -188,6 +188,7 @@ s5pc210_universal arm armv7 universal_c210 samsung smdkv310 arm armv7 smdkv310 samsung s5pc2xx harmony arm armv7 harmony nvidia tegra2 seaboard arm armv7 seaboard nvidia tegra2 +ventana arm armv7 ventana nvidia tegra2 u8500_href arm armv7 u8500 st-ericsson u8500 actux1_4_16 arm ixp actux1 - - actux1:FLASH2X2 actux1_8_16 arm ixp actux1 - - actux1:FLASH1X8 diff --git a/include/configs/ventana.h b/include/configs/ventana.h new file mode 100644 index 0000000..afd6ff6 --- /dev/null +++ b/include/configs/ventana.h @@ -0,0 +1,55 @@ +/* + * (C) Copyright 2010,2011 + * 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" + +/* High-level configuration options */ +#define TEGRA2_SYSMEM "mem=384M@0M nvmem=128M@384M mem=512M@512M" +#define V_PROMPT "Tegra2 (Ventana) # " +#define CONFIG_TEGRA2_BOARD_STRING "NVIDIA Ventana" + +/* Board-specific serial config */ +#define CONFIG_SERIAL_MULTI +#define CONFIG_TEGRA2_ENABLE_UARTD +#define CONFIG_SYS_NS16550_COM1 NV_PA_APB_UARTD_BASE + +#define CONFIG_MACH_TYPE MACH_TYPE_VENTANA +#define CONFIG_SYS_BOARD_ODMDATA 0x300d8011 /* lp1, 1GB */ + +#define CONFIG_BOARD_EARLY_INIT_F + +/* 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 +#endif /* __CONFIG_H */
Ventana is a board which is very similar to Seaboard. Support it by re-using board/nvidia/seaboard/seaboard.c with minor run-time conditionals. Signed-off-by: Stephen Warren <swarren@nvidia.com> --- board/nvidia/seaboard/seaboard.c | 11 ++++++- board/nvidia/ventana/Makefile | 55 ++++++++++++++++++++++++++++++++++++++ boards.cfg | 1 + include/configs/ventana.h | 55 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 board/nvidia/ventana/Makefile create mode 100644 include/configs/ventana.h