apm821xx: backport generic HDD led-triggers for WNDR4700 and MBL
This patch backports the new generic HDD/SDD led-trigger from 4.8-rc1. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This commit is contained in:
parent
f7c1d9c8a5
commit
e9f86c6cac
4 changed files with 232 additions and 0 deletions
|
@ -17,9 +17,11 @@ mr24)
|
|||
;;
|
||||
|
||||
mbl)
|
||||
ucidef_set_led_ide "sata" "SATA" "mbl:blue:power"
|
||||
;;
|
||||
|
||||
wndr4700)
|
||||
ucidef_set_led_ide "sata" "SATA" "wndr4700:green:hd"
|
||||
ucidef_set_led_netdev "wan" "WAN (green)" "wndr4700:green:wan" "eth0.2"
|
||||
ucidef_set_led_usbdev "usb3-1" "USB3-1" "wndr4700:blue:usb" "2-1"
|
||||
ucidef_set_led_usbdev "usb3-2" "USB3-2" "wndr4700:blue:usb" "3-1"
|
||||
|
|
|
@ -18,6 +18,7 @@ CONFIG_BLK_DEV_SD=y
|
|||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_LEDS_TRIGGER_DISK=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_M48T86=y
|
||||
CONFIG_THERMAL=y
|
||||
|
|
|
@ -0,0 +1,228 @@
|
|||
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
|
||||
|
||||
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
|
||||
index 6be7770..2eca572 100644
|
||||
--- a/drivers/ata/libata-core.c
|
||||
+++ b/drivers/ata/libata-core.c
|
||||
@@ -69,6 +69,7 @@
|
||||
#include <asm/unaligned.h>
|
||||
#include <linux/cdrom.h>
|
||||
#include <linux/ratelimit.h>
|
||||
+#include <linux/leds.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
@@ -5072,6 +5073,9 @@ void ata_qc_complete(struct ata_queued_cmd *qc)
|
||||
{
|
||||
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.
|
||||
*
|
||||
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
|
||||
index 05dbcce..5ceb176 100644
|
||||
--- a/drivers/ide/ide-disk.c
|
||||
+++ b/drivers/ide/ide-disk.c
|
||||
@@ -186,7 +186,7 @@ static ide_startstop_t ide_do_rw_disk(ide_drive_t *drive, struct request *rq,
|
||||
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",
|
||||
diff --git a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig
|
||||
index 9893d91..3f9ddb9 100644
|
||||
--- 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_MTD
|
||||
diff --git a/drivers/leds/trigger/Makefile b/drivers/leds/trigger/Makefile
|
||||
index 8cc64a4..a72c43c 100644
|
||||
--- 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
|
||||
diff --git a/drivers/leds/trigger/ledtrig-disk.c b/drivers/leds/trigger/ledtrig-disk.c
|
||||
new file mode 100644
|
||||
index 0000000..cd525b4
|
||||
--- /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);
|
||||
diff --git a/drivers/leds/trigger/ledtrig-ide-disk.c b/drivers/leds/trigger/ledtrig-ide-disk.c
|
||||
deleted file mode 100644
|
||||
index 15123d3..0000000
|
||||
--- a/drivers/leds/trigger/ledtrig-ide-disk.c 2016-07-11 18:31:24.000000000 +0200
|
||||
+++ /dev/null 2016-08-08 12:56:55.887448160 +0200
|
||||
@@ -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");
|
||||
diff --git a/include/linux/leds.h b/include/linux/leds.h
|
||||
index e5e7f2e..0aa3701 100644
|
||||
--- a/include/linux/leds.h
|
||||
+++ b/include/linux/leds.h
|
||||
@@ -325,10 +325,10 @@ static inline void *led_get_trigger_data(struct led_classdev *led_cdev)
|
||||
#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
|
||||
|
||||
#ifdef CONFIG_LEDS_TRIGGER_MTD
|
||||
--
|
||||
2.8.1
|
||||
|
|
@ -22,6 +22,7 @@ CONFIG_GPIOLIB=y
|
|||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_GPIO_74XX_MMIO=y
|
||||
CONFIG_LEDS_TRIGGER_DISK=y
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_BLK_DEV_DM_BUILTIN=y
|
||||
CONFIG_BLK_DEV_MD=y
|
||||
|
|
Loading…
Reference in a new issue