]> Git Repo - J-u-boot.git/blob - drivers/misc/gpio_led.c
pinctrl: renesas: Minimize R8A77970 V3M PFC tables
[J-u-boot.git] / drivers / misc / gpio_led.c
1 /*
2  * Status LED driver based on GPIO access conventions of Linux
3  *
4  * Copyright (C) 2010 Thomas Chou <[email protected]>
5  * Licensed under the GPL-2 or later.
6  */
7
8 #include <status_led.h>
9 #include <asm/gpio.h>
10
11 #ifndef CFG_GPIO_LED_INVERTED_TABLE
12 #define CFG_GPIO_LED_INVERTED_TABLE {}
13 #endif
14
15 static led_id_t gpio_led_inv[] = CFG_GPIO_LED_INVERTED_TABLE;
16
17 static int gpio_led_gpio_value(led_id_t mask, int state)
18 {
19         int i, gpio_value = (state == CONFIG_LED_STATUS_ON);
20
21         for (i = 0; i < ARRAY_SIZE(gpio_led_inv); i++) {
22                 if (gpio_led_inv[i] == mask)
23                         gpio_value = !gpio_value;
24         }
25
26         return gpio_value;
27 }
28
29 void __led_init(led_id_t mask, int state)
30 {
31         int gpio_value;
32
33         if (gpio_request(mask, "gpio_led") != 0) {
34                 printf("%s: failed requesting GPIO%lu!\n", __func__, mask);
35                 return;
36         }
37
38         gpio_value = gpio_led_gpio_value(mask, state);
39         gpio_direction_output(mask, gpio_value);
40 }
41
42 void __led_set(led_id_t mask, int state)
43 {
44         int gpio_value = gpio_led_gpio_value(mask, state);
45
46         gpio_set_value(mask, gpio_value);
47 }
48
49 void __led_toggle(led_id_t mask)
50 {
51         gpio_set_value(mask, !gpio_get_value(mask));
52 }
53
54 #ifdef CONFIG_GPIO_LED_STUBS
55
56 /* 'generic' override of colored LED stubs, to use GPIO functions instead */
57
58 #ifdef CONFIG_LED_STATUS_RED
59 void red_led_on(void)
60 {
61         __led_set(CONFIG_LED_STATUS_RED, CONFIG_LED_STATUS_ON);
62 }
63
64 void red_led_off(void)
65 {
66         __led_set(CONFIG_LED_STATUS_RED, CONFIG_LED_STATUS_OFF);
67 }
68 #endif
69
70 #ifdef CONFIG_LED_STATUS_GREEN
71 void green_led_on(void)
72 {
73         __led_set(CONFIG_LED_STATUS_GREEN, CONFIG_LED_STATUS_ON);
74 }
75
76 void green_led_off(void)
77 {
78         __led_set(CONFIG_LED_STATUS_GREEN, CONFIG_LED_STATUS_OFF);
79 }
80 #endif
81
82 #ifdef CONFIG_LED_STATUS_YELLOW
83 void yellow_led_on(void)
84 {
85         __led_set(CONFIG_LED_STATUS_YELLOW, CONFIG_LED_STATUS_ON);
86 }
87
88 void yellow_led_off(void)
89 {
90         __led_set(CONFIG_LED_STATUS_YELLOW, CONFIG_LED_STATUS_OFF);
91 }
92 #endif
93
94 #ifdef CONFIG_LED_STATUS_BLUE
95 void blue_led_on(void)
96 {
97         __led_set(CONFIG_LED_STATUS_BLUE, CONFIG_LED_STATUS_ON);
98 }
99
100 void blue_led_off(void)
101 {
102         __led_set(CONFIG_LED_STATUS_BLUE, CONFIG_LED_STATUS_OFF);
103 }
104 #endif
105
106 #endif /* CONFIG_GPIO_LED_STUBS */
This page took 0.027077 seconds and 4 git commands to generate.