mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
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>
39 lines
899 B
C
39 lines
899 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/* Driver for Realtek driver-based card reader
|
|
*
|
|
* Copyright(c) 2009-2013 Realtek Semiconductor Corp. All rights reserved.
|
|
*
|
|
* Author:
|
|
* Wei WANG <wei_wang@realsil.com.cn>
|
|
*/
|
|
|
|
#ifndef __RTSX_COMMON_H
|
|
#define __RTSX_COMMON_H
|
|
|
|
#define DRV_NAME_RTSX_PCI "rtsx_pci"
|
|
#define DRV_NAME_RTSX_PCI_SDMMC "rtsx_pci_sdmmc"
|
|
|
|
#define RTSX_REG_PAIR(addr, val) (((u32)(addr) << 16) | (u8)(val))
|
|
|
|
#define RTSX_SSC_DEPTH_4M 0x01
|
|
#define RTSX_SSC_DEPTH_2M 0x02
|
|
#define RTSX_SSC_DEPTH_1M 0x03
|
|
#define RTSX_SSC_DEPTH_500K 0x04
|
|
#define RTSX_SSC_DEPTH_250K 0x05
|
|
|
|
#define RTSX_SD_CARD 0
|
|
#define RTSX_MS_CARD 1
|
|
|
|
#define CLK_TO_DIV_N 0
|
|
#define DIV_N_TO_CLK 1
|
|
|
|
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
|