public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v3 0/6] arm: mvf600: Add Freescale Vybrid MVF600 CPU and MVF600TWR board support
@ 2013-05-21  9:02 Alison Wang
  2013-05-21  9:02 ` [U-Boot] [PATCH v3 1/6] arm: mvf600: Add Vybrid MVF600 CPU support Alison Wang
                   ` (6 more replies)
  0 siblings, 7 replies; 30+ messages in thread
From: Alison Wang @ 2013-05-21  9:02 UTC (permalink / raw)
  To: u-boot

This series contain the support for Freescale Vybrid MVF600 CPU and MVF600TWR board.

Vybird devices are built on an asymmetrical-multiprocessing architecture
using ARM cores. The families in the Vybrid portfolio span entry-level,
single core Cortex-A class SoCs all the way to dual heterogeneous core SoCs
with multiple communication and connectivity options.

Part of the Vybrid platform, MVF600 is a dual-core eMPU combining the ARM
Cortex A5 and Cortex M4 cores.

MVF600 shares some IPs with i.MX family, such as FEC,ESDHC,WATCHDOG,I2C,ASRC and ESAI.
MVF600 also shares some IPs with ColdFire family, such as eDMA and DSPI.
MVF600 still has its own IPs, such as PIT,SAI,UART,QSPI and DCU.

More documents for this soc can be found at:
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=VF6xx&fsrch=1&sr=5
http://www.freescale.com/webapp/sps/site/homepage.jsp?code=VYBRID

The u-boot runs on Cortex A5 core.

Changes in v3:
- Rename the common functions and enums
- Move the structure definitions to imx-regs.h
- Define PAD_CTL_PUE with PKE enabled
- Remove the changes for FEC_RCNTRL_RGMII / FEC_RCNTRL_RMII / FEC_RCNTRL_MII_MODE
bits, as they are already set in fec_reg_setup()
- Replace BOOT_FROM by BOOT_OFFSET
- Enable CONFIG_OF_LIBFDT option
- Add useful define instead of raw number
- Use clrsetbits_le32 to set the single bits
- Move setup_iomux_enet() to board_early_init_f and remove board_eth_init()
- Remove redundant define
- Move CONFIG_IOMUX_SHARE_CONF_REG to imx-regs.h

Changes in v2:
- Remove vybrid-common directory
- Rename directory name 'vybrid' to 'mvf600'
- Add generic.c file
- Rewrite get_reset_cause() to make it readable
- Remove reset_cpu(), and use the function in imx_watchdog.c
- Rewrite timer.c file
- Use vybrid_get_clock(VYBRID_UART_CLK) instead of vybrid_get_uartclk()
- Remove lowlevel_init.S, and add clock_init() in board_early_init_f()
- Remove useless CONFIG_SYS_ defines
- Move CONFIG_MACH_TYPE to board configuration file
- Define C structures and access C structures to set/read registers
- Remove useless errata
- Remove useless macros
- Rename directory 'arch-vybrid' to 'arch-mvf600'
- Use common iomux-v3 code
- Use common FEC driver fec_mxc.c
- Add watchdog support
- Add an entry to MAINTAINERS file
- Rename directory name 'vybird' to 'mvf600twr'
- Use standard method to set gd->ram_size
- Rewrite board_mmc_getcd() function
- Remove useless undef
- Remove hardcoded IP addresses and MAC addresses
- Move CONFIG_MACH_TYPE to board configuration file

