170d8c944SJason Kridner /* 270d8c944SJason Kridner * Copyright (c) 2010 Texas Instruments, Inc. 370d8c944SJason Kridner * Jason Kridner <jkridner@beagleboard.org> 470d8c944SJason Kridner * 570d8c944SJason Kridner * This program is free software; you can redistribute it and/or 670d8c944SJason Kridner * modify it under the terms of the GNU General Public License as 770d8c944SJason Kridner * published by the Free Software Foundation; either version 2 of 870d8c944SJason Kridner * the License, or (at your option) any later version. 970d8c944SJason Kridner * 1070d8c944SJason Kridner * This program is distributed in the hope that it will be useful, 1170d8c944SJason Kridner * but WITHOUT ANY WARRANTY; without even the implied warranty of 1270d8c944SJason Kridner * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1370d8c944SJason Kridner * GNU General Public License for more details. 1470d8c944SJason Kridner * 1570d8c944SJason Kridner * You should have received a copy of the GNU General Public License 1670d8c944SJason Kridner * along with this program; if not, write to the Free Software 1770d8c944SJason Kridner * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 1870d8c944SJason Kridner * MA 02111-1307 USA 1970d8c944SJason Kridner */ 2070d8c944SJason Kridner #include <common.h> 2170d8c944SJason Kridner #include <status_led.h> 2270d8c944SJason Kridner #include <asm/arch/cpu.h> 2370d8c944SJason Kridner #include <asm/io.h> 2470d8c944SJason Kridner #include <asm/arch/sys_proto.h> 2584c3b631SSanjeev Premi #include <asm/gpio.h> 2670d8c944SJason Kridner 2770d8c944SJason Kridner /* GPIO pins for the LEDs */ 28f87824efSJason Kridner #define BEAGLE_LED_USR0 150 29f87824efSJason Kridner #define BEAGLE_LED_USR1 149 3070d8c944SJason Kridner 3170d8c944SJason Kridner #ifdef STATUS_LED_GREEN 32*2d3be7c4SJason Kridner void green_led_off(void) 3370d8c944SJason Kridner { 3470d8c944SJason Kridner __led_set (STATUS_LED_GREEN, 0); 3570d8c944SJason Kridner } 3670d8c944SJason Kridner 37*2d3be7c4SJason Kridner void green_led_on(void) 3870d8c944SJason Kridner { 3970d8c944SJason Kridner __led_set (STATUS_LED_GREEN, 1); 4070d8c944SJason Kridner } 4170d8c944SJason Kridner #endif 4270d8c944SJason Kridner 4370d8c944SJason Kridner void __led_init (led_id_t mask, int state) 4470d8c944SJason Kridner { 4570d8c944SJason Kridner __led_set (mask, state); 4670d8c944SJason Kridner } 4770d8c944SJason Kridner 4870d8c944SJason Kridner void __led_toggle (led_id_t mask) 4970d8c944SJason Kridner { 50b8bc8973SJoel A Fernandes int state, toggle_gpio = 0; 5170d8c944SJason Kridner #ifdef STATUS_LED_BIT 52b8bc8973SJoel A Fernandes if (!toggle_gpio && STATUS_LED_BIT & mask) 53b8bc8973SJoel A Fernandes toggle_gpio = BEAGLE_LED_USR0; 5470d8c944SJason Kridner #endif 5570d8c944SJason Kridner #ifdef STATUS_LED_BIT1 56b8bc8973SJoel A Fernandes if (!toggle_gpio && STATUS_LED_BIT1 & mask) 57b8bc8973SJoel A Fernandes toggle_gpio = BEAGLE_LED_USR1; 5870d8c944SJason Kridner #endif 59b8bc8973SJoel A Fernandes if (toggle_gpio) { 6084c3b631SSanjeev Premi if (!gpio_request(toggle_gpio, "")) { 6184c3b631SSanjeev Premi gpio_direction_output(toggle_gpio, 0); 6284c3b631SSanjeev Premi state = gpio_get_value(toggle_gpio); 6384c3b631SSanjeev Premi gpio_set_value(toggle_gpio, !state); 64b8bc8973SJoel A Fernandes } 65b8bc8973SJoel A Fernandes } 6670d8c944SJason Kridner } 6770d8c944SJason Kridner 6870d8c944SJason Kridner void __led_set (led_id_t mask, int state) 6970d8c944SJason Kridner { 7070d8c944SJason Kridner #ifdef STATUS_LED_BIT 7170d8c944SJason Kridner if (STATUS_LED_BIT & mask) { 7284c3b631SSanjeev Premi if (!gpio_request(BEAGLE_LED_USR0, "")) { 7384c3b631SSanjeev Premi gpio_direction_output(BEAGLE_LED_USR0, 0); 7484c3b631SSanjeev Premi gpio_set_value(BEAGLE_LED_USR0, state); 7570d8c944SJason Kridner } 7670d8c944SJason Kridner } 7770d8c944SJason Kridner #endif 7870d8c944SJason Kridner #ifdef STATUS_LED_BIT1 7970d8c944SJason Kridner if (STATUS_LED_BIT1 & mask) { 8084c3b631SSanjeev Premi if (!gpio_request(BEAGLE_LED_USR1, "")) { 8184c3b631SSanjeev Premi gpio_direction_output(BEAGLE_LED_USR1, 0); 8284c3b631SSanjeev Premi gpio_set_value(BEAGLE_LED_USR1, state); 8370d8c944SJason Kridner } 8470d8c944SJason Kridner } 8570d8c944SJason Kridner #endif 8670d8c944SJason Kridner } 87