1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 2eb25cb99SStephan Linz /* 3eb25cb99SStephan Linz * LED Disk Activity Trigger 4eb25cb99SStephan Linz * 5eb25cb99SStephan Linz * Copyright 2006 Openedhand Ltd. 6eb25cb99SStephan Linz * 7eb25cb99SStephan Linz * Author: Richard Purdie <rpurdie@openedhand.com> 8eb25cb99SStephan Linz */ 9eb25cb99SStephan Linz 10eb25cb99SStephan Linz #include <linux/kernel.h> 11eb25cb99SStephan Linz #include <linux/init.h> 12eb25cb99SStephan Linz #include <linux/leds.h> 13eb25cb99SStephan Linz 14eb25cb99SStephan Linz #define BLINK_DELAY 30 15eb25cb99SStephan Linz 16eb25cb99SStephan Linz DEFINE_LED_TRIGGER(ledtrig_disk); 17d1ed7c55SLinus Walleij DEFINE_LED_TRIGGER(ledtrig_disk_read); 18d1ed7c55SLinus Walleij DEFINE_LED_TRIGGER(ledtrig_disk_write); 19eb25cb99SStephan Linz DEFINE_LED_TRIGGER(ledtrig_ide); 20eb25cb99SStephan Linz 21d1ed7c55SLinus Walleij void ledtrig_disk_activity(bool write) 22eb25cb99SStephan Linz { 23eb25cb99SStephan Linz unsigned long blink_delay = BLINK_DELAY; 24eb25cb99SStephan Linz 25eb25cb99SStephan Linz led_trigger_blink_oneshot(ledtrig_disk, 26eb25cb99SStephan Linz &blink_delay, &blink_delay, 0); 27eb25cb99SStephan Linz led_trigger_blink_oneshot(ledtrig_ide, 28eb25cb99SStephan Linz &blink_delay, &blink_delay, 0); 29d1ed7c55SLinus Walleij if (write) 30d1ed7c55SLinus Walleij led_trigger_blink_oneshot(ledtrig_disk_write, 31d1ed7c55SLinus Walleij &blink_delay, &blink_delay, 0); 32d1ed7c55SLinus Walleij else 33d1ed7c55SLinus Walleij led_trigger_blink_oneshot(ledtrig_disk_read, 34d1ed7c55SLinus Walleij &blink_delay, &blink_delay, 0); 35eb25cb99SStephan Linz } 36eb25cb99SStephan Linz EXPORT_SYMBOL(ledtrig_disk_activity); 37eb25cb99SStephan Linz 38eb25cb99SStephan Linz static int __init ledtrig_disk_init(void) 39eb25cb99SStephan Linz { 40eb25cb99SStephan Linz led_trigger_register_simple("disk-activity", &ledtrig_disk); 41d1ed7c55SLinus Walleij led_trigger_register_simple("disk-read", &ledtrig_disk_read); 42d1ed7c55SLinus Walleij led_trigger_register_simple("disk-write", &ledtrig_disk_write); 43eb25cb99SStephan Linz led_trigger_register_simple("ide-disk", &ledtrig_ide); 44eb25cb99SStephan Linz 45eb25cb99SStephan Linz return 0; 46eb25cb99SStephan Linz } 47eb25cb99SStephan Linz device_initcall(ledtrig_disk_init); 48