2 * LEDs driver for SEAD3
4 * Copyright (C) 2006 Kristian Kielhofner <kris@krisk.org>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
13 #include <linux/kernel.h>
14 #include <linux/init.h>
15 #include <linux/platform_device.h>
16 #include <linux/leds.h>
17 #include <linux/err.h>
20 #define DRVNAME "sead3-led"
22 static struct platform_device
*pdev
;
24 static void sead3_pled_set(struct led_classdev
*led_cdev
,
25 enum led_brightness value
)
27 pr_debug("sead3_pled_set\n");
28 writel(value
, (void __iomem
*)0xBF000210);
31 static void sead3_fled_set(struct led_classdev
*led_cdev
,
32 enum led_brightness value
)
34 pr_debug("sead3_fled_set\n");
35 writel(value
, (void __iomem
*)0xBF000218);
38 static struct led_classdev sead3_pled
= {
39 .name
= "sead3::pled",
40 .brightness_set
= sead3_pled_set
,
43 static struct led_classdev sead3_fled
= {
44 .name
= "sead3::fled",
45 .brightness_set
= sead3_fled_set
,
49 static int sead3_led_suspend(struct platform_device
*dev
,
52 led_classdev_suspend(&sead3_pled
);
53 led_classdev_suspend(&sead3_fled
);
57 static int sead3_led_resume(struct platform_device
*dev
)
59 led_classdev_resume(&sead3_pled
);
60 led_classdev_resume(&sead3_fled
);
64 #define sead3_led_suspend NULL
65 #define sead3_led_resume NULL
68 static int sead3_led_probe(struct platform_device
*pdev
)
72 ret
= led_classdev_register(&pdev
->dev
, &sead3_pled
);
76 ret
= led_classdev_register(&pdev
->dev
, &sead3_fled
);
78 led_classdev_unregister(&sead3_pled
);
83 static int sead3_led_remove(struct platform_device
*pdev
)
85 led_classdev_unregister(&sead3_pled
);
86 led_classdev_unregister(&sead3_fled
);
90 static struct platform_driver sead3_led_driver
= {
91 .probe
= sead3_led_probe
,
92 .remove
= sead3_led_remove
,
93 .suspend
= sead3_led_suspend
,
94 .resume
= sead3_led_resume
,
101 static int __init
sead3_led_init(void)
105 ret
= platform_driver_register(&sead3_led_driver
);
109 pdev
= platform_device_register_simple(DRVNAME
, -1, NULL
, 0);
112 platform_driver_unregister(&sead3_led_driver
);
120 static void __exit
sead3_led_exit(void)
122 platform_device_unregister(pdev
);
123 platform_driver_unregister(&sead3_led_driver
);
126 module_init(sead3_led_init
);
127 module_exit(sead3_led_exit
);
129 MODULE_AUTHOR("Kristian Kielhofner <kris@krisk.org>");
130 MODULE_DESCRIPTION("SEAD3 LED driver");
131 MODULE_LICENSE("GPL");