* [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console @ 2009-04-07 12:31 Daniel Gorsulowski 2009-04-07 12:31 ` [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh Daniel Gorsulowski 2009-04-17 5:51 ` [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Jean-Christophe PLAGNIOL-VILLARD 0 siblings, 2 replies; 8+ messages in thread From: Daniel Gorsulowski @ 2009-04-07 12:31 UTC (permalink / raw) To: u-boot This patch bases on patch of Ulf Samuelsson ([PATCH 1/1] ARM: Add command to control coloured led from the console, Wed Jan 7 21:09:55 CET 2009) It allows any board implementing the user LED API to control the LEDs from the console. led [ 1 | 2 | 3 | 4 | 5 | all ] [ on | off ] Adding configuration item CONFIG_CMD_LED enables the command. The items CONFIG_LED1...5 configure the associated gpio-pins. Signed-off-by: Daniel Gorsulowski <Daniel.Gorsulowski@esd.eu> --- common/Makefile | 1 + common/cmd_led.c | 105 +++++++++++++++++++++++++++++++++++++++++ cpu/arm926ejs/at91/Makefile | 1 + cpu/arm926ejs/at91/user_led.c | 102 +++++++++++++++++++++++++++++++++++++++ include/user_led.h | 60 +++++++++++++++++++++++ 5 files changed, 269 insertions(+), 0 deletions(-) create mode 100644 common/cmd_led.c create mode 100644 cpu/arm926ejs/at91/user_led.c create mode 100644 include/user_led.h diff --git a/common/Makefile b/common/Makefile index b9f4ca7..e0f571c 100644 --- a/common/Makefile +++ b/common/Makefile @@ -103,6 +103,7 @@ COBJS-$(CONFIG_CMD_IMMAP) += cmd_immap.o COBJS-$(CONFIG_CMD_IRQ) += cmd_irq.o COBJS-$(CONFIG_CMD_ITEST) += cmd_itest.o COBJS-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o +COBJS-$(CONFIG_CMD_LED) += cmd_led.o COBJS-$(CONFIG_CMD_LICENSE) += cmd_license.o COBJS-y += cmd_load.o COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o diff --git a/common/cmd_led.c b/common/cmd_led.c new file mode 100644 index 0000000..248f3a9 --- /dev/null +++ b/common/cmd_led.c @@ -0,0 +1,105 @@ +/* + * (C) Copyright 2008 + * Ulf Samuelsson <ulf.samuelsson@atmel.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 + */ + +/* + * This file provides a shell like 'test' function to return + * true/false from an integer or string compare of two memory + * locations or a location and a scalar/literal. + * A few parts were lifted from bash 'test' command + */ + +#include <common.h> +#include <config.h> +#include <command.h> +#include <user_led.h> + +int do_led (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + int led; + + /* Validate arguments */ + if ((argc != 3)) { + printf("Usage:\n%s\n", cmdtp->usage); + return 1; + } + if (strcmp(argv[1], "1") == 0) { + led = (1 << 0); + } else if (strcmp(argv[1], "2") == 0) { + led = (1 << 1); + } else if (strcmp(argv[1], "3") == 0) { + led = (1 << 2); + } else if (strcmp(argv[1], "4") == 0) { + led = (1 << 3); + } else if (strcmp(argv[1], "5") == 0) { + led = (1 << 4); + } else if (strcmp(argv[1], "all") == 0) { + led = 31; + } else { + printf ("Usage:\n%s\n", cmdtp->usage); + return 1; + } + + if (strcmp(argv[2], "off") == 0) { +#ifdef CONFIG_LED1 + if(led & 1) user_LED1_off(); +#endif +#ifdef CONFIG_LED2 + if(led & 2) user_LED2_off(); +#endif +#ifdef CONFIG_LED3 + if(led & 4) user_LED3_off(); +#endif +#ifdef CONFIG_LED4 + if(led & 8) user_LED4_off(); +#endif +#ifdef CONFIG_LED5 + if(led & 16) user_LED5_off(); +#endif + } else if (strcmp(argv[2], "on") == 0) { +#ifdef CONFIG_LED1 + if(led & 1) user_LED1_on(); +#endif +#ifdef CONFIG_LED2 + if(led & 2) user_LED2_on(); +#endif +#ifdef CONFIG_LED3 + if(led & 4) user_LED3_on(); +#endif +#ifdef CONFIG_LED4 + if(led & 8) user_LED4_on(); +#endif +#ifdef CONFIG_LED5 + if(led & 16) user_LED5_on(); +#endif + } else { + printf ("Usage:\n%s\n", cmdtp->usage); + return 1; + } + return 0; +} + +U_BOOT_CMD( + led, 3, 1, do_led, + "[1|2|3|4|5|all] [on|off]", + "[1|2|3|4|5|all] [on|off] sets/clears led 1,2,3,4,5" +); diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile index 34e7461..f404cf1 100644 --- a/cpu/arm926ejs/at91/Makefile +++ b/cpu/arm926ejs/at91/Makefile @@ -55,6 +55,7 @@ COBJS-y += at91sam9rl_serial.o COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9rl_spi.o endif COBJS-$(CONFIG_AT91_LED) += led.o +COBJS-$(CONFIG_USER_LED) += user_led.o COBJS-y += timer.o SOBJS = lowlevel_init.o diff --git a/cpu/arm926ejs/at91/user_led.c b/cpu/arm926ejs/at91/user_led.c new file mode 100644 index 0000000..a5dc197 --- /dev/null +++ b/cpu/arm926ejs/at91/user_led.c @@ -0,0 +1,102 @@ +/* + * (C) Copyright 2007-2008 + * Stelian Pop <stelian.pop@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/arch/at91sam9263.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void user_LED_init(void) +{ + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOB | + 1 << AT91SAM9263_ID_PIOCDE); + + at91_set_gpio_output(CONFIG_LED1, 1); + at91_set_gpio_output(CONFIG_LED2, 1); + + at91_set_gpio_value(CONFIG_LED1, 1); + at91_set_gpio_value(CONFIG_LED2, 1); +} + +#ifdef CONFIG_LED1 +void user_LED1_on(void) +{ + at91_set_gpio_value(CONFIG_LED1, 0); +} + +void user_LED1_off(void) +{ + at91_set_gpio_value(CONFIG_LED1, 1); +} +#endif + +#ifdef CONFIG_LED2 +void user_LED2_on(void) +{ + at91_set_gpio_value(CONFIG_LED2, 0); +} + +void user_LED2_off(void) +{ + at91_set_gpio_value(CONFIG_LED2, 1); +} +#endif + +#ifdef CONFIG_LED3 +void user_LED3_on(void) +{ + at91_set_gpio_value(CONFIG_LED3, 0); +} + +void user_LED3_off(void) +{ + at91_set_gpio_value(CONFIG_LED3, 1); +} +#endif + +#ifdef CONFIG_LED4 +void user_LED4_on(void) +{ + at91_set_gpio_value(CONFIG_LED4, 0); +} + +void user_LED4_off(void) +{ + at91_set_gpio_value(CONFIG_LED4, 1); +} +#endif + +#ifdef CONFIG_LED5 +void user_LED5_on(void) +{ + at91_set_gpio_value(CONFIG_LED5, 0); +} + +void user_LED5_off(void) +{ + at91_set_gpio_value(CONFIG_LED5, 1); +} +#endif diff --git a/include/user_led.h b/include/user_led.h new file mode 100644 index 0000000..e0b808f --- /dev/null +++ b/include/user_led.h @@ -0,0 +1,60 @@ +/* + * (C) Copyright 2008 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * 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 _USER_LED_H_ +#define _USER_LED_H_ + +#ifdef CONFIG_USER_LED + +/* + * user LEDs API + */ +#ifndef __ASSEMBLY__ +extern void user_LED_init(void); +extern void user_LED1_on(void); +extern void user_LED1_off(void); +extern void user_LED2_on(void); +extern void user_LED2_off(void); +extern void user_LED3_on(void); +extern void user_LED3_off(void); +extern void user_LED4_on(void); +extern void user_LED4_off(void); +extern void user_LED5_on(void); +extern void user_LED5_off(void); +#else + .extern user_LED_init + .extern user_LED1_on + .extern user_LED1_off + .extern user_LED2_on + .extern user_LED2_off + .extern user_LED3_on + .extern user_LED3_off + .extern user_LED4_on + .extern user_LED4_off + .extern user_LED5_on + .extern user_LED5_off +#endif + +#endif /* CONFIG_USER_LED */ + +#endif /* _USER_LED_H_ */ -- 1.6.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh 2009-04-07 12:31 [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Daniel Gorsulowski @ 2009-04-07 12:31 ` Daniel Gorsulowski 2009-04-17 6:00 ` Jean-Christophe PLAGNIOL-VILLARD 2009-04-17 5:51 ` [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Jean-Christophe PLAGNIOL-VILLARD 1 sibling, 1 reply; 8+ messages in thread From: Daniel Gorsulowski @ 2009-04-07 12:31 UTC (permalink / raw) To: u-boot This patch adds support for MEESC board of esd gmbh. The MEESC is based on an Atmel AT91SAM9263 SoC. Signed-off-by: Daniel Gorsulowski <Daniel.Gorsulowski@esd.eu> --- MAINTAINERS | 4 + MAKEALL | 1 + Makefile | 3 + board/esd/meesc/Makefile | 54 ++++++++ board/esd/meesc/config.mk | 1 + board/esd/meesc/meesc.c | 300 +++++++++++++++++++++++++++++++++++++++++++++ board/esd/meesc/meesc.h | 32 +++++ include/configs/meesc.h | 191 ++++++++++++++++++++++++++++ 8 files changed, 586 insertions(+), 0 deletions(-) create mode 100644 board/esd/meesc/Makefile create mode 100644 board/esd/meesc/config.mk create mode 100644 board/esd/meesc/meesc.c create mode 100644 board/esd/meesc/meesc.h create mode 100644 include/configs/meesc.h diff --git a/MAINTAINERS b/MAINTAINERS index 03d59b9..b5ec88b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -525,6 +525,10 @@ Peter Figuli <peposh@etc.sk> wepep250 xscale +Daniel Gorsulowski <daniel.gorsulowski@esd.eu> + + meesc ARM926EJS (AT91SAM9263 SoC) + Marius Gr?ger <mag@sysgo.de> impa7 ARM720T (EP7211) diff --git a/MAKEALL b/MAKEALL index e4eb42b..20bde48 100755 --- a/MAKEALL +++ b/MAKEALL @@ -580,6 +580,7 @@ LIST_at91=" \ cmc_pu2 \ csb637 \ kb9202 \ + meesc \ mp2usb \ m501sk \ " diff --git a/Makefile b/Makefile index 49b83c0..f78dd25 100644 --- a/Makefile +++ b/Makefile @@ -2747,6 +2747,9 @@ at91sam9rlek_config : unconfig fi; @$(MKCONFIG) -a at91sam9rlek arm arm926ejs at91sam9rlek atmel at91 +meesc_config : unconfig + @$(MKCONFIG) $(@:_config=) arm arm926ejs meesc esd at91 + ######################################################################## ## ARM Integrator boards - see doc/README-integrator for more info. integratorap_config \ diff --git a/board/esd/meesc/Makefile b/board/esd/meesc/Makefile new file mode 100644 index 0000000..b7f60fa --- /dev/null +++ b/board/esd/meesc/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@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 += $(BOARD).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/esd/meesc/config.mk b/board/esd/meesc/config.mk new file mode 100644 index 0000000..9ce161e --- /dev/null +++ b/board/esd/meesc/config.mk @@ -0,0 +1 @@ +TEXT_BASE = 0x21f00000 diff --git a/board/esd/meesc/meesc.c b/board/esd/meesc/meesc.c new file mode 100644 index 0000000..390d52f --- /dev/null +++ b/board/esd/meesc/meesc.c @@ -0,0 +1,300 @@ +/* + * (C) Copyright 2007-2008 + * Stelian Pop <stelian.pop@leadtechdesign.com> + * Lead Tech Design <www.leadtechdesign.com> + * + * (C) Copyright 2009 + * Daniel Gorsulowski <daniel.gorsulowski@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 "meesc.h" +#include <common.h> +#include <asm/arch/at91_common.h> +#include <asm/arch/at91sam9263.h> +#include <asm/arch/at91sam9263_matrix.h> +#include <asm/arch/at91sam9_smc.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/at91_rstc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> +#include <asm/arch/hardware.h> +#include <nand.h> +#include <dataflash.h> +#include <netdev.h> +#include <user_led.h> + +DECLARE_GLOBAL_DATA_PTR; + +/* + * Miscelaneous platform dependent initialisations + */ + +#ifdef CONFIG_CMD_NAND +static void meesc_nand_hw_init(void) +{ + unsigned long csa; + + /* Enable CS3 */ + csa = at91_sys_read(AT91_MATRIX_EBI0CSA); + at91_sys_write(AT91_MATRIX_EBI0CSA, + csa | AT91_MATRIX_EBI0_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_(3) | AT91_SMC_NCS_WRPULSE_(3) | + AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(3)); + at91_sys_write(AT91_SMC_CYCLE(3), + AT91_SMC_NWECYCLE_(5) | AT91_SMC_NRDCYCLE_(5)); + at91_sys_write(AT91_SMC_MODE(3), + AT91_SMC_READMODE | AT91_SMC_WRITEMODE | + AT91_SMC_EXNWMODE_DISABLE | +#ifdef CONFIG_SYS_NAND_DBW_16 + AT91_SMC_DBW_16 | +#else /* CONFIG_SYS_NAND_DBW_8 */ + AT91_SMC_DBW_8 | +#endif + AT91_SMC_TDF_(2)); + + /* Peripheral Clock Enable Register */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOA | + 1 << AT91SAM9263_ID_PIOCDE); + + /* Configure RDY/BSY */ + at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1); + + /* Enable NandFlash */ + at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1); +} +#endif /* CONFIG_CMD_NAND */ + +#ifdef CONFIG_MACB +static void meesc_macb_hw_init(void) +{ + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_EMAC); + at91_macb_hw_init(); +} +#endif + +static void meesc_ethercat_hw_init(void) +{ + /* Configure SMC EBI1_CS0 for EtherCAT */ + at91_sys_write(AT91_SMC1_SETUP(0), + AT91_SMC_NWESETUP_(0) | AT91_SMC_NCS_WRSETUP_(0) | + AT91_SMC_NRDSETUP_(0) | AT91_SMC_NCS_RDSETUP_(0)); + at91_sys_write(AT91_SMC1_PULSE(0), + AT91_SMC_NWEPULSE_(4) | AT91_SMC_NCS_WRPULSE_(9) | + AT91_SMC_NRDPULSE_(4) | AT91_SMC_NCS_RDPULSE_(9)); + at91_sys_write(AT91_SMC1_CYCLE(0), + AT91_SMC_NWECYCLE_(10) | AT91_SMC_NRDCYCLE_(5)); + /* Configure behavior@external wait signal, byte-select mode, 16 bit + data bus width, none data float wait states and TDF optimization */ + at91_sys_write(AT91_SMC1_MODE(0), + AT91_SMC_READMODE | AT91_SMC_EXNWMODE_READY | + AT91_SMC_BAT_SELECT | AT91_SMC_DBW_16 | AT91_SMC_TDF_(0) | + AT91_SMC_TDFMODE); + + /* Peripheral Clock Enable Register */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOB | + 1 << AT91SAM9263_ID_PIOCDE); + + /* Configure RDY/BSY */ + at91_set_B_periph(AT91_PIN_PE20, 0); /* EBI1_NWAIT */ +} + +#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*/ +dataflash_protect_t area_list[NB_DATAFLASH_AREA] = { + {0x00000000, 0x000041FF, FLAG_PROTECT_SET, 0, "Bootstrap"}, + {0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"}, + {0x00008400, 0x00041FFF, FLAG_PROTECT_SET, 0, "U-Boot"}, +}; +#endif /* CONFIG_HAS_DATAFLASH */ + +int board_init(void) +{ + /* Enable Ctrlc */ + console_init_f(); + + /* arch number of esd 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_USER_LED + user_LED_init(); +#endif +#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 + return(0); +} + +int dram_init(void) +{ + gd->bd->bi_dram[0].start = PHYS_SDRAM; + gd->bd->bi_dram[0].size = get_DRAM_size(); + return(0); +} + +int board_eth_init(bd_t *bis) +{ + int rc = 0; +#ifdef CONFIG_MACB + rc = macb_eth_initialize(0, (void *)AT91SAM9263_BASE_EMAC, 0x00); +#endif + return(rc); +} + +int checkboard(void) +{ + char serno[32]; + + puts("Board: esd CAN-EtherCAT Gateway\n"); + if (getenv_r("serial#", serno, sizeof(serno)) > 0) { + puts(", serial# "); + puts(serno); + } + printf("Hardware-revision: 1.%d\n", get_hw_rev()); + return(0); +} + +int get_hw_rev(void) +{ + int rev = at91_get_gpio_value(AT91_PIN_PB19); + 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); +} + +int get_DRAM_size(void) +{ + int size = (1 << 27); /* assumed max DRAM size = 128 MByte */ + + __raw_writew(0x0000, PHYS_SDRAM); + __raw_writew(0x0000, PHYS_SDRAM | (1 << 24)); + __raw_writew(0x0000, PHYS_SDRAM | (1 << 25)); + __raw_writew(0xffff, PHYS_SDRAM | (1 << 26)); + + if (__raw_readw(PHYS_SDRAM | (1 << 25))) + size >>= 1; + if (__raw_readw(PHYS_SDRAM | (1 << 24))) + size >>= 1; + if (__raw_readw(PHYS_SDRAM)) + size >>= 1; + + return(size); +} + +/* + * U-Boot commands + */ + +/* ET1100 word switching */ +int do_wswitch(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + int i = 0; + + if (get_hw_rev() == 0) { + if (argc > 1) { + i = argv[1][0] == '1'; + printf("Setting Pin PA25 to '%d'\n", i); + at91_set_gpio_output(AT91_PIN_PA25, i); + } else + puts("None value given!\n"); + } else { + puts("Not a prototype, word-switching not provided!\n"); + } + return(0); +} +U_BOOT_CMD( + wswitch, 2, 1, do_wswitch, + "select read word on ET1100 (prototypes only)", + "\n" +); + +/* + * CAN physical layer test + * This command toggles the CANTX pin. As a result, the differential signal on + * CAN bus toggles an can be measured by a scope. + * The received signal on CANRX must be equal to the send signal on CANTX. If an + * error occurs and the signals are different, an error message is being + * displayed. + * Conditions for using this command: + * -CAN transceiver on CANTX/CANRX + * -no other devices on CAN bus + * -120R bus termination + */ +int do_cantst(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + unsigned int error = 0; + puts("Toggeling Port PA13 (CANTX)... "); + /* defines PA13 as output */ + at91_set_gpio_output(AT91_PIN_PA13, 0); + /* defines PA14 as input, internal pullup */ + at91_set_gpio_input(AT91_PIN_PA14, 1); + + while (!tstc() && !error) { /* wait for key press or error */ + at91_set_gpio_value(AT91_PIN_PA13, 1); + if (!at91_get_gpio_value(AT91_PIN_PA14)) + error = 1; + at91_set_gpio_value(AT91_PIN_PA13, 0); + if (at91_get_gpio_value(AT91_PIN_PA14)) + error = 1; + } + + if (error) + puts("CAN error!!\n"); + else { + puts("done\n"); + getc(); /* consume input */ + } + return(0); +} +U_BOOT_CMD( + cantst, 2, 1, do_cantst, + "toggles CANTX-Pin", + "\n" +); diff --git a/board/esd/meesc/meesc.h b/board/esd/meesc/meesc.h new file mode 100644 index 0000000..2ef673b --- /dev/null +++ b/board/esd/meesc/meesc.h @@ -0,0 +1,32 @@ +/* + * (C) Copyright 2009 + * Daniel Gorsulowski <daniel.gorsulowski@esd.eu> + * esd electronic system design gmbh <www.esd-electronics.com> + * + * 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 _MEESC_H_ +#define _MEESC_H_ + +#ifdef CONFIG_MACB +static void meesc_macb_hw_init(void); +#endif +static void meesc_ethercat_hw_init(void); +int get_hw_rev(void); +int get_DRAM_size(void); + +#endif /* _MEESC_H_ */ diff --git a/include/configs/meesc.h b/include/configs/meesc.h new file mode 100644 index 0000000..97f32a4 --- /dev/null +++ b/include/configs/meesc.h @@ -0,0 +1,191 @@ +/* + * (C) Copyright 2007-2008 + * Stelian Pop <stelian.pop@leadtechdesign.com> + * Lead Tech Design <www.leadtechdesign.com> + * + * (C) Copyright 2009 + * Daniel Gorsulowski <daniel.gorsulowski@esd.eu> + * esd electronic system design gmbh <www.esd.eu> + * + * Configuation settings for the esd MEESC 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 + +/* ARM asynchronous clock */ +#define AT91_CPU_NAME "AT91SAM9263" +#define AT91_MAIN_CLOCK 16000000 /* 16.0 MHz crystal */ +#define AT91_MASTER_CLOCK 100000000 /* peripheral */ +#define AT91_CPU_CLOCK 200000000 /* cpu */ +#define CONFIG_SYS_AT91_PLLB 0x00023f01 /* PLLB settings for USB */ +#define CONFIG_SYS_HZ 1000 /* decrementer freq */ + +#define AT91_SLOW_CLOCK 32768 /* slow clock */ + +#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*/ +#undef CONFIG_USE_IRQ /* don't need IRQ/FIQ stuff */ +#define CONFIG_ENV_OVERWRITE 1 /* necessary on prototypes */ +#define CONFIG_DISPLAY_BOARDINFO 1 +#define CONFIG_PREBOOT /* enable preboot variable */ + +#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_ATMEL_USART 1 +#undef CONFIG_USART0 +#undef CONFIG_USART1 +#undef CONFIG_USART2 +#define CONFIG_USART3 1 /* USART 3 is DBGU */ + +#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_AUTOSCRIPT +#undef CONFIG_CMD_FPGA +#undef CONFIG_CMD_LOADS +#undef CONFIG_CMD_IMLS +#undef CONFIG_CMD_USB + +#define CONFIG_CMD_PING 1 +#define CONFIG_CMD_DHCP 1 +#define CONFIG_CMD_NAND 1 +#define CONFIG_CMD_LED 1 + +/* LED */ +#define CONFIG_USER_LED 1 +#define CONFIG_LED1 AT91_PIN_PB8 /* this is LED1A */ +#define CONFIG_LED2 AT91_PIN_PB7 /* this is LED1B */ + +/* SDRAM */ +#define CONFIG_NR_DRAM_BANKS 1 +#define PHYS_SDRAM 0x20000000 + +/* DataFlash */ +#define CONFIG_ATMEL_DATAFLASH_SPI +#define CONFIG_HAS_DATAFLASH 1 +#define CONFIG_SYS_SPI_WRITE_TOUT (5000 * 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) + +/* NOR flash is not populated, disable it */ +#define CONFIG_SYS_NO_FLASH 1 + +/* NAND flash */ +#ifdef CONFIG_CMD_NAND +#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_PD15 +#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PA22 +#endif + +/* Ethernet */ +#define CONFIG_MACB 1 +#define CONFIG_RMII 1 +#define CONFIG_NET_MULTI 1 +#define CONFIG_NET_RETRY_COUNT 20 +#undef CONFIG_RESET_PHY_R + +#define CONFIG_SYS_LOAD_ADDR 0x22000000 /* load address */ + +#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM +#define CONFIG_SYS_MEMTEST_END 0x21e00000 + +#define CONFIG_SYS_USE_DATAFLASH 1 +#undef CONFIG_SYS_USE_NANDFLASH + +#ifdef CONFIG_SYS_USE_DATAFLASH + +/* bootstrap + u-boot + env + linux in dataflash on CS0 */ +#define CONFIG_ENV_IS_IN_DATAFLASH 1 +#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \ + 0x8400) +#define CONFIG_ENV_OFFSET 0x4200 +#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \ + CONFIG_ENV_OFFSET) +#define CONFIG_ENV_SIZE 0x4200 +#define CONFIG_BOOTCOMMAND "cp.b C0042000 22000000 210000; bootm" + +#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 22000000 A0000 200000; bootm" + +#endif + +#define CONFIG_BAUDRATE 115200 +#define CONFIG_SYS_BAUDRATE_TABLE {115200 , 19200, 38400, 57600, 9600 } + +#define CONFIG_SYS_PROMPT "=> " +#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 + +/* + * Size of malloc() pool + */ +#define CONFIG_SYS_MALLOC_LEN 0x2D000 +#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 + +#endif -- 1.6.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh 2009-04-07 12:31 ` [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh Daniel Gorsulowski @ 2009-04-17 6:00 ` Jean-Christophe PLAGNIOL-VILLARD 2009-04-22 10:15 ` [U-Boot] Bug in new at91 clock framework? Daniel Gorsulowski 0 siblings, 1 reply; 8+ messages in thread From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-17 6:00 UTC (permalink / raw) To: u-boot > --- /dev/null > +++ b/board/esd/meesc/meesc.c > @@ -0,0 +1,300 @@ > +/* > + * (C) Copyright 2007-2008 > + * Stelian Pop <stelian.pop@leadtechdesign.com> > + * Lead Tech Design <www.leadtechdesign.com> > + * > + * (C) Copyright 2009 > + * Daniel Gorsulowski <daniel.gorsulowski@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 "meesc.h" > +#include <common.h> > +#include <asm/arch/at91_common.h> > +#include <asm/arch/at91sam9263.h> please remove no need > +#include <asm/arch/at91sam9263_matrix.h> > +#include <asm/arch/at91sam9_smc.h> > +#include <asm/arch/at91_pmc.h> > +#include <asm/arch/at91_rstc.h> > +#include <asm/arch/gpio.h> > +#include <asm/arch/io.h> > +#include <asm/arch/hardware.h> please move this before <asm/arch/at91_common.h> > +#include <nand.h> > +#include <dataflash.h> > +#include <netdev.h> > +#include <user_led.h> > + > +DECLARE_GLOBAL_DATA_PTR; > + > +/* > + * Miscelaneous platform dependent initialisations > + */ > + > +#ifdef CONFIG_CMD_NAND > +static void meesc_nand_hw_init(void) > +{ > + unsigned long csa; > + > + /* Enable CS3 */ > + csa = at91_sys_read(AT91_MATRIX_EBI0CSA); > + at91_sys_write(AT91_MATRIX_EBI0CSA, > + csa | AT91_MATRIX_EBI0_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_(3) | AT91_SMC_NCS_WRPULSE_(3) | > + AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(3)); > + at91_sys_write(AT91_SMC_CYCLE(3), > + AT91_SMC_NWECYCLE_(5) | AT91_SMC_NRDCYCLE_(5)); > + at91_sys_write(AT91_SMC_MODE(3), > + AT91_SMC_READMODE | AT91_SMC_WRITEMODE | > + AT91_SMC_EXNWMODE_DISABLE | > +#ifdef CONFIG_SYS_NAND_DBW_16 > + AT91_SMC_DBW_16 | > +#else /* CONFIG_SYS_NAND_DBW_8 */ > + AT91_SMC_DBW_8 | > +#endif > + AT91_SMC_TDF_(2)); > + > + /* Peripheral Clock Enable Register */ > + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOA | > + 1 << AT91SAM9263_ID_PIOCDE); > + > + /* Configure RDY/BSY */ > + at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1); > + > + /* Enable NandFlash */ > + at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1); > +} > +#endif /* CONFIG_CMD_NAND */ > + > +#ifdef CONFIG_MACB > +static void meesc_macb_hw_init(void) > +{ > + /* Enable clock */ > + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_EMAC); > + at91_macb_hw_init(); > +} > +#endif > + > +static void meesc_ethercat_hw_init(void) > +{ > + /* Configure SMC EBI1_CS0 for EtherCAT */ > + at91_sys_write(AT91_SMC1_SETUP(0), > + AT91_SMC_NWESETUP_(0) | AT91_SMC_NCS_WRSETUP_(0) | > + AT91_SMC_NRDSETUP_(0) | AT91_SMC_NCS_RDSETUP_(0)); > + at91_sys_write(AT91_SMC1_PULSE(0), > + AT91_SMC_NWEPULSE_(4) | AT91_SMC_NCS_WRPULSE_(9) | > + AT91_SMC_NRDPULSE_(4) | AT91_SMC_NCS_RDPULSE_(9)); > + at91_sys_write(AT91_SMC1_CYCLE(0), > + AT91_SMC_NWECYCLE_(10) | AT91_SMC_NRDCYCLE_(5)); > + /* Configure behavior at external wait signal, byte-select mode, 16 bit > + data bus width, none data float wait states and TDF optimization */ > + at91_sys_write(AT91_SMC1_MODE(0), > + AT91_SMC_READMODE | AT91_SMC_EXNWMODE_READY | > + AT91_SMC_BAT_SELECT | AT91_SMC_DBW_16 | AT91_SMC_TDF_(0) | > + AT91_SMC_TDFMODE); > + > + /* Peripheral Clock Enable Register */ > + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOB | > + 1 << AT91SAM9263_ID_PIOCDE); > + > + /* Configure RDY/BSY */ > + at91_set_B_periph(AT91_PIN_PE20, 0); /* EBI1_NWAIT */ > +} > + > +#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*/ > +dataflash_protect_t area_list[NB_DATAFLASH_AREA] = { > + {0x00000000, 0x000041FF, FLAG_PROTECT_SET, 0, "Bootstrap"}, > + {0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"}, > + {0x00008400, 0x00041FFF, FLAG_PROTECT_SET, 0, "U-Boot"}, > +}; > +#endif /* CONFIG_HAS_DATAFLASH */ > + > +int board_init(void) > +{ > + /* Enable Ctrlc */ > + console_init_f(); > + > + /* arch number of esd 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_USER_LED > + user_LED_init(); > +#endif > +#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 > + return(0); return is not a function please use return 0; ditto for the rest of the patch > +} > + > +int dram_init(void) > +{ > + gd->bd->bi_dram[0].start = PHYS_SDRAM; > + gd->bd->bi_dram[0].size = get_DRAM_size(); > + return(0); > +} > + > +int board_eth_init(bd_t *bis) > +{ > + int rc = 0; > +#ifdef CONFIG_MACB > + rc = macb_eth_initialize(0, (void *)AT91SAM9263_BASE_EMAC, 0x00); > +#endif > + return(rc); > +} > + > +int checkboard(void) > +{ > + char serno[32]; > + > + puts("Board: esd CAN-EtherCAT Gateway\n"); > + if (getenv_r("serial#", serno, sizeof(serno)) > 0) { > + puts(", serial# "); > + puts(serno); > + } > + printf("Hardware-revision: 1.%d\n", get_hw_rev()); > + return(0); > +} > + > +int get_hw_rev(void) > +{ > + int rev = at91_get_gpio_value(AT91_PIN_PB19); > + 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); > +} > + > +int get_DRAM_size(void) please no uppercase in the function naming > +{ > + int size = (1 << 27); /* assumed max DRAM size = 128 MByte */ > + > + __raw_writew(0x0000, PHYS_SDRAM); > + __raw_writew(0x0000, PHYS_SDRAM | (1 << 24)); > + __raw_writew(0x0000, PHYS_SDRAM | (1 << 25)); > + __raw_writew(0xffff, PHYS_SDRAM | (1 << 26)); > + > + if (__raw_readw(PHYS_SDRAM | (1 << 25))) > + size >>= 1; > + if (__raw_readw(PHYS_SDRAM | (1 << 24))) > + size >>= 1; > + if (__raw_readw(PHYS_SDRAM)) > + size >>= 1; > + > + return(size); > +} > + > +/* > + * U-Boot commands > + */ > + > +/* ET1100 word switching */ > +int do_wswitch(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) > +{ > + int i = 0; > + > + if (get_hw_rev() == 0) { > + if (argc > 1) { > + i = argv[1][0] == '1'; > + printf("Setting Pin PA25 to '%d'\n", i); > + at91_set_gpio_output(AT91_PIN_PA25, i); > + } else > + puts("None value given!\n"); > + } else { > + puts("Not a prototype, word-switching not provided!\n"); > + } > + return(0); > +} > +U_BOOT_CMD( > + wswitch, 2, 1, do_wswitch, > + "select read word on ET1100 (prototypes only)", > + "\n" > +); > + > +/* > + * CAN physical layer test > + * This command toggles the CANTX pin. As a result, the differential signal on > + * CAN bus toggles an can be measured by a scope. > + * The received signal on CANRX must be equal to the send signal on CANTX. If an > + * error occurs and the signals are different, an error message is being > + * displayed. > + * Conditions for using this command: > + * -CAN transceiver on CANTX/CANRX > + * -no other devices on CAN bus > + * -120R bus termination > + */ > +int do_cantst(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) > +{ > + unsigned int error = 0; > + puts("Toggeling Port PA13 (CANTX)... "); > + /* defines PA13 as output */ > + at91_set_gpio_output(AT91_PIN_PA13, 0); > + /* defines PA14 as input, internal pullup */ > + at91_set_gpio_input(AT91_PIN_PA14, 1); > + > + while (!tstc() && !error) { /* wait for key press or error */ > + at91_set_gpio_value(AT91_PIN_PA13, 1); > + if (!at91_get_gpio_value(AT91_PIN_PA14)) > + error = 1; > + at91_set_gpio_value(AT91_PIN_PA13, 0); > + if (at91_get_gpio_value(AT91_PIN_PA14)) > + error = 1; > + } > + > + if (error) > + puts("CAN error!!\n"); > + else { > + puts("done\n"); > + getc(); /* consume input */ > + } > + return(0); > +} > +U_BOOT_CMD( > + cantst, 2, 1, do_cantst, > + "toggles CANTX-Pin", > + "\n" > +); please add a README > diff --git a/board/esd/meesc/meesc.h b/board/esd/meesc/meesc.h > new file mode 100644 > index 0000000..2ef673b > --- /dev/null > +++ b/board/esd/meesc/meesc.h just move the board_init at the end of the file so no need of this header > @@ -0,0 +1,32 @@ > +/* > + * (C) Copyright 2009 > + * Daniel Gorsulowski <daniel.gorsulowski@esd.eu> > + * esd electronic system design gmbh <www.esd-electronics.com> > + * > + * 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 _MEESC_H_ > +#define _MEESC_H_ > + > +#ifdef CONFIG_MACB > +static void meesc_macb_hw_init(void); > +#endif > +static void meesc_ethercat_hw_init(void); > +int get_hw_rev(void); > +int get_DRAM_size(void); > + > +#endif /* _MEESC_H_ */ > diff --git a/include/configs/meesc.h b/include/configs/meesc.h > new file mode 100644 > index 0000000..97f32a4 > --- /dev/null > +++ b/include/configs/meesc.h > @@ -0,0 +1,191 @@ > +/* > + * (C) Copyright 2007-2008 > + * Stelian Pop <stelian.pop@leadtechdesign.com> > + * Lead Tech Design <www.leadtechdesign.com> > + * > + * (C) Copyright 2009 > + * Daniel Gorsulowski <daniel.gorsulowski@esd.eu> > + * esd electronic system design gmbh <www.esd.eu> > + * > + * Configuation settings for the esd MEESC 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 > + > +/* ARM asynchronous clock */ > +#define AT91_CPU_NAME "AT91SAM9263" > +#define AT91_MAIN_CLOCK 16000000 /* 16.0 MHz crystal */ > +#define AT91_MASTER_CLOCK 100000000 /* peripheral */ > +#define AT91_CPU_CLOCK 200000000 /* cpu */ > +#define CONFIG_SYS_AT91_PLLB 0x00023f01 /* PLLB settings for USB */ > +#define CONFIG_SYS_HZ 1000 /* decrementer freq */ please move to the new clock framework > + > +#define AT91_SLOW_CLOCK 32768 /* slow clock */ > + > +#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*/ > +#undef CONFIG_USE_IRQ /* don't need IRQ/FIQ stuff */ > +#define CONFIG_ENV_OVERWRITE 1 /* necessary on prototypes */ > +#define CONFIG_DISPLAY_BOARDINFO 1 > +#define CONFIG_PREBOOT /* enable preboot variable */ > + > +#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_ATMEL_USART 1 > +#undef CONFIG_USART0 > +#undef CONFIG_USART1 > +#undef CONFIG_USART2 > +#define CONFIG_USART3 1 /* USART 3 is DBGU */ > + > +#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_AUTOSCRIPT > +#undef CONFIG_CMD_FPGA > +#undef CONFIG_CMD_LOADS > +#undef CONFIG_CMD_IMLS > +#undef CONFIG_CMD_USB you will not use the USB? > + > +#define CONFIG_CMD_PING 1 > +#define CONFIG_CMD_DHCP 1 > +#define CONFIG_CMD_NAND 1 > +#define CONFIG_CMD_LED 1 > + > +/* LED */ > +#define CONFIG_USER_LED 1 > +#define CONFIG_LED1 AT91_PIN_PB8 /* this is LED1A */ > +#define CONFIG_LED2 AT91_PIN_PB7 /* this is LED1B */ > + > +/* SDRAM */ > +#define CONFIG_NR_DRAM_BANKS 1 > +#define PHYS_SDRAM 0x20000000 > + > +/* DataFlash */ > +#define CONFIG_ATMEL_DATAFLASH_SPI > +#define CONFIG_HAS_DATAFLASH 1 > +#ifdef CONFIG_SYS_USE_DATAFLASH > + > +/* bootstrap + u-boot + env + linux in dataflash on CS0 */ > +#define CONFIG_ENV_IS_IN_DATAFLASH 1 > +#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \ > + 0x8400) > +#define CONFIG_ENV_OFFSET 0x4200 > +#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \ > + CONFIG_ENV_OFFSET) > +#define CONFIG_ENV_SIZE 0x4200 > +#define CONFIG_BOOTCOMMAND "cp.b C0042000 22000000 210000; bootm" > + > +#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 22000000 A0000 200000; bootm" > + > +#endif > + > +#define CONFIG_BAUDRATE 115200 > +#define CONFIG_SYS_BAUDRATE_TABLE {115200 , 19200, 38400, 57600, 9600 } > + > +#define CONFIG_SYS_PROMPT "=> " > +#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 > + > +/* > + * Size of malloc() pool > + */ > +#define CONFIG_SYS_MALLOC_LEN 0x2D000 > +#define CONFIG_SYS_GBL_DATA_SIZE 128 /* 128 bytes for initial data */ > + > +#define CONFIG_STACKSIZE (32*1024) /* regular stack */ please add a space before and after the '*' Best Regards, J. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] Bug in new at91 clock framework? 2009-04-17 6:00 ` Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-22 10:15 ` Daniel Gorsulowski [not found] ` <20090422131402.GA29252@game.jcrosoft.org> 0 siblings, 1 reply; 8+ messages in thread From: Daniel Gorsulowski @ 2009-04-22 10:15 UTC (permalink / raw) To: u-boot Hello Jean-Christophe, I'm not sure, but I think there is a bug in your new at91 clock framework. My board does only boot, if CONFIG_USB_ATMEL is defined. But the board does not have any usb-ports, so there is no need to define CONFIG_USB_ATMEL. The board is based on an Atmel AT91SAM9263 SoC. Is that possible, or do i have to fix my lowlevel_init? Best Regards, Daniel Gorsulowski ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <20090422131402.GA29252@game.jcrosoft.org>]
* [U-Boot] Bug in new at91 clock framework? [not found] ` <20090422131402.GA29252@game.jcrosoft.org> @ 2009-04-23 10:38 ` Daniel Gorsulowski 2009-04-23 12:59 ` Jean-Christophe PLAGNIOL-VILLARD 0 siblings, 1 reply; 8+ messages in thread From: Daniel Gorsulowski @ 2009-04-23 10:38 UTC (permalink / raw) To: u-boot Jean-Christophe PLAGNIOL-VILLARD schrieb: > On 12:15 Wed 22 Apr , Daniel Gorsulowski wrote: >> Hello Jean-Christophe, >> >> I'm not sure, but I think there is a bug in your new at91 clock framework. >> My board does only boot, if CONFIG_USB_ATMEL is defined. But the board does >> not have any usb-ports, so there is no need to define CONFIG_USB_ATMEL. >> The board is based on an Atmel AT91SAM9263 SoC. > I've seen in with the one on my clock branch > but if you use the one for the pull request normaly not > > I've test it on my 9263EK > > Best Regards, > J. > I'm working on git://git.denx.de/u-boot-at91.git branch clock I also have an AT91SAM9263-EK, but with a 16.0 MHz main oscillator. Everything is fine, as long as no changes were made. But if I undef CONFIG_USB_ATMEL and CONFIG_CMD_USB, the board does not boot. Only some cryptical characters appear after the "RomBOOT" term. It's the same behavior as on my own board. If i do the same on git://git.denx.de/u-boot.git branch master, everything works fine. (as well AT91SAM9263-EK as my board) Do you have any advice for debugging that problem? Best regards, Daniel Gorsulowski ^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] Bug in new at91 clock framework? 2009-04-23 10:38 ` Daniel Gorsulowski @ 2009-04-23 12:59 ` Jean-Christophe PLAGNIOL-VILLARD 2009-04-23 13:44 ` Daniel Gorsulowski 0 siblings, 1 reply; 8+ messages in thread From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-23 12:59 UTC (permalink / raw) To: u-boot > > I'm working on git://git.denx.de/u-boot-at91.git branch clock > I also have an AT91SAM9263-EK, but with a 16.0 MHz main oscillator. > Everything is fine, as long as no changes were made. But if I undef > CONFIG_USB_ATMEL and CONFIG_CMD_USB, the board does not boot. Only > some cryptical characters appear after the "RomBOOT" term. It's the > same behavior as on my own board. use git://git.denx.de/u-boot-at91.git branch master Best Regards, J. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] Bug in new at91 clock framework? 2009-04-23 12:59 ` Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-23 13:44 ` Daniel Gorsulowski 0 siblings, 0 replies; 8+ messages in thread From: Daniel Gorsulowski @ 2009-04-23 13:44 UTC (permalink / raw) To: u-boot Jean-Christophe PLAGNIOL-VILLARD schrieb: >> I'm working on git://git.denx.de/u-boot-at91.git branch clock >> I also have an AT91SAM9263-EK, but with a 16.0 MHz main oscillator. >> Everything is fine, as long as no changes were made. But if I undef >> CONFIG_USB_ATMEL and CONFIG_CMD_USB, the board does not boot. Only >> some cryptical characters appear after the "RomBOOT" term. It's the >> same behavior as on my own board. > use git://git.denx.de/u-boot-at91.git branch master > > Best Regards, > J. > Thank you, it works now. But I have to apply the attached patch. Otherwise, I get a compiler error cpu/arm926ejs/at91/libat91.a(clock.o): In function `at91_clock_init': /data/home/danielg/git/u-boot-at91_new/cpu/arm926ejs/at91/clock.c:167: undefined reference to `at91_pll_rate' --- From 730db691fabf958d1b3d74e678f7f47a0776df16 Mon Sep 17 00:00:00 2001 From: Daniel Gorsulowski <Daniel.Gorsulowski@esd.eu> Date: Thu, 23 Apr 2009 15:37:16 +0200 Subject: [PATCH] at91: fixed cpu/arm926ejs/at91/clock.c Signed-off-by: Daniel Gorsulowski <Daniel.Gorsulowski@esd.eu> --- cpu/arm926ejs/at91/clock.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/cpu/arm926ejs/at91/clock.c b/cpu/arm926ejs/at91/clock.c index 31e53b3..f776f70 100644 --- a/cpu/arm926ejs/at91/clock.c +++ b/cpu/arm926ejs/at91/clock.c @@ -126,6 +126,7 @@ static unsigned at91_pll_calc(unsigned main_freq, unsigned out_freq) fail: return 0; } +#endif static u32 at91_pll_rate(u32 freq, u32 reg) { @@ -141,7 +142,6 @@ static u32 at91_pll_rate(u32 freq, u32 reg) return freq; } -#endif int at91_clock_init(unsigned long main_clock) { -- 1.6.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console 2009-04-07 12:31 [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Daniel Gorsulowski 2009-04-07 12:31 ` [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh Daniel Gorsulowski @ 2009-04-17 5:51 ` Jean-Christophe PLAGNIOL-VILLARD 1 sibling, 0 replies; 8+ messages in thread From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-17 5:51 UTC (permalink / raw) To: u-boot On 14:31 Tue 07 Apr , Daniel Gorsulowski wrote: > This patch bases on patch of Ulf Samuelsson > ([PATCH 1/1] ARM: Add command to control coloured led from the console, > Wed Jan 7 21:09:55 CET 2009) > It allows any board implementing the user LED API > to control the LEDs from the console. > > led [ 1 | 2 | 3 | 4 | 5 | all ] [ on | off ] > > Adding configuration item CONFIG_CMD_LED enables the command. > The items CONFIG_LED1...5 configure the associated gpio-pins. > > Signed-off-by: Daniel Gorsulowski <Daniel.Gorsulowski@esd.eu> > --- > common/Makefile | 1 + > common/cmd_led.c | 105 +++++++++++++++++++++++++++++++++++++++++ > cpu/arm926ejs/at91/Makefile | 1 + > cpu/arm926ejs/at91/user_led.c | 102 +++++++++++++++++++++++++++++++++++++++ > include/user_led.h | 60 +++++++++++++++++++++++ > 5 files changed, 269 insertions(+), 0 deletions(-) > create mode 100644 common/cmd_led.c > create mode 100644 cpu/arm926ejs/at91/user_led.c > create mode 100644 include/user_led.h > > diff --git a/common/Makefile b/common/Makefile > index b9f4ca7..e0f571c 100644 > --- a/common/Makefile > +++ b/common/Makefile > @@ -103,6 +103,7 @@ COBJS-$(CONFIG_CMD_IMMAP) += cmd_immap.o > COBJS-$(CONFIG_CMD_IRQ) += cmd_irq.o > COBJS-$(CONFIG_CMD_ITEST) += cmd_itest.o > COBJS-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o > +COBJS-$(CONFIG_CMD_LED) += cmd_led.o > COBJS-$(CONFIG_CMD_LICENSE) += cmd_license.o > COBJS-y += cmd_load.o > COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o > diff --git a/common/cmd_led.c b/common/cmd_led.c > new file mode 100644 > index 0000000..248f3a9 > --- /dev/null > +++ b/common/cmd_led.c > @@ -0,0 +1,105 @@ > +/* > + * (C) Copyright 2008 > + * Ulf Samuelsson <ulf.samuelsson@atmel.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 > + */ > + > +/* > + * This file provides a shell like 'test' function to return > + * true/false from an integer or string compare of two memory > + * locations or a location and a scalar/literal. > + * A few parts were lifted from bash 'test' command > + */ > + > +#include <common.h> > +#include <config.h> > +#include <command.h> > +#include <user_led.h> > + > +int do_led (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) > +{ > + int led; > + > + /* Validate arguments */ > + if ((argc != 3)) { > + printf("Usage:\n%s\n", cmdtp->usage); > + return 1; > + } > + if (strcmp(argv[1], "1") == 0) { > + led = (1 << 0); > + } else if (strcmp(argv[1], "2") == 0) { > + led = (1 << 1); > + } else if (strcmp(argv[1], "3") == 0) { > + led = (1 << 2); > + } else if (strcmp(argv[1], "4") == 0) { > + led = (1 << 3); > + } else if (strcmp(argv[1], "5") == 0) { > + led = (1 << 4); > + } else if (strcmp(argv[1], "all") == 0) { > + led = 31; > + } else { > + printf ("Usage:\n%s\n", cmdtp->usage); > + return 1; > + } > + > + if (strcmp(argv[2], "off") == 0) { > +#ifdef CONFIG_LED1 > + if(led & 1) user_LED1_off(); please no uppercase in the function name abd please use the collor API or extend it and do not add 100 of functions please a parameter btw please move this to lib_arm/ > +#endif > +#ifdef CONFIG_LED2 > + if(led & 2) user_LED2_off(); > +#endif > +#ifdef CONFIG_LED3 > + if(led & 4) user_LED3_off(); > +#endif > +#ifdef CONFIG_LED4 > + if(led & 8) user_LED4_off(); > +#endif > +#ifdef CONFIG_LED5 > + if(led & 16) user_LED5_off(); > +#endif > + } else if (strcmp(argv[2], "on") == 0) { > +#ifdef CONFIG_LED1 > + if(led & 1) user_LED1_on(); > +#endif > +#ifdef CONFIG_LED2 > + if(led & 2) user_LED2_on(); > +#endif > +#ifdef CONFIG_LED3 > + if(led & 4) user_LED3_on(); > +#endif > +#ifdef CONFIG_LED4 > + if(led & 8) user_LED4_on(); > +#endif > +#ifdef CONFIG_LED5 > + if(led & 16) user_LED5_on(); > +#endif > + } else { > + printf ("Usage:\n%s\n", cmdtp->usage); > + return 1; > + } > + return 0; > +} > + > +U_BOOT_CMD( > + led, 3, 1, do_led, > + "[1|2|3|4|5|all] [on|off]", > + "[1|2|3|4|5|all] [on|off] sets/clears led 1,2,3,4,5" > +); > diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile > index 34e7461..f404cf1 100644 > --- a/cpu/arm926ejs/at91/Makefile > +++ b/cpu/arm926ejs/at91/Makefile > @@ -55,6 +55,7 @@ COBJS-y += at91sam9rl_serial.o > COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9rl_spi.o > endif > COBJS-$(CONFIG_AT91_LED) += led.o > +COBJS-$(CONFIG_USER_LED) += user_led.o > COBJS-y += timer.o > SOBJS = lowlevel_init.o > > diff --git a/cpu/arm926ejs/at91/user_led.c b/cpu/arm926ejs/at91/user_led.c > new file mode 100644 > index 0000000..a5dc197 > --- /dev/null > +++ b/cpu/arm926ejs/at91/user_led.c > @@ -0,0 +1,102 @@ > +/* > + * (C) Copyright 2007-2008 > + * Stelian Pop <stelian.pop@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/arch/at91sam9263.h> only 9263? please use asm/arch/hardware.h > +#include <asm/arch/at91_pmc.h> > +#include <asm/arch/gpio.h> > +#include <asm/arch/io.h> > + > +void user_LED_init(void) > +{ > + /* Enable clock */ > + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOB | > + 1 << AT91SAM9263_ID_PIOCDE); > + > + at91_set_gpio_output(CONFIG_LED1, 1); > + at91_set_gpio_output(CONFIG_LED2, 1); > + > + at91_set_gpio_value(CONFIG_LED1, 1); > + at91_set_gpio_value(CONFIG_LED2, 1); > +} > + > +#ifdef CONFIG_LED1 > +void user_LED1_on(void) > +{ > + at91_set_gpio_value(CONFIG_LED1, 0); > +} > + > +void user_LED1_off(void) > +{ > + at91_set_gpio_value(CONFIG_LED1, 1); > +} > +#endif > + > +#ifdef CONFIG_LED2 > +void user_LED2_on(void) > +{ > + at91_set_gpio_value(CONFIG_LED2, 0); > +} > + > +void user_LED2_off(void) > +{ > + at91_set_gpio_value(CONFIG_LED2, 1); > +} > +#endif > + > +#ifdef CONFIG_LED3 > +void user_LED3_on(void) > +{ > + at91_set_gpio_value(CONFIG_LED3, 0); > +} > + > +void user_LED3_off(void) > +{ > + at91_set_gpio_value(CONFIG_LED3, 1); > +} > +#endif > + > +#ifdef CONFIG_LED4 > +void user_LED4_on(void) > +{ > + at91_set_gpio_value(CONFIG_LED4, 0); > +} > + > +void user_LED4_off(void) > +{ > + at91_set_gpio_value(CONFIG_LED4, 1); > +} > +#endif > + > +#ifdef CONFIG_LED5 > +void user_LED5_on(void) > +{ > + at91_set_gpio_value(CONFIG_LED5, 0); > +} > + > +void user_LED5_off(void) > +{ > + at91_set_gpio_value(CONFIG_LED5, 1); > +} > +#endif > diff --git a/include/user_led.h b/include/user_led.h please move to include/asm-arm/ as it's arm specific > new file mode 100644 > index 0000000..e0b808f > --- /dev/null > +++ b/include/user_led.h > @@ -0,0 +1,60 @@ > +/* > + * (C) Copyright 2008 > + * Wolfgang Denk, DENX Software Engineering, wd at denx.de. wd at denx.de Best Regards, J ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-04-23 13:44 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-07 12:31 [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Daniel Gorsulowski
2009-04-07 12:31 ` [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh Daniel Gorsulowski
2009-04-17 6:00 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-22 10:15 ` [U-Boot] Bug in new at91 clock framework? Daniel Gorsulowski
[not found] ` <20090422131402.GA29252@game.jcrosoft.org>
2009-04-23 10:38 ` Daniel Gorsulowski
2009-04-23 12:59 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-23 13:44 ` Daniel Gorsulowski
2009-04-17 5:51 ` [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Jean-Christophe PLAGNIOL-VILLARD
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox