[PATCH 00/11] Initital support for new power/perf features for SD cards

From: Ulf Hansson
Date: Tue May 04 2021 - 12:12:37 EST


In the SD spec v4.x the SD function extension registers were introduced,
together with a new set of commands (CMD48/49 and CMD58/59) to read and write
to them.

Moreover, in v4.x a new standard function for power management features were
added, while in v6.x a new standard function for performance enhancements
features were added.

This series implement the basics to add support for these new features (and
includes some additional preparations in patch 1->7), by adding support for
reading and parsing these new SD registers. In the final patch we add support
for the SD poweroff notification feature, which also add a function to write to
these registers.

Note that, there are no HW updates need for the host to support reading/parsing
of the these new SD registers. This has been tested with a 64GB Sandisk Extreme
PRO UHS-I A2 card.

Tests and reviews are of course greatly appreciated!

Kind regards
Ulf Hansson

Ulf Hansson (11):
mmc: core: Drop open coding when preparing commands with busy
signaling
mmc: core: Take into account MMC_CAP_NEED_RSP_BUSY for eMMC HPI
commands
mmc: core: Re-structure some code in __mmc_poll_for_busy()
mmc: core: Extend re-use of __mmc_poll_for_busy()
mmc: core: Enable eMMC sleep commands to use HW busy polling
mmc: core: Prepare mmc_send_cxd_data() to be re-used for additional
cmds
mmc: core: Drop open coding in mmc_sd_switch()
mmc: core: Parse the SD SCR register for support of CMD48/49 and
CMD58/59
mmc: core: Read the SD function extension registers for power
management
mmc: core: Read performance enhancements registers for SD cards
mmc: core: Add support for Power Off Notification for SD cards

drivers/mmc/core/core.c | 22 +--
drivers/mmc/core/mmc.c | 43 ++---
drivers/mmc/core/mmc_ops.c | 137 +++++++-------
drivers/mmc/core/mmc_ops.h | 10 +-
drivers/mmc/core/sd.c | 371 ++++++++++++++++++++++++++++++++++++-
drivers/mmc/core/sd_ops.c | 38 +---
include/linux/mmc/card.h | 22 +++
include/linux/mmc/sd.h | 4 +
8 files changed, 504 insertions(+), 143 deletions(-)

--
2.25.1