Re: [PATCH] mmc: sdhci-pci: Fix eMMC driver strength for BYT-based controllers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 22 Apr 2020 at 13:17, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:
>
> BIOS writers have begun the practice of setting 40 ohm eMMC driver strength
> even though the eMMC may not support it, on the assumption that the kernel
> will validate the value against the eMMC (Extended CSD DRIVER_STRENGTH
> [offset 197]) and revert to the default 50 ohm value if 40 ohm is invalid.
>
> This is done to avoid changing the value for different boards.
>
> Putting aside the merits of this approach, it is clear the eMMC's mask
> of supported driver strengths is more reliable than the value provided
> by BIOS. Add validation accordingly.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> Fixes: 51ced59cc02e ("mmc: sdhci-pci: Use ACPI DSM to get driver strength for some Intel devices")
> Cc: stable@xxxxxxxxxxxxxxx

Applied for fixes, thanks!

Kind regards
Uffe


> ---
>  drivers/mmc/host/sdhci-pci-core.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
> index a98c9476bfc8..af736afb4b91 100644
> --- a/drivers/mmc/host/sdhci-pci-core.c
> +++ b/drivers/mmc/host/sdhci-pci-core.c
> @@ -597,6 +597,9 @@ static int intel_select_drive_strength(struct mmc_card *card,
>         struct sdhci_pci_slot *slot = sdhci_priv(host);
>         struct intel_host *intel_host = sdhci_pci_priv(slot);
>
> +       if (!(mmc_driver_type_mask(intel_host->drv_strength) & card_drv))
> +               return 0;
> +
>         return intel_host->drv_strength;
>  }
>
> --
> 2.17.1
>



[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux