From a484b00b86e72ac6da6ee4fce13dbc6b256672fe Mon Sep 17 00:00:00 2001
From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Date: Sat, 21 Mar 2009 21:08:00 +0100
Subject: [PATCH] at91sam9/at91cap: move common led management to cpu

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 +
 cpu/arm926ejs/at91/led.c        | 64 +++++++++++++++++++++++++++++++++
 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, 122 insertions(+), 188 deletions(-)
 create mode 100644 cpu/arm926ejs/at91/led.c

diff --git a/board/atmel/at91cap9adk/led.c b/board/atmel/at91cap9adk/led.c
index a137c2a9525..14aea994e9b 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 ddc375f267a..2424d27fbd1 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 eb2bb23411a..5d1c5f2f8ba 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 eb8d6ca04f6..82c53886434 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 8a7d8e0bf7e..9634cc03e14 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 e547ab58c3b..95bb59d35a5 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/cpu/arm926ejs/at91/led.c b/cpu/arm926ejs/at91/led.c
new file mode 100644
index 00000000000..be68f5958a0
--- /dev/null
+++ b/cpu/arm926ejs/at91/led.c
@@ -0,0 +1,64 @@
+/*
+ * (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_pmc.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/io.h>
+
+#ifdef CONFIG_RED_LED
+void red_LED_on(void)
+{
+	at91_set_gpio_value(CONFIG_RED_LED, 1);
+}
+
+void red_LED_off(void)
+{
+	at91_set_gpio_value(CONFIG_RED_LED, 0);
+}
+#endif
+
+#ifdef CONFIG_GREEN_LED
+void green_LED_on(void)
+{
+	at91_set_gpio_value(CONFIG_GREEN_LED, 0);
+}
+
+void green_LED_off(void)
+{
+	at91_set_gpio_value(CONFIG_GREEN_LED, 1);
+}
+#endif
+
+#ifdef CONFIG_YELLOW_LED
+void yellow_LED_on(void)
+{
+	at91_set_gpio_value(CONFIG_YELLOW_LED, 0);
+}
+
+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 01da99b82c8..d8e6a29f6e6 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 2f1a41f646f..e348833346e 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 ebecfa4099e..b119d96d534 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 09b871a5e95..979d7a38c97 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 5bef1fe975a..5d837a07aff 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
 
 /*
-- 
GitLab