mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-04-20 13:24:00 +00:00
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: Stephan Linz <linz@li-pro.net> Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
This commit is contained in:
parent
fa4191a609
commit
eb25cb9956
7 changed files with 26 additions and 17 deletions
|
@ -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)
|
||||||
{
|
{
|
||||||
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,
|
||||||
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 = {
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
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
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* LED IDE-Disk Activity Trigger
|
* LED Disk Activity Trigger
|
||||||
*
|
*
|
||||||
* Copyright 2006 Openedhand Ltd.
|
* Copyright 2006 Openedhand Ltd.
|
||||||
*
|
*
|
||||||
|
@ -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)
|
||||||
#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
|
||||||
|
|
Loading…
Add table
Reference in a new issue