mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-09 03:20:05 +00:00
[ Upstream commitfce2ce78af] Ultra Capacity SD cards (SDUC) was already introduced in SD7.0. Those cards support capacity larger than 2TB and up to including 128TB. ACMD41 was extended to support the host-card handshake during initialization. The card expects that the HCS & HO2T bits to be set in the command argument, and sets the applicable bits in the R3 returned response. On the contrary, if a SDUC card is inserted to a non-supporting host, it will never respond to this ACMD41 until eventually, the host will timed out and give up. Also, add SD CSD version 3.0 - designated for SDUC, and properly parse the csd register as the c_size field got expanded to 28 bits. Do not enable SDUC for now - leave it to the last patch in the series. Tested-by: Ricky WU <ricky_wu@realtek.com> Reviewed-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Avri Altman <avri.altman@wdc.com> Link: https://lore.kernel.org/r/20241006051148.160278-2-avri.altman@wdc.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Stable-dep-of:869d374757("mmc: core: Use GFP_NOIO in ACMD22") Signed-off-by: Sasha Levin <sashal@kernel.org>
21 lines
553 B
C
21 lines
553 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _MMC_CORE_SD_H
|
|
#define _MMC_CORE_SD_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
extern const struct device_type sd_type;
|
|
|
|
struct mmc_host;
|
|
struct mmc_card;
|
|
|
|
int mmc_sd_get_cid(struct mmc_host *host, u32 ocr, u32 *cid, u32 *rocr);
|
|
int mmc_sd_get_csd(struct mmc_card *card, bool is_sduc);
|
|
void mmc_decode_cid(struct mmc_card *card);
|
|
int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card,
|
|
bool reinit);
|
|
unsigned mmc_sd_get_max_clock(struct mmc_card *card);
|
|
int mmc_sd_switch_hs(struct mmc_card *card);
|
|
|
|
#endif
|