[U-Boot] RFC [PATCH 4/5 v5] dreamplug: initial board support.

Jason u-boot at lakedaemon.net
Fri Jul 29 17:18:31 CEST 2011


On Thu, Jul 28, 2011 at 12:37:32PM -0700, Prafulla Wadaskar wrote:
> 
> 
> > -----Original Message-----
> > From: Jason [mailto:u-boot at lakedaemon.net]
> > Sent: Thursday, July 28, 2011 7:33 AM
> > To: Prafulla Wadaskar
> > Cc: clint at debian.org; wd at denx.de; u-boot at lists.denx.de; Prabhanjan
> > Sarnaik; Ashish Karkare; Siddarth Gore; bdale at gag.com
> > Subject: Re: RFC [PATCH 4/5 v5] dreamplug: initial board support.
> >
> > On Wed, Jul 27, 2011 at 11:38:55AM -0700, Prafulla Wadaskar wrote:
> > >
> > >
> > > > -----Original Message-----
> > > > From: Jason Cooper [mailto:u-boot at lakedaemon.net]
> > > > Sent: Wednesday, July 27, 2011 2:49 AM
> > > > To: clint at debian.org; wd at denx.de; Prafulla Wadaskar
> > > > Cc: u-boot at lists.denx.de; Prabhanjan Sarnaik; Ashish Karkare;
> > Siddarth
> > > > Gore; bdale at gag.com; Jason Cooper
> > > > Subject: RFC [PATCH 4/5 v5] dreamplug: initial board support.
> > > >
> > > > Copied wholeheartedly from board/Marvell/guruplug and modified to
> > add
> > > > support
> > > > for SPI NOR flash.
> > > >
> > > > Also, the following features are used:
> > > >       - Use the Marvell Integrated RTC.
> > > >       - display Marvell CPU/L2/etc speeds if requested.
> > > >
> > > > Note: this still uses MACH_TYPE_GURUPLUG until MACH_TYPE_DREAMPLUG
> > is
> > > > accepted
> > > > into mainline Linux.  The source from Globalscale did the same.
> > > >
> > > > Signed-off-by: Jason Cooper <u-boot at lakedaemon.net>
> > > > ---
> > >
> > > There is no change log for all previous versions.
> > > Please put them here.
> > > Ref: http://www.denx.de/wiki/view/U-
> > Boot/Patches#Sending_updated_patch_versions
> >
> > %$#%@#.  I knew I forgot something.  Here it is:
> >
> > Changes from v1 to v2:
> >
> >         - resorted series to move 'make all' support last.
> >
> > Changes from v2 to v3:
> >
> >         - Use MACH_TYPE_GURUPLUG for now until dreamplug support is in
> >           Linux.
> >         - Update MAINTAINERS.
> >         - Collapse into one patch.
> >
> > Changes from v3 to v4:
> >
> >         - update copyright info as recommended by Prafulla Wadaskar.
> >         - maintain proper order in boards.cfg, MAINTAINERS, etc.
> >         - label MPP's
> >         - change back to MACH_TYPE_DREAMPLUG.  This patch is just RFC
> >           until the Dreamplug is supported in Linux (and MACH_TYPE_
> > added).
> >
> > Changes from v4 to v5:
> >
> >                 - Complete rewrite due to receiving u-boot source indirectly
> >                   from Global Scale Tech.
> >         - Added driver for integrated RTC. (thx GST!)
> >         - Added support for displaying CPU frequencies at boot. (thx
> >           GST!)
> >         - Adjust USB timeout to handle dreamplug EHCI chipset.
> >         - Cleaned up MPP registers based on Global Scale code. (thx
> >           GST!)
> >         - broke out MACH_TYPE_DREAMPLUG changes since it's going to be a
> >           while until the Linux arm tree gets sorted and accepts new
> >           boards again.  Since all Dreamplugs currently on the market
> >           set r1 to MACH_TYPE_GURUPLUG, this allows the board to be
> >           added to u-boot while waiting for Linux mainline.  Once it's
> >           in Linux mainline, then the last patch can be integrated to
> > use
> >           MACH_TYPE_DREAMPLUG.
> 
> Please kindly repost with changelog.

