18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * LED Disk Activity Trigger 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright 2006 Openedhand Ltd. 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Author: Richard Purdie <rpurdie@openedhand.com> 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/kernel.h> 118c2ecf20Sopenharmony_ci#include <linux/init.h> 128c2ecf20Sopenharmony_ci#include <linux/leds.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#define BLINK_DELAY 30 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ciDEFINE_LED_TRIGGER(ledtrig_disk); 178c2ecf20Sopenharmony_ciDEFINE_LED_TRIGGER(ledtrig_disk_read); 188c2ecf20Sopenharmony_ciDEFINE_LED_TRIGGER(ledtrig_disk_write); 198c2ecf20Sopenharmony_ciDEFINE_LED_TRIGGER(ledtrig_ide); 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_civoid ledtrig_disk_activity(bool write) 228c2ecf20Sopenharmony_ci{ 238c2ecf20Sopenharmony_ci unsigned long blink_delay = BLINK_DELAY; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci led_trigger_blink_oneshot(ledtrig_disk, 268c2ecf20Sopenharmony_ci &blink_delay, &blink_delay, 0); 278c2ecf20Sopenharmony_ci led_trigger_blink_oneshot(ledtrig_ide, 288c2ecf20Sopenharmony_ci &blink_delay, &blink_delay, 0); 298c2ecf20Sopenharmony_ci if (write) 308c2ecf20Sopenharmony_ci led_trigger_blink_oneshot(ledtrig_disk_write, 318c2ecf20Sopenharmony_ci &blink_delay, &blink_delay, 0); 328c2ecf20Sopenharmony_ci else 338c2ecf20Sopenharmony_ci led_trigger_blink_oneshot(ledtrig_disk_read, 348c2ecf20Sopenharmony_ci &blink_delay, &blink_delay, 0); 358c2ecf20Sopenharmony_ci} 368c2ecf20Sopenharmony_ciEXPORT_SYMBOL(ledtrig_disk_activity); 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_cistatic int __init ledtrig_disk_init(void) 398c2ecf20Sopenharmony_ci{ 408c2ecf20Sopenharmony_ci led_trigger_register_simple("disk-activity", &ledtrig_disk); 418c2ecf20Sopenharmony_ci led_trigger_register_simple("disk-read", &ledtrig_disk_read); 428c2ecf20Sopenharmony_ci led_trigger_register_simple("disk-write", &ledtrig_disk_write); 438c2ecf20Sopenharmony_ci led_trigger_register_simple("ide-disk", &ledtrig_ide); 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci return 0; 468c2ecf20Sopenharmony_ci} 478c2ecf20Sopenharmony_cidevice_initcall(ledtrig_disk_init); 48