Commit eb25cb99 authored by Stephan Linz's avatar Stephan Linz Committed by Jacek Anaszewski

leds: convert IDE trigger to common disk trigger

This patch converts the IDE specific LED trigger to a generic disk
activity LED trigger. The libata core is now a trigger source just
like before the IDE disk driver. It's merely a replacement of the
string ide by disk.

The patch is taken from http://dev.gentoo.org/~josejx/ata.patch and is
widely used by any ibook/powerbook owners with great satisfaction.
Likewise, it is very often used successfully on different ARM platforms.

Unlike the original patch, the existing 'ide-disk' trigger is still
available for backward compatibility. That reduce the amount of patches
in affected device trees out of the mainline kernel. For further
development, the new name 'disk-activity' should be used.

Cc: Joseph Jezak <josejx@gentoo.org>
Cc: Jörg Sommer <joerg@alea.gnuu.de>
Cc: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: default avatarStephan Linz <linz@li-pro.net>
Signed-off-by: default avatarJacek Anaszewski <j.anaszewski@samsung.com>
parent fa4191a6
...@@ -69,6 +69,7 @@ ...@@ -69,6 +69,7 @@
#include <asm/unaligned.h> #include <asm/unaligned.h>
#include <linux/cdrom.h> #include <linux/cdrom.h>
#include <linux/ratelimit.h> #include <linux/ratelimit.h>
#include <linux/leds.h>
#include <linux/pm_runtime.h> #include <linux/pm_runtime.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
...@@ -5072,6 +5073,9 @@ void ata_qc_complete(struct ata_queued_cmd *qc) ...@@ -5072,6 +5073,9 @@ void ata_qc_complete(struct ata_queued_cmd *qc)
{ {
struct ata_port *ap = qc->ap; struct ata_port *ap = qc->ap;
/* Trigger the LED (if available) */
ledtrig_disk_activity();
/* XXX: New EH and old EH use different mechanisms to /* XXX: New EH and old EH use different mechanisms to
* synchronize EH with regular execution path. * synchronize EH with regular execution path.
* *
......
...@@ -186,7 +186,7 @@ static ide_startstop_t ide_do_rw_disk(ide_drive_t *drive, struct request *rq, ...@@ -186,7 +186,7 @@ static ide_startstop_t ide_do_rw_disk(ide_drive_t *drive, struct request *rq,
BUG_ON(drive->dev_flags & IDE_DFLAG_BLOCKED); BUG_ON(drive->dev_flags & IDE_DFLAG_BLOCKED);
BUG_ON(rq->cmd_type != REQ_TYPE_FS); BUG_ON(rq->cmd_type != REQ_TYPE_FS);
ledtrig_ide_activity(); ledtrig_disk_activity();
pr_debug("%s: %sing: block=%llu, sectors=%u\n", pr_debug("%s: %sing: block=%llu, sectors=%u\n",
drive->name, rq_data_dir(rq) == READ ? "read" : "writ", drive->name, rq_data_dir(rq) == READ ? "read" : "writ",
......
...@@ -50,7 +50,7 @@ static struct led_classdev hp6xx_red_led = { ...@@ -50,7 +50,7 @@ static struct led_classdev hp6xx_red_led = {
static struct led_classdev hp6xx_green_led = { static struct led_classdev hp6xx_green_led = {
.name = "hp6xx:green", .name = "hp6xx:green",
.default_trigger = "ide-disk", .default_trigger = "disk-activity",
.brightness_set = hp6xxled_green_set, .brightness_set = hp6xxled_green_set,
.flags = LED_CORE_SUSPENDRESUME, .flags = LED_CORE_SUSPENDRESUME,
}; };
......
...@@ -33,12 +33,12 @@ config LEDS_TRIGGER_ONESHOT ...@@ -33,12 +33,12 @@ config LEDS_TRIGGER_ONESHOT
If unsure, say Y. If unsure, say Y.
config LEDS_TRIGGER_IDE_DISK config LEDS_TRIGGER_DISK
bool "LED IDE Disk Trigger" bool "LED Disk Trigger"
depends on IDE_GD_ATA depends on IDE_GD_ATA || ATA
depends on LEDS_TRIGGERS depends on LEDS_TRIGGERS
help help
This allows LEDs to be controlled by IDE disk activity. This allows LEDs to be controlled by disk activity.
If unsure, say Y. If unsure, say Y.
config LEDS_TRIGGER_MTD config LEDS_TRIGGER_MTD
......
obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
obj-$(CONFIG_LEDS_TRIGGER_ONESHOT) += ledtrig-oneshot.o obj-$(CONFIG_LEDS_TRIGGER_ONESHOT) += ledtrig-oneshot.o
obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o obj-$(CONFIG_LEDS_TRIGGER_DISK) += ledtrig-disk.o
obj-$(CONFIG_LEDS_TRIGGER_MTD) += ledtrig-mtd.o obj-$(CONFIG_LEDS_TRIGGER_MTD) += ledtrig-mtd.o
obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o
obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o
......
/* /*
* LED IDE-Disk Activity Trigger * LED Disk Activity Trigger
* *
* Copyright 2006 Openedhand Ltd. * Copyright 2006 Openedhand Ltd.
* *
...@@ -17,20 +17,25 @@ ...@@ -17,20 +17,25 @@
#define BLINK_DELAY 30 #define BLINK_DELAY 30
DEFINE_LED_TRIGGER(ledtrig_disk);
DEFINE_LED_TRIGGER(ledtrig_ide); DEFINE_LED_TRIGGER(ledtrig_ide);
void ledtrig_ide_activity(void) void ledtrig_disk_activity(void)
{ {
unsigned long ide_blink_delay = BLINK_DELAY; unsigned long blink_delay = BLINK_DELAY;
led_trigger_blink_oneshot(ledtrig_disk,
&blink_delay, &blink_delay, 0);
led_trigger_blink_oneshot(ledtrig_ide, led_trigger_blink_oneshot(ledtrig_ide,
&ide_blink_delay, &ide_blink_delay, 0); &blink_delay, &blink_delay, 0);
} }
EXPORT_SYMBOL(ledtrig_ide_activity); EXPORT_SYMBOL(ledtrig_disk_activity);
static int __init ledtrig_ide_init(void) static int __init ledtrig_disk_init(void)
{ {
led_trigger_register_simple("disk-activity", &ledtrig_disk);
led_trigger_register_simple("ide-disk", &ledtrig_ide); led_trigger_register_simple("ide-disk", &ledtrig_ide);
return 0; return 0;
} }
device_initcall(ledtrig_ide_init); device_initcall(ledtrig_disk_init);
...@@ -325,10 +325,10 @@ static inline void *led_get_trigger_data(struct led_classdev *led_cdev) ...@@ -325,10 +325,10 @@ static inline void *led_get_trigger_data(struct led_classdev *led_cdev)
#endif /* CONFIG_LEDS_TRIGGERS */ #endif /* CONFIG_LEDS_TRIGGERS */
/* Trigger specific functions */ /* Trigger specific functions */
#ifdef CONFIG_LEDS_TRIGGER_IDE_DISK #ifdef CONFIG_LEDS_TRIGGER_DISK
extern void ledtrig_ide_activity(void); extern void ledtrig_disk_activity(void);
#else #else
static inline void ledtrig_ide_activity(void) {} static inline void ledtrig_disk_activity(void) {}
#endif #endif
#ifdef CONFIG_LEDS_TRIGGER_MTD #ifdef CONFIG_LEDS_TRIGGER_MTD
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment