23 #include <linux/module.h>
26 #include <linux/slab.h>
43 for (pin = 0; pin < gpio_ext->
num_addr; pin++)
51 for (pin = 0; pin < gpio_ext->
num_data; pin++)
68 gpio_ext_set_addr(gpio_ext, addr);
69 gpio_ext_set_data(gpio_ext, value);
70 gpio_ext_enable_select(gpio_ext);
71 spin_unlock_irqrestore(&gpio_ext_lock, flags);
83 for (i = 0; i < gpio_ext->
num_addr; i++) {
85 "GPIO extension addr");
90 for (i = 0; i < gpio_ext->
num_data; i++) {
92 "GPIO extension data");
98 "GPIO extension enable");
105 for (i = i - 1; i >= 0; i--)
109 for (i = i - 1; i >= 0; i--)
120 for (i = gpio_ext->
num_addr - 1; i >= 0; i--)
122 for (i = gpio_ext->
num_data - 1; i >= 0; i--)
152 for (i = 0; i < num_timer; i++) {
153 if (timer[i].delay_on == delay_on &&
154 timer[i].delay_off == delay_off) {
155 *mode = timer[
i].
mode;
162 static int netxbig_led_blink_set(
struct led_classdev *led_cdev,
173 ret = netxbig_led_get_timer_mode(&mode, *delay_on, *delay_off,
182 spin_lock_irq(&led_dat->
lock);
187 spin_unlock_irq(&led_dat->
lock);
192 static void netxbig_led_set(
struct led_classdev *led_cdev,
199 int set_brightness = 1;
213 mode = led_dat->
mode;
224 if (set_brightness) {
227 gpio_ext_set_value(led_dat->
gpio_ext,
231 spin_unlock_irqrestore(&led_dat->
lock, flags);
236 const char *buff,
size_t count)
252 spin_lock_irq(&led_dat->
lock);
254 if (led_dat->
sata == enable) {
261 mode = led_dat->
mode;
280 spin_unlock_irq(&led_dat->
lock);
295 static DEVICE_ATTR(
sata, 0644, netxbig_led_sata_show, netxbig_led_sata_store);
314 led_dat->
cdev.name =
template->name;
315 led_dat->
cdev.default_trigger =
template->default_trigger;
316 led_dat->
cdev.blink_set = netxbig_led_blink_set;
317 led_dat->
cdev.brightness_set = netxbig_led_set;
331 led_dat->
mode_addr =
template->mode_addr;
332 led_dat->
mode_val =
template->mode_val;
370 ret = gpio_ext_init(pdata->
gpio_ext);
374 for (i = 0; i < pdata->
num_leds; i++) {
375 ret = create_netxbig_led(pdev, &leds_data[i], &pdata->
leds[i]);
380 platform_set_drvdata(pdev, leds_data);
385 for (i = i - 1; i >= 0; i--)
386 delete_netxbig_led(&leds_data[i]);
398 leds_data = platform_get_drvdata(pdev);
400 for (i = 0; i < pdata->
num_leds; i++)
401 delete_netxbig_led(&leds_data[i]);
409 .probe = netxbig_led_probe,
412 .name =
"leds-netxbig",