123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- From eb25cb9956cc9384b7fa0d75dec908c9fac8c444 Mon Sep 17 00:00:00 2001
- From: Stephan Linz <linz@li-pro.net>
- Date: Fri, 10 Jun 2016 07:59:56 +0200
- Subject: [PATCH] leds: convert IDE trigger to common disk trigger
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- 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>
- ---
- drivers/ata/libata-core.c | 4 ++++
- drivers/ide/ide-disk.c | 2 +-
- drivers/leds/trigger/Kconfig | 8 +++----
- drivers/leds/trigger/Makefile | 2 +-
- drivers/leds/trigger/ledtrig-disk.c | 41 +++++++++++++++++++++++++++++++++
- drivers/leds/trigger/ledtrig-ide-disk.c | 36 -----------------------------
- include/linux/leds.h | 6 ++---
- 8 files changed, 55 insertions(+), 46 deletions(-)
- create mode 100644 drivers/leds/trigger/ledtrig-disk.c
- delete mode 100644 drivers/leds/trigger/ledtrig-ide-disk.c
- --- a/drivers/ata/libata-core.c
- +++ b/drivers/ata/libata-core.c
- @@ -67,6 +67,7 @@
- #include <asm/byteorder.h>
- #include <linux/cdrom.h>
- #include <linux/ratelimit.h>
- +#include <linux/leds.h>
- #include <linux/pm_runtime.h>
- #include <linux/platform_device.h>
-
- @@ -4949,6 +4950,9 @@ void ata_qc_complete(struct ata_queued_c
- {
- struct ata_port *ap = qc->ap;
-
- + /* Trigger the LED (if available) */
- + ledtrig_disk_activity();
- +
- /* XXX: New EH and old EH use different mechanisms to
- * synchronize EH with regular execution path.
- *
- --- a/drivers/ide/ide-disk.c
- +++ b/drivers/ide/ide-disk.c
- @@ -186,7 +186,7 @@ static ide_startstop_t ide_do_rw_disk(id
- BUG_ON(drive->dev_flags & IDE_DFLAG_BLOCKED);
- BUG_ON(rq->cmd_type != REQ_TYPE_FS);
-
- - ledtrig_ide_activity();
- + ledtrig_disk_activity();
-
- pr_debug("%s: %sing: block=%llu, sectors=%u\n",
- drive->name, rq_data_dir(rq) == READ ? "read" : "writ",
- --- a/drivers/leds/trigger/Kconfig
- +++ b/drivers/leds/trigger/Kconfig
- @@ -33,12 +33,12 @@ config LEDS_TRIGGER_ONESHOT
-
- If unsure, say Y.
-
- -config LEDS_TRIGGER_IDE_DISK
- - bool "LED IDE Disk Trigger"
- - depends on IDE_GD_ATA
- +config LEDS_TRIGGER_DISK
- + bool "LED Disk Trigger"
- + depends on IDE_GD_ATA || ATA
- depends on LEDS_TRIGGERS
- help
- - This allows LEDs to be controlled by IDE disk activity.
- + This allows LEDs to be controlled by disk activity.
- If unsure, say Y.
-
- config LEDS_TRIGGER_HEARTBEAT
- --- a/drivers/leds/trigger/Makefile
- +++ b/drivers/leds/trigger/Makefile
- @@ -1,6 +1,6 @@
- obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.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_HEARTBEAT) += ledtrig-heartbeat.o
- obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o
- obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o
- --- /dev/null
- +++ b/drivers/leds/trigger/ledtrig-disk.c
- @@ -0,0 +1,41 @@
- +/*
- + * 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_ide);
- +
- +void ledtrig_disk_activity(void)
- +{
- + 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);
- +}
- +EXPORT_SYMBOL(ledtrig_disk_activity);
- +
- +static int __init ledtrig_disk_init(void)
- +{
- + led_trigger_register_simple("disk-activity", &ledtrig_disk);
- + led_trigger_register_simple("ide-disk", &ledtrig_ide);
- +
- + return 0;
- +}
- +device_initcall(ledtrig_disk_init);
- --- a/drivers/leds/trigger/ledtrig-ide-disk.c
- +++ /dev/null
- @@ -1,47 +0,0 @@
- -/*
- - * LED IDE-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/module.h>
- -#include <linux/kernel.h>
- -#include <linux/init.h>
- -#include <linux/leds.h>
- -
- -#define BLINK_DELAY 30
- -
- -DEFINE_LED_TRIGGER(ledtrig_ide);
- -static unsigned long ide_blink_delay = BLINK_DELAY;
- -
- -void ledtrig_ide_activity(void)
- -{
- - led_trigger_blink_oneshot(ledtrig_ide,
- - &ide_blink_delay, &ide_blink_delay, 0);
- -}
- -EXPORT_SYMBOL(ledtrig_ide_activity);
- -
- -static int __init ledtrig_ide_init(void)
- -{
- - led_trigger_register_simple("ide-disk", &ledtrig_ide);
- - return 0;
- -}
- -
- -static void __exit ledtrig_ide_exit(void)
- -{
- - led_trigger_unregister_simple(ledtrig_ide);
- -}
- -
- -module_init(ledtrig_ide_init);
- -module_exit(ledtrig_ide_exit);
- -
- -MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>");
- -MODULE_DESCRIPTION("LED IDE Disk Activity Trigger");
- -MODULE_LICENSE("GPL");
- --- a/include/linux/leds.h
- +++ b/include/linux/leds.h
- @@ -308,10 +308,10 @@ static inline void *led_get_trigger_data
- #endif /* CONFIG_LEDS_TRIGGERS */
-
- /* Trigger specific functions */
- -#ifdef CONFIG_LEDS_TRIGGER_IDE_DISK
- -extern void ledtrig_ide_activity(void);
- +#ifdef CONFIG_LEDS_TRIGGER_DISK
- +extern void ledtrig_disk_activity(void);
- #else
- -static inline void ledtrig_ide_activity(void) {}
- +static inline void ledtrig_disk_activity(void) {}
- #endif
-
- #if defined(CONFIG_LEDS_TRIGGER_CAMERA) || defined(CONFIG_LEDS_TRIGGER_CAMERA_MODULE)
|