#include "leds.h"
DECLARE_RWSEM(leds_list_lock);
-LIST_HEAD(leds_list);
+EXPORT_SYMBOL_GPL(leds_list_lock);
+LIST_HEAD(leds_list);
EXPORT_SYMBOL_GPL(leds_list);
-EXPORT_SYMBOL_GPL(leds_list_lock);
static DECLARE_RWSEM(triggers_list_lock);
static LIST_HEAD(trigger_list);
+ /* Used by LED Class */
+
ssize_t led_trigger_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{
return -EINVAL;
}
-
+EXPORT_SYMBOL_GPL(led_trigger_store);
ssize_t led_trigger_show(struct device *dev, struct device_attribute *attr,
char *buf)
len += sprintf(len+buf, "\n");
return len;
}
-
-void led_trigger_event(struct led_trigger *trigger,
- enum led_brightness brightness)
-{
- struct list_head *entry;
-
- if (!trigger)
- return;
-
- read_lock(&trigger->leddev_list_lock);
- list_for_each(entry, &trigger->led_cdevs) {
- struct led_classdev *led_cdev;
-
- led_cdev = list_entry(entry, struct led_classdev, trig_list);
- led_set_brightness(led_cdev, brightness);
- }
- read_unlock(&trigger->leddev_list_lock);
-}
+EXPORT_SYMBOL_GPL(led_trigger_show);
/* Caller must ensure led_cdev->trigger_lock held */
void led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trigger)
if (led_cdev->trigger) {
write_lock_irqsave(&led_cdev->trigger->leddev_list_lock, flags);
list_del(&led_cdev->trig_list);
- write_unlock_irqrestore(&led_cdev->trigger->leddev_list_lock, flags);
+ write_unlock_irqrestore(&led_cdev->trigger->leddev_list_lock,
+ flags);
if (led_cdev->trigger->deactivate)
led_cdev->trigger->deactivate(led_cdev);
led_set_brightness(led_cdev, LED_OFF);
}
led_cdev->trigger = trigger;
}
+EXPORT_SYMBOL_GPL(led_trigger_set);
void led_trigger_remove(struct led_classdev *led_cdev)
{
led_trigger_set(led_cdev, NULL);
up_write(&led_cdev->trigger_lock);
}
+EXPORT_SYMBOL_GPL(led_trigger_remove);
void led_trigger_set_default(struct led_classdev *led_cdev)
{
up_write(&led_cdev->trigger_lock);
up_read(&triggers_list_lock);
}
+EXPORT_SYMBOL_GPL(led_trigger_set_default);
+
+/* LED Trigger Interface */
int led_trigger_register(struct led_trigger *trigger)
{
return 0;
}
-
-void led_trigger_register_simple(const char *name, struct led_trigger **tp)
-{
- struct led_trigger *trigger;
- int err;
-
- trigger = kzalloc(sizeof(struct led_trigger), GFP_KERNEL);
-
- if (trigger) {
- trigger->name = name;
- err = led_trigger_register(trigger);
- if (err < 0)
- printk(KERN_WARNING "LED trigger %s failed to register"
- " (%d)\n", name, err);
- } else
- printk(KERN_WARNING "LED trigger %s failed to register"
- " (no memory)\n", name);
-
- *tp = trigger;
-}
+EXPORT_SYMBOL_GPL(led_trigger_register);
void led_trigger_unregister(struct led_trigger *trigger)
{
}
up_read(&leds_list_lock);
}
+EXPORT_SYMBOL_GPL(led_trigger_unregister);
-void led_trigger_unregister_simple(struct led_trigger *trigger)
+/* Simple LED Tigger Interface */
+
+void led_trigger_event(struct led_trigger *trigger,
+ enum led_brightness brightness)
{
- if (trigger)
- led_trigger_unregister(trigger);
- kfree(trigger);
+ struct list_head *entry;
+
+ if (!trigger)
+ return;
+
+ read_lock(&trigger->leddev_list_lock);
+ list_for_each(entry, &trigger->led_cdevs) {
+ struct led_classdev *led_cdev;
+
+ led_cdev = list_entry(entry, struct led_classdev, trig_list);
+ led_set_brightness(led_cdev, brightness);
+ }
+ read_unlock(&trigger->leddev_list_lock);
}
+EXPORT_SYMBOL_GPL(led_trigger_event);
-/* Used by LED Class */
-EXPORT_SYMBOL_GPL(led_trigger_set);
-EXPORT_SYMBOL_GPL(led_trigger_remove);
-EXPORT_SYMBOL_GPL(led_trigger_set_default);
-EXPORT_SYMBOL_GPL(led_trigger_show);
-EXPORT_SYMBOL_GPL(led_trigger_store);
+void led_trigger_register_simple(const char *name, struct led_trigger **tp)
+{
+ struct led_trigger *trigger;
+ int err;
-/* LED Trigger Interface */
-EXPORT_SYMBOL_GPL(led_trigger_register);
-EXPORT_SYMBOL_GPL(led_trigger_unregister);
+ trigger = kzalloc(sizeof(struct led_trigger), GFP_KERNEL);
-/* Simple LED Tigger Interface */
+ if (trigger) {
+ trigger->name = name;
+ err = led_trigger_register(trigger);
+ if (err < 0)
+ printk(KERN_WARNING "LED trigger %s failed to register"
+ " (%d)\n", name, err);
+ } else
+ printk(KERN_WARNING "LED trigger %s failed to register"
+ " (no memory)\n", name);
+
+ *tp = trigger;
+}
EXPORT_SYMBOL_GPL(led_trigger_register_simple);
+
+void led_trigger_unregister_simple(struct led_trigger *trigger)
+{
+ if (trigger)
+ led_trigger_unregister(trigger);
+ kfree(trigger);
+}
EXPORT_SYMBOL_GPL(led_trigger_unregister_simple);
-EXPORT_SYMBOL_GPL(led_trigger_event);
MODULE_AUTHOR("Richard Purdie");
MODULE_LICENSE("GPL");
#define CLEVO_MAIL_LED_BLINK_1HZ 0x008A
#define CLEVO_MAIL_LED_BLINK_0_5HZ 0x0083
-MODULE_AUTHOR("Márton Németh <nm127@freemail.hu>");
+MODULE_AUTHOR("Márton Németh <nm127@freemail.hu>");
MODULE_DESCRIPTION("Clevo mail LED driver");
MODULE_LICENSE("GPL");
}
static int clevo_mail_led_blink(struct led_classdev *led_cdev,
- unsigned long* delay_on,
- unsigned long* delay_off)
+ unsigned long *delay_on,
+ unsigned long *delay_off)
{
int status = -EINVAL;
static u8 led_value;
static void qube_front_led_set(struct led_classdev *led_cdev,
- enum led_brightness brightness)
+ enum led_brightness brightness)
{
if (brightness)
led_value = LED_FRONT_LEFT | LED_FRONT_RIGHT;
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <linux/init.h>
#include <linux/io.h>
static DEFINE_SPINLOCK(led_value_lock);
static void raq_web_led_set(struct led_classdev *led_cdev,
- enum led_brightness brightness)
+ enum led_brightness brightness)
{
unsigned long flags;
};
static void raq_power_off_led_set(struct led_classdev *led_cdev,
- enum led_brightness brightness)
+ enum led_brightness brightness)
{
unsigned long flags;
#include <asm/arch/pxa-regs.h>
#include <asm/hardware/scoop.h>
-static void corgiled_amber_set(struct led_classdev *led_cdev, enum led_brightness value)
+static void corgiled_amber_set(struct led_classdev *led_cdev,
+ enum led_brightness value)
{
if (value)
GPSR0 = GPIO_bit(CORGI_GPIO_LED_ORANGE);
GPCR0 = GPIO_bit(CORGI_GPIO_LED_ORANGE);
}
-static void corgiled_green_set(struct led_classdev *led_cdev, enum led_brightness value)
+static void corgiled_green_set(struct led_classdev *led_cdev,
+ enum led_brightness value)
{
if (value)
set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_LED_GREEN);
static int corgiled_suspend(struct platform_device *dev, pm_message_t state)
{
#ifdef CONFIG_LEDS_TRIGGERS
- if (corgi_amber_led.trigger && strcmp(corgi_amber_led.trigger->name, "sharpsl-charge"))
+ if (corgi_amber_led.trigger &&
+ strcmp(corgi_amber_led.trigger->name, "sharpsl-charge"))
#endif
led_classdev_suspend(&corgi_amber_led);
led_classdev_suspend(&corgi_green_led);
static void __exit corgiled_exit(void)
{
- platform_driver_unregister(&corgiled_driver);
+ platform_driver_unregister(&corgiled_driver);
}
module_init(corgiled_init);
void h1940_greenled_set(struct led_classdev *led_dev, enum led_brightness value)
{
switch (value) {
- case LED_HALF:
- h1940_latch_control(0,H1940_LATCH_LED_FLASH);
- s3c2410_gpio_setpin(S3C2410_GPA7,1);
- break;
- case LED_FULL:
- h1940_latch_control(0,H1940_LATCH_LED_GREEN);
- s3c2410_gpio_setpin(S3C2410_GPA7,1);
- break;
- default:
- case LED_OFF:
- h1940_latch_control(H1940_LATCH_LED_FLASH,0);
- h1940_latch_control(H1940_LATCH_LED_GREEN,0);
- s3c2410_gpio_setpin(S3C2410_GPA7,0);
- break;
+ case LED_HALF:
+ h1940_latch_control(0, H1940_LATCH_LED_FLASH);
+ s3c2410_gpio_setpin(S3C2410_GPA7, 1);
+ break;
+ case LED_FULL:
+ h1940_latch_control(0, H1940_LATCH_LED_GREEN);
+ s3c2410_gpio_setpin(S3C2410_GPA7, 1);
+ break;
+ default:
+ case LED_OFF:
+ h1940_latch_control(H1940_LATCH_LED_FLASH, 0);
+ h1940_latch_control(H1940_LATCH_LED_GREEN, 0);
+ s3c2410_gpio_setpin(S3C2410_GPA7, 0);
+ break;
}
}
void h1940_redled_set(struct led_classdev *led_dev, enum led_brightness value)
{
switch (value) {
- case LED_HALF:
- h1940_latch_control(0,H1940_LATCH_LED_FLASH);
- s3c2410_gpio_setpin(S3C2410_GPA1,1);
- break;
- case LED_FULL:
- h1940_latch_control(0,H1940_LATCH_LED_RED);
- s3c2410_gpio_setpin(S3C2410_GPA1,1);
- break;
- default:
- case LED_OFF:
- h1940_latch_control(H1940_LATCH_LED_FLASH,0);
- h1940_latch_control(H1940_LATCH_LED_RED,0);
- s3c2410_gpio_setpin(S3C2410_GPA1,0);
- break;
+ case LED_HALF:
+ h1940_latch_control(0, H1940_LATCH_LED_FLASH);
+ s3c2410_gpio_setpin(S3C2410_GPA1, 1);
+ break;
+ case LED_FULL:
+ h1940_latch_control(0, H1940_LATCH_LED_RED);
+ s3c2410_gpio_setpin(S3C2410_GPA1, 1);
+ break;
+ default:
+ case LED_OFF:
+ h1940_latch_control(H1940_LATCH_LED_FLASH, 0);
+ h1940_latch_control(H1940_LATCH_LED_RED, 0);
+ s3c2410_gpio_setpin(S3C2410_GPA1, 0);
+ break;
}
}
{
if (value) {
/* flashing Blue */
- h1940_latch_control(0,H1940_LATCH_LED_FLASH);
- s3c2410_gpio_setpin(S3C2410_GPA3,1);
+ h1940_latch_control(0, H1940_LATCH_LED_FLASH);
+ s3c2410_gpio_setpin(S3C2410_GPA3, 1);
} else {
- h1940_latch_control(H1940_LATCH_LED_FLASH,0);
- s3c2410_gpio_setpin(S3C2410_GPA3,0);
+ h1940_latch_control(H1940_LATCH_LED_FLASH, 0);
+ s3c2410_gpio_setpin(S3C2410_GPA3, 0);
}
}
#include <asm/hd64461.h>
#include <asm/hp6xx.h>
-static void hp6xxled_green_set(struct led_classdev *led_cdev, enum led_brightness value)
+static void hp6xxled_green_set(struct led_classdev *led_cdev,
+ enum led_brightness value)
{
u8 v8;
outb(v8 | PKDR_LED_GREEN, PKDR);
}
-static void hp6xxled_red_set(struct led_classdev *led_cdev, enum led_brightness value)
+static void hp6xxled_red_set(struct led_classdev *led_cdev,
+ enum led_brightness value)
{
u16 v16;
if (pd->flags & S3C24XX_LEDF_TRISTATE)
s3c2410_gpio_cfgpin(pd->gpio,
- value ? S3C2410_GPIO_OUTPUT : S3C2410_GPIO_INPUT);
+ value ? S3C2410_GPIO_OUTPUT : S3C2410_GPIO_INPUT);
}
static void __exit s3c24xx_led_exit(void)
{
- platform_driver_unregister(&s3c24xx_led_driver);
+ platform_driver_unregister(&s3c24xx_led_driver);
}
module_init(s3c24xx_led_init);
#include <asm/arch/pxa-regs.h>
#include <asm/arch/spitz.h>
-static void spitzled_amber_set(struct led_classdev *led_cdev, enum led_brightness value)
+static void spitzled_amber_set(struct led_classdev *led_cdev,
+ enum led_brightness value)
{
if (value)
set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_ORANGE);
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_ORANGE);
}
-static void spitzled_green_set(struct led_classdev *led_cdev, enum led_brightness value)
+static void spitzled_green_set(struct led_classdev *led_cdev,
+ enum led_brightness value)
{
if (value)
set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_GREEN);
static int spitzled_suspend(struct platform_device *dev, pm_message_t state)
{
#ifdef CONFIG_LEDS_TRIGGERS
- if (spitz_amber_led.trigger && strcmp(spitz_amber_led.trigger->name, "sharpsl-charge"))
+ if (spitz_amber_led.trigger &&
+ strcmp(spitz_amber_led.trigger->name, "sharpsl-charge"))
#endif
led_classdev_suspend(&spitz_amber_led);
led_classdev_suspend(&spitz_green_led);
static void __exit spitzled_exit(void)
{
- platform_driver_unregister(&spitzled_driver);
+ platform_driver_unregister(&spitzled_driver);
}
module_init(spitzled_init);
struct led_trigger *trigger);
void led_trigger_remove(struct led_classdev *led_cdev);
#else
-#define led_trigger_set_default(x) do {} while(0)
-#define led_trigger_set(x, y) do {} while(0)
-#define led_trigger_remove(x) do {} while(0)
+#define led_trigger_set_default(x) do {} while (0)
+#define led_trigger_set(x, y) do {} while (0)
+#define led_trigger_remove(x) do {} while (0)
#endif
ssize_t led_trigger_store(struct device *dev, struct device_attribute *attr,
if (ide_lastactivity != ide_activity) {
ide_lastactivity = ide_activity;
led_trigger_event(ledtrig_ide, LED_FULL);
- mod_timer(&ledtrig_ide_timer, jiffies + msecs_to_jiffies(10));
+ mod_timer(&ledtrig_ide_timer, jiffies + msecs_to_jiffies(10));
} else {
led_trigger_event(ledtrig_ide, LED_OFF);
}
mod_timer(&timer_data->timer, jiffies + msecs_to_jiffies(delay));
}
-static ssize_t led_delay_on_show(struct device *dev,
+static ssize_t led_delay_on_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct led_classdev *led_cdev = dev_get_drvdata(dev);
return strlen(buf) + 1;
}
-static ssize_t led_delay_on_store(struct device *dev,
+static ssize_t led_delay_on_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t size)
{
struct led_classdev *led_cdev = dev_get_drvdata(dev);
/* try to activate hardware acceleration, if any */
if (!led_cdev->blink_set ||
led_cdev->blink_set(led_cdev,
- &timer_data->delay_on, &timer_data->delay_off)) {
+ &timer_data->delay_on, &timer_data->delay_off)) {
/* no hardware acceleration, blink via timer */
mod_timer(&timer_data->timer, jiffies + 1);
}
return ret;
}
-static ssize_t led_delay_off_show(struct device *dev,
+static ssize_t led_delay_off_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct led_classdev *led_cdev = dev_get_drvdata(dev);
return strlen(buf) + 1;
}
-static ssize_t led_delay_off_store(struct device *dev,
+static ssize_t led_delay_off_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t size)
{
struct led_classdev *led_cdev = dev_get_drvdata(dev);
/* try to activate hardware acceleration, if any */
if (!led_cdev->blink_set ||
led_cdev->blink_set(led_cdev,
- &timer_data->delay_on, &timer_data->delay_off)) {
+ &timer_data->delay_on, &timer_data->delay_off)) {
/* no hardware acceleration, blink via timer */
mod_timer(&timer_data->timer, jiffies + 1);
}