On Wed, May 7, 2014 at 1:35 AM, Ulf Hansson <[email protected]> wrote:
> On 7 May 2014 03:52, Nick Sanders <[email protected]> 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 <[email protected]>
>> Reviewed-by: Grant Grundler <[email protected]>
>> Reviewed-by: Doug Anderson <[email protected]>
>
> Acked-by: Ulf Hansson <[email protected]>
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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html