mmc: Fix HS200/HS400 capability check

HS200 and HS400 speeds can be enabled either with 1.2, or 1.8V signaling voltage.
Because of that we have four cabability flags: MMC_CAP_MMC_HS200_120,
MMC_CAP_MMC_HS200_180, MMC_CAP_MMC_HS400_120, MMC_CAP_MMC_HS400_180.

MMC logic only enables HS200/HS400 mode if both flags are set for the corresponding speed.
Fix that by being more permissive in host timing cap check.

Reviewed by: manu, mw
MFC after: 2 weeks
Obtained from: Semihalf
Sponsored by: Alstom Group
Differential revision: https://reviews.freebsd.org/D33130

(cherry picked from commit 8661e085fb)
This commit is contained in:
Kornel Duleba 2021-11-28 12:24:07 +01:00 committed by Marcin Wojtas
parent 120ba9ec7f
commit 7aa6014fb1

View file

@ -1549,9 +1549,11 @@ mmc_host_timing(device_t dev, enum mmc_bus_timing timing)
case bus_timing_mmc_ddr52:
return (HOST_TIMING_CAP(host_caps, MMC_CAP_MMC_DDR52));
case bus_timing_mmc_hs200:
return (HOST_TIMING_CAP(host_caps, MMC_CAP_MMC_HS200));
return (HOST_TIMING_CAP(host_caps, MMC_CAP_MMC_HS200_120) ||
HOST_TIMING_CAP(host_caps, MMC_CAP_MMC_HS200_180));
case bus_timing_mmc_hs400:
return (HOST_TIMING_CAP(host_caps, MMC_CAP_MMC_HS400));
return (HOST_TIMING_CAP(host_caps, MMC_CAP_MMC_HS400_120) ||
HOST_TIMING_CAP(host_caps, MMC_CAP_MMC_HS400_180));
case bus_timing_mmc_hs400es:
return (HOST_TIMING_CAP(host_caps, MMC_CAP_MMC_HS400 |
MMC_CAP_MMC_ENH_STROBE));