[U-Boot] [PATCH] add new board pm9g45
Tom
Tom.Rix at windriver.com
Sat Mar 20 20:10:37 CET 2010
Asen Dimov wrote:
> Hello everyone,
>
> here is the new board PM9G45 from Ronetix GmbH,
> based on at91sam9g45 MCU. It has 128MB DDR2 SDRAM, 256MB NAND,
> could be with or without DataFlash.
> The board is made as SODIMM200 module.
> For more info www.ronatix.at or info at ronetix.at.
>
> Regards,
> Asen
There are some errors on building with MAKEALL arm
These must be fixed
regressions from pm9g45.ERR
cpu.c:26:2: warning: #warning Your board is using legacy SoC access. Please update!
pm9g45.c: In function 'pm9g45_macb_hw_init':
pm9g45.c:112: warning: unused variable 'rstc'
pm9g45.c: In function 'lcd_show_board_info':
pm9g45.c:225: warning: unused variable 'dataflash_size'
Because this is a new board, it should follow the new at91 Soc access.
See doc/README.at91-soc
I also recommend running the linux kernel's checkpatch.pl program to
find formatting problems.
>
> Signed-off-by: Asen Dimov <dimov at ronetix.at>
> ---
> MAKEALL | 1 +
> Makefile | 4 +
> board/ronetix/pm9g45/Makefile | 54 +++
> .../at91sam9m10g45ek => ronetix/pm9g45}/config.mk | 0
> board/ronetix/pm9g45/pm9g45.c | 365 ++++++++++++++++++++
> include/configs/pm9g45.h | 246 +++++++++++++
> 6 files changed, 670 insertions(+), 0 deletions(-)
> create mode 100644 board/ronetix/pm9g45/Makefile
> copy board/{atmel/at91sam9m10g45ek => ronetix/pm9g45}/config.mk (100%)
> create mode 100644 board/ronetix/pm9g45/pm9g45.c
> create mode 100644 include/configs/pm9g45.h
>
> diff --git a/MAKEALL b/MAKEALL
> index beacb5f..ad591d5 100755
> --- a/MAKEALL
> +++ b/MAKEALL
> @@ -673,6 +673,7 @@ LIST_at91=" \
> otc570 \
> pm9261 \
> pm9263 \
> + pm9g45 \
> SBC35_A9G20 \
> TNY_A9260 \
> TNY_A9G20 \
> diff --git a/Makefile b/Makefile
> index d801e25..438580a 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -2882,6 +2882,10 @@ otc570_config : unconfig
> pm9263_config : unconfig
> @$(MKCONFIG) $(@:_config=) arm arm926ejs pm9263 ronetix at91
>
> +pm9g45_config : unconfig
> + @mkdir -p $(obj)include
> + @$(MKCONFIG) -a pm9g45 arm arm926ejs pm9g45 ronetix at91
> +
> SBC35_A9G20_NANDFLASH_config \
> SBC35_A9G20_EEPROM_config \
> SBC35_A9G20_config : unconfig
> diff --git a/board/ronetix/pm9g45/Makefile b/board/ronetix/pm9g45/Makefile
> new file mode 100644
> index 0000000..dd5b02e
> --- /dev/null
> +++ b/board/ronetix/pm9g45/Makefile
> @@ -0,0 +1,54 @@
> +#
> +# (C) Copyright 2003-2008
> +# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> +#
> +# (C) Copyright 2008
> +# Stelian Pop <stelian.pop at leadtechdesign.com>
> +# Lead Tech Design <www.leadtechdesign.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., 59 Temple Place, Suite 330, Boston,
> +# MA 02111-1307 USA
> +#
> +
> +include $(TOPDIR)/config.mk
> +
> +LIB = $(obj)lib$(BOARD).a
> +
> +COBJS-y += pm9g45.o
> +
> +SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
> +OBJS := $(addprefix $(obj),$(COBJS-y))
> +SOBJS := $(addprefix $(obj),$(SOBJS))
> +
> +$(LIB): $(obj).depend $(OBJS) $(SOBJS)
> + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
> +
> +clean:
> + rm -f $(SOBJS) $(OBJS)
> +
> +distclean: clean
> + rm -f $(LIB) core *.bak $(obj).depend
> +
> +#########################################################################
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/board/atmel/at91sam9m10g45ek/config.mk b/board/ronetix/pm9g45/config.mk
> similarity index 100%
> copy from board/atmel/at91sam9m10g45ek/config.mk
> copy to board/ronetix/pm9g45/config.mk
> diff --git a/board/ronetix/pm9g45/pm9g45.c b/board/ronetix/pm9g45/pm9g45.c
> new file mode 100644
> index 0000000..d11f40f
> --- /dev/null
> +++ b/board/ronetix/pm9g45/pm9g45.c
> @@ -0,0 +1,365 @@
> +/*
> + * (C) Copyright 2005-2010
> + * Ilko Iliev <iliev at ronetix.at>
> + * Asen Dimov <dimov at ronetix.at>
> + * Ronetix GmbH <www.ronetix.at>
> + *
> + * (C) Copyright 2007-2008
> + * Stelian Pop <stelian.pop at leadtechdesign.com>
> + * Lead Tech Design <www.leadtechdesign.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., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <common.h>
> +#include <asm/sizes.h>
> +#include <asm/arch/at91sam9g45.h>
> +#include <asm/arch/at91sam9_matrix.h>
> +#include <asm/arch/at91sam9_smc.h>
> +#include <asm/arch/at91_common.h>
> +#include <asm/arch/at91_pmc.h>
> +#include <asm/arch/at91_rstc.h>
> +#include <asm/arch/clk.h>
> +#include <asm/arch/gpio.h>
> +#include <asm/arch/io.h>
> +#include <asm/arch/hardware.h>
> +#include <lcd.h>
> +#include <atmel_lcdc.h>
> +#ifdef CONFIG_HAS_DATAFLASH
> +#include <dataflash.h>
> +#endif
> +#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_MACB)
> +#include <net.h>
> +#endif
> +#include <netdev.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +/* ------------------------------------------------------------------------- */
This line is not needed
> +/*
> + * Miscelaneous platform dependent initialisations
> + */
> +
> +#ifdef CONFIG_HAS_DATAFLASH
> +AT91S_DATAFLASH_INFO dataflash_info[CONFIG_SYS_MAX_DATAFLASH_BANKS];
> +
> +struct dataflash_addr cs[CONFIG_SYS_MAX_DATAFLASH_BANKS] = {
> + {CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0, 0}, /* Logical adress, CS */
> +};
> +
> +/*define the area offsets*/
Space needed 'sets*/'
> +dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
> + {0x00000000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0, "DataFlash"},
> +};
> +#endif
> +
> +#ifdef CONFIG_CMD_NAND
> +static void pm9g45_nand_hw_init(void)
> +{
> + unsigned long csa;
> +
> + /* Enable CS3 */
> + csa = at91_sys_read(AT91_MATRIX_EBICSA);
> + at91_sys_write(AT91_MATRIX_EBICSA,
> + csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA);
> +
> + /* Configure SMC CS3 for NAND/SmartMedia */
> + at91_sys_write(AT91_SMC_SETUP(3),
> + AT91_SMC_NWESETUP_(1) | AT91_SMC_NCS_WRSETUP_(0) |
> + AT91_SMC_NRDSETUP_(1) | AT91_SMC_NCS_RDSETUP_(0));
> + at91_sys_write(AT91_SMC_PULSE(3),
> + AT91_SMC_NWEPULSE_(4) | AT91_SMC_NCS_WRPULSE_(3) |
> + AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(2));
> + at91_sys_write(AT91_SMC_CYCLE(3),
> + AT91_SMC_NWECYCLE_(7) | AT91_SMC_NRDCYCLE_(4));
> + at91_sys_write(AT91_SMC_MODE(3),
> + AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
> + AT91_SMC_EXNWMODE_DISABLE |
> + AT91_SMC_DBW_8 |
> + AT91_SMC_TDF_(3));
> +
> + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_PIOC);
> +
> +#ifdef CONFIG_SYS_NAND_READY_PIN
> + /* Configure RDY/BSY */
> + at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
> +#endif
GPIO is one of the areas that uses the new at91 soc access
In git, look for this commit
'add a new AT91 GPIO driver'
> +
> + /* Enable NandFlash */
> + at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
> +}
> +#endif
> +
> +#ifdef CONFIG_MACB
> +static void pm9g45_macb_hw_init(void)
> +{
> + unsigned long rstc;
> +
> + /*
> + * PD2 enables the 50MHz oscillator for Ethernet PHY
> + * 1 - enable
> + * 0 - disable
> + */
> + at91_set_gpio_output(AT91_PIN_PD2, 1);
> + at91_set_gpio_value(AT91_PIN_PD2, 1); /* 1- enable, 0 - disable */
> +
> + /* Enable clock */
> + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_EMAC);
> +
> + /*
> + * Disable pull-up on:
> + * RXDV (PA15) => PHY normal mode (not Test mode)
> + * ERX0 (PA12) => PHY ADDR0
> + * ERX1 (PA13) => PHY ADDR1 => PHYADDR = 0x0
> + *
> + * PHY has internal pull-down
> + */
> + writel(pin_to_mask(AT91_PIN_PA15),
> + pin_to_controller(AT91_PIN_PA0) + PIO_PUDR);
> + writel(pin_to_mask(AT91_PIN_PA12) |
> + pin_to_mask(AT91_PIN_PA13),
> + pin_to_controller(AT91_PIN_PA0) + PIO_PUDR);
> +
> + /* Re-enable pull-up */
> + writel(pin_to_mask(AT91_PIN_PA15),
> + pin_to_controller(AT91_PIN_PA0) + PIO_PUER);
> + writel(pin_to_mask(AT91_PIN_PA12) |
> + pin_to_mask(AT91_PIN_PA13),
> + pin_to_controller(AT91_PIN_PA0) + PIO_PUER);
> +
> + at91_macb_hw_init();
> +}
> +#endif
> +
> +#ifdef CONFIG_LCD
Move the LCD code to its own file
board/ronetix/pm9g45/lcd.c
> +/*
> + * LCD name TX09D50VM1CCA
> + */
> +vidinfo_t panel_info = {
> + vl_col: 240,
> + vl_row: 320,
> + vl_clk: 4965000,
> + vl_sync: ATMEL_LCDC_INVLINE_NORMAL |
> + ATMEL_LCDC_INVFRAME_NORMAL,
> + vl_bpix: 3,
> + vl_tft: 1,
> + vl_hsync_len: 5,
> + vl_left_margin: 1,
> + vl_right_margin:33,
> + vl_vsync_len: 1,
> + vl_upper_margin:1,
> + vl_lower_margin:0,
> + mmio: AT91SAM9G45_LCDC_BASE,
> +};
The pannel information, if common with other boards
should be defined in an h-file and shared. If there
is no overlap, defining in c-file is fine
> +
> +void lcd_enable(void)
> +{
> + at91_set_A_periph(AT91_PIN_PE6, 1); /* power up */
> +}
> +
at91_set_A_periph is another function that changed with the new
soc access.
> +void lcd_disable(void)
> +{
> + at91_set_A_periph(AT91_PIN_PE6, 0); /* power down */
> +}
> +
> +static void pm9g45_lcd_hw_init(void)
> +{
> + at91_set_A_periph(AT91_PIN_PE0, 0); /* LCDDPWR */
> + at91_set_A_periph(AT91_PIN_PE2, 0); /* LCDCC */
> + at91_set_A_periph(AT91_PIN_PE3, 0); /* LCDVSYNC */
> + at91_set_A_periph(AT91_PIN_PE4, 0); /* LCDHSYNC */
> + at91_set_A_periph(AT91_PIN_PE5, 0); /* LCDDOTCK */
> +
> + at91_set_A_periph(AT91_PIN_PE7, 0); /* LCDD0 */
> + at91_set_A_periph(AT91_PIN_PE8, 0); /* LCDD1 */
> + at91_set_A_periph(AT91_PIN_PE9, 0); /* LCDD2 */
> + at91_set_A_periph(AT91_PIN_PE10, 0); /* LCDD3 */
> + at91_set_A_periph(AT91_PIN_PE11, 0); /* LCDD4 */
> + at91_set_A_periph(AT91_PIN_PE12, 0); /* LCDD5 */
> + at91_set_A_periph(AT91_PIN_PE13, 0); /* LCDD6 */
> + at91_set_A_periph(AT91_PIN_PE14, 0); /* LCDD7 */
> + at91_set_A_periph(AT91_PIN_PE15, 0); /* LCDD8 */
> + at91_set_A_periph(AT91_PIN_PE16, 0); /* LCDD9 */
> + at91_set_A_periph(AT91_PIN_PE17, 0); /* LCDD10 */
> + at91_set_A_periph(AT91_PIN_PE18, 0); /* LCDD11 */
> + at91_set_A_periph(AT91_PIN_PE19, 0); /* LCDD12 */
> + at91_set_B_periph(AT91_PIN_PE20, 0); /* LCDD13 */
> + at91_set_A_periph(AT91_PIN_PE21, 0); /* LCDD14 */
> + at91_set_A_periph(AT91_PIN_PE22, 0); /* LCDD15 */
> + at91_set_A_periph(AT91_PIN_PE23, 0); /* LCDD16 */
> + at91_set_A_periph(AT91_PIN_PE24, 0); /* LCDD17 */
> + at91_set_A_periph(AT91_PIN_PE25, 0); /* LCDD18 */
> + at91_set_A_periph(AT91_PIN_PE26, 0); /* LCDD19 */
> + at91_set_A_periph(AT91_PIN_PE27, 0); /* LCDD20 */
> + at91_set_B_periph(AT91_PIN_PE28, 0); /* LCDD21 */
> + at91_set_A_periph(AT91_PIN_PE29, 0); /* LCDD22 */
> + at91_set_A_periph(AT91_PIN_PE30, 0); /* LCDD23 */
> +
> + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_LCDC);
> +
> + gd->fb_base = CONFIG_AT91SAM9G45_LCD_BASE;
> +}
> +
> +#ifdef CONFIG_LCD_INFO
> +#include <nand.h>
> +#include <version.h>
> +
> +void lcd_show_board_info(void)
> +{
> + ulong dram_size, nand_size, dataflash_size;
> + int i;
> + char temp[32];
> +
> + lcd_printf ("%s\n", U_BOOT_VERSION);
> + lcd_printf ("(C) 2010 Ronetix GmbH\n");
> + lcd_printf ("support at ronetix.at\n");
> + lcd_printf ("%s CPU at %s MHz\n",
> + CONFIG_SYS_AT91_CPU_NAME,
> + strmhz(temp, get_cpu_clk_rate()));
> +
> + dram_size = 0;
> + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
> + dram_size += gd->bd->bi_dram[i].size;
> +
> + nand_size = 0;
> + for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
> + nand_size += nand_info[i].size;
> +
> +#ifdef CONFIG_HAS_DATAFLASH
> + dataflash_size = 0;
> + for (i = 0; i < CONFIG_SYS_MAX_DATAFLASH_BANKS; i++)
> + dataflash_size += (unsigned int) dataflash_info[i].Device.pages_number *
> + dataflash_info[i].Device.pages_size;
> +#endif
Trailing tab.
Remove
> +
> + lcd_printf ("%ld MB DDR2 SDRAM\n%ld MB NAND\n",
> + dram_size >> 20,
> + nand_size >> 20);
> +
> +#ifdef CONFIG_HAS_DATAFLASH
This and the above CONFIG_HAS_DATAFLASH should be combined for readablity
Move above #if-def here.
> + lcd_printf ("%ld MB DataFlash\n",
> + dataflash_size >> 20);
> +#endif
Trailing tab
Remove
> +}
> +#endif /* CONFIG_LCD_INFO */
> +#endif
> +
> +int board_init(void)
> +{
> + /* Enable Ctrlc */
> + console_init_f();
> +
> + at91_sys_write(AT91_PMC_PCER,
> + (1 << AT91SAM9G45_ID_PIOA) |
> + (1 << AT91SAM9G45_ID_PIOB) |
> + (1 << AT91SAM9G45_ID_PIOC) |
> + (1 << AT91SAM9G45_ID_PIODE));
Remove some of these tab's to a lines align with first line
of the statement better
> +
> + /* arch number of AT91SAM9M10G45EK-Board */
> + gd->bd->bi_arch_number = MACH_TYPE_PM9G45;
> + /* adress of boot parameters */
> + gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
> +
> + at91_serial_hw_init();
> +#ifdef CONFIG_CMD_NAND
> + pm9g45_nand_hw_init();
> +#endif
> +
> +#ifdef CONFIG_HAS_DATAFLASH
> + at91_spi0_hw_init(1 << 0);
> +#endif
> +
1 << 0 ??
Change this value and one below to a logical
#if-def value
> +#ifdef CONFIG_ATMEL_SPI
> + at91_spi0_hw_init(1 << 4);
> +#endif
> +
> +#ifdef CONFIG_MACB
> + pm9g45_macb_hw_init();
> +#endif
> +
> +#ifdef CONFIG_LCD
> + pm9g45_lcd_hw_init();
> +#endif
> + return 0;
> +}
> +
> +int dram_init(void)
> +{
> + gd->bd->bi_dram[0].start = PHYS_SDRAM;
> + gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
> + return 0;
> +}
> +
> +#ifdef CONFIG_RESET_PHY_R
> +void reset_phy(void)
> +{
> +#ifdef CONFIG_MACB
> + /*
> + * Initialize ethernet HW addr prior to starting Linux,
> + * needed for nfsroot
> + */
> + eth_init(gd->bd);
> +#endif
> +}
> +#endif
> +
> +int board_eth_init(bd_t *bis)
> +{
> + int rc = 0;
> +#ifdef CONFIG_MACB
> + rc = macb_eth_initialize(0, (void *)AT91SAM9G45_BASE_EMAC, 0x01);
> +#endif
> + return rc;
> +}
> +
> +/* SPI chip select control */
> +#ifdef CONFIG_ATMEL_SPI
> +#include <spi.h>
> +
> +int spi_cs_is_valid(unsigned int bus, unsigned int cs)
> +{
> + return bus == 0 && cs < 2;
enclose the return statement in ()'s to make it
clear that a conditional is being returned.
> +}
> +
> +void spi_cs_activate(struct spi_slave *slave)
> +{
> + switch(slave->cs) {
> + case 1:
> + at91_set_gpio_output(AT91_PIN_PB18, 0);
> + break;
> + case 0:
> + default:
> + at91_set_gpio_output(AT91_PIN_PB3, 0);
> + break;
> + }
Only 2 conditions in switch is overkill.
Consider changing this to a if-else statement.
> +}
> +
> +void spi_cs_deactivate(struct spi_slave *slave)
> +{
> + switch(slave->cs) {
> + case 1:
> + at91_set_gpio_output(AT91_PIN_PB18, 1);
> + break;
> + case 0:
> + default:
> + at91_set_gpio_output(AT91_PIN_PB3, 1);
> + break;
Similar consider changing to if-else
> + }
> +}
> +#endif /* CONFIG_ATMEL_SPI */
> diff --git a/include/configs/pm9g45.h b/include/configs/pm9g45.h
> new file mode 100644
> index 0000000..b8300b9
> --- /dev/null
> +++ b/include/configs/pm9g45.h
> @@ -0,0 +1,246 @@
> +/*
> + * (C) Copyright 2005-2010
> + * Ilko Iliev <iliev at ronetix.at>
> + * Asen Dimov <dimov at ronetix.at>
> + * Ronetix GmbH <www.ronetix.at>
> + *
> + * (C) Copyright 2007-2008
> + * Stelian Pop <stelian.pop at leadtechdesign.com>
> + * Lead Tech Design <www.leadtechdesign.com>
> + *
> + * Configuation settings for the PM9G45 board.
> + *
> + * 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
> +
> +#define CONFIG_AT91_LEGACY
> +
> +/* ARM asynchronous clock */
> +#define AT91_MAIN_CLOCK 12000000 /* from 12 MHz crystal */
> +#define CONFIG_SYS_HZ 1000
Move the clock values below the cpu/soc/board values
> +
> +#define CONFIG_ARM926EJS 1 /* This is an ARM926EJS Core */
> +#define CONFIG_PM9G45 1 /* It's an Ronetix PM9G45 */
> +#define CONFIG_AT91SAM9G45 1 /* It's an Atmel AT91SAM9G45 SoC*/
To here
> +#define CONFIG_ARCH_CPU_INIT
> +#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
> +
> +#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
> +#define CONFIG_SETUP_MEMORY_TAGS 1
> +#define CONFIG_INITRD_TAG 1
> +
> +#define CONFIG_SKIP_LOWLEVEL_INIT
> +#define CONFIG_SKIP_RELOCATE_UBOOT
> +
> +/*
> + * Hardware drivers
> + */
> +#define CONFIG_AT91_GPIO 1
> +#define CONFIG_ATMEL_USART 1
> +#undef CONFIG_USART0
> +#undef CONFIG_USART1
> +#undef CONFIG_USART2
> +#define CONFIG_USART3 1 /* USART 3 is DBGU */
> +#define CONFIG_ATMEL_SPI 1
> +
> +#define CONFIG_SYS_USE_NANDFLASH 1
> +
> +/*
> + * Hardware on board which could be removed
> + */
> +#undef CONFIG_HAS_DATAFLASH
> +
> +/* LCD */
> +#define CONFIG_LCD 1
> +#define LCD_BPP LCD_COLOR8
> +#define CONFIG_LCD_LOGO 1
> +#undef LCD_TEST_PATTERN
> +#define CONFIG_LCD_INFO 1
> +#define CONFIG_LCD_INFO_BELOW_LOGO 1
> +#define CONFIG_SYS_WHITE_ON_BLACK 1
> +#define CONFIG_ATMEL_LCD 1
> +#define CONFIG_ATMEL_LCD_RGB565 1
> +#define CONFIG_SYS_CONSOLE_IS_IN_ENV 1
> +
> +/* LED */
> +#define CONFIG_AT91_LED
> +#define CONFIG_RED_LED AT91_PIN_PD31 /* this is the user1 led */
> +#define CONFIG_GREEN_LED AT91_PIN_PD0 /* this is the user2 led */
> +
> +#define CONFIG_BOOTDELAY 3
> +
> +/*
> + * BOOTP options
> + */
> +#define CONFIG_BOOTP_BOOTFILESIZE 1
> +#define CONFIG_BOOTP_BOOTPATH 1
> +#define CONFIG_BOOTP_GATEWAY 1
> +#define CONFIG_BOOTP_HOSTNAME 1
> +
> +/*
> + * Command line configuration.
> + */
> +#include <config_cmd_default.h>
> +#undef CONFIG_CMD_BDI
> +#undef CONFIG_CMD_FPGA
> +#undef CONFIG_CMD_IMI
> +#undef CONFIG_CMD_IMLS
> +#undef CONFIG_CMD_AUTOSCRIPT
> +#undef CONFIG_CMD_LOADS
> +
> +#define CONFIG_CMD_PING 1
> +#define CONFIG_CMD_DHCP 1
> +#define CONFIG_CMD_NAND 1
> +#define CONFIG_CMD_USB 1
> +
> +#define CONFIG_CMD_JFFS2 1
> +#define CONFIG_JFFS2_CMDLINE 1
> +#define CONFIG_JFFS2_NAND 1
> +#define CONFIG_JFFS2_DEV "nand0" /* NAND device jffs2 lives on */
> +#define CONFIG_JFFS2_PART_OFFSET 0 /* start of jffs2 partition */
> +#define CONFIG_JFFS2_PART_SIZE (256 * 1024 * 1024) /* partition size*/
Need a space 'size*/'
Likely also need to move the comment
> +
> +/* SDRAM */
> +#define CONFIG_NR_DRAM_BANKS 1
> +#define PHYS_SDRAM 0x70000000
> +#define PHYS_SDRAM_SIZE 0x08000000 /* 128 megs */
> +
> +/* DataFlash */
> +#ifdef CONFIG_ATMEL_SPI
> +#define CONFIG_CMD_SF
> +#define CONFIG_CMD_SPI
> +#define CONFIG_SPI_FLASH 1
> +#define CONFIG_SPI_FLASH_ATMEL 1
> +#endif
> +#ifdef CONFIG_HAS_DATAFLASH
> +#define CONFIG_ATMEL_DATAFLASH_SPI
> +#define CONFIG_SYS_SPI_WRITE_TOUT (5*CONFIG_SYS_HZ)
> +#define CONFIG_SYS_MAX_DATAFLASH_BANKS 1
> +#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000 /* CS0 */
> +#define AT91_SPI_CLK 15000000
> +#define DATAFLASH_TCSS (0x1a << 16)
> +#define DATAFLASH_TCHS (0x1 << 24)
> +#endif
> +
> +/* NOR flash, not available */
> +#define CONFIG_SYS_NO_FLASH 1
> +#undef CONFIG_CMD_FLASH
> +
> +/* NAND flash */
> +#ifdef CONFIG_CMD_NAND
> +#define CONFIG_NAND_MAX_CHIPS 1
> +#define CONFIG_NAND_ATMEL
> +#define CONFIG_SYS_MAX_NAND_DEVICE 1
> +#define CONFIG_SYS_NAND_BASE 0x40000000
> +#define CONFIG_SYS_NAND_DBW_8 1
> +/* our ALE is AD21 */
> +#define CONFIG_SYS_NAND_MASK_ALE (1 << 21)
> +/* our CLE is AD22 */
> +#define CONFIG_SYS_NAND_MASK_CLE (1 << 22)
> +#define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14
> +#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PD3
> +
> +#endif
> +
> +/* Ethernet */
> +#define CONFIG_MACB 1
> +#define CONFIG_RMII 1
> +#define CONFIG_NET_MULTI 1
> +#define CONFIG_NET_RETRY_COUNT 20
> +#define CONFIG_RESET_PHY_R 1
> +
> +/* USB */
> +#define CONFIG_USB_ATMEL
> +#define CONFIG_USB_OHCI_NEW 1
> +#define CONFIG_DOS_PARTITION 1
> +#define CONFIG_SYS_USB_OHCI_CPU_INIT 1
> +#define CONFIG_SYS_USB_OHCI_REGS_BASE 0x00700000 /* AT91SAM9G45_UHP_OHCI_BASE*/
> +#define CONFIG_SYS_USB_OHCI_SLOT_NAME "at91sam9g45"
> +#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2
> +#define CONFIG_USB_STORAGE 1
> +
> +/* board specific(not enough SRAM) */
> +#define CONFIG_AT91SAM9G45_LCD_BASE PHYS_SDRAM + 0xE00000
> +
> +#define CONFIG_SYS_LOAD_ADDR PHYS_SDRAM + 0x2000000 /* load address */
> +
> +#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM
> +#define CONFIG_SYS_MEMTEST_END CONFIG_AT91SAM9G45_LCD_BASE
> +
> +#ifdef CONFIG_SYS_USE_DATAFLASH
> +
> +/* bootstrap + u-boot + env + linux in dataflash on CS0 */
> +#define CONFIG_ENV_IS_IN_SPI_FLASH 1
> +#define CONFIG_SYS_MONITOR_BASE (0xC0000000 + 0x8400)
> +#define CONFIG_ENV_OFFSET 0x4200
> +#define CONFIG_ENV_ADDR (0xC0000000 + CONFIG_ENV_OFFSET)
> +#define CONFIG_ENV_SIZE 0x4200
> +#define CONFIG_ENV_SECT_SIZE 0x10000
> +#define CONFIG_BOOTCOMMAND "cp.b 0xC0042000 0x72000000 0x210000; bootm"
> +#define CONFIG_BOOTARGS "console=ttyS0,115200 " \
> + "root=/dev/mtdblock0 " \
> + "mtdparts=atmel_nand:-(root) "\
> + "rw rootfstype=jffs2"
> +
> +#else /* CONFIG_SYS_USE_NANDFLASH */
> +
> +/* bootstrap + u-boot + env + linux in nandflash */
> +#define CONFIG_ENV_IS_IN_NAND 1
> +#define CONFIG_ENV_OFFSET 0x60000
> +#define CONFIG_ENV_OFFSET_REDUND 0x80000
> +#define CONFIG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */
> +#define CONFIG_BOOTCOMMAND "nand read 0x72000000 0x200000 0x200000; bootm"
> +#define CONFIG_BOOTARGS "fbcon=rotate:3 " \
> + "root=/dev/mtdblock4 " \
> + "mtdparts=atmel_nand:128k(bootstrap)ro," \
> + "256k(uboot)ro,1664k(env)," \
> + "2M(linux)ro,-(root) rw " \
> + "rootfstype=jffs2"
> +
> +#endif
> +
> +#define CONFIG_BAUDRATE 115200
> +#define CONFIG_SYS_BAUDRATE_TABLE {115200 , 19200, 38400, 57600, 9600 }
> +
> +#define CONFIG_SYS_PROMPT "U-Boot> "
> +#define CONFIG_SYS_CBSIZE 256
> +#define CONFIG_SYS_MAXARGS 16
> +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
> +#define CONFIG_SYS_LONGHELP 1
> +#define CONFIG_CMDLINE_EDITING 1
> +#define CONFIG_AUTO_COMPLETE
> +#define CONFIG_SYS_HUSH_PARSER
> +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
> +
> +/*
> + * Size of malloc() pool
> + */
> +#define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000)
> +#define CONFIG_SYS_GBL_DATA_SIZE 128 /* 128 bytes for initial data */
> +
> +#define CONFIG_STACKSIZE (32*1024) /* regular stack */
> +
> +#ifdef CONFIG_USE_IRQ
> +#error CONFIG_USE_IRQ not supported
> +#endif
Explicitly undef-ed CONFIG_USB_IRQ above
Could remove this.
> +
> +#endif
Tom
More information about the U-Boot
mailing list