2016-03-16 04:29:54 +00:00
|
|
|
diff -ruN a/arch/arm/boot/dts/kirkwood-nsa320.dts b/arch/arm/boot/dts/kirkwood-nsa320.dts
|
|
|
|
--- a/arch/arm/boot/dts/kirkwood-nsa320.dts 2016-03-13 22:28:54.000000000 -0600
|
|
|
|
+++ b/arch/arm/boot/dts/kirkwood-nsa320.dts 2016-03-15 20:36:16.470111122 -0600
|
|
|
|
@@ -193,10 +193,19 @@
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2016-05-30 19:07:42 +00:00
|
|
|
+ hwmon {
|
2016-03-16 04:29:54 +00:00
|
|
|
+ compatible = "zyxel,nsa320-mcu";
|
|
|
|
+ pinctrl-0 = <&pmx_mcu_data &pmx_mcu_clk &pmx_mcu_act>;
|
|
|
|
+ pinctrl-names = "default";
|
|
|
|
+
|
|
|
|
+ data-gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
|
|
|
|
+ clk-gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
|
2016-05-30 19:07:42 +00:00
|
|
|
+ act-gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
|
2016-03-16 04:29:54 +00:00
|
|
|
+ };
|
|
|
|
+
|
|
|
|
/* The following pins are currently not assigned to a driver,
|
|
|
|
some of them should be configured as inputs.
|
|
|
|
- pinctrl-0 = <&pmx_mcu_data &pmx_mcu_clk &pmx_mcu_act
|
|
|
|
- &pmx_htp &pmx_vid_b1
|
|
|
|
+ pinctrl-0 = <&pmx_htp &pmx_vid_b1
|
|
|
|
&pmx_power_resume_data &pmx_power_resume_clk>; */
|
|
|
|
};
|
|
|
|
|
|
|
|
diff -ruN a/arch/arm/boot/dts/kirkwood-pogo_e02.dts b/arch/arm/boot/dts/kirkwood-pogo_e02.dts
|
|
|
|
--- a/arch/arm/boot/dts/kirkwood-pogo_e02.dts 2016-03-13 22:28:54.000000000 -0600
|
|
|
|
+++ b/arch/arm/boot/dts/kirkwood-pogo_e02.dts 2016-03-15 20:36:16.475111102 -0600
|
|
|
|
@@ -38,7 +38,7 @@
|
|
|
|
health {
|
|
|
|
label = "pogo_e02:green:health";
|
|
|
|
gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
|
|
|
|
- default-state = "keep";
|
|
|
|
+ default-state = "default-on";
|
|
|
|
};
|
|
|
|
fault {
|
|
|
|
label = "pogo_e02:orange:fault";
|
2014-01-21 18:51:50 +00:00
|
|
|
diff -ruN a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
|
2016-03-16 04:29:54 +00:00
|
|
|
--- a/drivers/ata/sata_mv.c 2016-03-13 22:28:54.000000000 -0600
|
|
|
|
+++ b/drivers/ata/sata_mv.c 2016-03-15 20:36:16.415111342 -0600
|
2015-04-15 10:28:36 +00:00
|
|
|
@@ -72,6 +72,7 @@
|
2014-01-21 18:51:50 +00:00
|
|
|
#include <scsi/scsi_cmnd.h>
|
|
|
|
#include <scsi/scsi_device.h>
|
|
|
|
#include <linux/libata.h>
|
|
|
|
+#include <linux/leds.h>
|
|
|
|
|
|
|
|
#define DRV_NAME "sata_mv"
|
|
|
|
#define DRV_VERSION "1.28"
|
2016-03-16 04:29:54 +00:00
|
|
|
@@ -1175,6 +1176,8 @@
|
2014-01-21 18:51:50 +00:00
|
|
|
{
|
|
|
|
int want_ncq = (protocol == ATA_PROT_NCQ);
|
|
|
|
|
2015-02-09 12:51:50 +00:00
|
|
|
+ ledtrig_ide_activity(ap->port_no);
|
2014-01-21 18:51:50 +00:00
|
|
|
+
|
|
|
|
if (pp->pp_flags & MV_PP_FLAG_EDMA_EN) {
|
|
|
|
int using_ncq = ((pp->pp_flags & MV_PP_FLAG_NCQ_EN) != 0);
|
|
|
|
if (want_ncq != using_ncq)
|
2015-04-15 10:28:36 +00:00
|
|
|
diff -ruN a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig
|
2016-03-16 04:29:54 +00:00
|
|
|
--- a/drivers/leds/trigger/Kconfig 2016-03-13 22:28:54.000000000 -0600
|
|
|
|
+++ b/drivers/leds/trigger/Kconfig 2016-03-15 20:36:16.445111222 -0600
|
2015-04-15 10:28:36 +00:00
|
|
|
@@ -35,7 +35,6 @@
|
|
|
|
|
|
|
|
config LEDS_TRIGGER_IDE_DISK
|
|
|
|
bool "LED IDE Disk Trigger"
|
|
|
|
- depends on IDE_GD_ATA
|
|
|
|
depends on LEDS_TRIGGERS
|
|
|
|
help
|
|
|
|
This allows LEDs to be controlled by IDE disk activity.
|
|
|
|
diff -ruN a/drivers/leds/trigger/ledtrig-ide-disk.c b/drivers/leds/trigger/ledtrig-ide-disk.c
|
2016-03-16 04:29:54 +00:00
|
|
|
--- a/drivers/leds/trigger/ledtrig-ide-disk.c 2016-03-13 22:28:54.000000000 -0600
|
|
|
|
+++ b/drivers/leds/trigger/ledtrig-ide-disk.c 2016-03-15 20:45:22.852900230 -0600
|
|
|
|
@@ -17,19 +17,29 @@
|
2015-04-15 10:28:36 +00:00
|
|
|
|
|
|
|
#define BLINK_DELAY 30
|
|
|
|
|
|
|
|
-DEFINE_LED_TRIGGER(ledtrig_ide);
|
|
|
|
+DEFINE_LED_TRIGGER(ledtrig_ide1);
|
|
|
|
+DEFINE_LED_TRIGGER(ledtrig_ide2);
|
|
|
|
static unsigned long ide_blink_delay = BLINK_DELAY;
|
|
|
|
|
|
|
|
-void ledtrig_ide_activity(void)
|
|
|
|
+void ledtrig_ide_activity(int port_number)
|
|
|
|
{
|
|
|
|
- led_trigger_blink_oneshot(ledtrig_ide,
|
|
|
|
- &ide_blink_delay, &ide_blink_delay, 0);
|
|
|
|
+ switch (port_number) {
|
|
|
|
+ case 0:
|
2016-03-16 04:29:54 +00:00
|
|
|
+ led_trigger_blink_oneshot(ledtrig_ide1, &ide_blink_delay, &ide_blink_delay, 0);
|
2015-04-15 10:28:36 +00:00
|
|
|
+ break;
|
2016-03-16 04:29:54 +00:00
|
|
|
+ case 1:
|
2015-04-15 10:28:36 +00:00
|
|
|
+ led_trigger_blink_oneshot(ledtrig_ide2, &ide_blink_delay, &ide_blink_delay, 0);
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
EXPORT_SYMBOL(ledtrig_ide_activity);
|
|
|
|
|
|
|
|
static int __init ledtrig_ide_init(void)
|
|
|
|
{
|
|
|
|
- led_trigger_register_simple("ide-disk", &ledtrig_ide);
|
2016-03-16 04:29:54 +00:00
|
|
|
+ led_trigger_register_simple("ide-disk1", &ledtrig_ide1);
|
2015-04-15 10:28:36 +00:00
|
|
|
+ led_trigger_register_simple("ide-disk2", &ledtrig_ide2);
|
|
|
|
return 0;
|
|
|
|
}
|
2016-03-16 04:29:54 +00:00
|
|
|
device_initcall(ledtrig_ide_init);
|
2015-04-15 10:28:36 +00:00
|
|
|
diff -ruN a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
|
2016-03-16 04:29:54 +00:00
|
|
|
--- a/drivers/mmc/core/core.c 2016-03-13 22:28:54.000000000 -0600
|
|
|
|
+++ b/drivers/mmc/core/core.c 2016-03-15 20:36:16.450111202 -0600
|
|
|
|
@@ -850,7 +850,7 @@
|
2015-04-15 10:28:36 +00:00
|
|
|
*/
|
|
|
|
limit_us = 3000000;
|
|
|
|
else
|
|
|
|
- limit_us = 100000;
|
|
|
|
+ limit_us = 200000;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* SDHC cards always use these fixed values.
|
|
|
|
diff -ruN a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
|
2016-03-16 04:29:54 +00:00
|
|
|
--- a/drivers/mmc/core/sd.c 2016-03-13 22:28:54.000000000 -0600
|
|
|
|
+++ b/drivers/mmc/core/sd.c 2016-03-15 20:36:16.450111202 -0600
|
|
|
|
@@ -365,6 +365,15 @@
|
2015-04-15 10:28:36 +00:00
|
|
|
return -ENOMEM;
|
|
|
|
}
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Some SDHC cards, notably those with a Sandisk SD controller
|
|
|
|
+ * (also found in Kingston products) need a bit of slack
|
|
|
|
+ * before successfully handling the SWITCH command. So far,
|
|
|
|
+ * cards identifying themselves as "SD04G" and "SD08G" are
|
|
|
|
+ * affected
|
|
|
|
+ */
|
|
|
|
+ udelay(100);
|
|
|
|
+
|
|
|
|
err = mmc_sd_switch(card, 1, 0, 1, status);
|
|
|
|
if (err)
|
|
|
|
goto out;
|
|
|
|
diff -ruN a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
|
2016-03-16 04:29:54 +00:00
|
|
|
--- a/drivers/mmc/host/mvsdio.c 2016-03-13 22:28:54.000000000 -0600
|
|
|
|
+++ b/drivers/mmc/host/mvsdio.c 2016-03-15 20:36:16.455111182 -0600
|
|
|
|
@@ -23,6 +23,7 @@
|
2015-04-15 10:28:36 +00:00
|
|
|
#include <linux/of_irq.h>
|
|
|
|
#include <linux/mmc/host.h>
|
|
|
|
#include <linux/mmc/slot-gpio.h>
|
|
|
|
+#include <linux/mmc/sd.h>
|
|
|
|
|
|
|
|
#include <asm/sizes.h>
|
|
|
|
#include <asm/unaligned.h>
|
2016-03-16 04:29:54 +00:00
|
|
|
@@ -149,6 +150,7 @@
|
2015-04-15 10:28:36 +00:00
|
|
|
|
|
|
|
dev_dbg(host->dev, "cmd %d (hw state 0x%04x)\n",
|
|
|
|
cmd->opcode, mvsd_read(MVSD_HW_STATE));
|
|
|
|
+ if (cmd->opcode == SD_SWITCH) mdelay(1); /* Voodoo */
|
|
|
|
|
|
|
|
cmdreg = MVSD_CMD_INDEX(cmd->opcode);
|
|
|
|
|
|
|
|
diff -ruN a/include/linux/leds.h b/include/linux/leds.h
|
2016-03-16 04:29:54 +00:00
|
|
|
--- a/include/linux/leds.h 2016-03-13 22:28:54.000000000 -0600
|
|
|
|
+++ b/include/linux/leds.h 2016-03-15 20:36:16.455111182 -0600
|
|
|
|
@@ -320,9 +320,9 @@
|
2015-04-15 10:28:36 +00:00
|
|
|
|
|
|
|
/* Trigger specific functions */
|
|
|
|
#ifdef CONFIG_LEDS_TRIGGER_IDE_DISK
|
|
|
|
-extern void ledtrig_ide_activity(void);
|
|
|
|
+extern void ledtrig_ide_activity(int port_number);
|
|
|
|
#else
|
|
|
|
-static inline void ledtrig_ide_activity(void) {}
|
|
|
|
+static inline void ledtrig_ide_activity(int port_number) {}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(CONFIG_LEDS_TRIGGER_CAMERA) || defined(CONFIG_LEDS_TRIGGER_CAMERA_MODULE)
|