diff options
author | Rolf Leggewie <oe-devel@rolf.leggewie.biz> | 2008-03-22 00:18:00 +0000 |
---|---|---|
committer | Rolf Leggewie <oe-devel@rolf.leggewie.biz> | 2008-03-22 00:18:00 +0000 |
commit | 9dcffd01e521467ec3f2b587be0e41a5aaca49f3 (patch) | |
tree | 2b6354f93442be37f33a176d7c13bcc14794f495 /packages/linux/linux-2.6.24/ts72xx/ep93xx-leds.diff | |
parent | 98cbb1de7c19b9822b091cd6f675950bdbb0ecea (diff) |
conf and linux: update ts72xx to 2.6.24 kernel. Closes 3906.
Diffstat (limited to 'packages/linux/linux-2.6.24/ts72xx/ep93xx-leds.diff')
-rw-r--r-- | packages/linux/linux-2.6.24/ts72xx/ep93xx-leds.diff | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/packages/linux/linux-2.6.24/ts72xx/ep93xx-leds.diff b/packages/linux/linux-2.6.24/ts72xx/ep93xx-leds.diff new file mode 100644 index 0000000000..9836145c24 --- /dev/null +++ b/packages/linux/linux-2.6.24/ts72xx/ep93xx-leds.diff @@ -0,0 +1,181 @@ + +EP93xx leds driver + +Signed-off-by: Petr Stetiar <ynezz@true.cz> + +Index: linux-2.6.24/arch/arm/mach-ep93xx/core.c +=================================================================== +--- linux-2.6.24.orig/arch/arm/mach-ep93xx/core.c 2008-02-03 13:06:34.000000000 +0100 ++++ linux-2.6.24/arch/arm/mach-ep93xx/core.c 2008-02-03 13:38:46.000000000 +0100 +@@ -555,6 +555,12 @@ + } + + ++static struct platform_device ep93xx_led_device = { ++ .name = "ep93xx-led", ++ .id = -1, ++}; ++ ++ + void __init ep93xx_init_devices(void) + { + unsigned int v; +@@ -583,4 +589,5 @@ + platform_device_register(&ep93xx_rtc_device); + platform_device_register(&ep93xx_ohci_device); + platform_device_register(&ep93xx_i2c_device); ++ platform_device_register(&ep93xx_led_device); + } +Index: linux-2.6.24/drivers/leds/Kconfig +=================================================================== +--- linux-2.6.24.orig/drivers/leds/Kconfig 2008-01-24 23:58:37.000000000 +0100 ++++ linux-2.6.24/drivers/leds/Kconfig 2008-02-03 13:38:46.000000000 +0100 +@@ -114,6 +114,12 @@ + help + This option enables support for the CM-X270 LEDs. + ++config LEDS_EP93XX ++ tristate "LED Support for Cirrus Logic EP93xx" ++ depends on LEDS_CLASS && ARCH_EP93XX ++ help ++ This option enables support for the Cirrus Logic EP93xx based boards. ++ + comment "LED Triggers" + + config LEDS_TRIGGERS +Index: linux-2.6.24/drivers/leds/Makefile +=================================================================== +--- linux-2.6.24.orig/drivers/leds/Makefile 2008-01-24 23:58:37.000000000 +0100 ++++ linux-2.6.24/drivers/leds/Makefile 2008-02-03 13:40:49.000000000 +0100 +@@ -19,6 +19,7 @@ + obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o + obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o + obj-$(CONFIG_LEDS_CM_X270) += leds-cm-x270.o ++obj-$(CONFIG_LEDS_EP93XX) += leds-ep93xx.o + + # LED Triggers + obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o +Index: linux-2.6.24/drivers/leds/leds-ep93xx.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.24/drivers/leds/leds-ep93xx.c 2008-02-03 13:38:46.000000000 +0100 +@@ -0,0 +1,119 @@ ++/* ++ * LEDs driver for Cirrus Logic EP93xx ++ * ++ * Author: Petr Stetiar <ynezz@true.cz> ++ * ++ * Based on leds-corgi.c by Richard Purdie ++ * ++ * 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/kernel.h> ++#include <linux/init.h> ++#include <linux/platform_device.h> ++#include <linux/leds.h> ++#include <asm/mach-types.h> ++#include <asm/arch/hardware.h> ++#include <asm/arch/gpio.h> ++ ++static void ep93xx_green_led_set(struct led_classdev *led_cdev, enum led_brightness value) ++{ ++ if (value) ++ gpio_line_set(EP93XX_GPIO_LINE_GRLED, EP93XX_GPIO_HIGH); ++ else ++ gpio_line_set(EP93XX_GPIO_LINE_GRLED, EP93XX_GPIO_LOW); ++} ++ ++static void ep93xx_red_led_set(struct led_classdev *led_cdev, enum led_brightness value) ++{ ++ if (value) ++ gpio_line_set(EP93XX_GPIO_LINE_RDLED, EP93XX_GPIO_HIGH); ++ else ++ gpio_line_set(EP93XX_GPIO_LINE_RDLED, EP93XX_GPIO_LOW); ++} ++ ++ ++static struct led_classdev ep93xx_green_led = { ++ .name = "ep93xx:green", ++ .default_trigger = "none", ++ .brightness_set = ep93xx_green_led_set, ++}; ++ ++static struct led_classdev ep93xx_red_led = { ++ .name = "ep93xx:red", ++ .default_trigger = "heartbeat", ++ .brightness_set = ep93xx_red_led_set, ++}; ++ ++#ifdef CONFIG_PM ++static int ep93xx_led_suspend(struct platform_device *dev, pm_message_t state) ++{ ++ led_classdev_suspend(&ep93xx_green_led); ++ led_classdev_suspend(&ep93xx_red_led); ++ return 0; ++} ++ ++static int ep93xx_led_resume(struct platform_device *dev) ++{ ++ led_classdev_resume(&ep93xx_red_led); ++ led_classdev_resume(&ep93xx_green_led); ++ return 0; ++} ++#endif ++ ++static int ep93xx_led_probe(struct platform_device *pdev) ++{ ++ int ret; ++ ++ gpio_line_config(EP93XX_GPIO_LINE_GRLED, GPIO_OUT); ++ gpio_line_config(EP93XX_GPIO_LINE_RDLED, GPIO_OUT); ++ ++ ret = led_classdev_register(&pdev->dev, &ep93xx_green_led); ++ if (ret < 0) ++ return ret; ++ ++ ret = led_classdev_register(&pdev->dev, &ep93xx_red_led); ++ if (ret < 0) ++ led_classdev_unregister(&ep93xx_green_led); ++ ++ return ret; ++} ++ ++static int ep93xx_led_remove(struct platform_device *pdev) ++{ ++ led_classdev_unregister(&ep93xx_green_led); ++ led_classdev_unregister(&ep93xx_red_led); ++ return 0; ++} ++ ++static struct platform_driver ep93xx_led_driver = { ++ .probe = ep93xx_led_probe, ++ .remove = ep93xx_led_remove, ++#ifdef CONFIG_PM ++ .suspend = ep93xx_led_suspend, ++ .resume = ep93xx_led_resume, ++#endif ++ .driver = { ++ .name = "ep93xx-led", ++ }, ++}; ++ ++static int __init ep93xx_led_init(void) ++{ ++ return platform_driver_register(&ep93xx_led_driver); ++} ++ ++static void __exit ep93xx_led_exit(void) ++{ ++ platform_driver_unregister(&ep93xx_led_driver); ++} ++ ++module_init(ep93xx_led_init); ++module_exit(ep93xx_led_exit); ++ ++MODULE_AUTHOR("Petr Stetiar <ynezz@true.cz>"); ++MODULE_DESCRIPTION("Cirrus Logic EP93xx LED driver"); ++MODULE_LICENSE("GPL"); |