mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-02 04:41:10 -04:00
mmc: rtsx_pci: add quirk to disable MMC_CAP_AGGRESSIVE_PM for RTS525A
Using MMC_CAP_AGGRESSIVE_PM on RTS525A card readers causes game performance issues when the card reader comes back from idle into active use. This can be observed in Hades II when loading new sections of the game or menu after the card reader puts itself into idle, and presents as a 1-2 second hang. Add EXTRA_CAPS_NO_AGGRESSIVE_PM quirk to allow cardreader drivers to opt-out of aggressive PM, and set it for RTS525A. Closes: https://lore.kernel.org/linux-mmc/ff9a7c20-f465-4afa-bf29-708d4a52974a@linux.dev/ Signed-off-by: Matthew Schwartz <matthew.schwartz@linux.dev> Link: https://patch.msgid.link/20260103204226.71752-1-matthew.schwartz@linux.dev Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
ed1613fc18
commit
5f0bf80cc5
@@ -78,6 +78,9 @@ static void rtsx_base_fetch_vendor_settings(struct rtsx_pcr *pcr)
|
||||
if (CHK_PCI_PID(pcr, PID_524A) || CHK_PCI_PID(pcr, PID_525A))
|
||||
pcr->rtd3_en = rtsx_reg_to_rtd3_uhsii(reg);
|
||||
|
||||
if (CHK_PCI_PID(pcr, PID_525A))
|
||||
pcr->extra_caps |= EXTRA_CAPS_NO_AGGRESSIVE_PM;
|
||||
|
||||
if (rtsx_check_mmc_support(reg))
|
||||
pcr->extra_caps |= EXTRA_CAPS_NO_MMC;
|
||||
pcr->sd30_drive_sel_3v3 = rtsx_reg_to_sd30_drive_sel_3v3(reg);
|
||||
|
||||
@@ -1456,8 +1456,8 @@ static void realtek_init_host(struct realtek_pci_sdmmc *host)
|
||||
mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED |
|
||||
MMC_CAP_MMC_HIGHSPEED | MMC_CAP_BUS_WIDTH_TEST |
|
||||
MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25;
|
||||
if (pcr->rtd3_en)
|
||||
mmc->caps = mmc->caps | MMC_CAP_AGGRESSIVE_PM;
|
||||
if (pcr->rtd3_en && !(pcr->extra_caps & EXTRA_CAPS_NO_AGGRESSIVE_PM))
|
||||
mmc->caps |= MMC_CAP_AGGRESSIVE_PM;
|
||||
mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE |
|
||||
MMC_CAP2_NO_SDIO;
|
||||
mmc->max_current_330 = 400;
|
||||
|
||||
@@ -1230,6 +1230,7 @@ struct rtsx_pcr {
|
||||
#define EXTRA_CAPS_MMC_8BIT (1 << 5)
|
||||
#define EXTRA_CAPS_NO_MMC (1 << 7)
|
||||
#define EXTRA_CAPS_SD_EXPRESS (1 << 8)
|
||||
#define EXTRA_CAPS_NO_AGGRESSIVE_PM (1 << 9)
|
||||
u32 extra_caps;
|
||||
|
||||
#define IC_VER_A 0
|
||||
|
||||
Reference in New Issue
Block a user