[PATCH 7/11] LED: Add LED device support for LOCOMO devices
- From: Richard Purdie <rpurdie@xxxxxxxxx>
- Date: Tue, 31 Jan 2006 13:41:45 +0000
Adds an LED driver for LEDs exported by the Sharp LOCOMO chip as found on
some models of Sharp Zaurus.
Signed-off-by: Richard Purdie <rpurdie@xxxxxxxxx>
Index: linux-2.6.15/drivers/leds/Kconfig
===================================================================
--- linux-2.6.15.orig/drivers/leds/Kconfig 2006-01-29 16:04:22.000000000 +0000
+++ linux-2.6.15/drivers/leds/Kconfig 2006-01-29 16:04:23.000000000 +0000
@@ -29,6 +29,13 @@
This option enables support for the LEDs on Sharp Zaurus
SL-C7x0 series (C700, C750, C760, C860).
+config LEDS_LOCOMO
+ tristate "LED Support for Locomo device"
+ depends LEDS_CLASS && SHARP_LOCOMO
+ help
+ This option enables support for the LEDs on Sharp Locomo.
+ Zaurus models SL-5500 and SL-5600.
+
config LEDS_SPITZ
tristate "LED Support for the Sharp SL-Cxx00 series"
depends LEDS_CLASS && PXA_SHARP_Cxx00
Index: linux-2.6.15/drivers/leds/Makefile
===================================================================
--- linux-2.6.15.orig/drivers/leds/Makefile 2006-01-29 16:04:22.000000000 +0000
+++ linux-2.6.15/drivers/leds/Makefile 2006-01-29 16:04:23.000000000 +0000
@@ -6,6 +6,7 @@
# LED Platform Drivers
obj-$(CONFIG_LEDS_CORGI) += leds-corgi.o
+obj-$(CONFIG_LEDS_LOCOMO) += leds-locomo.o
obj-$(CONFIG_LEDS_SPITZ) += leds-spitz.o
# LED Triggers
Index: linux-2.6.15/drivers/leds/leds-locomo.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.15/drivers/leds/leds-locomo.c 2006-01-29 16:09:46.000000000 +0000
@@ -0,0 +1,91 @@
+/*
+ * linux/drivers/leds/locomo.c
+ *
+ * Copyright (C) 2005 John Lenz <lenz@xxxxxxxxxxx>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/device.h>
+#include <linux/leds.h>
+
+#include <asm/hardware.h>
+#include <asm/hardware/locomo.h>
+
+void locomoled_brightness_set(struct led_device *led_dev, enum led_brightnessint value, int offset)
+{
+ struct locomo_dev *locomo_dev = LOCOMO_DEV(led_dev->class_dev->dev);
+ unsigned long flags;
+
+ local_irq_save(flags);
+ if (value)
+ locomo_writel(LOCOMO_LPT_TOFH, locomo_dev->mapbase + offset);
+ else
+ locomo_writel(LOCOMO_LPT_TOFL, locomo_dev->mapbase + offset);
+ local_irq_restore(flags);
+}
+
+void locomoled_brightness_set0(struct led_device *led_dev, enum led_brightness value)
+{
+ locomoled_brightness_set(led_dev, value, LOCOMO_LPT0);
+}
+
+void locomoled_brightness_set1(struct led_device *led_dev, enum led_brightness value)
+{
+ locomoled_brightness_set(led_dev, value, LOCOMO_LPT1);
+}
+
+static struct led_device locomo_led0 = {
+ .name = "locomo:amber",
+ .brightness_set = locomoled_brightness_set0,
+};
+
+static struct led_device locomo_led1 = {
+ .name = "locomo:green",
+ .brightness_set = locomoled_brightness_set1,
+};
+
+static int locomoled_probe(struct locomo_dev *ldev)
+{
+ int ret;
+
+ ret = led_device_register(&ldev->dev, &locomo_led0);
+ if (ret < 0)
+ return ret;
+
+ ret = led_device_register(&ldev->dev, &locomo_led1);
+ if (ret < 0)
+ led_device_unregister(&locomo_led0);
+
+ return ret;
+}
+
+static int locomoled_remove(struct locomo_dev *dev)
+{
+ led_device_unregister(&locomo_led0);
+ led_device_unregister(&locomo_led1);
+ return 0;
+}
+
+static struct locomo_driver locomoled_driver = {
+ .drv = {
+ .name = "locomoled"
+ },
+ .devid = LOCOMO_DEVID_LED,
+ .probe = locomoled_probe,
+ .remove = locomoled_remove,
+};
+
+static int __init locomoled_init(void) {
+ return locomo_driver_register(&locomoled_driver);
+}
+module_init(locomoled_init);
+
+MODULE_AUTHOR("John Lenz <lenz@xxxxxxxxxxx>");
+MODULE_DESCRIPTION("Locomo LED driver");
+MODULE_LICENSE("GPL");
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Prev by Date: Re: Rescan SCSI Bus without /proc/scsi?
- Next by Date: Re: CD writing in future Linux (stirring up a hornets' nest)
- Previous by thread: Re: Rescan SCSI Bus without /proc/scsi?
- Next by thread: [PATCH 10/11] LED: Add IDE disk activity LED trigger
- Index(es):
Relevant Pages
- please pull from the trivial tree
... Kconfig: fix spelling error in config KALLSYMS help text ... bool "Set
version information on all module symbols" ... comment "module support disabled" ...
This option enables support for the LEDs on Sharp Zaurus ... (Linux-Kernel) - [PATCH] kconfig: Standardize "depends" -> "depends on" in Kconfig files
... config MODVERSIONS ... bool "Set version information on all module symbols"
... comment "module support disabled" ... This option enables support for the LEDs
on Sharp Zaurus ... (Linux-Kernel) - Re: [build bug] drivers/built-in.o: In function `rt2x00leds_resume: : undefined reference to `le
... earlier today (where the leds infrastructure knob is modular but the ... config
RT2400PCI_LEDS ... bool "RT2400 leds support" ... This adds support for led triggers
provided my mac80211. ... (Linux-Kernel) - [RFC PATCH 6/8] LED: Add LED device support for LOCOMO devices
... Adds an LED driver for LEDs exported by the Sharp LOCOMO chip as found
on ... +config LEDS_LOCOMO ... (Linux-Kernel) - Re: [build bug] drivers/built-in.o: In function `rt2x00leds_resume: : undefined reference to `le
... earlier today (where the leds infrastructure knob is modular but the ... config
RT2400PCI_LEDS ... bool "RT2400 leds support" ... This adds support for led triggers
provided my mac80211. ... (Linux-Kernel)