2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
6 * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved.
8 #include <linux/kernel.h>
9 #include <linux/module.h>
10 #include <linux/init.h>
11 #include <linux/platform_device.h>
12 #include <linux/leds.h>
13 #include <linux/err.h>
16 #define DRVNAME "sead3-led"
18 static struct platform_device *pdev;
20 static void sead3_pled_set(struct led_classdev *led_cdev,
21 enum led_brightness value)
23 pr_debug("sead3_pled_set\n");
24 writel(value, (void __iomem *)0xBF000210); /* FIXME */
27 static void sead3_fled_set(struct led_classdev *led_cdev,
28 enum led_brightness value)
30 pr_debug("sead3_fled_set\n");
31 writel(value, (void __iomem *)0xBF000218); /* FIXME */
34 static struct led_classdev sead3_pled = {
35 .name = "sead3::pled",
36 .brightness_set = sead3_pled_set,
39 static struct led_classdev sead3_fled = {
40 .name = "sead3::fled",
41 .brightness_set = sead3_fled_set,
45 static int sead3_led_suspend(struct platform_device *dev,
48 led_classdev_suspend(&sead3_pled);
49 led_classdev_suspend(&sead3_fled);
53 static int sead3_led_resume(struct platform_device *dev)
55 led_classdev_resume(&sead3_pled);
56 led_classdev_resume(&sead3_fled);
60 #define sead3_led_suspend NULL
61 #define sead3_led_resume NULL
64 static int sead3_led_probe(struct platform_device *pdev)
68 ret = led_classdev_register(&pdev->dev, &sead3_pled);
72 ret = led_classdev_register(&pdev->dev, &sead3_fled);
74 led_classdev_unregister(&sead3_pled);
79 static int sead3_led_remove(struct platform_device *pdev)
81 led_classdev_unregister(&sead3_pled);
82 led_classdev_unregister(&sead3_fled);
86 static struct platform_driver sead3_led_driver = {
87 .probe = sead3_led_probe,
88 .remove = sead3_led_remove,
89 .suspend = sead3_led_suspend,
90 .resume = sead3_led_resume,
97 static int __init sead3_led_init(void)
101 ret = platform_driver_register(&sead3_led_driver);
105 pdev = platform_device_register_simple(DRVNAME, -1, NULL, 0);
108 platform_driver_unregister(&sead3_led_driver);
116 static void __exit sead3_led_exit(void)
118 platform_device_unregister(pdev);
119 platform_driver_unregister(&sead3_led_driver);
122 module_init(sead3_led_init);
123 module_exit(sead3_led_exit);
125 MODULE_AUTHOR("Kristian Kielhofner <kris@krisk.org>");
126 MODULE_DESCRIPTION("SEAD3 LED driver");
127 MODULE_LICENSE("GPL");