diff --git a/board/atmel/at91rm9200ek/led.c b/board/atmel/at91rm9200ek/led.c
index 1766ddf..facba24 100644
--- a/board/atmel/at91rm9200ek/led.c
+++ b/board/atmel/at91rm9200ek/led.c
@@ -36,37 +36,37 @@
 #define	YELLOW_LED	(1<<1)
 #define	RED_LED		(1<<2)
 
-void	green_LED_on(void)
+void	green_led_on(void)
 {
 	at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
 	writel(GREEN_LED, &pio->piob.codr);
 }
 
-void	 yellow_LED_on(void)
+void	 yellow_led_on(void)
 {
 	at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
 	writel(YELLOW_LED, &pio->piob.codr);
 }
 
-void	 red_LED_on(void)
+void	 red_led_on(void)
 {
 	at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
 	writel(RED_LED, &pio->piob.codr);
 }
 
-void	green_LED_off(void)
+void	green_led_off(void)
 {
 	at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
 	writel(GREEN_LED, &pio->piob.sodr);
 }
 
-void	yellow_LED_off(void)
+void	yellow_led_off(void)
 {
 	at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
 	writel(YELLOW_LED, &pio->piob.sodr);
 }
 
-void	red_LED_off(void)
+void	red_led_off(void)
 {
 	at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
 	writel(RED_LED, &pio->piob.sodr);
diff --git a/board/eukrea/cpu9260/led.c b/board/eukrea/cpu9260/led.c
index 8d865eb..434cffb 100644
--- a/board/eukrea/cpu9260/led.c
+++ b/board/eukrea/cpu9260/led.c
@@ -51,49 +51,49 @@
 	at91_set_pio_value(CONFIG_BLUE_LED, 1);
 }
 
-void red_LED_off(void)
+void red_led_off(void)
 {
 	at91_set_pio_value(CONFIG_RED_LED, 1);
 	saved_state[STATUS_LED_RED] = STATUS_LED_OFF;
 }
 
-void green_LED_off(void)
+void green_led_off(void)
 {
 	at91_set_pio_value(CONFIG_GREEN_LED, 1);
 	saved_state[STATUS_LED_GREEN] = STATUS_LED_OFF;
 }
 
-void yellow_LED_off(void)
+void yellow_led_off(void)
 {
 	at91_set_pio_value(CONFIG_YELLOW_LED, 1);
 	saved_state[STATUS_LED_YELLOW] = STATUS_LED_OFF;
 }
 
-void blue_LED_off(void)
+void blue_led_off(void)
 {
 	at91_set_pio_value(CONFIG_BLUE_LED, 1);
 	saved_state[STATUS_LED_BLUE] = STATUS_LED_OFF;
 }
 
-void red_LED_on(void)
+void red_led_on(void)
 {
 	at91_set_pio_value(CONFIG_RED_LED, 0);
 	saved_state[STATUS_LED_RED] = STATUS_LED_ON;
 }
 
-void green_LED_on(void)
+void green_led_on(void)
 {
 	at91_set_pio_value(CONFIG_GREEN_LED, 0);
 	saved_state[STATUS_LED_GREEN] = STATUS_LED_ON;
 }
 
-void yellow_LED_on(void)
+void yellow_led_on(void)
 {
 	at91_set_pio_value(CONFIG_YELLOW_LED, 0);
 	saved_state[STATUS_LED_YELLOW] = STATUS_LED_ON;
 }
 
