A step to correctly handling command timeouts in the MMC layer.
- Now that properly issuing CMD6 is crucial (so data isn't written to
the wrong partition for example), make a step into the direction of
correctly handling the timeout for these commands in the MMC layer.
Also, do a SEND_STATUS when CMD6 is invoked with an R1B response as
recommended by relevant specifications. However, quite some work is
left to be done in this regard; all other R1B-type commands done by
the MMC layer also should be followed by a SEND_STATUS (CMD13), the
erase timeout calculations/handling as documented in specifications
are entirely ignored so far, the MMC layer doesn't provide timeouts
applicable up to the bridge drivers and at least sdhci(4) currently
is hardcoding 1 s as timeout for all command types unconditionally.
Let alone already available return codes often not being checked in
the MMC layer ...
- For devices following the eMMC specification v4.41 or later, year 0
is 2013 rather than 1997; so correct this for assembling the device
ID string properly.
* This omits all the parts specific to eMMC "partitions" from the FreeBSD
change.
* Add the Intel sdhci controller ids to sdhci_pci.c to set the
SDHCI_QUIRK_WAIT_WHILE_BUSY quirk there.
This also disables DMA on apollo lake sdhci, while there and whitelists
ADMA2 on Bay Trail and Braswell sdhci controllers.
Taken-From: FreeBSD (svn r315430)
15 files changed: