mbox series

[v8,00/10] Add SDUC Support

Message ID 20241006051148.160278-1-avri.altman@wdc.com
Headers show
Series Add SDUC Support | expand

Message

Avri Altman Oct. 6, 2024, 5:11 a.m. UTC
Ultra Capacity SD cards (SDUC) was already introduced in SD7.0.  Those
cards support capacity larger than 2TB and up to including 128TB. Thus,
the address range of the card expands beyond the 32-bit command
argument. To that end, a new command - CMD22 is defined, to carry the
extra 6-bit upper part of the 38-bit block address that enable access to
128TB memory space.

SDUC capacity is agnostic to the interface mode: UHS-I and UHS-II – Same
as SDXC.

The spec defines several extensions/modifications to the current SDXC
cards, which we address in patches 1 - 10.  Otherwise requirements are
out-of-scope of this change.  Specifically, CMDQ (CMD44+CMD45), and
Extension for Video Speed Class (CMD20).

First publication of SDUC was in [1].  This series was developed and
tested separately from [1] and does not borrow from it.

[1] https://lwn.net/Articles/982566/

---
Changes in v8:
 - Attend some final comments (Ulf)

Changes in v7:
 - Minimizes the padding further in mmc_command (Christian)
 - Set the SD_OCR_2T when enabling SDUC (Adrian)
 - Remove unnecessary casting (Adrian)
 - Remove redundant else and switch patches 3 & 4 (Adrian)
 - Add patch to prevent HSQ from enabling (Adrian)
 - Remove redundant variable and make use of clamp_val (Adrian)

Changes in v6:
 - Remove Ricky's tested-by tag - the series has changed greatly
 - Call mmc_send_ext_addr from mmc_start_request (Adrian)

Changes in v5:
 - leave out the mask in mmc_send_ext_addr (Adrian)
 - leave out close-ended SDUC support
 - remove 500msec write delay as there is no busy indication (Adrian)
 - disable mmc-test for SDUC
 - move enabling SDUC to the last patch (Adrian)

Changes in v4:
 - Squash patches 1 & 2 (Ulf)
 - Amend SD_OCR_2T to SD_OCR_CCS in mmc_sd_get_cid (Ulf)
 - Use card state instead of caps2 (Ricky & Ulf)
 - Switch patches 5 & 6 (Ulf)

Changes in v3:
 - Some more kernel test robot fixes
 - Fix a typo in a commit log (Ricky WU)
 - Fix ACMD22 returned value
 - Add 'Tested-by' tag for the whole series (Ricky WU)

Changes in v2:
 - Attend kernel test robot warnings

---

Avri Altman (10):
  mmc: sd: SDUC Support Recognition
  mmc: sd: Add Extension memory addressing
  mmc: core: Don't use close-ended rw for SDUC
  mmc: core: Add open-ended Ext memory addressing
  mmc: core: Allow mmc erase to carry large addresses
  mmc: core: Add Ext memory addressing for erase
  mmc: core: Adjust ACMD22 to SDUC
  mmc: core: Disable SDUC for mmc_test
  mmc: core: Prevent HSQ from enabling for SDUC
  mmc: core: Enable SDUC

 drivers/mmc/core/block.c    | 37 +++++++++++++++++++++-------
 drivers/mmc/core/bus.c      |  4 +++-
 drivers/mmc/core/card.h     |  3 +++
 drivers/mmc/core/core.c     | 48 +++++++++++++++++++++++++------------
 drivers/mmc/core/core.h     | 16 +++++++++----
 drivers/mmc/core/mmc_test.c |  6 +++++
 drivers/mmc/core/sd.c       | 38 +++++++++++++++++++----------
 drivers/mmc/core/sd.h       |  2 +-
 drivers/mmc/core/sd_ops.c   | 15 ++++++++++++
 drivers/mmc/core/sd_ops.h   |  1 +
 drivers/mmc/core/sdio.c     |  2 +-
 include/linux/mmc/card.h    |  2 +-
 include/linux/mmc/core.h    |  4 ++++
 include/linux/mmc/sd.h      |  4 ++++
 14 files changed, 137 insertions(+), 45 deletions(-)

Comments