-void blue_LED_on(void)
+void blue_led_on(void)
 {
 	at91_set_pio_value(CONFIG_BLUE_LED, 0);
 	saved_state[STATUS_LED_BLUE] = STATUS_LED_ON;
@@ -108,24 +108,24 @@
 {
 	if (STATUS_LED_BLUE == mask) {
 		if (STATUS_LED_ON == saved_state[STATUS_LED_BLUE])
-			blue_LED_off();
+			blue_led_off();
 		else
-			blue_LED_on();
+			blue_led_on();
 	} else if (STATUS_LED_RED == mask) {
 		if (STATUS_LED_ON == saved_state[STATUS_LED_RED])
-			red_LED_off();
+			red_led_off();
 		else
-			red_LED_on();
+			red_led_on();
 	} else if (STATUS_LED_GREEN == mask) {
 		if (STATUS_LED_ON == saved_state[STATUS_LED_GREEN])
-			green_LED_off();
+			green_led_off();
 		else
-			green_LED_on();
+			green_led_on();
 	} else if (STATUS_LED_YELLOW == mask) {
 		if (STATUS_LED_ON == saved_state[STATUS_LED_YELLOW])
-			yellow_LED_off();
+			yellow_led_off();
 		else
-			yellow_LED_on();
+			yellow_led_on();
 	}
 }
 
@@ -133,23 +133,23 @@
 {
 	if (STATUS_LED_BLUE == mask) {
 		if (STATUS_LED_ON == state)
-			blue_LED_on();
+			blue_led_on();
 		else
-			blue_LED_off();
+			blue_led_off();
 	} else if (STATUS_LED_RED == mask) {
 		if (STATUS_LED_ON == state)
-			red_LED_on();
+			red_led_on();
 		else
-			red_LED_off();
+			red_led_off();
 	} else if (STATUS_LED_GREEN == mask) {
 		if (STATUS_LED_ON == state)
-			green_LED_on();
+			green_led_on();
 		else
-			green_LED_off();
+			green_led_off();
 	} else if (STATUS_LED_YELLOW == mask) {
 		if (STATUS_LED_ON == state)
-			yellow_LED_on();
+			yellow_led_on();
 		else
-			yellow_LED_off();
+			yellow_led_off();
 	}
 }
diff --git a/board/logicpd/zoom2/led.c b/board/logicpd/zoom2/led.c
index 4255372..528844e 100644
--- a/board/logicpd/zoom2/led.c
+++ b/board/logicpd/zoom2/led.c
@@ -36,7 +36,7 @@
 #define ZOOM2_LED_BLUE	154
 #define ZOOM2_LED_BLUE2	61
 
-void red_LED_off (void)
+void red_led_off(void)
 {
 	/* red */
 	if (!gpio_request(ZOOM2_LED_RED, "")) {
@@ -46,7 +46,7 @@
 	saved_state[STATUS_LED_RED] = STATUS_LED_OFF;
 }
 
-void blue_LED_off (void)
+void blue_led_off(void)
 {
 	/* blue */
 	if (!gpio_request(ZOOM2_LED_BLUE, "")) {
@@ -62,9 +62,9 @@
 	saved_state[STATUS_LED_BLUE] = STATUS_LED_OFF;
 }
 
-void red_LED_on (void)
+void red_led_on(void)
 {
-	blue_LED_off ();
+	blue_led_off();
 
 	/* red */
 	if (!gpio_request(ZOOM2_LED_RED, "")) {
@@ -74,9 +74,9 @@
 	saved_state[STATUS_LED_RED] = STATUS_LED_ON;
 }
 
-void blue_LED_on (void)
+void blue_led_on(void)
 {
-	red_LED_off ();
+	red_led_off();
 
 	/* blue */
 	if (!gpio_request(ZOOM2_LED_BLUE, "")) {
@@ -102,14 +102,14 @@
 {
 	if (STATUS_LED_BLUE == mask) {
 		if (STATUS_LED_ON == saved_state[STATUS_LED_BLUE])
-			blue_LED_off ();
+			blue_led_off();
 		else
-			blue_LED_on ();
+			blue_led_on();
 	} else if (STATUS_LED_RED == mask) {
 		if (STATUS_LED_ON == saved_state[STATUS_LED_RED])
-			red_LED_off ();
+			red_led_off();
 		else
-			red_LED_on ();
+			red_led_on();
 	}
 }
 
@@ -117,13 +117,13 @@
 {
 	if (STATUS_LED_BLUE == mask) {
 		if (STATUS_LED_ON == state)
-			blue_LED_on ();
+			blue_led_on();
 		else
-			blue_LED_off ();
+			blue_led_off();
 	} else if (STATUS_LED_RED == mask) {
 		if (STATUS_LED_ON == state)
-			red_LED_on ();
+			red_led_on();
 		else
-			red_LED_off ();
+			red_led_off();
 	}
 }
diff --git a/board/ti/beagle/led.c b/board/ti/beagle/led.c
index 1779242..ac21a95 100644
--- a/board/ti/beagle/led.c
+++ b/board/ti/beagle/led.c
@@ -29,12 +29,12 @@
 #define BEAGLE_LED_USR1	149
 
 #ifdef STATUS_LED_GREEN
-void green_LED_off (void)
+void green_led_off(void)
 {
 	__led_set (STATUS_LED_GREEN, 0);
 }
 
-void green_LED_on (void)
+void green_led_on(void)
 {
 	__led_set (STATUS_LED_GREEN, 1);
 }
