forked from Minki/linux
d1ed7c5586
This adds two new disk triggers for triggering on reads and writes respectively, named "disk-read" and "disk-write". The use case comes from working on the D-Link DNS-313 NAS box. This features an RGB LED for disk activity. with these two triggers I can couple the green LED to read activity and the red LED to write activity, which gives the appropriate user feedback about what is happening on the disk. When tested it gave exactly the feedback desired. The in-kernel interface is simply changed to pass a bool indicating if the activity is write activity and update each trigger (and the composite "disk-activity" trigger) depending on what is passed in. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Acked-by: Pavel Machek <pavel@ucw.cz> Acked-by: Tejun Heo <tj@kernel.org> Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
52 lines
1.3 KiB
C
52 lines
1.3 KiB
C
/*
|
|
* LED Disk Activity Trigger
|
|
*
|
|
* Copyright 2006 Openedhand Ltd.
|
|
*
|
|
* Author: Richard Purdie <rpurdie@openedhand.com>
|
|
*
|
|
* 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/leds.h>
|
|
|
|
#define BLINK_DELAY 30
|
|
|
|
DEFINE_LED_TRIGGER(ledtrig_disk);
|
|
DEFINE_LED_TRIGGER(ledtrig_disk_read);
|
|
DEFINE_LED_TRIGGER(ledtrig_disk_write);
|
|
DEFINE_LED_TRIGGER(ledtrig_ide);
|
|
|
|
void ledtrig_disk_activity(bool write)
|
|
{
|
|
unsigned long blink_delay = BLINK_DELAY;
|
|
|
|
led_trigger_blink_oneshot(ledtrig_disk,
|
|
&blink_delay, &blink_delay, 0);
|
|
led_trigger_blink_oneshot(ledtrig_ide,
|
|
&blink_delay, &blink_delay, 0);
|
|
if (write)
|
|
led_trigger_blink_oneshot(ledtrig_disk_write,
|
|
&blink_delay, &blink_delay, 0);
|
|
else
|
|
led_trigger_blink_oneshot(ledtrig_disk_read,
|
|
&blink_delay, &blink_delay, 0);
|
|
}
|
|
EXPORT_SYMBOL(ledtrig_disk_activity);
|
|
|
|
static int __init ledtrig_disk_init(void)
|
|
{
|
|
led_trigger_register_simple("disk-activity", &ledtrig_disk);
|
|
led_trigger_register_simple("disk-read", &ledtrig_disk_read);
|
|
led_trigger_register_simple("disk-write", &ledtrig_disk_write);
|
|
led_trigger_register_simple("ide-disk", &ledtrig_ide);
|
|
|
|
return 0;
|
|
}
|
|
device_initcall(ledtrig_disk_init);
|