diff options
| author | Matthew Schwartz <matthew.schwartz@linux.dev> | 2026-01-05 09:02:35 +0300 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-01-16 18:36:50 +0300 |
| commit | eac85fbd0867c25ac517f58fae401d65c627edff (patch) | |
| tree | a6d68286242a5497f03623efb10040e90b812b88 /include | |
| parent | 5f0bf80cc5e04d31eeb201683e0b477c24bd18e7 (diff) | |
| download | linux-eac85fbd0867c25ac517f58fae401d65c627edff.tar.xz | |
mmc: rtsx: reset power state on suspend
When rtsx_pci suspends, the card reader hardware powers off but the sdmmc
driver's prev_power_state remains as MMC_POWER_ON. This causes sd_power_on
to skip reinitialization on the next I/O request, leading to DMA transfer
timeouts and errors on resume 20% of the time.
Add a power_off slot callback so the PCR can notify the sdmmc driver
during suspend. The sdmmc driver resets prev_power_state, and sd_request
checks this to reinitialize the card before the next I/O.
Signed-off-by: Matthew Schwartz <matthew.schwartz@linux.dev>
Link: https://patch.msgid.link/20260105060236.400366-2-matthew.schwartz@linux.dev
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/rtsx_common.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/rtsx_common.h b/include/linux/rtsx_common.h index da9c8c6b5d50..f294f478f0c0 100644 --- a/include/linux/rtsx_common.h +++ b/include/linux/rtsx_common.h @@ -32,6 +32,7 @@ struct platform_device; struct rtsx_slot { struct platform_device *p_dev; void (*card_event)(struct platform_device *p_dev); + void (*power_off)(struct platform_device *p_dev); }; #endif |
