diff mbox

[U-Boot,v2,2/3] tegra2: Add Avionic Design Plutux support.

Message ID 1321342031-13860-2-git-send-email-thierry.reding@avionic-design.de
State Superseded
Headers show

Commit Message

Thierry Reding Nov. 15, 2011, 7:27 a.m. UTC
The Plutux is a set-top box device based on the Tamonten processor
module. It can be connected to a display via an HDMI output.

Changes in v2:
  * No longer override the default CONFIG_SYS_TEXT_BASE setting.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
---
 board/avionic-design/plutux/Makefile |   50 +++++++++++++++++++++++++++
 board/avionic-design/plutux/plutux.c |   62 ++++++++++++++++++++++++++++++++++
 boards.cfg                           |    1 +
 include/configs/plutux.h             |   62 ++++++++++++++++++++++++++++++++++
 4 files changed, 175 insertions(+), 0 deletions(-)
 create mode 100644 board/avionic-design/plutux/Makefile
 create mode 100644 board/avionic-design/plutux/plutux.c
 create mode 100644 include/configs/plutux.h

Comments

Simon Glass Nov. 15, 2011, 11:19 p.m. UTC | #1
Hi Thierry,

On Mon, Nov 14, 2011 at 11:27 PM, Thierry Reding
<thierry.reding@avionic-design.de> wrote:
> The Plutux is a set-top box device based on the Tamonten processor
> module. It can be connected to a display via an HDMI output.
>
> Changes in v2:
>  * No longer override the default CONFIG_SYS_TEXT_BASE setting.
>
> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
> ---
>  board/avionic-design/plutux/Makefile |   50 +++++++++++++++++++++++++++
>  board/avionic-design/plutux/plutux.c |   62 ++++++++++++++++++++++++++++++++++
>  boards.cfg                           |    1 +
>  include/configs/plutux.h             |   62 ++++++++++++++++++++++++++++++++++
>  4 files changed, 175 insertions(+), 0 deletions(-)
>  create mode 100644 board/avionic-design/plutux/Makefile
>  create mode 100644 board/avionic-design/plutux/plutux.c
>  create mode 100644 include/configs/plutux.h
>
> diff --git a/board/avionic-design/plutux/Makefile b/board/avionic-design/plutux/Makefile
> new file mode 100644
> index 0000000..b0c318c
> --- /dev/null
> +++ b/board/avionic-design/plutux/Makefile
> @@ -0,0 +1,50 @@
> +#
> +#  (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 $(TOPDIR)/config.mk
> +
> +ifneq ($(OBJTREE),$(SRCTREE))
> +$(shell mkdir -p $(obj)../common)
> +endif
> +
> +LIB    = $(obj)lib$(BOARD).o
> +
> +COBJS  := $(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/avionic-design/plutux/plutux.c b/board/avionic-design/plutux/plutux.c
> new file mode 100644
> index 0000000..95fd97b
> --- /dev/null
> +++ b/board/avionic-design/plutux/plutux.c
> @@ -0,0 +1,62 @@
> +/*
> + *  (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/arch/tegra2.h>
> +#ifdef CONFIG_TEGRA2_MMC
> +#include <mmc.h>

If you are not implementing MMC, just remove it and all the MMC code below.

> +#endif
> +
> +/*
> + * Routine: gpio_config_uart
> + * Description: Does nothing on Plutux - no conflict w/SPI.
> + */
> +void gpio_config_uart(void)
> +{
> +}
> +
> +#ifdef CONFIG_TEGRA2_MMC
> +/*
> + * Routine: gpio_config_mmc
> + * Description: Set GPIOs for SD card
> + */
> +void gpio_config_mmc(void)
> +{
> +       /* Not implemented for now */
> +}
> +
> +/* this is a weak define that we are overriding */
> +int board_mmc_getcd(u8 *cd, struct mmc *mmc)
> +{
> +       debug("board_mmc_getcd called\n");
> +       /*
> +        * Hard-code CD presence for now. Need to add GPIO inputs
> +        * for Plutux
> +        */
> +       *cd = 1;
> +       return 0;
> +}
> +#endif
> diff --git a/boards.cfg b/boards.cfg
> index 8b7a03b..4fed42a 100644
> --- a/boards.cfg
> +++ b/boards.cfg
> @@ -229,6 +229,7 @@ xaeniax                      arm         pxa
>  xm250                        arm         pxa
>  zipitz2                      arm         pxa
>  jornada                      arm         sa1100
> +plutux                       arm         armv7       plutux              avionic-design tegra2
>  atngw100                     avr32       at32ap      -                   atmel          at32ap700x
>  atstk1002                    avr32       at32ap      atstk1000           atmel          at32ap700x
>  atstk1003                    avr32       at32ap      atstk1000           atmel          at32ap700x
> diff --git a/include/configs/plutux.h b/include/configs/plutux.h
> new file mode 100644
> index 0000000..033eda0
> --- /dev/null
> +++ b/include/configs/plutux.h
> @@ -0,0 +1,62 @@
> +/*
> + *  (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 __CONFIG_H
> +#define __CONFIG_H
> +
> +#include "tegra2-common.h"
> +
> +/* High-level configuration options */
> +#define TEGRA2_SYSMEM                  "mem=384M@0M nvmem=128M@384M"
> +#define V_PROMPT                       "Tegra2 (Plutux) # "
> +#define CONFIG_TEGRA2_BOARD_STRING     "Avionic Design Plutux"
> +#define CONFIG_SYS_BOARD_ODMDATA       0x2b2d8011
> +
> +/* 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
> +
> +/* SD/MMC */
> +#define CONFIG_MMC
> +#define CONFIG_GENERIC_MMC
> +#define CONFIG_TEGRA2_MMC
> +#define CONFIG_CMD_MMC

and this also

> +
> +#define CONFIG_DOS_PARTITION
> +#define CONFIG_EFI_PARTITION
> +#define CONFIG_CMD_EXT2
> +#define CONFIG_CMD_FAT

and this if you like, since you can't have an FS without MMC.

> +
> +#define CONFIG_FIT
> +
> +#define CONFIG_BOOTCOMMAND                             \
> +       "mmc rescan;"                                   \
            ^^^^^^^^
and you probably don't want this


> +       "ext2load mmc 0 0x17000000 /boot/uImage;"       \
> +       "bootm"
> +
> +#endif /* __CONFIG_H */
> --
> 1.7.7.3
>
>

Regards,
Simon
Thierry Reding Nov. 16, 2011, 6:59 a.m. UTC | #2
* Simon Glass wrote:
> Hi Thierry,
> 
> On Mon, Nov 14, 2011 at 11:27 PM, Thierry Reding
> <thierry.reding@avionic-design.de> wrote:
> > The Plutux is a set-top box device based on the Tamonten processor
> > module. It can be connected to a display via an HDMI output.
> >
> > Changes in v2:
> >  * No longer override the default CONFIG_SYS_TEXT_BASE setting.
> >
> > Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
> > ---
> >  board/avionic-design/plutux/Makefile |   50 +++++++++++++++++++++++++++
> >  board/avionic-design/plutux/plutux.c |   62 ++++++++++++++++++++++++++++++++++
> >  boards.cfg                           |    1 +
> >  include/configs/plutux.h             |   62 ++++++++++++++++++++++++++++++++++
> >  4 files changed, 175 insertions(+), 0 deletions(-)
> >  create mode 100644 board/avionic-design/plutux/Makefile
> >  create mode 100644 board/avionic-design/plutux/plutux.c
> >  create mode 100644 include/configs/plutux.h
> >
> > diff --git a/board/avionic-design/plutux/Makefile b/board/avionic-design/plutux/Makefile
> > new file mode 100644
> > index 0000000..b0c318c
> > --- /dev/null
> > +++ b/board/avionic-design/plutux/Makefile
> > @@ -0,0 +1,50 @@
> > +#
> > +#  (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 $(TOPDIR)/config.mk
> > +
> > +ifneq ($(OBJTREE),$(SRCTREE))
> > +$(shell mkdir -p $(obj)../common)
> > +endif
> > +
> > +LIB    = $(obj)lib$(BOARD).o
> > +
> > +COBJS  := $(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/avionic-design/plutux/plutux.c b/board/avionic-design/plutux/plutux.c
> > new file mode 100644
> > index 0000000..95fd97b
> > --- /dev/null
> > +++ b/board/avionic-design/plutux/plutux.c
> > @@ -0,0 +1,62 @@
> > +/*
> > + *  (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/arch/tegra2.h>
> > +#ifdef CONFIG_TEGRA2_MMC
> > +#include <mmc.h>
> 
> If you are not implementing MMC, just remove it and all the MMC code below.
> 

I don't understand. What makes you think I don't want MMC? Both the Plutux
and the Medcom boot from MMC. If you are referring to the CD being
hard-coded, then that is just because I copied from Harmony. You are right
though that I should probably fill the implementation. I'm not really sure
about the best way to do this, though. The struct mmc passed into
board_mmc_getcd() doesn't contain enough information to decide which GPIO to
check. I could assume it is always SD4 since that is the only controller that
is initialized, but would that be acceptable?

> > +#endif
> > +
> > +/*
> > + * Routine: gpio_config_uart
> > + * Description: Does nothing on Plutux - no conflict w/SPI.
> > + */
> > +void gpio_config_uart(void)
> > +{
> > +}
> > +
> > +#ifdef CONFIG_TEGRA2_MMC
> > +/*
> > + * Routine: gpio_config_mmc
> > + * Description: Set GPIOs for SD card
> > + */
> > +void gpio_config_mmc(void)
> > +{
> > +       /* Not implemented for now */
> > +}
> > +
> > +/* this is a weak define that we are overriding */
> > +int board_mmc_getcd(u8 *cd, struct mmc *mmc)
> > +{
> > +       debug("board_mmc_getcd called\n");
> > +       /*
> > +        * Hard-code CD presence for now. Need to add GPIO inputs
> > +        * for Plutux
> > +        */
> > +       *cd = 1;
> > +       return 0;
> > +}
> > +#endif
> > diff --git a/boards.cfg b/boards.cfg
> > index 8b7a03b..4fed42a 100644
> > --- a/boards.cfg
> > +++ b/boards.cfg
> > @@ -229,6 +229,7 @@ xaeniax                      arm         pxa
> >  xm250                        arm         pxa
> >  zipitz2                      arm         pxa
> >  jornada                      arm         sa1100
> > +plutux                       arm         armv7       plutux              avionic-design tegra2
> >  atngw100                     avr32       at32ap      -                   atmel          at32ap700x
> >  atstk1002                    avr32       at32ap      atstk1000           atmel          at32ap700x
> >  atstk1003                    avr32       at32ap      atstk1000           atmel          at32ap700x
> > diff --git a/include/configs/plutux.h b/include/configs/plutux.h
> > new file mode 100644
> > index 0000000..033eda0
> > --- /dev/null
> > +++ b/include/configs/plutux.h
> > @@ -0,0 +1,62 @@
> > +/*
> > + *  (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 __CONFIG_H
> > +#define __CONFIG_H
> > +
> > +#include "tegra2-common.h"
> > +
> > +/* High-level configuration options */
> > +#define TEGRA2_SYSMEM                  "mem=384M@0M nvmem=128M@384M"
> > +#define V_PROMPT                       "Tegra2 (Plutux) # "
> > +#define CONFIG_TEGRA2_BOARD_STRING     "Avionic Design Plutux"
> > +#define CONFIG_SYS_BOARD_ODMDATA       0x2b2d8011
> > +
> > +/* 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
> > +
> > +/* SD/MMC */
> > +#define CONFIG_MMC
> > +#define CONFIG_GENERIC_MMC
> > +#define CONFIG_TEGRA2_MMC
> > +#define CONFIG_CMD_MMC
> 
> and this also
> 
> > +
> > +#define CONFIG_DOS_PARTITION
> > +#define CONFIG_EFI_PARTITION
> > +#define CONFIG_CMD_EXT2
> > +#define CONFIG_CMD_FAT
> 
> and this if you like, since you can't have an FS without MMC.
> 
> > +
> > +#define CONFIG_FIT
> > +
> > +#define CONFIG_BOOTCOMMAND                             \
> > +       "mmc rescan;"                                   \
>             ^^^^^^^^
> and you probably don't want this
> 
> 
> > +       "ext2load mmc 0 0x17000000 /boot/uImage;"       \
> > +       "bootm"
> > +
> > +#endif /* __CONFIG_H */
> > --
> > 1.7.7.3
> >
> >
> 
> Regards,
> Simon

Thanks,
Thierry
Thierry Reding Nov. 16, 2011, 7:14 a.m. UTC | #3
* Thierry Reding wrote:
> * Simon Glass wrote:
[...]
> > 
> > If you are not implementing MMC, just remove it and all the MMC code below.
> > 
> 
> I don't understand. What makes you think I don't want MMC? Both the Plutux
> and the Medcom boot from MMC. If you are referring to the CD being
> hard-coded, then that is just because I copied from Harmony. You are right
> though that I should probably fill the implementation. I'm not really sure
> about the best way to do this, though. The struct mmc passed into
> board_mmc_getcd() doesn't contain enough information to decide which GPIO to
> check. I could assume it is always SD4 since that is the only controller that
> is initialized, but would that be acceptable?

I was going to implement proper card-detection (it's quite trivial) but then
I saw that board_mmc_getcd() is never called in the Tegra2 MMC driver so I
guess that should be implemented as well. Did anybody work on that already or
would you like me to prepare a patch?

Thierry
Stephen Warren Nov. 16, 2011, 4:03 p.m. UTC | #4
Thierry Reding wrote at Wednesday, November 16, 2011 12:14 AM:
> * Thierry Reding wrote:
> > * Simon Glass wrote:
> [...]
> > >
> > > If you are not implementing MMC, just remove it and all the MMC code below.
> > >
> >
> > I don't understand. What makes you think I don't want MMC? Both the Plutux
> > and the Medcom boot from MMC. If you are referring to the CD being
> > hard-coded, then that is just because I copied from Harmony. You are right
> > though that I should probably fill the implementation. I'm not really sure
> > about the best way to do this, though. The struct mmc passed into
> > board_mmc_getcd() doesn't contain enough information to decide which GPIO to
> > check. I could assume it is always SD4 since that is the only controller that
> > is initialized, but would that be acceptable?
> 
> I was going to implement proper card-detection (it's quite trivial) but then
> I saw that board_mmc_getcd() is never called in the Tegra2 MMC driver so I
> guess that should be implemented as well. Did anybody work on that already or
> would you like me to prepare a patch?

I noticed that too, but adding CD support to the Tegra driver itself didn't
seem right; surely it should be added to the MMC core?

Anyway, if you're looking at hacking on Tegra MMC, please do be aware of
a few patches I posted re: Tegra boards and MMC changes:

tegra2: Move board_mmc_init into board files
http://patchwork.ozlabs.org/patch/118143/

tegra2: Modify MMC driver to handle power and cd GPIOs
http://patchwork.ozlabs.org/patch/118142/

tegra2: Add support for Ventana
http://patchwork.ozlabs.org/patch/118144/

I hope these will be merged soon, but IIRC they haven't received any
feedback either way from Albert.
Tom Warren Nov. 16, 2011, 4:24 p.m. UTC | #5
Thierry,

-----Original Message-----
From: Thierry Reding [mailto:thierry.reding@avionic-design.de] 
Sent: Wednesday, November 16, 2011 12:14 AM
To: Simon Glass
Cc: u-boot@lists.denx.de; Tom Warren
Subject: Re: [U-Boot] [PATCH v2 2/3] tegra2: Add Avionic Design Plutux support.

* PGP Signed by an unknown key

* Thierry Reding wrote:
> * Simon Glass wrote:
[...]
> > 
> > If you are not implementing MMC, just remove it and all the MMC code below.
> > 
> 
> I don't understand. What makes you think I don't want MMC? Both the 
> Plutux and the Medcom boot from MMC. If you are referring to the CD 
> being hard-coded, then that is just because I copied from Harmony. You 
> are right though that I should probably fill the implementation. I'm 
> not really sure about the best way to do this, though. The struct mmc 
> passed into
> board_mmc_getcd() doesn't contain enough information to decide which 
> GPIO to check. I could assume it is always SD4 since that is the only 
> controller that is initialized, but would that be acceptable?

I was going to implement proper card-detection (it's quite trivial) but then I saw that board_mmc_getcd() is never called in the Tegra2 MMC driver so I guess that should be implemented as well. Did anybody work on that already or would you like me to prepare a patch?

I was going to get around to this eventually, but haven't had the BW. Please feel free to submit a patch. If you need to know the GPIOs used, and don't have all the schematics, let me know and I can look 'em up.

Tom

Thierry

* Unknown Key
* 0xA2E3269F
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
Thierry Reding Nov. 16, 2011, 5:21 p.m. UTC | #6
* Stephen Warren wrote:
> Thierry Reding wrote at Wednesday, November 16, 2011 12:14 AM:
> > * Thierry Reding wrote:
> > > * Simon Glass wrote:
> > [...]
> > > >
> > > > If you are not implementing MMC, just remove it and all the MMC code below.
> > > >
> > >
> > > I don't understand. What makes you think I don't want MMC? Both the Plutux
> > > and the Medcom boot from MMC. If you are referring to the CD being
> > > hard-coded, then that is just because I copied from Harmony. You are right
> > > though that I should probably fill the implementation. I'm not really sure
> > > about the best way to do this, though. The struct mmc passed into
> > > board_mmc_getcd() doesn't contain enough information to decide which GPIO to
> > > check. I could assume it is always SD4 since that is the only controller that
> > > is initialized, but would that be acceptable?
> > 
> > I was going to implement proper card-detection (it's quite trivial) but then
> > I saw that board_mmc_getcd() is never called in the Tegra2 MMC driver so I
> > guess that should be implemented as well. Did anybody work on that already or
> > would you like me to prepare a patch?
> 
> I noticed that too, but adding CD support to the Tegra driver itself didn't
> seem right; surely it should be added to the MMC core?

Yeah, that would make more sense. I need to investigate some more what
exactly this involves to make sure no boards are broken. From a quick look
the only driver that currently implements CD is fsl_esdhc. I guess this will
start to involve many people and boards, which I was hoping could be avoided.
But if you'd rather like to see this go into the core (I agree that it is the
best place to do this) then I'll take a look. I'm rather short on time,
though, so it may take some time.

> Anyway, if you're looking at hacking on Tegra MMC, please do be aware of
> a few patches I posted re: Tegra boards and MMC changes:
> 
> tegra2: Move board_mmc_init into board files
> http://patchwork.ozlabs.org/patch/118143/
> 
> tegra2: Modify MMC driver to handle power and cd GPIOs
> http://patchwork.ozlabs.org/patch/118142/
> 
> tegra2: Add support for Ventana
> http://patchwork.ozlabs.org/patch/118144/
> 
> I hope these will be merged soon, but IIRC they haven't received any
> feedback either way from Albert.

I assume that these will eventually be merged, so I'll make sure to base any
further work on them.

Thierry
Simon Glass Nov. 17, 2011, 4:36 a.m. UTC | #7
Hi Thierry,

On Tue, Nov 15, 2011 at 10:59 PM, Thierry Reding
<thierry.reding@avionic-design.de> wrote:
> * Simon Glass wrote:
>> Hi Thierry,
>>
[snip]
>> If you are not implementing MMC, just remove it and all the MMC code below.
>>
>
> I don't understand. What makes you think I don't want MMC? Both the Plutux
> and the Medcom boot from MMC. If you are referring to the CD being
> hard-coded, then that is just because I copied from Harmony. You are right
> though that I should probably fill the implementation. I'm not really sure
> about the best way to do this, though. The struct mmc passed into
> board_mmc_getcd() doesn't contain enough information to decide which GPIO to
> check. I could assume it is always SD4 since that is the only controller that
> is initialized, but would that be acceptable?

What I meant was that you should either implement it or not, but not
have something that doesn't work. But if it does work, even if
hard-coded, that is fine.

Regards,
Simon

>
>> > +#endif
>> > +
>> > +/*
>> > + * Routine: gpio_config_uart
>> > + * Description: Does nothing on Plutux - no conflict w/SPI.
>> > + */
>> > +void gpio_config_uart(void)
>> > +{
>> > +}
>> > +
>> > +#ifdef CONFIG_TEGRA2_MMC
>> > +/*
>> > + * Routine: gpio_config_mmc
>> > + * Description: Set GPIOs for SD card
>> > + */
>> > +void gpio_config_mmc(void)
>> > +{
>> > +       /* Not implemented for now */
>> > +}
>> > +
>> > +/* this is a weak define that we are overriding */
>> > +int board_mmc_getcd(u8 *cd, struct mmc *mmc)
>> > +{
>> > +       debug("board_mmc_getcd called\n");
>> > +       /*
>> > +        * Hard-code CD presence for now. Need to add GPIO inputs
>> > +        * for Plutux
>> > +        */
>> > +       *cd = 1;
>> > +       return 0;
>> > +}
>> > +#endif
>> > diff --git a/boards.cfg b/boards.cfg
>> > index 8b7a03b..4fed42a 100644
>> > --- a/boards.cfg
>> > +++ b/boards.cfg
>> > @@ -229,6 +229,7 @@ xaeniax                      arm         pxa
>> >  xm250                        arm         pxa
>> >  zipitz2                      arm         pxa
>> >  jornada                      arm         sa1100
>> > +plutux                       arm         armv7       plutux              avionic-design tegra2
>> >  atngw100                     avr32       at32ap      -                   atmel          at32ap700x
>> >  atstk1002                    avr32       at32ap      atstk1000           atmel          at32ap700x
>> >  atstk1003                    avr32       at32ap      atstk1000           atmel          at32ap700x
>> > diff --git a/include/configs/plutux.h b/include/configs/plutux.h
>> > new file mode 100644
>> > index 0000000..033eda0
>> > --- /dev/null
>> > +++ b/include/configs/plutux.h
>> > @@ -0,0 +1,62 @@
>> > +/*
>> > + *  (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 __CONFIG_H
>> > +#define __CONFIG_H
>> > +
>> > +#include "tegra2-common.h"
>> > +
>> > +/* High-level configuration options */
>> > +#define TEGRA2_SYSMEM                  "mem=384M@0M nvmem=128M@384M"
>> > +#define V_PROMPT                       "Tegra2 (Plutux) # "
>> > +#define CONFIG_TEGRA2_BOARD_STRING     "Avionic Design Plutux"
>> > +#define CONFIG_SYS_BOARD_ODMDATA       0x2b2d8011
>> > +
>> > +/* 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
>> > +
>> > +/* SD/MMC */
>> > +#define CONFIG_MMC
>> > +#define CONFIG_GENERIC_MMC
>> > +#define CONFIG_TEGRA2_MMC
>> > +#define CONFIG_CMD_MMC
>>
>> and this also
>>
>> > +
>> > +#define CONFIG_DOS_PARTITION
>> > +#define CONFIG_EFI_PARTITION
>> > +#define CONFIG_CMD_EXT2
>> > +#define CONFIG_CMD_FAT
>>
>> and this if you like, since you can't have an FS without MMC.
>>
>> > +
>> > +#define CONFIG_FIT
>> > +
>> > +#define CONFIG_BOOTCOMMAND                             \
>> > +       "mmc rescan;"                                   \
>>             ^^^^^^^^
>> and you probably don't want this
>>
>>
>> > +       "ext2load mmc 0 0x17000000 /boot/uImage;"       \
>> > +       "bootm"
>> > +
>> > +#endif /* __CONFIG_H */
>> > --
>> > 1.7.7.3
>> >
>> >
>>
>> Regards,
>> Simon
>
> Thanks,
> Thierry
>
diff mbox

Patch

diff --git a/board/avionic-design/plutux/Makefile b/board/avionic-design/plutux/Makefile
new file mode 100644
index 0000000..b0c318c
--- /dev/null
+++ b/board/avionic-design/plutux/Makefile
@@ -0,0 +1,50 @@ 
+#
+#  (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 $(TOPDIR)/config.mk
+
+ifneq ($(OBJTREE),$(SRCTREE))
+$(shell mkdir -p $(obj)../common)
+endif
+
+LIB	= $(obj)lib$(BOARD).o
+
+COBJS	:= $(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/avionic-design/plutux/plutux.c b/board/avionic-design/plutux/plutux.c
new file mode 100644
index 0000000..95fd97b
--- /dev/null
+++ b/board/avionic-design/plutux/plutux.c
@@ -0,0 +1,62 @@ 
+/*
+ *  (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/arch/tegra2.h>
+#ifdef CONFIG_TEGRA2_MMC
+#include <mmc.h>
+#endif
+
+/*
+ * Routine: gpio_config_uart
+ * Description: Does nothing on Plutux - no conflict w/SPI.
+ */
+void gpio_config_uart(void)
+{
+}
+
+#ifdef CONFIG_TEGRA2_MMC
+/*
+ * Routine: gpio_config_mmc
+ * Description: Set GPIOs for SD card
+ */
+void gpio_config_mmc(void)
+{
+	/* Not implemented for now */
+}
+
+/* this is a weak define that we are overriding */
+int board_mmc_getcd(u8 *cd, struct mmc *mmc)
+{
+	debug("board_mmc_getcd called\n");
+	/*
+	 * Hard-code CD presence for now. Need to add GPIO inputs
+	 * for Plutux
+	 */
+	*cd = 1;
+	return 0;
+}
+#endif
diff --git a/boards.cfg b/boards.cfg
index 8b7a03b..4fed42a 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -229,6 +229,7 @@  xaeniax                      arm         pxa
 xm250                        arm         pxa
 zipitz2                      arm         pxa
 jornada                      arm         sa1100
+plutux                       arm         armv7       plutux              avionic-design tegra2
 atngw100                     avr32       at32ap      -                   atmel          at32ap700x
 atstk1002                    avr32       at32ap      atstk1000           atmel          at32ap700x
 atstk1003                    avr32       at32ap      atstk1000           atmel          at32ap700x
diff --git a/include/configs/plutux.h b/include/configs/plutux.h
new file mode 100644
index 0000000..033eda0
--- /dev/null
+++ b/include/configs/plutux.h
@@ -0,0 +1,62 @@ 
+/*
+ *  (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 __CONFIG_H
+#define __CONFIG_H
+
+#include "tegra2-common.h"
+
+/* High-level configuration options */
+#define TEGRA2_SYSMEM			"mem=384M@0M nvmem=128M@384M"
+#define V_PROMPT			"Tegra2 (Plutux) # "
+#define CONFIG_TEGRA2_BOARD_STRING	"Avionic Design Plutux"
+#define CONFIG_SYS_BOARD_ODMDATA	0x2b2d8011
+
+/* 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
+
+/* 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
+
+#define CONFIG_FIT
+
+#define CONFIG_BOOTCOMMAND				\
+	"mmc rescan;"					\
+	"ext2load mmc 0 0x17000000 /boot/uImage;"	\
+	"bootm"
+
+#endif /* __CONFIG_H */