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

Prafulla Wadaskar prafulla at marvell.com
Thu Jul 28 21:37:32 CEST 2011



> -----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.

>
> > >  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.

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

Regards..
Prafulla . .


More information about the U-Boot mailing list