----------------------------------------------------------------
Alison Wang (6):
      arm: mvf600: Add Vybrid MVF600 CPU support
      arm: mvf600: Add IOMUX support for Vybrid MVF600
      net: fec_mxc: Add support for Vybrid MVF600
      arm: mvf600: Add watchdog support for Vybrid MVF600
      arm: mvf600: Add uart support for Vybrid MVF600
      arm: mvf600: Add basic support for Vybrid MVF600TWR board

 MAINTAINERS                                 |   4 ++
 Makefile                                    |   2 +-
 arch/arm/cpu/armv7/mvf600/Makefile          |  42 +++++++++++
 arch/arm/cpu/armv7/mvf600/generic.c         | 324 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 arch/arm/cpu/armv7/mvf600/timer.c           | 103 ++++++++++++++++++++++++++
 arch/arm/imx-common/Makefile                |   2 +-
 arch/arm/imx-common/iomux-v3.c              |   6 ++
 arch/arm/include/asm/arch-mvf600/clock.h    |  39 ++++++++++
 arch/arm/include/asm/arch-mvf600/crm_regs.h | 225 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 arch/arm/include/asm/arch-mvf600/imx-regs.h | 411 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 arch/arm/include/asm/arch-mvf600/mvf_pins.h |  92 ++++++++++++++++++++++++
 arch/arm/include/asm/imx-common/iomux-v3.h  |  18 +++++
 board/freescale/mvf600twr/Makefile          |  39 ++++++++++
 board/freescale/mvf600twr/imximage.cfg      |  33 +++++++++
 board/freescale/mvf600twr/mvf600twr.c       | 413 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 boards.cfg                                  |   1 +
 drivers/net/fec_mxc.c                       |   4 +-
 drivers/serial/Makefile                     |   1 +
 drivers/serial/serial_lpuart.c              | 132 ++++++++++++++++++++++++++++++++++
 drivers/watchdog/Makefile                   |   2 +-
 include/configs/mvf600twr.h                 | 140 ++++++++++++++++++++++++++++++++++++
 21 files changed, 2027 insertions(+), 6 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/mvf600/Makefile
 create mode 100644 arch/arm/cpu/armv7/mvf600/generic.c
 create mode 100644 arch/arm/cpu/armv7/mvf600/timer.c
 create mode 100644 arch/arm/include/asm/arch-mvf600/clock.h
 create mode 100644 arch/arm/include/asm/arch-mvf600/crm_regs.h
 create mode 100644 arch/arm/include/asm/arch-mvf600/imx-regs.h
 create mode 100644 arch/arm/include/asm/arch-mvf600/mvf_pins.h
 create mode 100644 board/freescale/mvf600twr/Makefile
 create mode 100644 board/freescale/mvf600twr/imximage.cfg
 create mode 100644 board/freescale/mvf600twr/mvf600twr.c
 create mode 100644 drivers/serial/serial_lpuart.c
 create mode 100644 include/configs/mvf600twr.h

^ permalink raw reply	[flat|nested] 30+ messages in thread
* [U-Boot] [PATCH v3 6/6] arm: mvf600: Add basic support for Vybrid MVF600TWR board
@ 2013-05-22  5:28 Wang Huan-B18965
  0 siblings, 0 replies; 30+ messages in thread
From: Wang Huan-B18965 @ 2013-05-22  5:28 UTC (permalink / raw)
  To: u-boot

Hi, Benoit,

On Tuesday, May 21, 2013 11:03:01 AM, Alison Wang wrote:
> MVF600TWR is a board based on Vybrid MVF600 SoC.
>
> This patch adds basic support for Vybrid MVF600TWR board.
>
> Signed-off-by: Alison Wang <b18965@freescale.com>
> Signed-off-by: Jason Jin <Jason.jin@freescale.com>
> Signed-off-by: TsiChung Liew <tsicliew@gmail.com>

[...]

