[U-Boot] [PATCH] at91: Add esd gmbh MEESC board support
Daniel Gorsulowski
Daniel.Gorsulowski at esd.eu
Mon Jun 29 08:38:10 CEST 2009
Jean-Christophe PLAGNIOL-VILLARD wrote:
> On 12:21 Tue 23 Jun , Daniel Gorsulowski wrote:
>> This patch adds support for esd gmbh MEESC board.
>> The MEESC is based on an Atmel AT91SAM9263 SoC.
>>
>> Signed-off-by: Daniel Gorsulowski <Daniel.Gorsulowski at esd.eu>
>> ---
>>
>> Jean-Christophe: This patch requires an up-to-date mach-types.h,
>> please sync it.
>>
>> diff --git a/board/esd/meesc/meesc.c b/board/esd/meesc/meesc.c
>> new file mode 100644
>> index 0000000..557a51c
>> --- /dev/null
>> +++ b/board/esd/meesc/meesc.c
>> @@ -0,0 +1,211 @@
>> +/*
>> + * (C) Copyright 2007-2008
>> + * Stelian Pop <stelian.pop at leadtechdesign.com>
>> + * Lead Tech Design <www.leadtechdesign.com>
>> + *
>> + * (C) Copyright 2009
>> + * Daniel Gorsulowski <daniel.gorsulowski at esd.eu>
>> + * esd electronic system design gmbh <www.esd.eu>
>> + *
>> + * 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/at91sam9263.h>
>> +#include <asm/arch/at91sam9263_matrix.h>
> please use <asm/arch/at91sam9_matrix.h>
ok
>> +#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/hardware.h>
>> +#include <asm/arch/io.h>
>> +#include <netdev.h>
>> +
>> +DECLARE_GLOBAL_DATA_PTR;
>> +
>> +/*
>> + * Miscelaneous platform dependent initialisations
>> + */
> it will be better to only read it only and store it in a static
I only use it once, but if you really mean, I'll change it.
>> +int get_hw_rev(void)
>> +{
>> + int rev = at91_get_gpio_value(AT91_PIN_PB19);
> please add an empty line
ok
>> + rev |= at91_get_gpio_value(AT91_PIN_PB20) << 1;
>> + rev |= at91_get_gpio_value(AT91_PIN_PB21) << 2;
>> + rev |= at91_get_gpio_value(AT91_PIN_PB22) << 3;
>> +
>> + if (rev == 15)
>> + rev = 0;
>> +
>> + return rev;
>> +}
>> +
> <snip>
>> +
>> +int checkboard(void)
>> +{
>> + char str[32];
>> + char buf[32];
>> +
>> + puts("Board: esd CAN-EtherCAT Gateway");
>> + if (getenv_r("serial#", str, sizeof(str)) > 0) {
>> + puts(", serial# ");
>> + puts(str);
>> + }
>> + printf("\nHardware-revision: 1.%d\n", get_hw_rev());
>> + printf("Crystal frequency:\t%8s MHz\n",
>> + strmhz(buf, get_main_clk_rate()));
>> + printf("CPU clock:\t\t%8s MHz\n",
>> + strmhz(buf, get_cpu_clk_rate()));
>> +#ifdef CONFIG_SHOW_VERBOSE_CLOCKINFO
>> + printf("Master clock:\t\t%8s MHz\n",
>> + strmhz(buf, get_mck_clk_rate()));
>> + printf("PLL A clock:\t\t%8s MHz\n",
>> + strmhz(buf, get_plla_clk_rate()));
>> + printf("PLL B Reg.:\t\t0x%08X\n",
>> + at91_sys_read(AT91_CKGR_PLLBR));
>> + printf("PLL B clock:\t\t%8s MHz\n",
>> + strmhz(buf, get_pllb_clk_rate()));
>> +#endif
>> + printf("Mach-type: %lu\n", gd->bd->bi_arch_number);
>> + return 0;
>> +}
> please use cpu_info when it's possible to avoid copy & paste
>
Coud you explain a few more? I can't find a function called 'cpu_info'.
>> +int board_init(void)
>> +{
>> + /* Enable Ctrlc */
>> + console_init_f();
> no need
Ok, I'll remove it
>> +
>> + /* Peripheral Clock Enable Register */
>> + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOA |
>> + 1 << AT91SAM9263_ID_PIOB |
>> + 1 << AT91SAM9263_ID_PIOCDE |
>> + 1 << AT91SAM9263_ID_CAN);
>> +
>> + /* arch number of MEESC-Board */
>> + gd->bd->bi_arch_number = MACH_TYPE_MEESC;
>> +
>> + /* adress of boot parameters */
>> + gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
>> +
>> + at91_serial_hw_init();
>> +#ifdef CONFIG_CMD_NAND
>> + meesc_nand_hw_init();
>> +#endif
>> + meesc_ethercat_hw_init();
>> +#ifdef CONFIG_HAS_DATAFLASH
>> + at91_spi0_hw_init(1 << 0);
>> +#endif
>> +#ifdef CONFIG_MACB
>> + meesc_macb_hw_init();
>> +#endif
>> + at91_set_A_periph(AT91_PIN_PA13, 0); /* CAN_TX */
>> + at91_set_A_periph(AT91_PIN_PA14, 1); /* CAN_RX */
> please add a at91_can_hw_init function
Ok, I'll do this by a separate patch
>> + return 0;
>> +}
> <snio>
>> +
>> +#ifndef __CONFIG_H
>> +#define __CONFIG_H
>> +
>> +/* Common stuff */
>> +#define AT91_CPU_NAME "AT91SAM9263"
> please remove
ok
>> +#define CONFIG_SYS_HZ 1000 /* decrementer freq */
>> +#define CONFIG_MEESC 1 /* Board is esd MEESC */
>> +#define CONFIG_ARM926EJS 1 /* This is an ARM926EJS Core */
>> +#define CONFIG_AT91SAM9263 1 /* It's an AT91SAM9263 SoC */
>> +#define CONFIG_ENV_OVERWRITE 1 /* necessary on prototypes */
>> +#define CONFIG_DISPLAY_BOARDINFO 1
>> +#define CONFIG_PREBOOT /* enable preboot variable */
> why which value?
This is a custom value, which is set, during putting the board into operation.
So it is unalterable to define CONFIG_PREBOOT
>> +#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
>> +#define CONFIG_SETUP_MEMORY_TAGS 1
>> +#define CONFIG_INITRD_TAG 1
>> +#undef CONFIG_USE_IRQ /* don't need IRQ/FIQ stuff */
>> +
> Best Regards,
> J.
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
>
Best regards,
Daniel Gorsulowski
More information about the U-Boot
mailing list