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