> diff --git a/include/configs/mvf600twr.h b/include/configs/mvf600twr.h
> new file mode 100644
> index 0000000..1cfb9f6
> --- /dev/null
> +++ b/include/configs/mvf600twr.h
> @@ -0,0 +1,140 @@
> +/*
> + * Copyright 2013 Freescale Semiconductor, Inc.
> + *
> + * Configuration settings for the Freescale Vybrid mvf600twr board.
> + *
> + * 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/arch/imx-regs.h>
> +#include <config_cmd_default.h>
> +
> +#define CONFIG_MVF600
> +

[...]

> +#define CONFIG_CMD_PING
> +#define CONFIG_CMD_DHCP
> +#define CONFIG_CMD_MII
> +#define CONFIG_CMD_NET
> +#define CONFIG_FEC_MXC
> +#define CONFIG_MII
> +#define IMX_FEC_BASE                 ENET_BASE_ADDR
> +#define CONFIG_FEC_XCV_TYPE          RMII
> +#define CONFIG_ETHPRIME                      "FEC"

You don't need to define this one with only 1 Ethernet interface defined. But
isn't the MVF600 a dual-Ethernet SoC?
[Alison Wang] Yes, MVF600 is a dual-Ethernet SoC. I will change it to "FEC0".

> +#define CONFIG_FEC_MXC_PHYADDR          0
> +#define CONFIG_PHYLIB
> +#define CONFIG_PHY_MICREL
> +
> +#define CONFIG_BOOTDELAY             3
> +
> +#define CONFIG_SYS_TEXT_BASE         0x3f008000
> +
> +/* Miscellaneous configurable options */
> +#define CONFIG_SYS_LONGHELP          /* undef to save memory */
> +#define CONFIG_SYS_HUSH_PARSER               /* use "hush" command parser */
> +#define CONFIG_SYS_PROMPT_HUSH_PS2   "> "
> +#define CONFIG_SYS_PROMPT            "Vybrid U-Boot > "
> +#undef CONFIG_AUTO_COMPLETE
> +#define CONFIG_SYS_CBSIZE            256     /* Console I/O Buffer Size */
> +#define CONFIG_SYS_PBSIZE            \
> +                     (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
> +#define CONFIG_SYS_MAXARGS           16      /* max number of command args */
> +#define CONFIG_SYS_BARGSIZE          CONFIG_SYS_CBSIZE
> +
> +#define CONFIG_SYS_MEMTEST_START     0x80010000
> +#define CONFIG_SYS_MEMTEST_END               0x87C00000

You now have to #define CONFIG_CMD_MEMTEST for those to be useful.
[Alison Wang] OK. Thanks.

> +
> +#define CONFIG_SYS_LOAD_ADDR         0x80010000
> +
> +#define CONFIG_SYS_HZ                        1000
> +
> +/*
> + * Stack sizes
> + * The stack sizes are set up in start.S using the settings below
> + */
> +#define CONFIG_STACKSIZE             (128 * 1024)    /* regular stack */
> +
> +/* Physical memory map */
> +#define CONFIG_NR_DRAM_BANKS         1
> +#define PHYS_SDRAM                   (0x80000000)
> +#define PHYS_SDRAM_SIZE                      (128 * 1024 * 1024)
> +
> +#define CONFIG_SYS_SDRAM_BASE                PHYS_SDRAM
> +#define CONFIG_SYS_INIT_RAM_ADDR     IRAM_BASE_ADDR
> +#define CONFIG_SYS_INIT_RAM_SIZE     IRAM_SIZE
> +
> +#define CONFIG_SYS_INIT_SP_OFFSET \
> +     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
> +#define CONFIG_SYS_INIT_SP_ADDR \
> +     (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
> +
> +/* FLASH and environment organization */
> +#define CONFIG_SYS_NO_FLASH
> +
> +#define CONFIG_ENV_SIZE                      (8 * 1024)
> +#define CONFIG_ENV_IS_IN_MMC
> +
> +#define CONFIG_ENV_OFFSET            (12 * 64 * 1024)
> +#define CONFIG_SYS_MMC_ENV_DEV               0
> +
> +#define CONFIG_OF_LIBFDT
> +#define CONFIG_CMD_BOOTZ
> +
> +#endif
> --
> 1.8.0

Best regards,
Alison Wang

^ permalink raw reply	[flat|nested] 30+ messages in thread
* [U-Boot] [PATCH v3 6/6] arm: mvf600: Add basic support for Vybrid MVF600TWR board
@ 2013-05-22  8:23 Wang Huan-B18965
  2013-05-22 16:43 ` Benoît Thébaudeau
  0 siblings, 1 reply; 30+ messages in thread
From: Wang Huan-B18965 @ 2013-05-22  8:23 UTC (permalink / raw)
  To: u-boot

Hi, Benoit,

> 
> On Tuesday, May 21, 2013 11:03:01 AM, Alison Wang wrote:
> > MVF600TWR is a board based on Vybrid MVF600 SoC.
> >
> > This patch adds basic support for Vybrid MVF600TWR board.
> >
> > Signed-off-by: Alison Wang <b18965@freescale.com>
> > Signed-off-by: Jason Jin <Jason.jin@freescale.com>
> > Signed-off-by: TsiChung Liew <tsicliew@gmail.com>
> 
> [...]
> 
> > diff --git a/board/freescale/mvf600twr/mvf600twr.c
> > b/board/freescale/mvf600twr/mvf600twr.c
> > new file mode 100644
> > index 0000000..71ee12b
> > --- /dev/null
> > +++ b/board/freescale/mvf600twr/mvf600twr.c
> > @@ -0,0 +1,413 @@
> > +/*
> > + * Copyright 2013 Freescale Semiconductor, Inc.
> > + *
> > + * 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/imx-regs.h>
> > +#include <asm/arch/mvf_pins.h>
> > +#include <asm/arch/crm_regs.h>
> > +#include <asm/arch/clock.h>
> > +#include <mmc.h>
> > +#include <fsl_esdhc.h>
> > +#include <miiphy.h>
> > +#include <netdev.h>
> > +
> > +DECLARE_GLOBAL_DATA_PTR;
> > +
> > +#define UART_PAD_CTRL	(PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED
> | \
> > +			PAD_CTL_DSE_25ohm | PAD_CTL_OBE_IBE_ENABLE)
> > +
> > +#define ESDHC_PAD_CTRL	(PAD_CTL_PUE | PAD_CTL_PUS_100K_UP | \
> > +			PAD_CTL_SPEED_HIGH | PAD_CTL_DSE_20ohm | \
> > +			PAD_CTL_OBE_IBE_ENABLE)
> 
> With the changes that I have suggested in my review of your IOMUX patch,
> ESDHC_PAD_CTRL could be simplified by removing PAD_CTL_PUE.
> 
> And without those changes, UART_PAD_CTRL and ENET_PAD_CTRL in your
> current code set pull values that are actually unused (unless the
> corresponding PKE/PUE bits do not exist and default to pull in the pad
> control registers used with these definitions).
[Alison Wang] Agree.
> 
> > +
> > +#define ENET_PAD_CTRL	(PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_HIGH
> | \
> > +			PAD_CTL_DSE_50ohm | PAD_CTL_OBE_IBE_ENABLE)
> > +
> > +#define DDR_PAD_CTRL	PAD_CTL_DSE_25ohm
> 
> MUX_PAD_CTRL() could be added to the 4 pad control definitions above in
> order to avoid repeating it everywhere below. But using MUX_PAD_CTRL()
> relies on the fact that the pad control values in mvf_pins.h are all 0
> (which is the case, but this is dangerous if this is changed later), so
> a better approach could be to use NEW_PAD_CTRL(), e.g.:
>         NEW_PAD_CTRL(MVF600_PAD_DDR_A15__DDR_A_15, DDR_PAD_CTRL),
> instead of:
>         MVF600_PAD_DDR_A15__DDR_A_15 | MUX_PAD_CTRL(DDR_PAD_CTRL),
> 
> > +
[Alison Wang] I have a question about using NEW_PAD_CTRL(). If NEW_PAD_CTRL()
is used, should the pad control values for MVF600_PAD_DDR_A15__DDR_A_15 in mvf_pins.h
be the same as DDR_PAD_CTRL? I saw you didn't use the same value on other platforms,
how do you define it?

Best Regards,
Alison Wang

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2013-05-28  9:03 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-21  9:02 [U-Boot] [PATCH v3 0/6] arm: mvf600: Add Freescale Vybrid MVF600 CPU and MVF600TWR board support Alison Wang
2013-05-21  9:02 ` [U-Boot] [PATCH v3 1/6] arm: mvf600: Add Vybrid MVF600 CPU support Alison Wang
2013-05-21 13:48   ` Fabio Estevam
2013-05-22  2:59     ` Wang Huan-B18965
2013-05-21 16:57   ` Benoît Thébaudeau
2013-05-22  5:17     ` Wang Huan-B18965
2013-05-21 19:00   ` Benoît Thébaudeau
2013-05-22  5:30     ` Wang Huan-B18965
2013-05-21  9:02 ` [U-Boot] [PATCH v3 2/6] arm: mvf600: Add IOMUX support for Vybrid MVF600 Alison Wang
2013-05-21 17:10   ` Benoît Thébaudeau
2013-05-21  9:02 ` [U-Boot] [PATCH v3 3/6] net: fec_mxc: Add " Alison Wang
2013-05-21 17:15   ` Benoît Thébaudeau
2013-05-21  9:02 ` [U-Boot] [PATCH v3 4/6] arm: mvf600: Add watchdog " Alison Wang
2013-05-21  9:03 ` [U-Boot] [PATCH v3 5/6] arm: mvf600: Add uart " Alison Wang
2013-05-21  9:03 ` [U-Boot] [PATCH v3 6/6] arm: mvf600: Add basic support for Vybrid MVF600TWR board Alison Wang
2013-05-21 17:29   ` Benoît Thébaudeau
     [not found]     ` <81BA6E5E0BC2344391CABCEE22D1B6D8335B27@039-SN1MPN1-003.039d.mgd.msft.net>
2013-05-22 16:21       ` Benoît Thébaudeau
2013-05-23  5:44         ` Wang Huan-B18965
2013-05-21 19:19   ` Benoît Thébaudeau
2013-05-21 16:27 ` [U-Boot] [PATCH v3 0/6] arm: mvf600: Add Freescale Vybrid MVF600 CPU and MVF600TWR board support Benoît Thébaudeau
     [not found]   ` <81BA6E5E0BC2344391CABCEE22D1B6D8335A6C@039-SN1MPN1-003.039d.mgd.msft.net>
2013-05-23 17:09     ` Benoît Thébaudeau
2013-05-24  6:18       ` Wang Huan-B18965
2013-05-27  6:51         ` Stefano Babic
2013-05-28  8:51           ` Wang Huan-B18965
2013-05-28  9:03             ` Stefano Babic
2013-05-28  8:59         ` Wang Huan-B18965
  -- strict thread matches above, loose matches on Subject: below --
2013-05-22  5:28 [U-Boot] [PATCH v3 6/6] arm: mvf600: Add basic support for Vybrid MVF600TWR board Wang Huan-B18965
2013-05-22  8:23 Wang Huan-B18965
2013-05-22 16:43 ` Benoît Thébaudeau
2013-05-23  5:51   ` Wang Huan-B18965

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox