Refresh patches for all targets that support kernel 4.4. Compile-tested on brcm2708 only. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
		
			
				
	
	
		
			210 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
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>
 | 
						|
 
 | 
						|
@@ -4914,6 +4915,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
 | 
						|
@@ -302,10 +302,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)
 |