On 06/10/17 19:20, Bjorn Helgaas wrote: > On Fri, Oct 06, 2017 at 03:50:59PM +0300, Adrian Hunter wrote: >> The default D3 cold delay of 100 ms can cause pauses when streaming audio >> from eMMC. >> >> Intel BYT-related host controllers do not need PCI D3 delays. Although the >> delays can be set to zero via an ACPI _DSM, unfortunately that is not being >> used in all cases. So just set the delays to zero in the driver. >> >> Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> >> --- >> drivers/mmc/host/sdhci-pci-core.c | 17 +++++++++++++---- >> 1 file changed, 13 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c >> index 5f3f7b51299f..14ef99b6e5b7 100644 >> --- a/drivers/mmc/host/sdhci-pci-core.c >> +++ b/drivers/mmc/host/sdhci-pci-core.c >> @@ -592,9 +592,18 @@ static void byt_read_dsm(struct sdhci_pci_slot *slot) >> slot->chip->rpm_retune = intel_host->d3_retune; >> } >> >> -static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot) >> +static void byt_common_setup(struct sdhci_pci_slot *slot) >> { >> byt_read_dsm(slot); >> + >> + /* PCI D3 delays are not needed */ >> + slot->chip->pdev->d3_delay = 0; >> + slot->chip->pdev->d3cold_delay = 0; > > The fact that it doesn't need D3 delays sounds like a property of the > device itself, regardless of which (if any) driver claims it. > > Can this be done as a quirk instead, maybe something in > arch/x86/pci/fixup.c? Maybe quirk_remove_d3_delay() could be used > directly, or something like pci_d3_delay_fixup()? A quirk would work, but that would mean setting the quirk for each device (28 so far) and then, when we have new ids, adding them there and to the driver, so it is more convenient just to do it in the driver. Certainly, this is the only driver we have for these Intel SDHCI PCI host controllers.