diff -ruN a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c --- a/drivers/ata/sata_mv.c 2013-11-03 16:41:51.000000000 -0700 +++ b/drivers/ata/sata_mv.c 2013-11-08 01:39:48.868014917 -0700 @@ -71,6 +71,7 @@ #include #include #include +#include #define DRV_NAME "sata_mv" #define DRV_VERSION "1.28" @@ -1161,6 +1162,8 @@ { int want_ncq = (protocol == ATA_PROT_NCQ); + ledtrig_ide_activity(); + 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) diff -ruN a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig --- a/drivers/leds/trigger/Kconfig 2013-11-03 16:41:51.000000000 -0700 +++ b/drivers/leds/trigger/Kconfig 2013-11-08 01:39:48.958018410 -0700 @@ -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/mmc/core/core.c b/drivers/mmc/core/core.c --- a/drivers/mmc/core/core.c 2013-11-03 16:41:51.000000000 -0700 +++ b/drivers/mmc/core/core.c 2013-11-08 01:39:49.008020351 -0700 @@ -805,7 +805,7 @@ */ 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 --- a/drivers/mmc/core/sd.c 2013-11-03 16:41:51.000000000 -0700 +++ b/drivers/mmc/core/sd.c 2013-11-08 01:39:49.008020351 -0700 @@ -358,6 +358,15 @@ 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 --- a/drivers/mmc/host/mvsdio.c 2013-11-03 16:41:51.000000000 -0700 +++ b/drivers/mmc/host/mvsdio.c 2013-11-08 01:39:49.028021127 -0700 @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -148,6 +149,7 @@ 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);