Will do.

> >
> > > >  MAINTAINERS                          |    4 +
> > > >  MAKEALL                              |    1 +
> > > >  board/Marvell/dreamplug/Makefile     |   54 +++++++++++
> > > >  board/Marvell/dreamplug/dreamplug.c  |  157
> > > > ++++++++++++++++++++++++++++++++
> > > >  board/Marvell/dreamplug/dreamplug.h  |   42 +++++++++
> > > >  board/Marvell/dreamplug/kwbimage.cfg |  163
> > > > ++++++++++++++++++++++++++++++++++
> > > >  boards.cfg                           |    1 +
> > > >  include/configs/dreamplug.h          |  138
> > > > ++++++++++++++++++++++++++++
> > > >  8 files changed, 560 insertions(+), 0 deletions(-)
> > > >  create mode 100644 board/Marvell/dreamplug/Makefile
> > > >  create mode 100644 board/Marvell/dreamplug/dreamplug.c
> > > >  create mode 100644 board/Marvell/dreamplug/dreamplug.h
> > > >  create mode 100644 board/Marvell/dreamplug/kwbimage.cfg
> > > >  create mode 100644 include/configs/dreamplug.h
> > > >
> > > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > > index 2bba7b4..9affbea 100644
> > > > --- a/MAINTAINERS
> > > > +++ b/MAINTAINERS
> > > > @@ -70,6 +70,10 @@ Conn Clark <clark at esteem.com>
> > > >
> > > >       ESTEEM192E      MPC8xx
> > > >
> > > > +Jason Cooper <u-boot at lakedaemon.net>
> > > > +
> > > > +     dreamplug       ARM926EJS (Kirkwood SoC)
> > > > +
> > > >  Joe D'Abbraccio <ljd015 at freescale.com>
> > > >
> > > >       MPC837xERDB     MPC837x
> > > > diff --git a/MAKEALL b/MAKEALL
> > > > index 51db13e..55a122f 100755
> > > > --- a/MAKEALL
> > > > +++ b/MAKEALL
> > > > @@ -335,6 +335,7 @@ LIST_ARM9="                       \
> > > >       cp966                   \
> > > >       da830evm                \
> > > >       da850evm                \
> > > > +     dreamplug               \
> > > >       edb9301                 \
> > > >       edb9302                 \
> > > >       edb9302a                \
> > > > diff --git a/board/Marvell/dreamplug/Makefile
> > > > b/board/Marvell/dreamplug/Makefile
> > > > new file mode 100644
> > > > index 0000000..9ee5406
> > > > --- /dev/null
> > > > +++ b/board/Marvell/dreamplug/Makefile
> > > > @@ -0,0 +1,54 @@
> > > > +#
> > > > +# (C) Copyright 2011
> > > > +# Jason Cooper <u-boot at lakedaemon.net>
> > > > +#
> > > > +# Based on work by:
> > > > +# Marvell Semiconductor <www.marvell.com>
> > > > +# Written-by: Siddarth Gore <gores at marvell.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., 51 Franklin Street, Fifth Floor, Boston,
> > > > +# MA 02110-1301 USA
> > > > +#
> > > > +
> > > > +include $(TOPDIR)/config.mk
> > > > +
> > > > +LIB  = $(obj)lib$(BOARD).o
> > > > +
> > > > +COBJS        := dreamplug.o
> > > > +
> > > > +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> > > > +OBJS := $(addprefix $(obj),$(COBJS))
> > > > +SOBJS        := $(addprefix $(obj),$(SOBJS))
> > > > +
> > > > +$(LIB):      $(obj).depend $(OBJS) $(SOBJS)
> > > > +     $(call cmd_link_o_target, $(OBJS) $(SOBJS))
> > > > +
> > > > +clean:
> > > > +     rm -f $(SOBJS) $(OBJS)
> > > > +
> > > > +distclean:   clean
> > > > +     rm -f $(LIB) core *.bak .depend
> > > > +
> > > >
> > +#######################################################################
> > > > ##
> > > > +
> > > > +# defines $(obj).depend target
> > > > +include $(SRCTREE)/rules.mk
> > > > +
> > > > +sinclude $(obj).depend
> > > > +
> > > >
> > +#######################################################################
> > > > ##
> > > > diff --git a/board/Marvell/dreamplug/dreamplug.c
> > > > b/board/Marvell/dreamplug/dreamplug.c
> > > > new file mode 100644
> > > > index 0000000..cdc094a
> > > > --- /dev/null
> > > > +++ b/board/Marvell/dreamplug/dreamplug.c
> > > > @@ -0,0 +1,157 @@
> > > > +/*
> > > > + * (C) Copyright 2011
> > > > + * Jason Cooper <u-boot at lakedaemon.net>
> > > > + *
> > > > + * Based on work by:
> > > > + * Marvell Semiconductor <www.marvell.com>
> > > > + * Written-by: Siddarth Gore <gores at marvell.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., 51 Franklin Street, Fifth Floor, Boston,
> > > > + * MA 02110-1301 USA
> > > > + */
> > > > +
> > > > +#include <common.h>
> > > > +#include <miiphy.h>
> > > > +#include <asm/arch/kirkwood.h>
> > > > +#include <asm/arch/mpp.h>
> > > > +#include "dreamplug.h"
> > > > +
> > > > +DECLARE_GLOBAL_DATA_PTR;
> > > > +
> > > > +int board_early_init_f(void)
> > > > +{
> > > > +     /*
> > > > +      * default gpio configuration
> > > > +      * There are maximum 64 gpios controlled through 2 sets of
> > registers
> > > > +      * the  below configuration configures mainly initial LED
> > status
> > > > +      */
> > > > +     kw_config_gpio(DREAMPLUG_OE_VAL_LOW,
> > > > +                     DREAMPLUG_OE_VAL_HIGH,
> > > > +                     DREAMPLUG_OE_LOW, DREAMPLUG_OE_HIGH);
> > > > +
> > > > +     /* Multi-Purpose Pins Functionality configuration */
> > > > +     u32 kwmpp_config[] = {
> > > > +             MPP0_SPI_SCn,           /* SPI Flash */
> > > > +             MPP1_SPI_MOSI,
> > > > +             MPP2_SPI_SCK,
> > > > +             MPP3_SPI_MISO,
> > > > +             MPP4_NF_IO6,
> > > > +             MPP5_NF_IO7,
> > > > +             MPP6_SYSRST_OUTn,
> > > > +             MPP7_GPO,
> > > > +             MPP8_TW_SDA,
> > > > +             MPP9_TW_SCK,
> > > > +             MPP10_UART0_TXD,        /* Serial */
> > > > +             MPP11_UART0_RXD,
> > > > +             MPP12_SD_CLK,           /* SDIO Slot */
> > > > +             MPP13_SD_CMD,
> > > > +             MPP14_SD_D0,
> > > > +             MPP15_SD_D1,
> > > > +             MPP16_SD_D2,
> > > > +             MPP17_SD_D3,
> > > > +             MPP18_NF_IO0,
> > > > +             MPP19_NF_IO1,
> > > > +             MPP20_GE1_0,            /* Gigabit Ethernet */
> > > > +             MPP21_GE1_1,
> > > > +             MPP22_GE1_2,
> > > > +             MPP23_GE1_3,
> > > > +             MPP24_GE1_4,
> > > > +             MPP25_GE1_5,
> > > > +             MPP26_GE1_6,
> > > > +             MPP27_GE1_7,
> > > > +             MPP28_GE1_8,
> > > > +             MPP29_GE1_9,
> > > > +             MPP30_GE1_10,
> > > > +             MPP31_GE1_11,
> > > > +             MPP32_GE1_12,
> > > > +             MPP33_GE1_13,
> > > > +             MPP34_GE1_14,
> > > > +             MPP35_GE1_15,
> > > > +             MPP36_GPIO,
> > > > +             MPP37_GPIO,
> > > > +             MPP38_GPIO,
> > > > +             MPP39_GPIO,
> > > > +             MPP40_TDM_SPI_SCK,
> > > > +             MPP41_TDM_SPI_MISO,
> > > > +             MPP42_TDM_SPI_MOSI,
> > > > +             MPP43_GPIO,
> > > > +             MPP44_GPIO,
> > > > +             MPP45_GPIO,
> > > > +             MPP46_GPIO,             /* Wifi AP LED */
> > > > +             MPP47_GPIO,
> > > > +             MPP48_GPIO,             /* Wifi LED */
> > >
> > > It is better if you can comment about rest other GPIOSs with their
> > > assigned functionality.
> >
> > I filled in what I was comfortable labeling, anything else would be a
> > guess on my part.  This is a standard kirkwood configuration except for
> > pins 0-3 and the LEDS (46,48).  Should I add a comment to the same
> > effect?
> 
> My comment was for MPPXX_GPIOs, for rest other macros are enough to explain.

Ahh, The Sheevaplug and the Guruplug had 7 GPIO pins exported to a
header on the pcb.  I haven't taken apart the dreamplug, but would
assume it's the same.  Especially since the Global Scale code didn't
change it.

MPP47 and MPP49 were LED pins on previous *plugs and appear not to be
used in the dreamplug.

I'll locate the header on the pcb and make a comment in the next
version.  If they are broken out, it would be nice to use the (proposed)
gpio cmd on them from within uboot.
 
> > > > +             MPP49_GPIO,
> > > > +             0
> > > > +     };
> > > > +     kirkwood_mpp_conf(kwmpp_config);
> > > > +     return 0;
> > > > +}
> > > > +
> > > > +int board_init(void)
> > > > +{
> > > > +     /*
> > > > +      * arch number of board
> > > > +      * XXX: change to MACH_TYPE_DREAMPLUG once in Linux mainline.
> > > > +      */
> > > > +     gd->bd->bi_arch_number = MACH_TYPE_GURUPLUG;
> > >
> > > I think this board should have some delta to guruplug? I think you
> > > should have different machine ID here.
> >
> > See added changelog and patch 5 in the series.
> >
> > > BTW: what is delta w.r.to guruplug?
> >
> > Just 2MB SPI flash instead of 512MB NAND flash. It grabs the
> > kernel/initrd from an internal microSD card attached via USB, instead
> > of NAND flash.  OS is on the same microSD card.
> >
> > The dreamplug kernel shipped with the device doesn't even see the SPI
> > flash.  I think it may be the exact same as the guruplug kernel,
> > although I haven't done a rigorous check.  It's built for
> > MACH_TYPE_GURUPLUG, though.
> >
> > It has some bells and whistles, like audio in/out, SPDIF out.  Nothing
> > else really relevant to u-boot.
> >
> > > > +
> > > > +     /* adress of boot parameters */
> > > > +     gd->bd->bi_boot_params = kw_sdram_bar(0) + 0x100;
> > > > +
> > > > +     return 0;
> > > > +}
> > > > +
> > > > +#ifdef CONFIG_RESET_PHY_R
> > > > +void mv_phy_88e1121_init(char *name)
> > > > +{
> > > > +     u16 reg;
> > > > +     u16 devadr;
> > > > +
> > > > +     if (miiphy_set_current_dev(name))
> > > > +             return;
> > > > +
> > > > +     /* command to read PHY dev address */
> > > > +     if (miiphy_read(name, 0xEE, 0xEE, (u16 *) &devadr)) {
> > > > +             printf("Err..%s could not read PHY dev address\n",
> > > > +                     __FUNCTION__);
> > > > +             return;
> > > > +     }
> > > > +
> > > > +     /*
> > > > +      * Enable RGMII delay on Tx and Rx for CPU port
> > > > +      * Ref: sec 4.7.2 of chip datasheet
> > > > +      */
> > > > +     miiphy_write(name, devadr, MV88E1121_PGADR_REG, 2);
> > > > +     miiphy_read(name, devadr, MV88E1121_MAC_CTRL2_REG, &reg);
> > > > +     reg |= (MV88E1121_RGMII_RXTM_CTRL |
> > MV88E1121_RGMII_TXTM_CTRL);
> > > > +     miiphy_write(name, devadr, MV88E1121_MAC_CTRL2_REG, reg);
> > > > +     miiphy_write(name, devadr, MV88E1121_PGADR_REG, 0);
> > > > +
> > > > +     /* reset the phy */
> > > > +     miiphy_reset(name, devadr);
> > > > +
> > > > +     printf("88E1116 Initialized on %s\n", name);
> > >
> > > Function name and print info are mismatching.
> >
> > Gah!  good catch.  I just copied that printf over from the GST source
> > code.  I'll fix it up.
> >
> > > > +}
> > > > +
> > > > +void reset_phy(void)
> > > > +{
> > > > +     /* configure and initialize both PHY's */
> > > > +     mv_phy_88e1121_init("egiga0");
> > > > +     mv_phy_88e1121_init("egiga1");
> > > > +}
> > > > +#endif /* CONFIG_RESET_PHY_R */
> > > > diff --git a/board/Marvell/dreamplug/dreamplug.h
> > > > b/board/Marvell/dreamplug/dreamplug.h
> > > > new file mode 100644
> > > > index 0000000..21bf644
> > > > --- /dev/null
> > > > +++ b/board/Marvell/dreamplug/dreamplug.h
> > > > @@ -0,0 +1,42 @@
> > > > +/*
> > > > + * (C) Copyright 2011
> > > > + * Jason Cooper <u-boot at lakedaemon.net>
> > > > + *
> > > > + * Based on work by:
> > > > + * Marvell Semiconductor <www.marvell.com>
> > > > + * Written-by: Siddarth Gore <gores at marvell.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., 51 Franklin Street, Fifth Floor, Boston,
> > > > + * MA 02110-1301 USA
> > > > + */
> > > > +
> > > > +#ifndef __DREAMPLUG_H
> > > > +#define __DREAMPLUG_H
> > > > +
> > > > +#define DREAMPLUG_OE_LOW     (~(0))
> > > > +#define DREAMPLUG_OE_HIGH    (~(0))
> > > > +#define DREAMPLUG_OE_VAL_LOW 0
> > > > +#define DREAMPLUG_OE_VAL_HIGH        (0xf << 16) /* 4 LED Pins high
> > */
> > > > +
> > > > +/* PHY related */
> > > > +#define MV88E1121_MAC_CTRL2_REG              21
> > > > +#define MV88E1121_PGADR_REG          22
> > > > +#define MV88E1121_RGMII_TXTM_CTRL    (1 << 4)
> > > > +#define MV88E1121_RGMII_RXTM_CTRL    (1 << 5)
> > > > +
> > > > +#endif /* __DREAMPLUG_H */
> > > > diff --git a/board/Marvell/dreamplug/kwbimage.cfg
> > > > b/board/Marvell/dreamplug/kwbimage.cfg
> > >
> > > I hope this is not same as guruplug (since you are using same machine-
> > id)?
> >
> > Very similar, see above.
> 
> We can overrule this at this and can go ahead having dreamplug as new
> board support since we have valid machin_id for this board.

Okay, I'll go dig up the patch for changing mach-types.h and include it
in the next revision.

thx,

Jason.


More information about the U-Boot mailing list