Ulf Hansson Oct. 7, 2024, 9:41 a.m. UTC | #1
On Sun, 6 Oct 2024 at 07:13, Avri Altman <avri.altman@wdc.com> wrote:
>
> Ultra Capacity SD cards (SDUC) was already introduced in SD7.0.  Those
> cards support capacity larger than 2TB and up to including 128TB. Thus,
> the address range of the card expands beyond the 32-bit command
> argument. To that end, a new command - CMD22 is defined, to carry the
> extra 6-bit upper part of the 38-bit block address that enable access to
> 128TB memory space.
>
> SDUC capacity is agnostic to the interface mode: UHS-I and UHS-II – Same
> as SDXC.
>
> The spec defines several extensions/modifications to the current SDXC
> cards, which we address in patches 1 - 10.  Otherwise requirements are
> out-of-scope of this change.  Specifically, CMDQ (CMD44+CMD45), and
> Extension for Video Speed Class (CMD20).
>
> First publication of SDUC was in [1].  This series was developed and
> tested separately from [1] and does not borrow from it.
>
> [1] https://lwn.net/Articles/982566/
>
> ---
> Changes in v8:
>  - Attend some final comments (Ulf)
>
> Changes in v7:
>  - Minimizes the padding further in mmc_command (Christian)
>  - Set the SD_OCR_2T when enabling SDUC (Adrian)
>  - Remove unnecessary casting (Adrian)
>  - Remove redundant else and switch patches 3 & 4 (Adrian)
>  - Add patch to prevent HSQ from enabling (Adrian)
>  - Remove redundant variable and make use of clamp_val (Adrian)
>
> Changes in v6:
>  - Remove Ricky's tested-by tag - the series has changed greatly
>  - Call mmc_send_ext_addr from mmc_start_request (Adrian)
>
> Changes in v5:
>  - leave out the mask in mmc_send_ext_addr (Adrian)
>  - leave out close-ended SDUC support
>  - remove 500msec write delay as there is no busy indication (Adrian)
>  - disable mmc-test for SDUC
>  - move enabling SDUC to the last patch (Adrian)
>
> Changes in v4:
>  - Squash patches 1 & 2 (Ulf)
>  - Amend SD_OCR_2T to SD_OCR_CCS in mmc_sd_get_cid (Ulf)
>  - Use card state instead of caps2 (Ricky & Ulf)
>  - Switch patches 5 & 6 (Ulf)
>
> Changes in v3:
>  - Some more kernel test robot fixes
>  - Fix a typo in a commit log (Ricky WU)
>  - Fix ACMD22 returned value
>  - Add 'Tested-by' tag for the whole series (Ricky WU)
>
> Changes in v2:
>  - Attend kernel test robot warnings
>
> ---
>
> Avri Altman (10):
>   mmc: sd: SDUC Support Recognition
>   mmc: sd: Add Extension memory addressing
>   mmc: core: Don't use close-ended rw for SDUC
>   mmc: core: Add open-ended Ext memory addressing
>   mmc: core: Allow mmc erase to carry large addresses
>   mmc: core: Add Ext memory addressing for erase
>   mmc: core: Adjust ACMD22 to SDUC
>   mmc: core: Disable SDUC for mmc_test
>   mmc: core: Prevent HSQ from enabling for SDUC
>   mmc: core: Enable SDUC
>
>  drivers/mmc/core/block.c    | 37 +++++++++++++++++++++-------
>  drivers/mmc/core/bus.c      |  4 +++-
>  drivers/mmc/core/card.h     |  3 +++
>  drivers/mmc/core/core.c     | 48 +++++++++++++++++++++++++------------
>  drivers/mmc/core/core.h     | 16 +++++++++----
>  drivers/mmc/core/mmc_test.c |  6 +++++
>  drivers/mmc/core/sd.c       | 38 +++++++++++++++++++----------
>  drivers/mmc/core/sd.h       |  2 +-
>  drivers/mmc/core/sd_ops.c   | 15 ++++++++++++
>  drivers/mmc/core/sd_ops.h   |  1 +
>  drivers/mmc/core/sdio.c     |  2 +-
>  include/linux/mmc/card.h    |  2 +-
>  include/linux/mmc/core.h    |  4 ++++
>  include/linux/mmc/sd.h      |  4 ++++
>  14 files changed, 137 insertions(+), 45 deletions(-)
>

Applied for next, thanks!

Kind regards
Uffe