enable start-stop-daemon by default, i want to use this to clean up a few init script...
[openwrt/openwrt.git] / target / linux / au1000-2.6 / files / drivers / leds / leds-mtx1.c
1 /*
2 * LED driver for MTX-1 boards
3 *
4 * Copyright 2007 Florian Fainelli <florian@openwrt.org>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11
12 #include <linux/kernel.h>
13 #include <linux/init.h>
14 #include <linux/platform_device.h>
15 #include <linux/leds.h>
16 #include <linux/err.h>
17 #include <asm/gpio.h>
18
19 static struct platform_device *pdev;
20
21 static void mtx1_led_set(struct led_classdev *led_cdev, enum led_brightness brightness)
22 {
23 if (!strcmp("mtx1:green", led_cdev->name))
24 gpio_set_value(211, brightness ? 1 : 0);
25 else
26 gpio_set_value(212, brightness ? 1 : 0);
27 }
28
29 static struct led_classdev mtx1_green_led = {
30 .name = "mtx1:green",
31 .brightness_set = mtx1_led_set,
32 };
33
34 static struct led_classdev mtx1_red_led = {
35 .name = "mtx1:red",
36 .brightness_set = mtx1_led_set,
37 };
38
39 static int mtx1_leds_probe(struct platform_device *pdev)
40 {
41 int ret;
42
43 ret = led_classdev_register(&pdev->dev, &mtx1_green_led);
44 if (ret < 0)
45 goto out;
46
47 ret = led_classdev_register(&pdev->dev, &mtx1_red_led);
48 if (ret < 0)
49 led_classdev_unregister(&mtx1_green_led);
50
51 out:
52 return ret;
53 }
54
55 static int mtx1_leds_remove(struct platform_device *pdev)
56 {
57 led_classdev_unregister(&mtx1_green_led);
58 led_classdev_unregister(&mtx1_red_led);
59 return 0;
60 }
61
62 static struct platform_driver mtx1_leds_driver = {
63 .probe = mtx1_leds_probe,
64 .remove = mtx1_leds_remove,
65 .driver = {
66 .name = "mtx1-leds",
67 }
68 };
69
70 static int __init mtx1_leds_init(void)
71 {
72 int ret;
73
74 ret = platform_driver_register(&mtx1_leds_driver);
75 if (ret < 0)
76 goto out;
77
78 pdev = platform_device_register_simple("mtx1-leds", -1, NULL, 0);
79 if (IS_ERR(pdev)) {
80 ret = PTR_ERR(pdev);
81 platform_driver_unregister(&mtx1_leds_driver);
82 goto out;
83 }
84
85 out:
86 return ret;
87
88 }
89
90 static void __exit mtx1_leds_exit(void)
91 {
92 platform_device_unregister(pdev);
93 platform_driver_unregister(&mtx1_leds_driver);
94 }
95
96 module_init(mtx1_leds_init);
97 module_exit(mtx1_leds_exit);
98
99 MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
100 MODULE_DESCRIPTION("MTX-1 LED driver");
101 MODULE_LICENSE("GPL");