On Wed, May 7, 2014 at 1:35 AM, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote: > On 7 May 2014 03:52, Nick Sanders <nsanders@xxxxxxxxxxxx> wrote: >> This patch removes an unneccesary 1ms mdelay in the HS200 tuning >> loop, called 40 times per retuning. Currently this causes a latency >> of >40ms on any emmc accesses triggering wake from runtime PM, >> which can occur for a significant portion of reads on a mostly idle system. > > Aha, so you are actually using "MMC_CAP_RUNTIME_RESUME" here - cool :-). > > I suppose those patches that enables the "cap" has not reached > mainline yet. Any plans on sending them? > >> >> The delay is left in place for SD Cards, which use >> MMC_SEND_TUNING_BLOCK rather than MMC_SEND_TUNING_BLOCK_HS200. >> I'm not able to find evidence that this is required for SD in the >> specs I have access to, however this delay has been present from >> initial checkin for SD so I have preserved the original behavior for >> compatibility. >> >> This has been verified to fix observed glitching on local audio >> playback and recording on apps with inbuilt assumptions on storage >> latency. >> >> Signed-off-by: Nick Sanders <nsanders@xxxxxxxxxxxx> >> Reviewed-by: Grant Grundler <grundler@xxxxxxxxxxxx> >> Reviewed-by: Doug Anderson <dianders@xxxxxxxxxxxx> > > Acked-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> Ulf, Is your ACK enough to get this to land upstream or does cjb need to respond it's been accepted? It doesn't appear to have landed in mmc-next branch yet: http://git.kernel.org/cgit/linux/kernel/git/cjb/mmc.git/log/?h=mmc-next apologies if it appears I am being impatient...but it's been almost a week now. thanks, grant > >> --- >> drivers/mmc/host/sdhci.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c >> index df6d85a..05ffac2 100644 >> --- a/drivers/mmc/host/sdhci.c >> +++ b/drivers/mmc/host/sdhci.c >> @@ -1987,7 +1987,10 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) >> ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); >> tuning_loop_counter--; >> timeout--; >> - mdelay(1); >> + >> + /* eMMC spec does not require a delay between tuning cycles */ >> + if (opcode == MMC_SEND_TUNING_BLOCK) >> + mdelay(1); >> } while (ctrl & SDHCI_CTRL_EXEC_TUNING); >> >> /* >> -- >> 1.9.1.423.g4596e3a >> -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html