[U-Boot-Users] [PATCH 1/1] avr32: add support for EarthLCD Favr-32 board

Ben Warren biggerbadderben at gmail.com
Tue Jul 29 16:32:01 CEST 2008


Hello,

On Tue, Jul 29, 2008 at 3:27 AM, Hans-Christian Egtvedt
<hans-christian.egtvedt at atmel.com> wrote:
> This patch adds support for the Favr-32 board made by EarthLCD.
>
> This kit, which is also called ezLCD-101 when running with EarthLCD firmware,
> has a 10.4" touch screen LCD panel, 16 MB 32-bit SDRAM, 8 MB parallel flash,
> Ethernet, audio out, USB device, SD-card slot, USART and various other
> connectors for cennecting stuff to SPI, I2C, GPIO, etc.
>
> Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt at atmel.com>
> ---
>  MAINTAINERS                                  |    4 +
>  MAKEALL                                      |    1 +
>  Makefile                                     |    3 +
>  board/earthlcd/favr-32-ezkit/Makefile        |   42 +++++
>  board/earthlcd/favr-32-ezkit/config.mk       |    4 +
>  board/earthlcd/favr-32-ezkit/eth.c           |   33 ++++
>  board/earthlcd/favr-32-ezkit/favr-32-ezkit.c |   87 ++++++++++
>  board/earthlcd/favr-32-ezkit/flash.c         |  230 ++++++++++++++++++++++++++
>  board/earthlcd/favr-32-ezkit/u-boot.lds      |   71 ++++++++
>  include/configs/favr-32-ezkit.h              |  200 ++++++++++++++++++++++
>  net/eth.c                                    |    3 +
>  11 files changed, 678 insertions(+), 0 deletions(-)
>  create mode 100644 board/earthlcd/favr-32-ezkit/Makefile
>  create mode 100644 board/earthlcd/favr-32-ezkit/config.mk
>  create mode 100644 board/earthlcd/favr-32-ezkit/eth.c
>  create mode 100644 board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
>  create mode 100644 board/earthlcd/favr-32-ezkit/flash.c
>  create mode 100644 board/earthlcd/favr-32-ezkit/u-boot.lds
>  create mode 100644 include/configs/favr-32-ezkit.h
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index a3d70b1..e043913 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -709,6 +709,10 @@ Haavard Skinnemoen <hskinnemoen at atmel.com>
>        ATSTK1006               AT32AP7000
>        ATNGW100                AT32AP7000
>
> +Hans-Christian Egtvedt <hans-christian.egtvedt at atmel.com>
> +
> +       FAVR-32-EZKIT           AT32AP7000
> +
>  #########################################################################
>  # SuperH Systems:                                                      #
>  #                                                                      #
> diff --git a/MAKEALL b/MAKEALL
> index 32caab7..c2bb2a7 100755
> --- a/MAKEALL
> +++ b/MAKEALL
> @@ -723,6 +723,7 @@ LIST_avr32="                \
>        atstk1004       \
>        atstk1006       \
>        atngw100        \
> +       favr-32-ezkit   \
>  "
>
>  #########################################################################
> diff --git a/Makefile b/Makefile
> index 8bfc891..15d7f37 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -2902,6 +2902,9 @@ atstk1006_config  :       unconfig
>  atngw100_config        :       unconfig
>        @$(MKCONFIG) $(@:_config=) avr32 at32ap atngw100 atmel at32ap700x
>
> +favr-32-ezkit_config   :       unconfig
> +       @$(MKCONFIG) $(@:_config=) avr32 at32ap favr-32-ezkit earthlcd at32ap700x
> +
>  #########################################################################
>  #########################################################################
>  #########################################################################
> diff --git a/board/earthlcd/favr-32-ezkit/Makefile b/board/earthlcd/favr-32-ezkit/Makefile
> new file mode 100644
> index 0000000..a09ad4d
> --- /dev/null
> +++ b/board/earthlcd/favr-32-ezkit/Makefile
> @@ -0,0 +1,42 @@
> +#
> +# (C) Copyright 2001-2006
> +# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> +#
> +# Copyright (C) 2008 Atmel Corporation
> +#
> +# 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
> +
> +LIB    := $(obj)lib$(BOARD).a
> +
> +COBJS  := $(BOARD).o flash.o eth.o
> +
> +SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> +OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
> +
> +$(LIB): $(obj).depend $(OBJS)
> +       $(AR) $(ARFLAGS) $@ $(OBJS)
> +
> +#########################################################################
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/board/earthlcd/favr-32-ezkit/config.mk b/board/earthlcd/favr-32-ezkit/config.mk
> new file mode 100644
> index 0000000..2337d62
> --- /dev/null
> +++ b/board/earthlcd/favr-32-ezkit/config.mk
> @@ -0,0 +1,4 @@
> +PLATFORM_RELFLAGS      += -ffunction-sections -fdata-sections
> +PLATFORM_LDFLAGS       += --gc-sections
> +TEXT_BASE              = 0x00000000
> +LDSCRIPT               = $(obj)board/earthlcd/favr-32-ezkit/u-boot.lds
> diff --git a/board/earthlcd/favr-32-ezkit/eth.c b/board/earthlcd/favr-32-ezkit/eth.c
> new file mode 100644
> index 0000000..2029842
> --- /dev/null
> +++ b/board/earthlcd/favr-32-ezkit/eth.c
> @@ -0,0 +1,33 @@
> +/*
> + * Copyright (C) 2008 Atmel Corporation
> + *
> + * Ethernet initialization for the Favr-32 LCD kit.
> + *
> + * 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/arch/memory-map.h>
> +
> +extern int macb_eth_initialize(int id, void *regs, unsigned int phy_addr);
> +
> +#if defined(CONFIG_MACB) && defined(CONFIG_CMD_NET)
> +void favr32_ezkit_eth_initialize(bd_t *bi)
> +{
> +       macb_eth_initialize(0, (void *)MACB0_BASE, bi->bi_phy_id[0]);
> +}
> +#endif

Please do this instead:

extern int macb_eth_initialize(int id, void *regs, unsigned int phy_addr);

#if defined(CONFIG_MACB) && defined(CONFIG_CMD_NET)
int board_eth_init(bd_t *bi)
{
       return macb_eth_initialize(0, (void *)MACB0_BASE, bi->bi_phy_id[0]);
}
#endif

And move it to
/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c

> diff --git a/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c b/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
> new file mode 100644
> index 0000000..8f11dd9
> --- /dev/null
> +++ b/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
> @@ -0,0 +1,87 @@
> +/*
> + * Copyright (C) 2008 Atmel Corporation
> + *
> + * 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/sdram.h>
> +#include <asm/arch/clk.h>
> +#include <asm/arch/gpio.h>
> +#include <asm/arch/hmatrix.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +static const struct sdram_config sdram_config = {
> +       /* MT48LC4M32B2P-6 (16 MB) */
> +       .data_bits      = SDRAM_DATA_32BIT,
> +       .row_bits       = 12,
> +       .col_bits       = 8,
> +       .bank_bits      = 2,
> +       .cas            = 3,
> +       .twr            = 2,
> +       .trc            = 7,
> +       .trp            = 2,
> +       .trcd           = 2,
> +       .tras           = 5,
> +       .txsr           = 5,
> +       /* 15.6 us */
> +       .refresh_period = (156 * (SDRAMC_BUS_HZ / 1000)) / 10000,
> +};
> +
> +int board_early_init_f(void)
> +{
> +       /* Enable SDRAM in the EBI mux */
> +       hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
> +
> +       gpio_enable_ebi();
> +       gpio_enable_usart3();
> +#if defined(CONFIG_MACB)
> +       gpio_enable_macb0();
> +#endif
> +#if defined(CONFIG_MMC)
> +       gpio_enable_mmci();
> +#endif
> +
> +       return 0;
> +}
> +
> +phys_size_t initdram(int board_type)
> +{
> +       unsigned long expected_size;
> +       unsigned long actual_size;
> +       void *sdram_base;
> +
> +       sdram_base = map_physmem(EBI_SDRAM_BASE, EBI_SDRAM_SIZE, MAP_NOCACHE);
> +
> +       expected_size = sdram_init(sdram_base, &sdram_config);
> +       actual_size = get_ram_size(sdram_base, expected_size);
> +
> +       unmap_physmem(sdram_base, EBI_SDRAM_SIZE);
> +
> +       if (expected_size != actual_size)
> +               printf("Warning: Only %u of %u MiB SDRAM is working\n",
> +                               actual_size >> 20, expected_size >> 20);
> +
> +       return actual_size;
> +}
> +
> +void board_init_info(void)
> +{
> +       gd->bd->bi_phy_id[0] = 0x01;
> +}
> diff --git a/board/earthlcd/favr-32-ezkit/flash.c b/board/earthlcd/favr-32-ezkit/flash.c

Is this flash CFI-compliant?  If so, please use the CFI driver.
Otherwise, ignore me.

<snip>

> +#endif /* __CONFIG_H */
> diff --git a/net/eth.c b/net/eth.c
> index 21d1496..6e81687 100644
> --- a/net/eth.c
> +++ b/net/eth.c
> @@ -282,6 +282,9 @@ int eth_initialize(bd_t *bis)
>  #if defined(CONFIG_ATNGW100)
>        atngw100_eth_initialize(bis);
>  #endif
> +#if defined(CONFIG_FAVR32_EZKIT)
> +       favr32_ezkit_eth_initialize(bis);
> +#endif
>  #if defined(CONFIG_MCFFEC)
>        mcffec_initialize(bis);
>  #endif

Touching this file is unnecessary if you change to board_eth_init() as
mentioned earlier.

thanks,
Ben




More information about the U-Boot mailing list