mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 11:19:37 +00:00
staging:rts_pstor:Fix SDIO issue
Fix a bug that SDIO and SD normal card would appear simultaneously if a SDIO card inserted. Signed-off-by: wwang <wei_wang@realsil.com.cn> Acked-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
963ff7740d
commit
b6fbd29c8b
1 changed files with 15 additions and 16 deletions
|
@ -3134,41 +3134,40 @@ int reset_sd_card(struct rtsx_chip *chip)
|
|||
|
||||
if (chip->sd_ctl & RESET_MMC_FIRST) {
|
||||
retval = reset_mmc(chip);
|
||||
if ((retval != STATUS_SUCCESS) && !sd_check_err_code(chip, SD_NO_CARD)) {
|
||||
if (retval != STATUS_SUCCESS) {
|
||||
if (sd_check_err_code(chip, SD_NO_CARD))
|
||||
TRACE_RET(chip, STATUS_FAIL);
|
||||
|
||||
retval = reset_sd(chip);
|
||||
if (retval != STATUS_SUCCESS) {
|
||||
if (CHECK_PID(chip, 0x5209)) {
|
||||
retval = sd_change_bank_voltage(chip, SD_IO_3V3);
|
||||
if (retval != STATUS_SUCCESS) {
|
||||
TRACE_RET(chip, STATUS_FAIL);
|
||||
}
|
||||
}
|
||||
if (CHECK_PID(chip, 0x5209))
|
||||
sd_change_bank_voltage(chip, SD_IO_3V3);
|
||||
|
||||
TRACE_RET(chip, STATUS_FAIL);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
retval = reset_sd(chip);
|
||||
if (retval != STATUS_SUCCESS) {
|
||||
if (sd_check_err_code(chip, SD_NO_CARD)) {
|
||||
if (sd_check_err_code(chip, SD_NO_CARD))
|
||||
TRACE_RET(chip, STATUS_FAIL);
|
||||
}
|
||||
|
||||
if (CHECK_PID(chip, 0x5209)) {
|
||||
retval = sd_change_bank_voltage(chip, SD_IO_3V3);
|
||||
if (retval != STATUS_SUCCESS) {
|
||||
if (retval != STATUS_SUCCESS)
|
||||
TRACE_RET(chip, STATUS_FAIL);
|
||||
}
|
||||
}
|
||||
|
||||
if (!chip->sd_io) {
|
||||
if (chip->sd_io) {
|
||||
TRACE_RET(chip, STATUS_FAIL);
|
||||
} else {
|
||||
retval = reset_mmc(chip);
|
||||
if (retval != STATUS_SUCCESS)
|
||||
TRACE_RET(chip, STATUS_FAIL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (retval != STATUS_SUCCESS) {
|
||||
TRACE_RET(chip, STATUS_FAIL);
|
||||
}
|
||||
|
||||
retval = sd_set_clock_divider(chip, SD_CLK_DIVIDE_0);
|
||||
if (retval != STATUS_SUCCESS) {
|
||||
TRACE_RET(chip, STATUS_FAIL);
|
||||
|
|
Loading…
Reference in a new issue