[U-Boot] [PATCH 0/1] AT91SAM9/CAP9: cleanup common code

Hi,
The following patchset will cleanup the current at91sam9 and at91cap9 code to unify common code
Jean-Christophe PLAGNIOL-VILLARD (7): at91sam9/at91cap: move common serial initialisation to cpu at91sam9/at91cap: move common spi initialisation to cpu at91sam9/at91cap: move common led management to cpu at91sam9/at91cap: move common usb host initialisation to cpu at91sam9/at91cap: move common macb initialisation to cpu atmel/at91/boards: compile dataflash partition only when dataflash is at91sam9/at91cap: move nand drivers to drivers/mtd/nand
board/afeb9260/Makefile | 1 - board/afeb9260/afeb9260.c | 72 ++--------------- board/atmel/at91cap9adk/Makefile | 3 +- board/atmel/at91cap9adk/at91cap9adk.c | 71 ++--------------- board/atmel/at91cap9adk/led.c | 46 ++--------- board/atmel/at91cap9adk/nand.c | 72 ----------------- board/atmel/at91sam9260ek/Makefile | 3 +- board/atmel/at91sam9260ek/at91sam9260ek.c | 83 ++------------------ board/atmel/at91sam9260ek/led.c | 31 +------ board/atmel/at91sam9260ek/nand.c | 78 ------------------ board/atmel/at91sam9261ek/Makefile | 3 +- board/atmel/at91sam9261ek/at91sam9261ek.c | 50 +---------- board/atmel/at91sam9261ek/led.c | 47 ++---------- board/atmel/at91sam9261ek/nand.c | 78 ------------------ board/atmel/at91sam9263ek/Makefile | 3 +- board/atmel/at91sam9263ek/at91sam9263ek.c | 85 ++------------------ board/atmel/at91sam9263ek/led.c | 46 ++--------- board/atmel/at91sam9263ek/nand.c | 78 ------------------ board/atmel/at91sam9rlek/Makefile | 3 +- board/atmel/at91sam9rlek/at91sam9rlek.c | 50 +---------- board/atmel/at91sam9rlek/led.c | 46 ++--------- board/atmel/at91sam9rlek/nand.c | 78 ------------------ cpu/arm926ejs/at91/Makefile | 27 ++++++- cpu/arm926ejs/at91/at91cap9_macb.c | 54 ++++++++++++ cpu/arm926ejs/at91/at91cap9_serial.c | 76 +++++++++++++++++ cpu/arm926ejs/at91/at91cap9_spi.c | 75 +++++++++++++++++ cpu/arm926ejs/at91/at91sam9260_macb.c | 63 +++++++++++++++ cpu/arm926ejs/at91/at91sam9260_serial.c | 76 +++++++++++++++++ cpu/arm926ejs/at91/at91sam9260_spi.c | 75 +++++++++++++++++ cpu/arm926ejs/at91/at91sam9261_serial.c | 76 +++++++++++++++++ cpu/arm926ejs/at91/at91sam9261_spi.c | 75 +++++++++++++++++ cpu/arm926ejs/at91/at91sam9263_macb.c | 54 ++++++++++++ cpu/arm926ejs/at91/at91sam9263_serial.c | 76 +++++++++++++++++ cpu/arm926ejs/at91/at91sam9263_spi.c | 75 +++++++++++++++++ cpu/arm926ejs/at91/at91sam9263_usb.c | 35 ++++++++ cpu/arm926ejs/at91/at91sam9rl_serial.c | 76 +++++++++++++++++ cpu/arm926ejs/at91/at91sam9rl_spi.c | 52 ++++++++++++ cpu/arm926ejs/at91/led.c | 64 +++++++++++++++ drivers/mtd/nand/Makefile | 1 + .../nand.c => drivers/mtd/nand/atmel_nand.c | 32 ++++---- include/asm-arm/arch-at91/at91_common.h | 38 +++++++++ include/configs/afeb9260.h | 9 ++ include/configs/at91cap9adk.h | 14 +++ include/configs/at91sam9260ek.h | 14 +++ include/configs/at91sam9261ek.h | 15 ++++ include/configs/at91sam9263ek.h | 15 ++++ include/configs/at91sam9rlek.h | 15 ++++ 47 files changed, 1234 insertions(+), 975 deletions(-) delete mode 100644 board/atmel/at91cap9adk/nand.c delete mode 100644 board/atmel/at91sam9260ek/nand.c delete mode 100644 board/atmel/at91sam9261ek/nand.c delete mode 100644 board/atmel/at91sam9263ek/nand.c delete mode 100644 board/atmel/at91sam9rlek/nand.c create mode 100644 cpu/arm926ejs/at91/at91cap9_macb.c create mode 100644 cpu/arm926ejs/at91/at91cap9_serial.c create mode 100644 cpu/arm926ejs/at91/at91cap9_spi.c create mode 100644 cpu/arm926ejs/at91/at91sam9260_macb.c create mode 100644 cpu/arm926ejs/at91/at91sam9260_serial.c create mode 100644 cpu/arm926ejs/at91/at91sam9260_spi.c create mode 100644 cpu/arm926ejs/at91/at91sam9261_serial.c create mode 100644 cpu/arm926ejs/at91/at91sam9261_spi.c create mode 100644 cpu/arm926ejs/at91/at91sam9263_macb.c create mode 100644 cpu/arm926ejs/at91/at91sam9263_serial.c create mode 100644 cpu/arm926ejs/at91/at91sam9263_spi.c create mode 100644 cpu/arm926ejs/at91/at91sam9263_usb.c create mode 100644 cpu/arm926ejs/at91/at91sam9rl_serial.c create mode 100644 cpu/arm926ejs/at91/at91sam9rl_spi.c create mode 100644 cpu/arm926ejs/at91/led.c rename board/afeb9260/nand.c => drivers/mtd/nand/atmel_nand.c (72%) create mode 100644 include/asm-arm/arch-at91/at91_common.h
Best Regards, J.

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com --- board/afeb9260/afeb9260.c | 30 +----------- board/atmel/at91cap9adk/at91cap9adk.c | 30 +----------- board/atmel/at91sam9260ek/at91sam9260ek.c | 30 +----------- board/atmel/at91sam9261ek/at91sam9261ek.c | 30 +----------- board/atmel/at91sam9263ek/at91sam9263ek.c | 30 +----------- board/atmel/at91sam9rlek/at91sam9rlek.c | 30 +----------- cpu/arm926ejs/at91/Makefile | 7 ++- cpu/arm926ejs/at91/at91cap9_serial.c | 76 +++++++++++++++++++++++++++++ cpu/arm926ejs/at91/at91sam9260_serial.c | 76 +++++++++++++++++++++++++++++ cpu/arm926ejs/at91/at91sam9261_serial.c | 76 +++++++++++++++++++++++++++++ cpu/arm926ejs/at91/at91sam9263_serial.c | 76 +++++++++++++++++++++++++++++ cpu/arm926ejs/at91/at91sam9rl_serial.c | 76 +++++++++++++++++++++++++++++ include/asm-arm/arch-at91/at91_common.h | 34 +++++++++++++ 13 files changed, 432 insertions(+), 169 deletions(-) create mode 100644 cpu/arm926ejs/at91/at91cap9_serial.c create mode 100644 cpu/arm926ejs/at91/at91sam9260_serial.c create mode 100644 cpu/arm926ejs/at91/at91sam9261_serial.c create mode 100644 cpu/arm926ejs/at91/at91sam9263_serial.c create mode 100644 cpu/arm926ejs/at91/at91sam9rl_serial.c create mode 100644 include/asm-arm/arch-at91/at91_common.h
diff --git a/board/afeb9260/afeb9260.c b/board/afeb9260/afeb9260.c index 32445ab..dd29d91 100644 --- a/board/afeb9260/afeb9260.c +++ b/board/afeb9260/afeb9260.c @@ -27,6 +27,7 @@ #include <asm/arch/at91sam9260.h> #include <asm/arch/at91sam9260_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/gpio.h> @@ -44,33 +45,6 @@ DECLARE_GLOBAL_DATA_PTR; * Miscelaneous platform dependent initialisations */
-static void afeb9260_serial_hw_init(void) -{ -#ifdef CONFIG_USART0 - at91_set_A_periph(AT91_PIN_PB4, 1); /* TXD0 */ - at91_set_A_periph(AT91_PIN_PB5, 0); /* RXD0 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_US0); -#endif - -#ifdef CONFIG_USART1 - at91_set_A_periph(AT91_PIN_PB6, 1); /* TXD1 */ - at91_set_A_periph(AT91_PIN_PB7, 0); /* RXD1 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_US1); -#endif - -#ifdef CONFIG_USART2 - at91_set_A_periph(AT91_PIN_PB8, 1); /* TXD2 */ - at91_set_A_periph(AT91_PIN_PB9, 0); /* RXD2 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_US2); -#endif - -#ifdef CONFIG_USART3 /* DBGU */ - at91_set_A_periph(AT91_PIN_PB14, 0); /* DRXD */ - at91_set_A_periph(AT91_PIN_PB15, 1); /* DTXD */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); -#endif -} - static void afeb9260_nand_hw_init(void) { unsigned long csa; @@ -201,7 +175,7 @@ int board_init(void) /* adress of boot parameters */ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
- afeb9260_serial_hw_init(); + at91_serial_hw_init(); #ifdef CONFIG_CMD_NAND afeb9260_nand_hw_init(); #endif diff --git a/board/atmel/at91cap9adk/at91cap9adk.c b/board/atmel/at91cap9adk/at91cap9adk.c index f7d68b7..18a0e9d 100644 --- a/board/atmel/at91cap9adk/at91cap9adk.c +++ b/board/atmel/at91cap9adk/at91cap9adk.c @@ -26,6 +26,7 @@ #include <asm/arch/at91cap9.h> #include <asm/arch/at91cap9_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/gpio.h> @@ -47,33 +48,6 @@ DECLARE_GLOBAL_DATA_PTR; * Miscelaneous platform dependent initialisations */
-static void at91cap9_serial_hw_init(void) -{ -#ifdef CONFIG_USART0 - at91_set_A_periph(AT91_PIN_PA22, 1); /* TXD0 */ - at91_set_A_periph(AT91_PIN_PA23, 0); /* RXD0 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91CAP9_ID_US0); -#endif - -#ifdef CONFIG_USART1 - at91_set_A_periph(AT91_PIN_PD0, 1); /* TXD1 */ - at91_set_A_periph(AT91_PIN_PD1, 0); /* RXD1 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91CAP9_ID_US1); -#endif - -#ifdef CONFIG_USART2 - at91_set_A_periph(AT91_PIN_PD2, 1); /* TXD2 */ - at91_set_A_periph(AT91_PIN_PD3, 0); /* RXD2 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91CAP9_ID_US2); -#endif - -#ifdef CONFIG_USART3 /* DBGU */ - at91_set_A_periph(AT91_PIN_PC30, 0); /* DRXD */ - at91_set_A_periph(AT91_PIN_PC31, 1); /* DTXD */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); -#endif -} - static void at91cap9_slowclock_hw_init(void) { /* @@ -367,7 +341,7 @@ int board_init(void) /* adress of boot parameters */ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
- at91cap9_serial_hw_init(); + at91_serial_hw_init(); at91cap9_slowclock_hw_init(); at91cap9_nor_hw_init(); #ifdef CONFIG_CMD_NAND diff --git a/board/atmel/at91sam9260ek/at91sam9260ek.c b/board/atmel/at91sam9260ek/at91sam9260ek.c index ef99b8b..985daf7 100644 --- a/board/atmel/at91sam9260ek/at91sam9260ek.c +++ b/board/atmel/at91sam9260ek/at91sam9260ek.c @@ -26,6 +26,7 @@ #include <asm/arch/at91sam9260.h> #include <asm/arch/at91sam9260_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/gpio.h> @@ -43,33 +44,6 @@ DECLARE_GLOBAL_DATA_PTR; * Miscelaneous platform dependent initialisations */
-static void at91sam9260ek_serial_hw_init(void) -{ -#ifdef CONFIG_USART0 - at91_set_A_periph(AT91_PIN_PB4, 1); /* TXD0 */ - at91_set_A_periph(AT91_PIN_PB5, 0); /* RXD0 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_US0); -#endif - -#ifdef CONFIG_USART1 - at91_set_A_periph(AT91_PIN_PB6, 1); /* TXD1 */ - at91_set_A_periph(AT91_PIN_PB7, 0); /* RXD1 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_US1); -#endif - -#ifdef CONFIG_USART2 - at91_set_A_periph(AT91_PIN_PB8, 1); /* TXD2 */ - at91_set_A_periph(AT91_PIN_PB9, 0); /* RXD2 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_US2); -#endif - -#ifdef CONFIG_USART3 /* DBGU */ - at91_set_A_periph(AT91_PIN_PB14, 0); /* DRXD */ - at91_set_A_periph(AT91_PIN_PB15, 1); /* DTXD */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); -#endif -} - #ifdef CONFIG_CMD_NAND static void at91sam9260ek_nand_hw_init(void) { @@ -217,7 +191,7 @@ int board_init(void) /* adress of boot parameters */ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
- at91sam9260ek_serial_hw_init(); + at91_serial_hw_init(); #ifdef CONFIG_CMD_NAND at91sam9260ek_nand_hw_init(); #endif diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c b/board/atmel/at91sam9261ek/at91sam9261ek.c index 14f236d..5fe3d3f 100644 --- a/board/atmel/at91sam9261ek/at91sam9261ek.c +++ b/board/atmel/at91sam9261ek/at91sam9261ek.c @@ -26,6 +26,7 @@ #include <asm/arch/at91sam9261.h> #include <asm/arch/at91sam9261_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/gpio.h> @@ -43,33 +44,6 @@ DECLARE_GLOBAL_DATA_PTR; * Miscelaneous platform dependent initialisations */
-static void at91sam9261ek_serial_hw_init(void) -{ -#ifdef CONFIG_USART0 - at91_set_A_periph(AT91_PIN_PC8, 1); /* TXD0 */ - at91_set_A_periph(AT91_PIN_PC9, 0); /* RXD0 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_US0); -#endif - -#ifdef CONFIG_USART1 - at91_set_A_periph(AT91_PIN_PC12, 1); /* TXD1 */ - at91_set_A_periph(AT91_PIN_PC13, 0); /* RXD1 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_US1); -#endif - -#ifdef CONFIG_USART2 - at91_set_A_periph(AT91_PIN_PC14, 1); /* TXD2 */ - at91_set_A_periph(AT91_PIN_PC15, 0); /* RXD2 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_US2); -#endif - -#ifdef CONFIG_USART3 /* DBGU */ - at91_set_A_periph(AT91_PIN_PA9, 0); /* DRXD */ - at91_set_A_periph(AT91_PIN_PA10, 1); /* DTXD */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); -#endif -} - #ifdef CONFIG_CMD_NAND static void at91sam9261ek_nand_hw_init(void) { @@ -250,7 +224,7 @@ int board_init(void) /* adress of boot parameters */ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
- at91sam9261ek_serial_hw_init(); + at91_serial_hw_init(); #ifdef CONFIG_CMD_NAND at91sam9261ek_nand_hw_init(); #endif diff --git a/board/atmel/at91sam9263ek/at91sam9263ek.c b/board/atmel/at91sam9263ek/at91sam9263ek.c index ebd4649..37634a8 100644 --- a/board/atmel/at91sam9263ek/at91sam9263ek.c +++ b/board/atmel/at91sam9263ek/at91sam9263ek.c @@ -27,6 +27,7 @@ #include <asm/arch/at91sam9263.h> #include <asm/arch/at91sam9263_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/gpio.h> @@ -46,33 +47,6 @@ DECLARE_GLOBAL_DATA_PTR; * Miscelaneous platform dependent initialisations */
-static void at91sam9263ek_serial_hw_init(void) -{ -#ifdef CONFIG_USART0 - at91_set_A_periph(AT91_PIN_PA26, 1); /* TXD0 */ - at91_set_A_periph(AT91_PIN_PA27, 0); /* RXD0 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_US0); -#endif - -#ifdef CONFIG_USART1 - at91_set_A_periph(AT91_PIN_PD0, 1); /* TXD1 */ - at91_set_A_periph(AT91_PIN_PD1, 0); /* RXD1 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_US1); -#endif - -#ifdef CONFIG_USART2 - at91_set_A_periph(AT91_PIN_PD2, 1); /* TXD2 */ - at91_set_A_periph(AT91_PIN_PD3, 0); /* RXD2 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_US2); -#endif - -#ifdef CONFIG_USART3 /* DBGU */ - at91_set_A_periph(AT91_PIN_PC30, 0); /* DRXD */ - at91_set_A_periph(AT91_PIN_PC31, 1); /* DTXD */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); -#endif -} - #ifdef CONFIG_CMD_NAND static void at91sam9263ek_nand_hw_init(void) { @@ -301,7 +275,7 @@ int board_init(void) /* adress of boot parameters */ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
- at91sam9263ek_serial_hw_init(); + at91_serial_hw_init(); #ifdef CONFIG_CMD_NAND at91sam9263ek_nand_hw_init(); #endif diff --git a/board/atmel/at91sam9rlek/at91sam9rlek.c b/board/atmel/at91sam9rlek/at91sam9rlek.c index b6fef9d..26395a2 100644 --- a/board/atmel/at91sam9rlek/at91sam9rlek.c +++ b/board/atmel/at91sam9rlek/at91sam9rlek.c @@ -26,6 +26,7 @@ #include <asm/arch/at91sam9rl.h> #include <asm/arch/at91sam9rl_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/gpio.h> @@ -43,33 +44,6 @@ DECLARE_GLOBAL_DATA_PTR; * Miscelaneous platform dependent initialisations */
-static void at91sam9rlek_serial_hw_init(void) -{ -#ifdef CONFIG_USART0 - at91_set_A_periph(AT91_PIN_PA6, 1); /* TXD0 */ - at91_set_A_periph(AT91_PIN_PA7, 0); /* RXD0 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9RL_ID_US0); -#endif - -#ifdef CONFIG_USART1 - at91_set_A_periph(AT91_PIN_PA11, 1); /* TXD1 */ - at91_set_A_periph(AT91_PIN_PA12, 0); /* RXD1 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9RL_ID_US1); -#endif - -#ifdef CONFIG_USART2 - at91_set_A_periph(AT91_PIN_PA13, 1); /* TXD2 */ - at91_set_A_periph(AT91_PIN_PA14, 0); /* RXD2 */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9RL_ID_US2); -#endif - -#ifdef CONFIG_USART3 /* DBGU */ - at91_set_A_periph(AT91_PIN_PA21, 0); /* DRXD */ - at91_set_A_periph(AT91_PIN_PA22, 1); /* DTXD */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); -#endif -} - #ifdef CONFIG_CMD_NAND static void at91sam9rlek_nand_hw_init(void) { @@ -223,7 +197,7 @@ int board_init(void) /* adress of boot parameters */ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
- at91sam9rlek_serial_hw_init(); + at91_serial_hw_init(); #ifdef CONFIG_CMD_NAND at91sam9rlek_nand_hw_init(); #endif diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile index 2d2a888..66d4d6d 100644 --- a/cpu/arm926ejs/at91/Makefile +++ b/cpu/arm926ejs/at91/Makefile @@ -25,8 +25,13 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(SOC).a
+COBJS-$(CONFIG_AT91CAP9) += at91cap9_serial.o +COBJS-$(CONFIG_AT91SAM9260) += at91sam9260_serial.o +COBJS-$(CONFIG_AT91SAM9261) += at91sam9261_serial.o +COBJS-$(CONFIG_AT91SAM9263) += at91sam9263_serial.o +COBJS-$(CONFIG_AT91SAM9RL) += at91sam9rl_serial.o +COBJS-$(CONFIG_HAS_DATAFLASH) += spi.o COBJS-y += timer.o -COBJS-$(CONFIG_HAS_DATAFLASH) +=spi.o COBJS-y += usb.o SOBJS = lowlevel_init.o
diff --git a/cpu/arm926ejs/at91/at91cap9_serial.c b/cpu/arm926ejs/at91/at91cap9_serial.c new file mode 100644 index 0000000..5f41f7e --- /dev/null +++ b/cpu/arm926ejs/at91/at91cap9_serial.c @@ -0,0 +1,76 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_serial0_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PA22, 1); /* TXD0 */ + at91_set_A_periph(AT91_PIN_PA23, 0); /* RXD0 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91CAP9_ID_US0); +} + +void at91_serial1_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PD0, 1); /* TXD1 */ + at91_set_A_periph(AT91_PIN_PD1, 0); /* RXD1 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91CAP9_ID_US1); +} + +void at91_serial2_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PD2, 1); /* TXD2 */ + at91_set_A_periph(AT91_PIN_PD3, 0); /* RXD2 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91CAP9_ID_US2); +} + +void at91_serial3_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PC30, 0); /* DRXD */ + at91_set_A_periph(AT91_PIN_PC31, 1); /* DTXD */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); +} + +void at91_serial_hw_init(void) +{ +#ifdef CONFIG_USART0 + at91_serial0_hw_init(); +#endif + +#ifdef CONFIG_USART1 + at91_serial1_hw_init(); +#endif + +#ifdef CONFIG_USART2 + at91_serial2_hw_init(); +#endif + +#ifdef CONFIG_USART3 /* DBGU */ + at91_serial3_hw_init(); +#endif +} diff --git a/cpu/arm926ejs/at91/at91sam9260_serial.c b/cpu/arm926ejs/at91/at91sam9260_serial.c new file mode 100644 index 0000000..43f1971 --- /dev/null +++ b/cpu/arm926ejs/at91/at91sam9260_serial.c @@ -0,0 +1,76 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_serial0_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PB4, 1); /* TXD0 */ + at91_set_A_periph(AT91_PIN_PB5, 0); /* RXD0 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_US0); +} + +void at91_serial1_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PB6, 1); /* TXD1 */ + at91_set_A_periph(AT91_PIN_PB7, 0); /* RXD1 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_US1); +} + +void at91_serial2_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PB8, 1); /* TXD2 */ + at91_set_A_periph(AT91_PIN_PB9, 0); /* RXD2 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_US2); +} + +void at91_serial3_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PB14, 0); /* DRXD */ + at91_set_A_periph(AT91_PIN_PB15, 1); /* DTXD */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); +} + +void at91_serial_hw_init(void) +{ +#ifdef CONFIG_USART0 + at91_serial0_hw_init(); +#endif + +#ifdef CONFIG_USART1 + at91_serial1_hw_init(); +#endif + +#ifdef CONFIG_USART2 + at91_serial2_hw_init(); +#endif + +#ifdef CONFIG_USART3 /* DBGU */ + at91_serial3_hw_init(); +#endif +} diff --git a/cpu/arm926ejs/at91/at91sam9261_serial.c b/cpu/arm926ejs/at91/at91sam9261_serial.c new file mode 100644 index 0000000..c262a92 --- /dev/null +++ b/cpu/arm926ejs/at91/at91sam9261_serial.c @@ -0,0 +1,76 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_serial0_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PC8, 1); /* TXD0 */ + at91_set_A_periph(AT91_PIN_PC9, 0); /* RXD0 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_US0); +} + +void at91_serial1_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PC12, 1); /* TXD1 */ + at91_set_A_periph(AT91_PIN_PC13, 0); /* RXD1 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_US1); +} + +void at91_serial2_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PC14, 1); /* TXD2 */ + at91_set_A_periph(AT91_PIN_PC15, 0); /* RXD2 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_US2); +} + +void at91_serial3_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PA9, 0); /* DRXD */ + at91_set_A_periph(AT91_PIN_PA10, 1); /* DTXD */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); +} + +void at91_serial_hw_init(void) +{ +#ifdef CONFIG_USART0 + at91_serial0_hw_init(); +#endif + +#ifdef CONFIG_USART1 + at91_serial1_hw_init(); +#endif + +#ifdef CONFIG_USART2 + at91_serial2_hw_init(); +#endif + +#ifdef CONFIG_USART3 /* DBGU */ + at91_serial3_hw_init(); +#endif +} diff --git a/cpu/arm926ejs/at91/at91sam9263_serial.c b/cpu/arm926ejs/at91/at91sam9263_serial.c new file mode 100644 index 0000000..1076195 --- /dev/null +++ b/cpu/arm926ejs/at91/at91sam9263_serial.c @@ -0,0 +1,76 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_serial0_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PA26, 1); /* TXD0 */ + at91_set_A_periph(AT91_PIN_PA27, 0); /* RXD0 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_US0); +} + +void at91_serial1_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PD0, 1); /* TXD1 */ + at91_set_A_periph(AT91_PIN_PD1, 0); /* RXD1 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_US1); +} + +void at91_serial2_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PD2, 1); /* TXD2 */ + at91_set_A_periph(AT91_PIN_PD3, 0); /* RXD2 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_US2); +} + +void at91_serial3_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PC30, 0); /* DRXD */ + at91_set_A_periph(AT91_PIN_PC31, 1); /* DTXD */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); +} + +void at91_serial_hw_init(void) +{ +#ifdef CONFIG_USART0 + at91_serial0_hw_init(); +#endif + +#ifdef CONFIG_USART1 + at91_serial1_hw_init(); +#endif + +#ifdef CONFIG_USART2 + at91_serial2_hw_init(); +#endif + +#ifdef CONFIG_USART3 /* DBGU */ + at91_serial3_hw_init(); +#endif +} diff --git a/cpu/arm926ejs/at91/at91sam9rl_serial.c b/cpu/arm926ejs/at91/at91sam9rl_serial.c new file mode 100644 index 0000000..99ce418 --- /dev/null +++ b/cpu/arm926ejs/at91/at91sam9rl_serial.c @@ -0,0 +1,76 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_serial0_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PA6, 1); /* TXD0 */ + at91_set_A_periph(AT91_PIN_PA7, 0); /* RXD0 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9RL_ID_US0); +} + +void at91_serial1_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PA11, 1); /* TXD1 */ + at91_set_A_periph(AT91_PIN_PA12, 0); /* RXD1 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9RL_ID_US1); +} + +void at91_serial2_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PA13, 1); /* TXD2 */ + at91_set_A_periph(AT91_PIN_PA14, 0); /* RXD2 */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9RL_ID_US2); +} + +void at91_serial3_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PA21, 0); /* DRXD */ + at91_set_A_periph(AT91_PIN_PA22, 1); /* DTXD */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); +} + +void at91_serial_hw_init(void) +{ +#ifdef CONFIG_USART0 + at91_serial0_hw_init(); +#endif + +#ifdef CONFIG_USART1 + at91_serial1_hw_init(); +#endif + +#ifdef CONFIG_USART2 + at91_serial2_hw_init(); +#endif + +#ifdef CONFIG_USART3 /* DBGU */ + at91_serial3_hw_init(); +#endif +} diff --git a/include/asm-arm/arch-at91/at91_common.h b/include/asm-arm/arch-at91/at91_common.h new file mode 100644 index 0000000..2ac241f --- /dev/null +++ b/include/asm-arm/arch-at91/at91_common.h @@ -0,0 +1,34 @@ +/* + * (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 + */ + +#ifndef AT91_COMMON_H +#define AT91_COMMON_H + +void at91_serial_hw_init(void); +void at91_serial0_hw_init(void); +void at91_serial1_hw_init(void); +void at91_serial2_hw_init(void); +void at91_serial3_hw_init(void); + +#endif /* AT91_COMMON_H */

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com --- board/afeb9260/afeb9260.c | 15 +---- board/atmel/at91cap9adk/at91cap9adk.c | 16 +---- board/atmel/at91sam9260ek/at91sam9260ek.c | 17 +---- board/atmel/at91sam9261ek/at91sam9261ek.c | 16 +---- board/atmel/at91sam9263ek/at91sam9263ek.c | 17 +---- board/atmel/at91sam9rlek/at91sam9rlek.c | 16 +---- cpu/arm926ejs/at91/Makefile | 25 +++++-- cpu/arm926ejs/at91/at91cap9_spi.c | 75 ++++++++++++++++++++ cpu/arm926ejs/at91/at91sam9260_spi.c | 75 ++++++++++++++++++++ cpu/arm926ejs/at91/at91sam9261_spi.c | 75 ++++++++++++++++++++ cpu/arm926ejs/at91/at91sam9263_spi.c | 75 ++++++++++++++++++++ .../arm926ejs/at91/at91sam9rl_spi.c | 34 +++++++-- include/asm-arm/arch-at91/at91_common.h | 2 + 13 files changed, 355 insertions(+), 103 deletions(-) create mode 100644 cpu/arm926ejs/at91/at91cap9_spi.c create mode 100644 cpu/arm926ejs/at91/at91sam9260_spi.c create mode 100644 cpu/arm926ejs/at91/at91sam9261_spi.c create mode 100644 cpu/arm926ejs/at91/at91sam9263_spi.c copy include/asm-arm/arch-at91/at91_common.h => cpu/arm926ejs/at91/at91sam9rl_spi.c (56%)
diff --git a/board/afeb9260/afeb9260.c b/board/afeb9260/afeb9260.c index dd29d91..0f9c504 100644 --- a/board/afeb9260/afeb9260.c +++ b/board/afeb9260/afeb9260.c @@ -78,19 +78,6 @@ static void afeb9260_nand_hw_init(void) at91_set_gpio_output(AT91_PIN_PC14, 1); }
-static void afeb9260_spi_hw_init(void) -{ - at91_set_A_periph(AT91_PIN_PA3, 0); /* SPI0_NPCS0 */ - at91_set_B_periph(AT91_PIN_PC11, 0); /* SPI0_NPCS1 */ - - at91_set_A_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ - at91_set_A_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ - at91_set_A_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ - - /* Enable clock */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_SPI0); -} - #ifdef CONFIG_MACB static void afeb9260_macb_hw_init(void) { @@ -179,7 +166,7 @@ int board_init(void) #ifdef CONFIG_CMD_NAND afeb9260_nand_hw_init(); #endif - afeb9260_spi_hw_init(); + at91_spi0_hw_init((1 << 0) || (1 << 1)); #ifdef CONFIG_MACB afeb9260_macb_hw_init(); #endif diff --git a/board/atmel/at91cap9adk/at91cap9adk.c b/board/atmel/at91cap9adk/at91cap9adk.c index 18a0e9d..b1e9c62 100644 --- a/board/atmel/at91cap9adk/at91cap9adk.c +++ b/board/atmel/at91cap9adk/at91cap9adk.c @@ -137,20 +137,6 @@ static void at91cap9_nand_hw_init(void) } #endif
-#ifdef CONFIG_HAS_DATAFLASH -static void at91cap9_spi_hw_init(void) -{ - at91_set_B_periph(AT91_PIN_PA5, 0); /* SPI0_NPCS0 */ - - at91_set_B_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ - at91_set_B_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ - at91_set_B_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ - - /* Enable clock */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91CAP9_ID_SPI0); -} -#endif - #ifdef CONFIG_MACB static void at91cap9_macb_hw_init(void) { @@ -348,7 +334,7 @@ int board_init(void) at91cap9_nand_hw_init(); #endif #ifdef CONFIG_HAS_DATAFLASH - at91cap9_spi_hw_init(); + at91_spi0_hw_init(1 << 0); #endif #ifdef CONFIG_MACB at91cap9_macb_hw_init(); diff --git a/board/atmel/at91sam9260ek/at91sam9260ek.c b/board/atmel/at91sam9260ek/at91sam9260ek.c index 985daf7..ad9dfeb 100644 --- a/board/atmel/at91sam9260ek/at91sam9260ek.c +++ b/board/atmel/at91sam9260ek/at91sam9260ek.c @@ -83,21 +83,6 @@ static void at91sam9260ek_nand_hw_init(void) } #endif
-#ifdef CONFIG_HAS_DATAFLASH -static void at91sam9260ek_spi_hw_init(void) -{ - at91_set_A_periph(AT91_PIN_PA3, 0); /* SPI0_NPCS0 */ - at91_set_B_periph(AT91_PIN_PC11, 0); /* SPI0_NPCS1 */ - - at91_set_A_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ - at91_set_A_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ - at91_set_A_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ - - /* Enable clock */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_SPI0); -} -#endif - #ifdef CONFIG_MACB static void at91sam9260ek_macb_hw_init(void) { @@ -196,7 +181,7 @@ int board_init(void) at91sam9260ek_nand_hw_init(); #endif #ifdef CONFIG_HAS_DATAFLASH - at91sam9260ek_spi_hw_init(); + at91_spi0_hw_init((1 << 0) || (1 << 1)); #endif #ifdef CONFIG_MACB at91sam9260ek_macb_hw_init(); diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c b/board/atmel/at91sam9261ek/at91sam9261ek.c index 5fe3d3f..d8f006c 100644 --- a/board/atmel/at91sam9261ek/at91sam9261ek.c +++ b/board/atmel/at91sam9261ek/at91sam9261ek.c @@ -86,20 +86,6 @@ static void at91sam9261ek_nand_hw_init(void) } #endif
-#ifdef CONFIG_HAS_DATAFLASH -static void at91sam9261ek_spi_hw_init(void) -{ - at91_set_A_periph(AT91_PIN_PA3, 0); /* SPI0_NPCS0 */ - - at91_set_A_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ - at91_set_A_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ - at91_set_A_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ - - /* Enable clock */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_SPI0); -} -#endif - #ifdef CONFIG_DRIVER_DM9000 static void at91sam9261ek_dm9000_hw_init(void) { @@ -229,7 +215,7 @@ int board_init(void) at91sam9261ek_nand_hw_init(); #endif #ifdef CONFIG_HAS_DATAFLASH - at91sam9261ek_spi_hw_init(); + at91_spi0_hw_init(1 << 0); #endif #ifdef CONFIG_DRIVER_DM9000 at91sam9261ek_dm9000_hw_init(); diff --git a/board/atmel/at91sam9263ek/at91sam9263ek.c b/board/atmel/at91sam9263ek/at91sam9263ek.c index 37634a8..1a3e39c 100644 --- a/board/atmel/at91sam9263ek/at91sam9263ek.c +++ b/board/atmel/at91sam9263ek/at91sam9263ek.c @@ -87,20 +87,6 @@ static void at91sam9263ek_nand_hw_init(void) } #endif
-#ifdef CONFIG_HAS_DATAFLASH -static void at91sam9263ek_spi_hw_init(void) -{ - at91_set_B_periph(AT91_PIN_PA5, 0); /* SPI0_NPCS0 */ - - at91_set_B_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ - at91_set_B_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ - at91_set_B_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ - - /* Enable clock */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_SPI0); -} -#endif - #ifdef CONFIG_MACB static void at91sam9263ek_macb_hw_init(void) { @@ -280,7 +266,8 @@ int board_init(void) at91sam9263ek_nand_hw_init(); #endif #ifdef CONFIG_HAS_DATAFLASH - at91sam9263ek_spi_hw_init(); + at91_set_gpio_output(AT91_PIN_PE20, 1); /* select spi0 clock */ + at91_spi0_hw_init(1 << 0); #endif #ifdef CONFIG_MACB at91sam9263ek_macb_hw_init(); diff --git a/board/atmel/at91sam9rlek/at91sam9rlek.c b/board/atmel/at91sam9rlek/at91sam9rlek.c index 26395a2..ce10cdf 100644 --- a/board/atmel/at91sam9rlek/at91sam9rlek.c +++ b/board/atmel/at91sam9rlek/at91sam9rlek.c @@ -86,20 +86,6 @@ static void at91sam9rlek_nand_hw_init(void) } #endif
-#ifdef CONFIG_HAS_DATAFLASH -static void at91sam9rlek_spi_hw_init(void) -{ - at91_set_A_periph(AT91_PIN_PA28, 0); /* SPI0_NPCS0 */ - - at91_set_A_periph(AT91_PIN_PA25, 0); /* SPI0_MISO */ - at91_set_A_periph(AT91_PIN_PA26, 0); /* SPI0_MOSI */ - at91_set_A_periph(AT91_PIN_PA27, 0); /* SPI0_SPCK */ - - /* Enable clock */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9RL_ID_SPI); -} -#endif - #ifdef CONFIG_LCD vidinfo_t panel_info = { vl_col: 240, @@ -202,7 +188,7 @@ int board_init(void) at91sam9rlek_nand_hw_init(); #endif #ifdef CONFIG_HAS_DATAFLASH - at91sam9rlek_spi_hw_init(); + at91_spi0_hw_init(1 << 0); #endif #ifdef CONFIG_LCD at91sam9rlek_lcd_hw_init(); diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile index 66d4d6d..e547ab5 100644 --- a/cpu/arm926ejs/at91/Makefile +++ b/cpu/arm926ejs/at91/Makefile @@ -25,11 +25,26 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(SOC).a
-COBJS-$(CONFIG_AT91CAP9) += at91cap9_serial.o -COBJS-$(CONFIG_AT91SAM9260) += at91sam9260_serial.o -COBJS-$(CONFIG_AT91SAM9261) += at91sam9261_serial.o -COBJS-$(CONFIG_AT91SAM9263) += at91sam9263_serial.o -COBJS-$(CONFIG_AT91SAM9RL) += at91sam9rl_serial.o +ifdef CONFIG_AT91CAP9 +COBJS-y += at91cap9_serial.o +COBJS-$(CONFIG_HAS_DATAFLASH) += at91cap9_spi.o +endif +ifdef CONFIG_AT91SAM9260 +COBJS-y += at91sam9260_serial.o +COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9260_spi.o +endif +ifdef CONFIG_AT91SAM9261 +COBJS-y += at91sam9261_serial.o +COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9261_spi.o +endif +ifdef CONFIG_AT91SAM9263 +COBJS-y += at91sam9263_serial.o +COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9263_spi.o +endif +ifdef CONFIG_AT91SAM9RL +COBJS-y += at91sam9rl_serial.o +COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9rl_spi.o +endif COBJS-$(CONFIG_HAS_DATAFLASH) += spi.o COBJS-y += timer.o COBJS-y += usb.o diff --git a/cpu/arm926ejs/at91/at91cap9_spi.c b/cpu/arm926ejs/at91/at91cap9_spi.c new file mode 100644 index 0000000..356a804 --- /dev/null +++ b/cpu/arm926ejs/at91/at91cap9_spi.c @@ -0,0 +1,75 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_spi0_hw_init(unsigned long cs_mask) +{ + at91_set_B_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ + at91_set_B_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ + at91_set_B_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ + + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91CAP9_ID_SPI0); + + if (cs_mask & (1 << 0)) { + at91_set_gpio_output(AT91_PIN_PA5, 1); + } + if (cs_mask & (1 << 1)) { + at91_set_gpio_output(AT91_PIN_PA3, 1); + } + if (cs_mask & (1 << 2)) { + at91_set_gpio_output(AT91_PIN_PD0, 1); + } + if (cs_mask & (1 << 3)) { + at91_set_gpio_output(AT91_PIN_PD1, 1); + } +} + +void at91_spi1_hw_init(unsigned long cs_mask) +{ + at91_set_A_periph(AT91_PIN_PB12, 0); /* SPI1_MISO */ + at91_set_A_periph(AT91_PIN_PB13, 0); /* SPI1_MOSI */ + at91_set_A_periph(AT91_PIN_PB14, 0); /* SPI1_SPCK */ + + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91CAP9_ID_SPI1); + + if (cs_mask & (1 << 0)) { + at91_set_gpio_output(AT91_PIN_PB15, 1); + } + if (cs_mask & (1 << 1)) { + at91_set_gpio_output(AT91_PIN_PB16, 1); + } + if (cs_mask & (1 << 2)) { + at91_set_gpio_output(AT91_PIN_PB17, 1); + } + if (cs_mask & (1 << 3)) { + at91_set_gpio_output(AT91_PIN_PB18, 1); + } +} diff --git a/cpu/arm926ejs/at91/at91sam9260_spi.c b/cpu/arm926ejs/at91/at91sam9260_spi.c new file mode 100644 index 0000000..0105072 --- /dev/null +++ b/cpu/arm926ejs/at91/at91sam9260_spi.c @@ -0,0 +1,75 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_spi0_hw_init(unsigned long cs_mask) +{ + at91_set_A_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ + at91_set_A_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ + at91_set_A_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ + + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_SPI0); + + if (cs_mask & (1 << 0)) { + at91_set_gpio_output(AT91_PIN_PA3, 1); + } + if (cs_mask & (1 << 1)) { + at91_set_gpio_output(AT91_PIN_PC11, 1); + } + if (cs_mask & (1 << 2)) { + at91_set_gpio_output(AT91_PIN_PC16, 1); + } + if (cs_mask & (1 << 3)) { + at91_set_gpio_output(AT91_PIN_PC17, 1); + } +} + +void at91_spi1_hw_init(unsigned long cs_mask) +{ + at91_set_A_periph(AT91_PIN_PB0, 0); /* SPI1_MISO */ + at91_set_A_periph(AT91_PIN_PB1, 0); /* SPI1_MOSI */ + at91_set_A_periph(AT91_PIN_PB2, 0); /* SPI1_SPCK */ + + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_SPI1); + + if (cs_mask & (1 << 0)) { + at91_set_gpio_output(AT91_PIN_PB3, 1); + } + if (cs_mask & (1 << 1)) { + at91_set_gpio_output(AT91_PIN_PC5, 1); + } + if (cs_mask & (1 << 2)) { + at91_set_gpio_output(AT91_PIN_PC4, 1); + } + if (cs_mask & (1 << 3)) { + at91_set_gpio_output(AT91_PIN_PC3, 1); + } +} diff --git a/cpu/arm926ejs/at91/at91sam9261_spi.c b/cpu/arm926ejs/at91/at91sam9261_spi.c new file mode 100644 index 0000000..f70320d --- /dev/null +++ b/cpu/arm926ejs/at91/at91sam9261_spi.c @@ -0,0 +1,75 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_spi0_hw_init(unsigned long cs_mask) +{ + at91_set_A_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ + at91_set_A_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ + at91_set_A_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ + + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_SPI0); + + if (cs_mask & (1 << 0)) { + at91_set_gpio_output(AT91_PIN_PA3, 1); + } + if (cs_mask & (1 << 1)) { + at91_set_gpio_output(AT91_PIN_PA4, 1); + } + if (cs_mask & (1 << 2)) { + at91_set_gpio_output(AT91_PIN_PA5, 1); + } + if (cs_mask & (1 << 3)) { + at91_set_gpio_output(AT91_PIN_PA6, 1); + } +} + +void at91_spi1_hw_init(unsigned long cs_mask) +{ + at91_set_A_periph(AT91_PIN_PB30, 0); /* SPI1_MISO */ + at91_set_A_periph(AT91_PIN_PB31, 0); /* SPI1_MOSI */ + at91_set_A_periph(AT91_PIN_PB29, 0); /* SPI1_SPCK */ + + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_SPI1); + + if (cs_mask & (1 << 0)) { + at91_set_gpio_output(AT91_PIN_PB28, 1); + } + if (cs_mask & (1 << 1)) { + at91_set_gpio_output(AT91_PIN_PA24, 1); + } + if (cs_mask & (1 << 2)) { + at91_set_gpio_output(AT91_PIN_PA25, 1); + } + if (cs_mask & (1 << 3)) { + at91_set_gpio_output(AT91_PIN_PA26, 1); + } +} diff --git a/cpu/arm926ejs/at91/at91sam9263_spi.c b/cpu/arm926ejs/at91/at91sam9263_spi.c new file mode 100644 index 0000000..1dda04c --- /dev/null +++ b/cpu/arm926ejs/at91/at91sam9263_spi.c @@ -0,0 +1,75 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_spi0_hw_init(unsigned long cs_mask) +{ + at91_set_B_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ + at91_set_B_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ + at91_set_B_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ + + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_SPI0); + + if (cs_mask & (1 << 0)) { + at91_set_gpio_output(AT91_PIN_PA5, 1); + } + if (cs_mask & (1 << 1)) { + at91_set_gpio_output(AT91_PIN_PA3, 1); + } + if (cs_mask & (1 << 2)) { + at91_set_gpio_output(AT91_PIN_PA4, 1); + } + if (cs_mask & (1 << 3)) { + at91_set_gpio_output(AT91_PIN_PB11, 1); + } +} + +void at91_spi1_hw_init(unsigned long cs_mask) +{ + at91_set_A_periph(AT91_PIN_PB12, 0); /* SPI1_MISO */ + at91_set_A_periph(AT91_PIN_PB13, 0); /* SPI1_MOSI */ + at91_set_A_periph(AT91_PIN_PB14, 0); /* SPI1_SPCK */ + + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_SPI1); + + if (cs_mask & (1 << 0)) { + at91_set_gpio_output(AT91_PIN_PB15, 1); + } + if (cs_mask & (1 << 1)) { + at91_set_gpio_output(AT91_PIN_PB16, 1); + } + if (cs_mask & (1 << 2)) { + at91_set_gpio_output(AT91_PIN_PB17, 1); + } + if (cs_mask & (1 << 3)) { + at91_set_gpio_output(AT91_PIN_PB18, 1); + } +} diff --git a/include/asm-arm/arch-at91/at91_common.h b/cpu/arm926ejs/at91/at91sam9rl_spi.c similarity index 56% copy from include/asm-arm/arch-at91/at91_common.h copy to cpu/arm926ejs/at91/at91sam9rl_spi.c index 2ac241f..aa9c183 100644 --- a/include/asm-arm/arch-at91/at91_common.h +++ b/cpu/arm926ejs/at91/at91sam9rl_spi.c @@ -22,13 +22,31 @@ * MA 02111-1307 USA */
-#ifndef AT91_COMMON_H -#define AT91_COMMON_H +#include <common.h> +#include <asm/arch/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h>
-void at91_serial_hw_init(void); -void at91_serial0_hw_init(void); -void at91_serial1_hw_init(void); -void at91_serial2_hw_init(void); -void at91_serial3_hw_init(void); +void at91_spi0_hw_init(unsigned long cs_mask) +{ + at91_set_A_periph(AT91_PIN_PA25, 0); /* SPI0_MISO */ + at91_set_A_periph(AT91_PIN_PA26, 0); /* SPI0_MOSI */ + at91_set_A_periph(AT91_PIN_PA27, 0); /* SPI0_SPCK */
-#endif /* AT91_COMMON_H */ + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9RL_ID_SPI); + + if (cs_mask & (1 << 0)) { + at91_set_gpio_output(AT91_PIN_PA28, 1); + } + if (cs_mask & (1 << 1)) { + at91_set_gpio_output(AT91_PIN_PB7, 1); + } + if (cs_mask & (1 << 2)) { + at91_set_gpio_output(AT91_PIN_PD8, 1); + } + if (cs_mask & (1 << 3)) { + at91_set_gpio_output(AT91_PIN_PD9, 1); + } +} diff --git a/include/asm-arm/arch-at91/at91_common.h b/include/asm-arm/arch-at91/at91_common.h index 2ac241f..1432f94 100644 --- a/include/asm-arm/arch-at91/at91_common.h +++ b/include/asm-arm/arch-at91/at91_common.h @@ -30,5 +30,7 @@ void at91_serial0_hw_init(void); void at91_serial1_hw_init(void); void at91_serial2_hw_init(void); void at91_serial3_hw_init(void); +void at91_spi0_hw_init(unsigned long cs_mask); +void at91_spi1_hw_init(unsigned long cs_mask);
#endif /* AT91_COMMON_H */

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com --- board/atmel/at91cap9adk/led.c | 46 +++----------------- board/atmel/at91sam9260ek/led.c | 31 ++----------- board/atmel/at91sam9261ek/led.c | 47 +++----------------- board/atmel/at91sam9263ek/led.c | 46 +++----------------- board/atmel/at91sam9rlek/led.c | 46 +++----------------- cpu/arm926ejs/at91/Makefile | 1 + .../at91sam9260ek => cpu/arm926ejs/at91}/led.c | 32 +++++++------- include/configs/at91cap9adk.h | 6 +++ include/configs/at91sam9260ek.h | 5 ++ include/configs/at91sam9261ek.h | 6 +++ include/configs/at91sam9263ek.h | 6 +++ include/configs/at91sam9rlek.h | 6 +++ 12 files changed, 74 insertions(+), 204 deletions(-) copy {board/atmel/at91sam9260ek => cpu/arm926ejs/at91}/led.c (67%)
diff --git a/board/atmel/at91cap9adk/led.c b/board/atmel/at91cap9adk/led.c index a137c2a..14aea99 100644 --- a/board/atmel/at91cap9adk/led.c +++ b/board/atmel/at91cap9adk/led.c @@ -28,50 +28,16 @@ #include <asm/arch/gpio.h> #include <asm/arch/io.h>
-#define RED_LED AT91_PIN_PC29 /* this is the power led */ -#define GREEN_LED AT91_PIN_PA10 /* this is the user1 led */ -#define YELLOW_LED AT91_PIN_PA11 /* this is the user1 led */ - -void red_LED_on(void) -{ - at91_set_gpio_value(RED_LED, 1); -} - -void red_LED_off(void) -{ - at91_set_gpio_value(RED_LED, 0); -} - -void green_LED_on(void) -{ - at91_set_gpio_value(GREEN_LED, 0); -} - -void green_LED_off(void) -{ - at91_set_gpio_value(GREEN_LED, 1); -} - -void yellow_LED_on(void) -{ - at91_set_gpio_value(YELLOW_LED, 0); -} - -void yellow_LED_off(void) -{ - at91_set_gpio_value(YELLOW_LED, 1); -} - void coloured_LED_init(void) { /* Enable clock */ at91_sys_write(AT91_PMC_PCER, 1 << AT91CAP9_ID_PIOABCD);
- at91_set_gpio_output(RED_LED, 1); - at91_set_gpio_output(GREEN_LED, 1); - at91_set_gpio_output(YELLOW_LED, 1); + at91_set_gpio_output(CONFIG_RED_LED, 1); + at91_set_gpio_output(CONFIG_GREEN_LED, 1); + at91_set_gpio_output(CONFIG_YELLOW_LED, 1);
- at91_set_gpio_output(RED_LED, 0); - at91_set_gpio_output(GREEN_LED, 1); - at91_set_gpio_output(YELLOW_LED, 1); + at91_set_gpio_output(CONFIG_RED_LED, 0); + at91_set_gpio_output(CONFIG_GREEN_LED, 1); + at91_set_gpio_output(CONFIG_YELLOW_LED, 1); } diff --git a/board/atmel/at91sam9260ek/led.c b/board/atmel/at91sam9260ek/led.c index ddc375f..2424d27 100644 --- a/board/atmel/at91sam9260ek/led.c +++ b/board/atmel/at91sam9260ek/led.c @@ -28,37 +28,14 @@ #include <asm/arch/gpio.h> #include <asm/arch/io.h>
-#define RED_LED AT91_PIN_PA9 /* this is the power led */ -#define GREEN_LED AT91_PIN_PA6 /* this is the user led */ - -void red_LED_on(void) -{ - at91_set_gpio_value(RED_LED, 1); -} - -void red_LED_off(void) -{ - at91_set_gpio_value(RED_LED, 0); -} - -void green_LED_on(void) -{ - at91_set_gpio_value(GREEN_LED, 0); -} - -void green_LED_off(void) -{ - at91_set_gpio_value(GREEN_LED, 1); -} - void coloured_LED_init(void) { /* Enable clock */ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOA);
- at91_set_gpio_output(RED_LED, 1); - at91_set_gpio_output(GREEN_LED, 1); + at91_set_gpio_output(CONFIG_RED_LED, 1); + at91_set_gpio_output(CONFIG_GREEN_LED, 1);
- at91_set_gpio_value(RED_LED, 0); - at91_set_gpio_value(GREEN_LED, 1); + at91_set_gpio_value(CONFIG_RED_LED, 0); + at91_set_gpio_value(CONFIG_GREEN_LED, 1); } diff --git a/board/atmel/at91sam9261ek/led.c b/board/atmel/at91sam9261ek/led.c index eb2bb23..5d1c5f2 100644 --- a/board/atmel/at91sam9261ek/led.c +++ b/board/atmel/at91sam9261ek/led.c @@ -28,51 +28,16 @@ #include <asm/arch/gpio.h> #include <asm/arch/io.h>
-#define RED_LED AT91_PIN_PA23 /* this is the power led */ -#define GREEN_LED AT91_PIN_PA13 /* this is the user1 led */ -#define YELLOW_LED AT91_PIN_PA14 /* this is the user2 led */ - -void red_LED_on(void) -{ - at91_set_gpio_value(RED_LED, 1); -} - -void red_LED_off(void) -{ - at91_set_gpio_value(RED_LED, 0); -} - -void green_LED_on(void) -{ - at91_set_gpio_value(GREEN_LED, 0); -} - -void green_LED_off(void) -{ - at91_set_gpio_value(GREEN_LED, 1); -} - -void yellow_LED_on(void) -{ - at91_set_gpio_value(YELLOW_LED, 0); -} - -void yellow_LED_off(void) -{ - at91_set_gpio_value(YELLOW_LED, 1); -} - - void coloured_LED_init(void) { /* Enable clock */ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_PIOA);
- at91_set_gpio_output(RED_LED, 1); - at91_set_gpio_output(GREEN_LED, 1); - at91_set_gpio_output(YELLOW_LED, 1); + at91_set_gpio_output(CONFIG_RED_LED, 1); + at91_set_gpio_output(CONFIG_GREEN_LED, 1); + at91_set_gpio_output(CONFIG_YELLOW_LED, 1);
- at91_set_gpio_value(RED_LED, 0); - at91_set_gpio_value(GREEN_LED, 1); - at91_set_gpio_value(YELLOW_LED, 1); + at91_set_gpio_value(CONFIG_RED_LED, 0); + at91_set_gpio_value(CONFIG_GREEN_LED, 1); + at91_set_gpio_value(CONFIG_YELLOW_LED, 1); } diff --git a/board/atmel/at91sam9263ek/led.c b/board/atmel/at91sam9263ek/led.c index eb8d6ca..82c5388 100644 --- a/board/atmel/at91sam9263ek/led.c +++ b/board/atmel/at91sam9263ek/led.c @@ -28,51 +28,17 @@ #include <asm/arch/gpio.h> #include <asm/arch/io.h>
-#define RED_LED AT91_PIN_PB7 /* this is the power led */ -#define GREEN_LED AT91_PIN_PB8 /* this is the user1 led */ -#define YELLOW_LED AT91_PIN_PC29 /* this is the user2 led */ - -void red_LED_on(void) -{ - at91_set_gpio_value(RED_LED, 1); -} - -void red_LED_off(void) -{ - at91_set_gpio_value(RED_LED, 0); -} - -void green_LED_on(void) -{ - at91_set_gpio_value(GREEN_LED, 0); -} - -void green_LED_off(void) -{ - at91_set_gpio_value(GREEN_LED, 1); -} - -void yellow_LED_on(void) -{ - at91_set_gpio_value(YELLOW_LED, 0); -} - -void yellow_LED_off(void) -{ - at91_set_gpio_value(YELLOW_LED, 1); -} - void coloured_LED_init(void) { /* Enable clock */ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOB | 1 << AT91SAM9263_ID_PIOCDE);
- at91_set_gpio_output(RED_LED, 1); - at91_set_gpio_output(GREEN_LED, 1); - at91_set_gpio_output(YELLOW_LED, 1); + at91_set_gpio_output(CONFIG_RED_LED, 1); + at91_set_gpio_output(CONFIG_GREEN_LED, 1); + at91_set_gpio_output(CONFIG_YELLOW_LED, 1);
- at91_set_gpio_value(RED_LED, 0); - at91_set_gpio_value(GREEN_LED, 1); - at91_set_gpio_value(YELLOW_LED, 1); + at91_set_gpio_value(CONFIG_RED_LED, 0); + at91_set_gpio_value(CONFIG_GREEN_LED, 1); + at91_set_gpio_value(CONFIG_YELLOW_LED, 1); } diff --git a/board/atmel/at91sam9rlek/led.c b/board/atmel/at91sam9rlek/led.c index 8a7d8e0..9634cc0 100644 --- a/board/atmel/at91sam9rlek/led.c +++ b/board/atmel/at91sam9rlek/led.c @@ -28,50 +28,16 @@ #include <asm/arch/gpio.h> #include <asm/arch/io.h>
-#define RED_LED AT91_PIN_PD14 /* this is the power led */ -#define GREEN_LED AT91_PIN_PD15 /* this is the user1 led */ -#define YELLOW_LED AT91_PIN_PD16 /* this is the user2 led */ - -void red_LED_on(void) -{ - at91_set_gpio_value(RED_LED, 1); -} - -void red_LED_off(void) -{ - at91_set_gpio_value(RED_LED, 0); -} - -void green_LED_on(void) -{ - at91_set_gpio_value(GREEN_LED, 0); -} - -void green_LED_off(void) -{ - at91_set_gpio_value(GREEN_LED, 1); -} - -void yellow_LED_on(void) -{ - at91_set_gpio_value(YELLOW_LED, 0); -} - -void yellow_LED_off(void) -{ - at91_set_gpio_value(YELLOW_LED, 1); -} - void coloured_LED_init(void) { /* Enable clock */ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9RL_ID_PIOD);
- at91_set_gpio_output(RED_LED, 1); - at91_set_gpio_output(GREEN_LED, 1); - at91_set_gpio_output(YELLOW_LED, 1); + at91_set_gpio_output(CONFIG_RED_LED, 1); + at91_set_gpio_output(CONFIG_GREEN_LED, 1); + at91_set_gpio_output(CONFIG_YELLOW_LED, 1);
- at91_set_gpio_value(RED_LED, 0); - at91_set_gpio_value(GREEN_LED, 1); - at91_set_gpio_value(YELLOW_LED, 1); + at91_set_gpio_value(CONFIG_RED_LED, 0); + at91_set_gpio_value(CONFIG_GREEN_LED, 1); + at91_set_gpio_value(CONFIG_YELLOW_LED, 1); } diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile index e547ab5..95bb59d 100644 --- a/cpu/arm926ejs/at91/Makefile +++ b/cpu/arm926ejs/at91/Makefile @@ -45,6 +45,7 @@ ifdef CONFIG_AT91SAM9RL COBJS-y += at91sam9rl_serial.o COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9rl_spi.o endif +COBJS-$(CONFIG_AT91_LED) += led.o COBJS-$(CONFIG_HAS_DATAFLASH) += spi.o COBJS-y += timer.o COBJS-y += usb.o diff --git a/board/atmel/at91sam9260ek/led.c b/cpu/arm926ejs/at91/led.c similarity index 67% copy from board/atmel/at91sam9260ek/led.c copy to cpu/arm926ejs/at91/led.c index ddc375f..be68f59 100644 --- a/board/atmel/at91sam9260ek/led.c +++ b/cpu/arm926ejs/at91/led.c @@ -23,42 +23,42 @@ */
#include <common.h> -#include <asm/arch/at91sam9260.h> #include <asm/arch/at91_pmc.h> #include <asm/arch/gpio.h> #include <asm/arch/io.h>
-#define RED_LED AT91_PIN_PA9 /* this is the power led */ -#define GREEN_LED AT91_PIN_PA6 /* this is the user led */ - +#ifdef CONFIG_RED_LED void red_LED_on(void) { - at91_set_gpio_value(RED_LED, 1); + at91_set_gpio_value(CONFIG_RED_LED, 1); }
void red_LED_off(void) { - at91_set_gpio_value(RED_LED, 0); + at91_set_gpio_value(CONFIG_RED_LED, 0); } +#endif
+#ifdef CONFIG_GREEN_LED void green_LED_on(void) { - at91_set_gpio_value(GREEN_LED, 0); + at91_set_gpio_value(CONFIG_GREEN_LED, 0); }
void green_LED_off(void) { - at91_set_gpio_value(GREEN_LED, 1); + at91_set_gpio_value(CONFIG_GREEN_LED, 1); } +#endif
-void coloured_LED_init(void) +#ifdef CONFIG_YELLOW_LED +void yellow_LED_on(void) { - /* Enable clock */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOA); - - at91_set_gpio_output(RED_LED, 1); - at91_set_gpio_output(GREEN_LED, 1); + at91_set_gpio_value(CONFIG_YELLOW_LED, 0); +}
- at91_set_gpio_value(RED_LED, 0); - at91_set_gpio_value(GREEN_LED, 1); +void yellow_LED_off(void) +{ + at91_set_gpio_value(CONFIG_YELLOW_LED, 1); } +#endif diff --git a/include/configs/at91cap9adk.h b/include/configs/at91cap9adk.h index 01da99b..d8e6a29 100644 --- a/include/configs/at91cap9adk.h +++ b/include/configs/at91cap9adk.h @@ -70,6 +70,12 @@ #define CONFIG_ATMEL_LCD_BGR555 1 #define CONFIG_SYS_CONSOLE_IS_IN_ENV 1
+/* LED */ +#define CONFIG_AT91_LED +#define CONFIG_RED_LED AT91_PIN_PC29 /* this is the power led */ +#define CONFIG_GREEN_LED AT91_PIN_PA10 /* this is the user1 led */ +#define CONFIG_YELLOW_LED AT91_PIN_PA11 /* this is the user1 led */ + #define CONFIG_BOOTDELAY 3
/* diff --git a/include/configs/at91sam9260ek.h b/include/configs/at91sam9260ek.h index 2f1a41f..e348833 100644 --- a/include/configs/at91sam9260ek.h +++ b/include/configs/at91sam9260ek.h @@ -58,6 +58,11 @@ #undef CONFIG_USART2 #define CONFIG_USART3 1 /* USART 3 is DBGU */
+/* LED */ +#define CONFIG_AT91_LED +#define CONFIG_RED_LED AT91_PIN_PA9 /* this is the power led */ +#define CONFIG_GREEN_LED AT91_PIN_PA6 /* this is the user led */ + #define CONFIG_BOOTDELAY 3
/* diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h index ebecfa4..b119d96 100644 --- a/include/configs/at91sam9261ek.h +++ b/include/configs/at91sam9261ek.h @@ -69,6 +69,12 @@ #define CONFIG_ATMEL_LCD_BGR555 1 #define CONFIG_SYS_CONSOLE_IS_IN_ENV 1
+/* LED */ +#define CONFIG_AT91_LED +#define CONFIG_RED_LED AT91_PIN_PA23 /* this is the power led */ +#define CONFIG_GREEN_LED AT91_PIN_PA13 /* this is the user1 led */ +#define CONFIG_YELLOW_LED AT91_PIN_PA14 /* this is the user2 led */ + #define CONFIG_BOOTDELAY 3
/* diff --git a/include/configs/at91sam9263ek.h b/include/configs/at91sam9263ek.h index 09b871a..979d7a3 100644 --- a/include/configs/at91sam9263ek.h +++ b/include/configs/at91sam9263ek.h @@ -70,6 +70,12 @@ #define CONFIG_ATMEL_LCD_BGR555 1 #define CONFIG_SYS_CONSOLE_IS_IN_ENV 1
+/* LED */ +#define CONFIG_AT91_LED +#define CONFIG_RED_LED AT91_PIN_PB7 /* this is the power led */ +#define CONFIG_GREEN_LED AT91_PIN_PB8 /* this is the user1 led */ +#define CONFIG_YELLOW_LED AT91_PIN_PC29 /* this is the user2 led */ + #define CONFIG_BOOTDELAY 3
/* diff --git a/include/configs/at91sam9rlek.h b/include/configs/at91sam9rlek.h index 5bef1fe..5d837a0 100644 --- a/include/configs/at91sam9rlek.h +++ b/include/configs/at91sam9rlek.h @@ -69,6 +69,12 @@ #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_PD14 /* this is the power led */ +#define CONFIG_GREEN_LED AT91_PIN_PD15 /* this is the user1 led */ +#define CONFIG_YELLOW_LED AT91_PIN_PD16 /* this is the user2 led */ + #define CONFIG_BOOTDELAY 3
/*

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com --- board/atmel/at91sam9263ek/at91sam9263ek.c | 11 +--------- cpu/arm926ejs/at91/Makefile | 1 + .../arm926ejs/at91/at91sam9263_usb.c | 21 +++++++++---------- include/asm-arm/arch-at91/at91_common.h | 1 + 4 files changed, 13 insertions(+), 21 deletions(-) copy include/asm-arm/arch-at91/at91_common.h => cpu/arm926ejs/at91/at91sam9263_usb.c (73%)
diff --git a/board/atmel/at91sam9263ek/at91sam9263ek.c b/board/atmel/at91sam9263ek/at91sam9263ek.c index 1a3e39c..59ace17 100644 --- a/board/atmel/at91sam9263ek/at91sam9263ek.c +++ b/board/atmel/at91sam9263ek/at91sam9263ek.c @@ -154,15 +154,6 @@ static void at91sam9263ek_macb_hw_init(void) } #endif
-#ifdef CONFIG_USB_OHCI_NEW -static void at91sam9263ek_uhp_hw_init(void) -{ - /* Enable VBus on UHP ports */ - at91_set_gpio_output(AT91_PIN_PA21, 0); - at91_set_gpio_output(AT91_PIN_PA24, 0); -} -#endif - #ifdef CONFIG_LCD vidinfo_t panel_info = { vl_col: 240, @@ -273,7 +264,7 @@ int board_init(void) at91sam9263ek_macb_hw_init(); #endif #ifdef CONFIG_USB_OHCI_NEW - at91sam9263ek_uhp_hw_init(); + at91_uhp_hw_init(); #endif #ifdef CONFIG_LCD at91sam9263ek_lcd_hw_init(); diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile index 95bb59d..1523199 100644 --- a/cpu/arm926ejs/at91/Makefile +++ b/cpu/arm926ejs/at91/Makefile @@ -40,6 +40,7 @@ endif ifdef CONFIG_AT91SAM9263 COBJS-y += at91sam9263_serial.o COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9263_spi.o +COBJS-$(CONFIG_USB_OHCI_NEW) += at91sam9263_usb.o endif ifdef CONFIG_AT91SAM9RL COBJS-y += at91sam9rl_serial.o diff --git a/include/asm-arm/arch-at91/at91_common.h b/cpu/arm926ejs/at91/at91sam9263_usb.c similarity index 73% copy from include/asm-arm/arch-at91/at91_common.h copy to cpu/arm926ejs/at91/at91sam9263_usb.c index 1432f94..ff5593b 100644 --- a/include/asm-arm/arch-at91/at91_common.h +++ b/cpu/arm926ejs/at91/at91sam9263_usb.c @@ -22,15 +22,14 @@ * MA 02111-1307 USA */
-#ifndef AT91_COMMON_H -#define AT91_COMMON_H +#include <common.h> +#include <asm/arch/at91_common.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h>
-void at91_serial_hw_init(void); -void at91_serial0_hw_init(void); -void at91_serial1_hw_init(void); -void at91_serial2_hw_init(void); -void at91_serial3_hw_init(void); -void at91_spi0_hw_init(unsigned long cs_mask); -void at91_spi1_hw_init(unsigned long cs_mask); - -#endif /* AT91_COMMON_H */ +void at91_uhp_hw_init(void) +{ + /* Enable VBus on UHP ports */ + at91_set_gpio_output(AT91_PIN_PA21, 0); + at91_set_gpio_output(AT91_PIN_PA24, 0); +} diff --git a/include/asm-arm/arch-at91/at91_common.h b/include/asm-arm/arch-at91/at91_common.h index 1432f94..797854b 100644 --- a/include/asm-arm/arch-at91/at91_common.h +++ b/include/asm-arm/arch-at91/at91_common.h @@ -32,5 +32,6 @@ void at91_serial2_hw_init(void); void at91_serial3_hw_init(void); void at91_spi0_hw_init(unsigned long cs_mask); void at91_spi1_hw_init(unsigned long cs_mask); +void at91_uhp_hw_init(void);
#endif /* AT91_COMMON_H */

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com --- board/afeb9260/afeb9260.c | 23 +---------- board/atmel/at91cap9adk/at91cap9adk.c | 23 +---------- board/atmel/at91sam9260ek/at91sam9260ek.c | 32 +-------------- board/atmel/at91sam9263ek/at91sam9263ek.c | 23 +---------- cpu/arm926ejs/at91/Makefile | 3 + cpu/arm926ejs/at91/at91cap9_macb.c | 54 ++++++++++++++++++++++++ cpu/arm926ejs/at91/at91sam9260_macb.c | 63 +++++++++++++++++++++++++++++ cpu/arm926ejs/at91/at91sam9263_macb.c | 54 ++++++++++++++++++++++++ include/asm-arm/arch-at91/at91_common.h | 1 + 9 files changed, 180 insertions(+), 96 deletions(-) create mode 100644 cpu/arm926ejs/at91/at91cap9_macb.c create mode 100644 cpu/arm926ejs/at91/at91sam9260_macb.c create mode 100644 cpu/arm926ejs/at91/at91sam9263_macb.c
diff --git a/board/afeb9260/afeb9260.c b/board/afeb9260/afeb9260.c index 0f9c504..ba60861 100644 --- a/board/afeb9260/afeb9260.c +++ b/board/afeb9260/afeb9260.c @@ -127,28 +127,7 @@ static void afeb9260_macb_hw_init(void) pin_to_mask(AT91_PIN_PA28), pin_to_controller(AT91_PIN_PA0) + PIO_PUER);
- at91_set_A_periph(AT91_PIN_PA19, 0); /* ETXCK_EREFCK */ - at91_set_A_periph(AT91_PIN_PA17, 0); /* ERXDV */ - at91_set_A_periph(AT91_PIN_PA14, 0); /* ERX0 */ - at91_set_A_periph(AT91_PIN_PA15, 0); /* ERX1 */ - at91_set_A_periph(AT91_PIN_PA18, 0); /* ERXER */ - at91_set_A_periph(AT91_PIN_PA16, 0); /* ETXEN */ - at91_set_A_periph(AT91_PIN_PA12, 0); /* ETX0 */ - at91_set_A_periph(AT91_PIN_PA13, 0); /* ETX1 */ - at91_set_A_periph(AT91_PIN_PA21, 0); /* EMDIO */ - at91_set_A_periph(AT91_PIN_PA20, 0); /* EMDC */ - -#ifndef CONFIG_RMII - at91_set_B_periph(AT91_PIN_PA28, 0); /* ECRS */ - at91_set_B_periph(AT91_PIN_PA29, 0); /* ECOL */ - at91_set_B_periph(AT91_PIN_PA25, 0); /* ERX2 */ - at91_set_B_periph(AT91_PIN_PA26, 0); /* ERX3 */ - at91_set_B_periph(AT91_PIN_PA27, 0); /* ERXCK */ - at91_set_B_periph(AT91_PIN_PA10, 0); /* ETX2 */ - at91_set_B_periph(AT91_PIN_PA11, 0); /* ETX3 */ - at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */ -#endif - + at91_macb_hw_init(); } #endif
diff --git a/board/atmel/at91cap9adk/at91cap9adk.c b/board/atmel/at91cap9adk/at91cap9adk.c index b1e9c62..46a4fce 100644 --- a/board/atmel/at91cap9adk/at91cap9adk.c +++ b/board/atmel/at91cap9adk/at91cap9adk.c @@ -177,27 +177,8 @@ static void at91cap9_macb_hw_init(void) pin_to_mask(AT91_PIN_PB26), pin_to_controller(AT91_PIN_PA0) + PIO_PUER);
- at91_set_A_periph(AT91_PIN_PB21, 0); /* ETXCK_EREFCK */ - at91_set_A_periph(AT91_PIN_PB22, 0); /* ERXDV */ - at91_set_A_periph(AT91_PIN_PB25, 0); /* ERX0 */ - at91_set_A_periph(AT91_PIN_PB26, 0); /* ERX1 */ - at91_set_A_periph(AT91_PIN_PB27, 0); /* ERXER */ - at91_set_A_periph(AT91_PIN_PB28, 0); /* ETXEN */ - at91_set_A_periph(AT91_PIN_PB23, 0); /* ETX0 */ - at91_set_A_periph(AT91_PIN_PB24, 0); /* ETX1 */ - at91_set_A_periph(AT91_PIN_PB30, 0); /* EMDIO */ - at91_set_A_periph(AT91_PIN_PB29, 0); /* EMDC */ - -#ifndef CONFIG_RMII - at91_set_B_periph(AT91_PIN_PC25, 0); /* ECRS */ - at91_set_B_periph(AT91_PIN_PC26, 0); /* ECOL */ - at91_set_B_periph(AT91_PIN_PC22, 0); /* ERX2 */ - at91_set_B_periph(AT91_PIN_PC23, 0); /* ERX3 */ - at91_set_B_periph(AT91_PIN_PC27, 0); /* ERXCK */ - at91_set_B_periph(AT91_PIN_PC20, 0); /* ETX2 */ - at91_set_B_periph(AT91_PIN_PC21, 0); /* ETX3 */ - at91_set_B_periph(AT91_PIN_PC24, 0); /* ETXER */ -#endif + at91_macb_hw_init(); + /* Unlock EMAC, 3 0 2 1 sequence */ #define MP_MAC_KEY0 0x5969cb2a #define MP_MAC_KEY1 0xb4a1872e diff --git a/board/atmel/at91sam9260ek/at91sam9260ek.c b/board/atmel/at91sam9260ek/at91sam9260ek.c index ad9dfeb..d89f247 100644 --- a/board/atmel/at91sam9260ek/at91sam9260ek.c +++ b/board/atmel/at91sam9260ek/at91sam9260ek.c @@ -132,37 +132,7 @@ static void at91sam9260ek_macb_hw_init(void) pin_to_mask(AT91_PIN_PA28), pin_to_controller(AT91_PIN_PA0) + PIO_PUER);
- at91_set_A_periph(AT91_PIN_PA19, 0); /* ETXCK_EREFCK */ - at91_set_A_periph(AT91_PIN_PA17, 0); /* ERXDV */ - at91_set_A_periph(AT91_PIN_PA14, 0); /* ERX0 */ - at91_set_A_periph(AT91_PIN_PA15, 0); /* ERX1 */ - at91_set_A_periph(AT91_PIN_PA18, 0); /* ERXER */ - at91_set_A_periph(AT91_PIN_PA16, 0); /* ETXEN */ - at91_set_A_periph(AT91_PIN_PA12, 0); /* ETX0 */ - at91_set_A_periph(AT91_PIN_PA13, 0); /* ETX1 */ - at91_set_A_periph(AT91_PIN_PA21, 0); /* EMDIO */ - at91_set_A_periph(AT91_PIN_PA20, 0); /* EMDC */ - -#ifndef CONFIG_RMII - at91_set_B_periph(AT91_PIN_PA28, 0); /* ECRS */ - at91_set_B_periph(AT91_PIN_PA29, 0); /* ECOL */ - at91_set_B_periph(AT91_PIN_PA25, 0); /* ERX2 */ - at91_set_B_periph(AT91_PIN_PA26, 0); /* ERX3 */ - at91_set_B_periph(AT91_PIN_PA27, 0); /* ERXCK */ -#if defined(CONFIG_AT91SAM9260EK) - /* - * use PA10, PA11 for ETX2, ETX3. - * PA23 and PA24 are for TWI EEPROM - */ - at91_set_B_periph(AT91_PIN_PA10, 0); /* ETX2 */ - at91_set_B_periph(AT91_PIN_PA11, 0); /* ETX3 */ -#else - at91_set_B_periph(AT91_PIN_PA23, 0); /* ETX2 */ - at91_set_B_periph(AT91_PIN_PA24, 0); /* ETX3 */ -#endif - at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */ -#endif - + at91_macb_hw_init(); } #endif
diff --git a/board/atmel/at91sam9263ek/at91sam9263ek.c b/board/atmel/at91sam9263ek/at91sam9263ek.c index 59ace17..9110e9e 100644 --- a/board/atmel/at91sam9263ek/at91sam9263ek.c +++ b/board/atmel/at91sam9263ek/at91sam9263ek.c @@ -129,28 +129,7 @@ static void at91sam9263ek_macb_hw_init(void) pin_to_mask(AT91_PIN_PE26), pin_to_controller(AT91_PIN_PE0) + PIO_PUER);
- at91_set_A_periph(AT91_PIN_PE21, 0); /* ETXCK_EREFCK */ - at91_set_B_periph(AT91_PIN_PC25, 0); /* ERXDV */ - at91_set_A_periph(AT91_PIN_PE25, 0); /* ERX0 */ - at91_set_A_periph(AT91_PIN_PE26, 0); /* ERX1 */ - at91_set_A_periph(AT91_PIN_PE27, 0); /* ERXER */ - at91_set_A_periph(AT91_PIN_PE28, 0); /* ETXEN */ - at91_set_A_periph(AT91_PIN_PE23, 0); /* ETX0 */ - at91_set_A_periph(AT91_PIN_PE24, 0); /* ETX1 */ - at91_set_A_periph(AT91_PIN_PE30, 0); /* EMDIO */ - at91_set_A_periph(AT91_PIN_PE29, 0); /* EMDC */ - -#ifndef CONFIG_RMII - at91_set_A_periph(AT91_PIN_PE22, 0); /* ECRS */ - at91_set_B_periph(AT91_PIN_PC26, 0); /* ECOL */ - at91_set_B_periph(AT91_PIN_PC22, 0); /* ERX2 */ - at91_set_B_periph(AT91_PIN_PC23, 0); /* ERX3 */ - at91_set_B_periph(AT91_PIN_PC27, 0); /* ERXCK */ - at91_set_B_periph(AT91_PIN_PC20, 0); /* ETX2 */ - at91_set_B_periph(AT91_PIN_PC21, 0); /* ETX3 */ - at91_set_B_periph(AT91_PIN_PC24, 0); /* ETXER */ -#endif - + at91_macb_hw_init(); } #endif
diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile index 1523199..db79c40 100644 --- a/cpu/arm926ejs/at91/Makefile +++ b/cpu/arm926ejs/at91/Makefile @@ -26,10 +26,12 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(SOC).a
ifdef CONFIG_AT91CAP9 +COBJS-$(CONFIG_MACB) += at91cap9_macb.o COBJS-y += at91cap9_serial.o COBJS-$(CONFIG_HAS_DATAFLASH) += at91cap9_spi.o endif ifdef CONFIG_AT91SAM9260 +COBJS-$(CONFIG_MACB) += at91sam9260_macb.o COBJS-y += at91sam9260_serial.o COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9260_spi.o endif @@ -38,6 +40,7 @@ COBJS-y += at91sam9261_serial.o COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9261_spi.o endif ifdef CONFIG_AT91SAM9263 +COBJS-$(CONFIG_MACB) += at91sam9263_macb.o COBJS-y += at91sam9263_serial.o COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9263_spi.o COBJS-$(CONFIG_USB_OHCI_NEW) += at91sam9263_usb.o diff --git a/cpu/arm926ejs/at91/at91cap9_macb.c b/cpu/arm926ejs/at91/at91cap9_macb.c new file mode 100644 index 0000000..5095d8d --- /dev/null +++ b/cpu/arm926ejs/at91/at91cap9_macb.c @@ -0,0 +1,54 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_macb_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PB21, 0); /* ETXCK_EREFCK */ + at91_set_A_periph(AT91_PIN_PB22, 0); /* ERXDV */ + at91_set_A_periph(AT91_PIN_PB25, 0); /* ERX0 */ + at91_set_A_periph(AT91_PIN_PB26, 0); /* ERX1 */ + at91_set_A_periph(AT91_PIN_PB27, 0); /* ERXER */ + at91_set_A_periph(AT91_PIN_PB28, 0); /* ETXEN */ + at91_set_A_periph(AT91_PIN_PB23, 0); /* ETX0 */ + at91_set_A_periph(AT91_PIN_PB24, 0); /* ETX1 */ + at91_set_A_periph(AT91_PIN_PB30, 0); /* EMDIO */ + at91_set_A_periph(AT91_PIN_PB29, 0); /* EMDC */ + +#ifndef CONFIG_RMII + at91_set_B_periph(AT91_PIN_PC25, 0); /* ECRS */ + at91_set_B_periph(AT91_PIN_PC26, 0); /* ECOL */ + at91_set_B_periph(AT91_PIN_PC22, 0); /* ERX2 */ + at91_set_B_periph(AT91_PIN_PC23, 0); /* ERX3 */ + at91_set_B_periph(AT91_PIN_PC27, 0); /* ERXCK */ + at91_set_B_periph(AT91_PIN_PC20, 0); /* ETX2 */ + at91_set_B_periph(AT91_PIN_PC21, 0); /* ETX3 */ + at91_set_B_periph(AT91_PIN_PC24, 0); /* ETXER */ +#endif +} diff --git a/cpu/arm926ejs/at91/at91sam9260_macb.c b/cpu/arm926ejs/at91/at91sam9260_macb.c new file mode 100644 index 0000000..ab60fb7 --- /dev/null +++ b/cpu/arm926ejs/at91/at91sam9260_macb.c @@ -0,0 +1,63 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_macb_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PA19, 0); /* ETXCK_EREFCK */ + at91_set_A_periph(AT91_PIN_PA17, 0); /* ERXDV */ + at91_set_A_periph(AT91_PIN_PA14, 0); /* ERX0 */ + at91_set_A_periph(AT91_PIN_PA15, 0); /* ERX1 */ + at91_set_A_periph(AT91_PIN_PA18, 0); /* ERXER */ + at91_set_A_periph(AT91_PIN_PA16, 0); /* ETXEN */ + at91_set_A_periph(AT91_PIN_PA12, 0); /* ETX0 */ + at91_set_A_periph(AT91_PIN_PA13, 0); /* ETX1 */ + at91_set_A_periph(AT91_PIN_PA21, 0); /* EMDIO */ + at91_set_A_periph(AT91_PIN_PA20, 0); /* EMDC */ + +#ifndef CONFIG_RMII + at91_set_B_periph(AT91_PIN_PA28, 0); /* ECRS */ + at91_set_B_periph(AT91_PIN_PA29, 0); /* ECOL */ + at91_set_B_periph(AT91_PIN_PA25, 0); /* ERX2 */ + at91_set_B_periph(AT91_PIN_PA26, 0); /* ERX3 */ + at91_set_B_periph(AT91_PIN_PA27, 0); /* ERXCK */ +#if defined(CONFIG_AT91SAM9260EK) + /* + * use PA10, PA11 for ETX2, ETX3. + * PA23 and PA24 are for TWI EEPROM + */ + at91_set_B_periph(AT91_PIN_PA10, 0); /* ETX2 */ + at91_set_B_periph(AT91_PIN_PA11, 0); /* ETX3 */ +#else + at91_set_B_periph(AT91_PIN_PA23, 0); /* ETX2 */ + at91_set_B_periph(AT91_PIN_PA24, 0); /* ETX3 */ +#endif + at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */ +#endif +} diff --git a/cpu/arm926ejs/at91/at91sam9263_macb.c b/cpu/arm926ejs/at91/at91sam9263_macb.c new file mode 100644 index 0000000..4223d37 --- /dev/null +++ b/cpu/arm926ejs/at91/at91sam9263_macb.c @@ -0,0 +1,54 @@ +/* + * (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/at91_common.h> +#include <asm/arch/at91_pmc.h> +#include <asm/arch/gpio.h> +#include <asm/arch/io.h> + +void at91_macb_hw_init(void) +{ + at91_set_A_periph(AT91_PIN_PE21, 0); /* ETXCK_EREFCK */ + at91_set_B_periph(AT91_PIN_PC25, 0); /* ERXDV */ + at91_set_A_periph(AT91_PIN_PE25, 0); /* ERX0 */ + at91_set_A_periph(AT91_PIN_PE26, 0); /* ERX1 */ + at91_set_A_periph(AT91_PIN_PE27, 0); /* ERXER */ + at91_set_A_periph(AT91_PIN_PE28, 0); /* ETXEN */ + at91_set_A_periph(AT91_PIN_PE23, 0); /* ETX0 */ + at91_set_A_periph(AT91_PIN_PE24, 0); /* ETX1 */ + at91_set_A_periph(AT91_PIN_PE30, 0); /* EMDIO */ + at91_set_A_periph(AT91_PIN_PE29, 0); /* EMDC */ + +#ifndef CONFIG_RMII + at91_set_A_periph(AT91_PIN_PE22, 0); /* ECRS */ + at91_set_B_periph(AT91_PIN_PC26, 0); /* ECOL */ + at91_set_B_periph(AT91_PIN_PC22, 0); /* ERX2 */ + at91_set_B_periph(AT91_PIN_PC23, 0); /* ERX3 */ + at91_set_B_periph(AT91_PIN_PC27, 0); /* ERXCK */ + at91_set_B_periph(AT91_PIN_PC20, 0); /* ETX2 */ + at91_set_B_periph(AT91_PIN_PC21, 0); /* ETX3 */ + at91_set_B_periph(AT91_PIN_PC24, 0); /* ETXER */ +#endif +} diff --git a/include/asm-arm/arch-at91/at91_common.h b/include/asm-arm/arch-at91/at91_common.h index 797854b..9c4e019 100644 --- a/include/asm-arm/arch-at91/at91_common.h +++ b/include/asm-arm/arch-at91/at91_common.h @@ -25,6 +25,7 @@ #ifndef AT91_COMMON_H #define AT91_COMMON_H
+void at91_macb_hw_init(void); void at91_serial_hw_init(void); void at91_serial0_hw_init(void); void at91_serial1_hw_init(void);

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com --- board/atmel/at91cap9adk/Makefile | 2 +- board/atmel/at91sam9260ek/Makefile | 2 +- board/atmel/at91sam9261ek/Makefile | 2 +- board/atmel/at91sam9263ek/Makefile | 2 +- board/atmel/at91sam9rlek/Makefile | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/board/atmel/at91cap9adk/Makefile b/board/atmel/at91cap9adk/Makefile index 2d2ff2c..d253649 100644 --- a/board/atmel/at91cap9adk/Makefile +++ b/board/atmel/at91cap9adk/Makefile @@ -31,7 +31,7 @@ LIB = $(obj)lib$(BOARD).a
COBJS-y += at91cap9adk.o COBJS-y += led.o -COBJS-y += partition.o +COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) diff --git a/board/atmel/at91sam9260ek/Makefile b/board/atmel/at91sam9260ek/Makefile index 7c8a612..2e65434 100644 --- a/board/atmel/at91sam9260ek/Makefile +++ b/board/atmel/at91sam9260ek/Makefile @@ -31,7 +31,7 @@ LIB = $(obj)lib$(BOARD).a
COBJS-y += at91sam9260ek.o COBJS-y += led.o -COBJS-y += partition.o +COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) diff --git a/board/atmel/at91sam9261ek/Makefile b/board/atmel/at91sam9261ek/Makefile index d7b063d..edeb648 100644 --- a/board/atmel/at91sam9261ek/Makefile +++ b/board/atmel/at91sam9261ek/Makefile @@ -31,7 +31,7 @@ LIB = $(obj)lib$(BOARD).a
COBJS-y += at91sam9261ek.o COBJS-y += led.o -COBJS-y += partition.o +COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) diff --git a/board/atmel/at91sam9263ek/Makefile b/board/atmel/at91sam9263ek/Makefile index 00a6b00..d0d4272 100644 --- a/board/atmel/at91sam9263ek/Makefile +++ b/board/atmel/at91sam9263ek/Makefile @@ -31,7 +31,7 @@ LIB = $(obj)lib$(BOARD).a
COBJS-y += at91sam9263ek.o COBJS-y += led.o -COBJS-y += partition.o +COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) diff --git a/board/atmel/at91sam9rlek/Makefile b/board/atmel/at91sam9rlek/Makefile index 90029cb..3dbee27 100644 --- a/board/atmel/at91sam9rlek/Makefile +++ b/board/atmel/at91sam9rlek/Makefile @@ -31,7 +31,7 @@ LIB = $(obj)lib$(BOARD).a
COBJS-y += at91sam9rlek.o COBJS-y += led.o -COBJS-y += partition.o +COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com --- board/afeb9260/Makefile | 1 - board/afeb9260/afeb9260.c | 4 +- board/afeb9260/nand.c | 78 -------------------- board/atmel/at91cap9adk/Makefile | 1 - board/atmel/at91cap9adk/at91cap9adk.c | 2 +- board/atmel/at91cap9adk/nand.c | 72 ------------------ board/atmel/at91sam9260ek/Makefile | 1 - board/atmel/at91sam9260ek/at91sam9260ek.c | 4 +- board/atmel/at91sam9261ek/Makefile | 1 - board/atmel/at91sam9261ek/at91sam9261ek.c | 4 +- board/atmel/at91sam9261ek/nand.c | 78 -------------------- board/atmel/at91sam9263ek/Makefile | 1 - board/atmel/at91sam9263ek/at91sam9263ek.c | 4 +- board/atmel/at91sam9263ek/nand.c | 78 -------------------- board/atmel/at91sam9rlek/Makefile | 1 - board/atmel/at91sam9rlek/at91sam9rlek.c | 4 +- board/atmel/at91sam9rlek/nand.c | 78 -------------------- drivers/mtd/nand/Makefile | 1 + .../nand.c => drivers/mtd/nand/atmel_nand.c | 32 ++++---- include/configs/afeb9260.h | 9 ++ include/configs/at91cap9adk.h | 8 ++ include/configs/at91sam9260ek.h | 9 ++ include/configs/at91sam9261ek.h | 9 ++ include/configs/at91sam9263ek.h | 9 ++ include/configs/at91sam9rlek.h | 9 ++ 25 files changed, 81 insertions(+), 417 deletions(-) delete mode 100644 board/afeb9260/nand.c delete mode 100644 board/atmel/at91cap9adk/nand.c delete mode 100644 board/atmel/at91sam9261ek/nand.c delete mode 100644 board/atmel/at91sam9263ek/nand.c delete mode 100644 board/atmel/at91sam9rlek/nand.c rename board/atmel/at91sam9260ek/nand.c => drivers/mtd/nand/atmel_nand.c (72%)
diff --git a/board/afeb9260/Makefile b/board/afeb9260/Makefile index 60c4304..73187fb 100644 --- a/board/afeb9260/Makefile +++ b/board/afeb9260/Makefile @@ -31,7 +31,6 @@ LIB = $(obj)lib$(BOARD).a
COBJS-y += afeb9260.o COBJS-y += partition.o -COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/afeb9260/afeb9260.c b/board/afeb9260/afeb9260.c index ba60861..024db2b 100644 --- a/board/afeb9260/afeb9260.c +++ b/board/afeb9260/afeb9260.c @@ -72,10 +72,10 @@ static void afeb9260_nand_hw_init(void) at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOC);
/* Configure RDY/BSY */ - at91_set_gpio_input(AT91_PIN_PC13, 1); + at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
/* Enable NandFlash */ - at91_set_gpio_output(AT91_PIN_PC14, 1); + at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1); }
#ifdef CONFIG_MACB diff --git a/board/afeb9260/nand.c b/board/afeb9260/nand.c deleted file mode 100644 index c5ac634..0000000 --- a/board/afeb9260/nand.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * (C) Copyright 2007-2008 - * Stelian Pop stelian.pop@leadtechdesign.com - * Lead Tech Design <www.leadtechdesign.com> - * - * (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas - * - * 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/at91sam9260.h> -#include <asm/arch/gpio.h> -#include <asm/arch/at91_pio.h> - -#include <nand.h> - -/* - * hardware specific access to control-lines - */ -#define MASK_ALE (1 << 21) /* our ALE is AD21 */ -#define MASK_CLE (1 << 22) /* our CLE is AD22 */ - -static void at91sam9260ek_nand_hwcontrol(struct mtd_info *mtd, - int cmd, unsigned int ctrl) -{ - struct nand_chip *this = mtd->priv; - - if (ctrl & NAND_CTRL_CHANGE) { - ulong IO_ADDR_W = (ulong) this->IO_ADDR_W; - IO_ADDR_W &= ~(MASK_ALE | MASK_CLE); - - if (ctrl & NAND_CLE) - IO_ADDR_W |= MASK_CLE; - if (ctrl & NAND_ALE) - IO_ADDR_W |= MASK_ALE; - - at91_set_gpio_value(AT91_PIN_PC14, !(ctrl & NAND_NCE)); - this->IO_ADDR_W = (void *) IO_ADDR_W; - } - - if (cmd != NAND_CMD_NONE) - writeb(cmd, this->IO_ADDR_W); -} - -static int at91sam9260ek_nand_ready(struct mtd_info *mtd) -{ - return at91_get_gpio_value(AT91_PIN_PC13); -} - -int board_nand_init(struct nand_chip *nand) -{ - nand->ecc.mode = NAND_ECC_SOFT; -#ifdef CONFIG_SYS_NAND_DBW_16 - nand->options = NAND_BUSWIDTH_16; -#endif - nand->cmd_ctrl = at91sam9260ek_nand_hwcontrol; - nand->dev_ready = at91sam9260ek_nand_ready; - nand->chip_delay = 20; - - return 0; -} diff --git a/board/atmel/at91cap9adk/Makefile b/board/atmel/at91cap9adk/Makefile index d253649..2496f9b 100644 --- a/board/atmel/at91cap9adk/Makefile +++ b/board/atmel/at91cap9adk/Makefile @@ -32,7 +32,6 @@ LIB = $(obj)lib$(BOARD).a COBJS-y += at91cap9adk.o COBJS-y += led.o COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o -COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/atmel/at91cap9adk/at91cap9adk.c b/board/atmel/at91cap9adk/at91cap9adk.c index 46a4fce..e8025e7 100644 --- a/board/atmel/at91cap9adk/at91cap9adk.c +++ b/board/atmel/at91cap9adk/at91cap9adk.c @@ -133,7 +133,7 @@ static void at91cap9_nand_hw_init(void) /* RDY/BSY is not connected */
/* Enable NandFlash */ - at91_set_gpio_output(AT91_PIN_PD15, 1); + at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1); } #endif
diff --git a/board/atmel/at91cap9adk/nand.c b/board/atmel/at91cap9adk/nand.c deleted file mode 100644 index cc2263b..0000000 --- a/board/atmel/at91cap9adk/nand.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * (C) Copyright 2007-2008 - * Stelian Pop stelian.pop@leadtechdesign.com - * Lead Tech Design <www.leadtechdesign.com> - * - * (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas - * - * 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/at91cap9.h> -#include <asm/arch/gpio.h> -#include <asm/arch/at91_pio.h> - -#include <nand.h> - -/* - * hardware specific access to control-lines - */ -#define MASK_ALE (1 << 21) /* our ALE is AD21 */ -#define MASK_CLE (1 << 22) /* our CLE is AD22 */ - -static void at91cap9adk_nand_hwcontrol(struct mtd_info *mtd, - int cmd, unsigned int ctrl) -{ - struct nand_chip *this = mtd->priv; - - if (ctrl & NAND_CTRL_CHANGE) { - ulong IO_ADDR_W = (ulong) this->IO_ADDR_W; - IO_ADDR_W &= ~(MASK_ALE | MASK_CLE); - - if (ctrl & NAND_CLE) - IO_ADDR_W |= MASK_CLE; - if (ctrl & NAND_ALE) - IO_ADDR_W |= MASK_ALE; - - at91_set_gpio_value(AT91_PIN_PD15, !(ctrl & NAND_NCE)); - this->IO_ADDR_W = (void *) IO_ADDR_W; - } - - if (cmd != NAND_CMD_NONE) - writeb(cmd, this->IO_ADDR_W); -} - -int board_nand_init(struct nand_chip *nand) -{ - nand->ecc.mode = NAND_ECC_SOFT; -#ifdef CONFIG_SYS_NAND_DBW_16 - nand->options = NAND_BUSWIDTH_16; -#endif - nand->cmd_ctrl = at91cap9adk_nand_hwcontrol; - nand->chip_delay = 20; - - return 0; -} diff --git a/board/atmel/at91sam9260ek/Makefile b/board/atmel/at91sam9260ek/Makefile index 2e65434..aaa3240 100644 --- a/board/atmel/at91sam9260ek/Makefile +++ b/board/atmel/at91sam9260ek/Makefile @@ -32,7 +32,6 @@ LIB = $(obj)lib$(BOARD).a COBJS-y += at91sam9260ek.o COBJS-y += led.o COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o -COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/atmel/at91sam9260ek/at91sam9260ek.c b/board/atmel/at91sam9260ek/at91sam9260ek.c index d89f247..ae00c53 100644 --- a/board/atmel/at91sam9260ek/at91sam9260ek.c +++ b/board/atmel/at91sam9260ek/at91sam9260ek.c @@ -76,10 +76,10 @@ static void at91sam9260ek_nand_hw_init(void) at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOC);
/* Configure RDY/BSY */ - at91_set_gpio_input(AT91_PIN_PC13, 1); + at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
/* Enable NandFlash */ - at91_set_gpio_output(AT91_PIN_PC14, 1); + at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1); } #endif
diff --git a/board/atmel/at91sam9261ek/Makefile b/board/atmel/at91sam9261ek/Makefile index edeb648..d9b3a79 100644 --- a/board/atmel/at91sam9261ek/Makefile +++ b/board/atmel/at91sam9261ek/Makefile @@ -32,7 +32,6 @@ LIB = $(obj)lib$(BOARD).a COBJS-y += at91sam9261ek.o COBJS-y += led.o COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o -COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c b/board/atmel/at91sam9261ek/at91sam9261ek.c index d8f006c..bae4092 100644 --- a/board/atmel/at91sam9261ek/at91sam9261ek.c +++ b/board/atmel/at91sam9261ek/at91sam9261ek.c @@ -76,10 +76,10 @@ static void at91sam9261ek_nand_hw_init(void) at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_PIOC);
/* Configure RDY/BSY */ - at91_set_gpio_input(AT91_PIN_PC15, 1); + at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
/* Enable NandFlash */ - at91_set_gpio_output(AT91_PIN_PC14, 1); + at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
at91_set_A_periph(AT91_PIN_PC0, 0); /* NANDOE */ at91_set_A_periph(AT91_PIN_PC1, 0); /* NANDWE */ diff --git a/board/atmel/at91sam9261ek/nand.c b/board/atmel/at91sam9261ek/nand.c deleted file mode 100644 index 06395ee..0000000 --- a/board/atmel/at91sam9261ek/nand.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * (C) Copyright 2007-2008 - * Stelian Pop stelian.pop@leadtechdesign.com - * Lead Tech Design <www.leadtechdesign.com> - * - * (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas - * - * 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/at91sam9261.h> -#include <asm/arch/gpio.h> -#include <asm/arch/at91_pio.h> - -#include <nand.h> - -/* - * hardware specific access to control-lines - */ -#define MASK_ALE (1 << 22) /* our ALE is AD22 */ -#define MASK_CLE (1 << 21) /* our CLE is AD21 */ - -static void at91sam9261ek_nand_hwcontrol(struct mtd_info *mtd, - int cmd, unsigned int ctrl) -{ - struct nand_chip *this = mtd->priv; - - if (ctrl & NAND_CTRL_CHANGE) { - ulong IO_ADDR_W = (ulong) this->IO_ADDR_W; - IO_ADDR_W &= ~(MASK_ALE | MASK_CLE); - - if (ctrl & NAND_CLE) - IO_ADDR_W |= MASK_CLE; - if (ctrl & NAND_ALE) - IO_ADDR_W |= MASK_ALE; - - at91_set_gpio_value(AT91_PIN_PC14, !(ctrl & NAND_NCE)); - this->IO_ADDR_W = (void *) IO_ADDR_W; - } - - if (cmd != NAND_CMD_NONE) - writeb(cmd, this->IO_ADDR_W); -} - -static int at91sam9261ek_nand_ready(struct mtd_info *mtd) -{ - return at91_get_gpio_value(AT91_PIN_PC15); -} - -int board_nand_init(struct nand_chip *nand) -{ - nand->ecc.mode = NAND_ECC_SOFT; -#ifdef CONFIG_SYS_NAND_DBW_16 - nand->options = NAND_BUSWIDTH_16; -#endif - nand->cmd_ctrl = at91sam9261ek_nand_hwcontrol; - nand->dev_ready = at91sam9261ek_nand_ready; - nand->chip_delay = 20; - - return 0; -} diff --git a/board/atmel/at91sam9263ek/Makefile b/board/atmel/at91sam9263ek/Makefile index d0d4272..013ed21 100644 --- a/board/atmel/at91sam9263ek/Makefile +++ b/board/atmel/at91sam9263ek/Makefile @@ -32,7 +32,6 @@ LIB = $(obj)lib$(BOARD).a COBJS-y += at91sam9263ek.o COBJS-y += led.o COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o -COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/atmel/at91sam9263ek/at91sam9263ek.c b/board/atmel/at91sam9263ek/at91sam9263ek.c index 9110e9e..1d52845 100644 --- a/board/atmel/at91sam9263ek/at91sam9263ek.c +++ b/board/atmel/at91sam9263ek/at91sam9263ek.c @@ -80,10 +80,10 @@ static void at91sam9263ek_nand_hw_init(void) 1 << AT91SAM9263_ID_PIOCDE);
/* Configure RDY/BSY */ - at91_set_gpio_input(AT91_PIN_PA22, 1); + at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
/* Enable NandFlash */ - at91_set_gpio_output(AT91_PIN_PD15, 1); + at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1); } #endif
diff --git a/board/atmel/at91sam9263ek/nand.c b/board/atmel/at91sam9263ek/nand.c deleted file mode 100644 index 3c247f6..0000000 --- a/board/atmel/at91sam9263ek/nand.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * (C) Copyright 2007-2008 - * Stelian Pop stelian.pop@leadtechdesign.com - * Lead Tech Design <www.leadtechdesign.com> - * - * (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas - * - * 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/gpio.h> -#include <asm/arch/at91_pio.h> - -#include <nand.h> - -/* - * hardware specific access to control-lines - */ -#define MASK_ALE (1 << 21) /* our ALE is AD21 */ -#define MASK_CLE (1 << 22) /* our CLE is AD22 */ - -static void at91sam9263ek_nand_hwcontrol(struct mtd_info *mtd, - int cmd, unsigned int ctrl) -{ - struct nand_chip *this = mtd->priv; - - if (ctrl & NAND_CTRL_CHANGE) { - ulong IO_ADDR_W = (ulong) this->IO_ADDR_W; - IO_ADDR_W &= ~(MASK_ALE | MASK_CLE); - - if (ctrl & NAND_CLE) - IO_ADDR_W |= MASK_CLE; - if (ctrl & NAND_ALE) - IO_ADDR_W |= MASK_ALE; - - at91_set_gpio_value(AT91_PIN_PD15, !(ctrl & NAND_NCE)); - this->IO_ADDR_W = (void *) IO_ADDR_W; - } - - if (cmd != NAND_CMD_NONE) - writeb(cmd, this->IO_ADDR_W); -} - -static int at91sam9263ek_nand_ready(struct mtd_info *mtd) -{ - return at91_get_gpio_value(AT91_PIN_PA22); -} - -int board_nand_init(struct nand_chip *nand) -{ - nand->ecc.mode = NAND_ECC_SOFT; -#ifdef CONFIG_SYS_NAND_DBW_16 - nand->options = NAND_BUSWIDTH_16; -#endif - nand->cmd_ctrl = at91sam9263ek_nand_hwcontrol; - nand->dev_ready = at91sam9263ek_nand_ready; - nand->chip_delay = 20; - - return 0; -} diff --git a/board/atmel/at91sam9rlek/Makefile b/board/atmel/at91sam9rlek/Makefile index 3dbee27..92a5a2b 100644 --- a/board/atmel/at91sam9rlek/Makefile +++ b/board/atmel/at91sam9rlek/Makefile @@ -32,7 +32,6 @@ LIB = $(obj)lib$(BOARD).a COBJS-y += at91sam9rlek.o COBJS-y += led.o COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o -COBJS-$(CONFIG_CMD_NAND) += nand.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/atmel/at91sam9rlek/at91sam9rlek.c b/board/atmel/at91sam9rlek/at91sam9rlek.c index ce10cdf..908b9c8 100644 --- a/board/atmel/at91sam9rlek/at91sam9rlek.c +++ b/board/atmel/at91sam9rlek/at91sam9rlek.c @@ -76,10 +76,10 @@ static void at91sam9rlek_nand_hw_init(void) at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9RL_ID_PIOD);
/* Configure RDY/BSY */ - at91_set_gpio_input(AT91_PIN_PD17, 1); + at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
/* Enable NandFlash */ - at91_set_gpio_output(AT91_PIN_PB6, 1); + at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
at91_set_A_periph(AT91_PIN_PB4, 0); /* NANDOE */ at91_set_A_periph(AT91_PIN_PB5, 0); /* NANDWE */ diff --git a/board/atmel/at91sam9rlek/nand.c b/board/atmel/at91sam9rlek/nand.c deleted file mode 100644 index 625f6ec..0000000 --- a/board/atmel/at91sam9rlek/nand.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * (C) Copyright 2007-2008 - * Stelian Pop stelian.pop@leadtechdesign.com - * Lead Tech Design <www.leadtechdesign.com> - * - * (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas - * - * 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/at91sam9rl.h> -#include <asm/arch/gpio.h> -#include <asm/arch/at91_pio.h> - -#include <nand.h> - -/* - * hardware specific access to control-lines - */ -#define MASK_ALE (1 << 21) /* our ALE is AD21 */ -#define MASK_CLE (1 << 22) /* our CLE is AD22 */ - -static void at91sam9rlek_nand_hwcontrol(struct mtd_info *mtd, - int cmd, unsigned int ctrl) -{ - struct nand_chip *this = mtd->priv; - - if (ctrl & NAND_CTRL_CHANGE) { - ulong IO_ADDR_W = (ulong) this->IO_ADDR_W; - IO_ADDR_W &= ~(MASK_ALE | MASK_CLE); - - if (ctrl & NAND_CLE) - IO_ADDR_W |= MASK_CLE; - if (ctrl & NAND_ALE) - IO_ADDR_W |= MASK_ALE; - - at91_set_gpio_value(AT91_PIN_PB6, !(ctrl & NAND_NCE)); - this->IO_ADDR_W = (void *) IO_ADDR_W; - } - - if (cmd != NAND_CMD_NONE) - writeb(cmd, this->IO_ADDR_W); -} - -static int at91sam9rlek_nand_ready(struct mtd_info *mtd) -{ - return at91_get_gpio_value(AT91_PIN_PD17); -} - -int board_nand_init(struct nand_chip *nand) -{ - nand->ecc.mode = NAND_ECC_SOFT; -#ifdef CONFIG_SYS_NAND_DBW_16 - nand->options = NAND_BUSWIDTH_16; -#endif - nand->cmd_ctrl = at91sam9rlek_nand_hwcontrol; - nand->dev_ready = at91sam9rlek_nand_ready; - nand->chip_delay = 20; - - return 0; -} diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile index 5974d77..03b0028 100644 --- a/drivers/mtd/nand/Makefile +++ b/drivers/mtd/nand/Makefile @@ -35,6 +35,7 @@ COBJS-y += nand_ids.o COBJS-y += nand_util.o endif
+COBJS-$(CONFIG_NAND_ATMEL) += atmel_nand.o COBJS-$(CONFIG_DRIVER_NAND_BFIN) += bfin_nand.o COBJS-$(CONFIG_NAND_FSL_ELBC) += fsl_elbc_nand.o COBJS-$(CONFIG_NAND_FSL_UPM) += fsl_upm.o diff --git a/board/atmel/at91sam9260ek/nand.c b/drivers/mtd/nand/atmel_nand.c similarity index 72% rename from board/atmel/at91sam9260ek/nand.c rename to drivers/mtd/nand/atmel_nand.c index c5ac634..40002be 100644 --- a/board/atmel/at91sam9260ek/nand.c +++ b/drivers/mtd/nand/atmel_nand.c @@ -25,33 +25,29 @@ */
#include <common.h> -#include <asm/arch/at91sam9260.h> +#include <asm/arch/hardware.h> #include <asm/arch/gpio.h> #include <asm/arch/at91_pio.h>
#include <nand.h>
-/* - * hardware specific access to control-lines - */ -#define MASK_ALE (1 << 21) /* our ALE is AD21 */ -#define MASK_CLE (1 << 22) /* our CLE is AD22 */ - -static void at91sam9260ek_nand_hwcontrol(struct mtd_info *mtd, +static void at91_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl) { struct nand_chip *this = mtd->priv;
if (ctrl & NAND_CTRL_CHANGE) { ulong IO_ADDR_W = (ulong) this->IO_ADDR_W; - IO_ADDR_W &= ~(MASK_ALE | MASK_CLE); + IO_ADDR_W &= ~(CONFIG_SYS_NAND_MASK_ALE + | CONFIG_SYS_NAND_MASK_CLE);
if (ctrl & NAND_CLE) - IO_ADDR_W |= MASK_CLE; + IO_ADDR_W |= CONFIG_SYS_NAND_MASK_CLE; if (ctrl & NAND_ALE) - IO_ADDR_W |= MASK_ALE; + IO_ADDR_W |= CONFIG_SYS_NAND_MASK_ALE;
- at91_set_gpio_value(AT91_PIN_PC14, !(ctrl & NAND_NCE)); + at91_set_gpio_value(CONFIG_SYS_NAND_ENABLE_PIN, + !(ctrl & NAND_NCE)); this->IO_ADDR_W = (void *) IO_ADDR_W; }
@@ -59,10 +55,12 @@ static void at91sam9260ek_nand_hwcontrol(struct mtd_info *mtd, writeb(cmd, this->IO_ADDR_W); }
-static int at91sam9260ek_nand_ready(struct mtd_info *mtd) +#ifdef CONFIG_SYS_NAND_READY_PIN +static int at91_nand_ready(struct mtd_info *mtd) { - return at91_get_gpio_value(AT91_PIN_PC13); + return at91_get_gpio_value(CONFIG_SYS_NAND_READY_PIN); } +#endif
int board_nand_init(struct nand_chip *nand) { @@ -70,8 +68,10 @@ int board_nand_init(struct nand_chip *nand) #ifdef CONFIG_SYS_NAND_DBW_16 nand->options = NAND_BUSWIDTH_16; #endif - nand->cmd_ctrl = at91sam9260ek_nand_hwcontrol; - nand->dev_ready = at91sam9260ek_nand_ready; + nand->cmd_ctrl = at91_nand_hwcontrol; +#ifdef CONFIG_SYS_NAND_READY_PIN + nand->dev_ready = at91_nand_ready; +#endif nand->chip_delay = 20;
return 0; diff --git a/include/configs/afeb9260.h b/include/configs/afeb9260.h index 9eed342..33a67ca 100644 --- a/include/configs/afeb9260.h +++ b/include/configs/afeb9260.h @@ -97,9 +97,18 @@ #define DATAFLASH_TCHS (0x1 << 24)
/* 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_PC14 +#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC13 +#endif
/* NOR flash - no real flash on this board */ #define CONFIG_SYS_NO_FLASH 1 diff --git a/include/configs/at91cap9adk.h b/include/configs/at91cap9adk.h index d8e6a29..7e7f124 100644 --- a/include/configs/at91cap9adk.h +++ b/include/configs/at91cap9adk.h @@ -122,8 +122,16 @@ #define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1 #define CONFIG_SYS_MAX_FLASH_SECT 256 #define CONFIG_SYS_MAX_FLASH_BANKS 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 +#endif
/* 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 diff --git a/include/configs/at91sam9260ek.h b/include/configs/at91sam9260ek.h index e348833..2661563 100644 --- a/include/configs/at91sam9260ek.h +++ b/include/configs/at91sam9260ek.h @@ -105,9 +105,18 @@ #define DATAFLASH_TCHS (0x1 << 24)
/* 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_PC14 +#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC13 +#endif
/* NOR flash - no real flash on this board */ #define CONFIG_SYS_NO_FLASH 1 diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h index b119d96..752d7e9 100644 --- a/include/configs/at91sam9261ek.h +++ b/include/configs/at91sam9261ek.h @@ -117,9 +117,18 @@ #define DATAFLASH_TCHS (0x1 << 24)
/* 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 AD22 */ +#define CONFIG_SYS_NAND_MASK_ALE (1 << 22) +/* our CLE is AD21 */ +#define CONFIG_SYS_NAND_MASK_CLE (1 << 21) +#define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14 +#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC15 +#endif
/* NOR flash - no real flash on this board */ #define CONFIG_SYS_NO_FLASH 1 diff --git a/include/configs/at91sam9263ek.h b/include/configs/at91sam9263ek.h index 979d7a3..dd500ca 100644 --- a/include/configs/at91sam9263ek.h +++ b/include/configs/at91sam9263ek.h @@ -129,9 +129,18 @@ #endif
/* 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 diff --git a/include/configs/at91sam9rlek.h b/include/configs/at91sam9rlek.h index 5d837a0..7a4039c 100644 --- a/include/configs/at91sam9rlek.h +++ b/include/configs/at91sam9rlek.h @@ -110,9 +110,18 @@ #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_PB6 +#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PD17 +#endif
/* Ethernet - not present */
participants (1)
-
Jean-Christophe PLAGNIOL-VILLARD