diff options
Diffstat (limited to 'drivers/staging/rts5208')
-rw-r--r-- | drivers/staging/rts5208/TODO | 2 | ||||
-rw-r--r-- | drivers/staging/rts5208/rtsx_chip.c | 20 | ||||
-rw-r--r-- | drivers/staging/rts5208/sd.c | 30 | ||||
-rw-r--r-- | drivers/staging/rts5208/sd.h | 1 | ||||
-rw-r--r-- | drivers/staging/rts5208/xd.c | 8 |
5 files changed, 27 insertions, 34 deletions
diff --git a/drivers/staging/rts5208/TODO b/drivers/staging/rts5208/TODO index 57bcf5834c0c..9cec0d8dd0b6 100644 --- a/drivers/staging/rts5208/TODO +++ b/drivers/staging/rts5208/TODO @@ -4,4 +4,4 @@ TODO: - We will use the stack in drivers/mmc to implement rts5208/5288 in the future -Micky Ching <micky_ching@realsil.com.cn>
\ No newline at end of file +Micky Ching <micky_ching@realsil.com.cn> diff --git a/drivers/staging/rts5208/rtsx_chip.c b/drivers/staging/rts5208/rtsx_chip.c index 76c35f3c0208..17c4131f5f62 100644 --- a/drivers/staging/rts5208/rtsx_chip.c +++ b/drivers/staging/rts5208/rtsx_chip.c @@ -598,38 +598,38 @@ nextcard: return STATUS_SUCCESS; } -static inline int check_sd_speed_prior(u32 sd_speed_prior) +static inline int valid_sd_speed_prior(u32 sd_speed_prior) { - bool fake_para = false; + bool valid_para = true; int i; for (i = 0; i < 4; i++) { u8 tmp = (u8)(sd_speed_prior >> (i * 8)); if ((tmp < 0x01) || (tmp > 0x04)) { - fake_para = true; + valid_para = false; break; } } - return !fake_para; + return valid_para; } -static inline int check_sd_current_prior(u32 sd_current_prior) +static inline int valid_sd_current_prior(u32 sd_current_prior) { - bool fake_para = false; + bool valid_para = true; int i; for (i = 0; i < 4; i++) { u8 tmp = (u8)(sd_current_prior >> (i * 8)); if (tmp > 0x03) { - fake_para = true; + valid_para = false; break; } } - return !fake_para; + return valid_para; } static int rts5208_init(struct rtsx_chip *chip) @@ -796,13 +796,13 @@ int rtsx_init_chip(struct rtsx_chip *chip) chip->rw_fail_cnt[i] = 0; } - if (!check_sd_speed_prior(chip->sd_speed_prior)) + if (!valid_sd_speed_prior(chip->sd_speed_prior)) chip->sd_speed_prior = 0x01040203; dev_dbg(rtsx_dev(chip), "sd_speed_prior = 0x%08x\n", chip->sd_speed_prior); - if (!check_sd_current_prior(chip->sd_current_prior)) + if (!valid_sd_current_prior(chip->sd_current_prior)) chip->sd_current_prior = 0x00010203; dev_dbg(rtsx_dev(chip), "sd_current_prior = 0x%08x\n", diff --git a/drivers/staging/rts5208/sd.c b/drivers/staging/rts5208/sd.c index c256a2398651..a06045344301 100644 --- a/drivers/staging/rts5208/sd.c +++ b/drivers/staging/rts5208/sd.c @@ -3580,11 +3580,6 @@ RW_FAIL: } #ifdef SUPPORT_CPRM -int soft_reset_sd_card(struct rtsx_chip *chip) -{ - return reset_sd(chip); -} - int ext_sd_send_cmd_get_rsp(struct rtsx_chip *chip, u8 cmd_idx, u32 arg, u8 rsp_type, u8 *rsp, int rsp_len, bool special_check) @@ -4512,20 +4507,19 @@ int sd_execute_write_data(struct scsi_cmnd *srb, struct rtsx_chip *chip) sd_lock_state, sd_card->sd_lock_status); if (sd_lock_state ^ (sd_card->sd_lock_status & SD_LOCKED)) { sd_card->sd_lock_notify = 1; - if (sd_lock_state) { - if (sd_card->sd_lock_status & SD_LOCK_1BIT_MODE) { - sd_card->sd_lock_status |= ( - SD_UNLOCK_POW_ON | SD_SDR_RST); - if (CHK_SD(sd_card)) { - retval = reset_sd(chip); - if (retval != STATUS_SUCCESS) { - sd_card->sd_lock_status &= ~(SD_UNLOCK_POW_ON | SD_SDR_RST); - goto sd_execute_write_cmd_failed; - } + if (sd_lock_state && + (sd_card->sd_lock_status & SD_LOCK_1BIT_MODE)) { + sd_card->sd_lock_status |= ( + SD_UNLOCK_POW_ON | SD_SDR_RST); + if (CHK_SD(sd_card)) { + retval = reset_sd(chip); + if (retval != STATUS_SUCCESS) { + sd_card->sd_lock_status &= ~(SD_UNLOCK_POW_ON | SD_SDR_RST); + goto sd_execute_write_cmd_failed; } - - sd_card->sd_lock_status &= ~(SD_UNLOCK_POW_ON | SD_SDR_RST); } + + sd_card->sd_lock_status &= ~(SD_UNLOCK_POW_ON | SD_SDR_RST); } } } @@ -4639,7 +4633,7 @@ int sd_hw_rst(struct scsi_cmnd *srb, struct rtsx_chip *chip) break; case 1: - retval = soft_reset_sd_card(chip); + retval = reset_sd(chip); if (retval != STATUS_SUCCESS) { set_sense_type(chip, lun, SENSE_TYPE_MEDIA_NOT_PRESENT); sd_card->pre_cmd_err = 1; diff --git a/drivers/staging/rts5208/sd.h b/drivers/staging/rts5208/sd.h index e124526360b2..dc9e8cad7a74 100644 --- a/drivers/staging/rts5208/sd.h +++ b/drivers/staging/rts5208/sd.h @@ -273,7 +273,6 @@ void sd_cleanup_work(struct rtsx_chip *chip); int sd_power_off_card3v3(struct rtsx_chip *chip); int release_sd_card(struct rtsx_chip *chip); #ifdef SUPPORT_CPRM -int soft_reset_sd_card(struct rtsx_chip *chip); int ext_sd_send_cmd_get_rsp(struct rtsx_chip *chip, u8 cmd_idx, u32 arg, u8 rsp_type, u8 *rsp, int rsp_len, bool special_check); diff --git a/drivers/staging/rts5208/xd.c b/drivers/staging/rts5208/xd.c index c5ee04ecd1c9..f3dc96a4c59d 100644 --- a/drivers/staging/rts5208/xd.c +++ b/drivers/staging/rts5208/xd.c @@ -1155,10 +1155,10 @@ static int xd_copy_page(struct rtsx_chip *chip, u32 old_blk, u32 new_blk, return STATUS_FAIL; } - if (((reg & (XD_ECC1_ERROR | XD_ECC1_UNCORRECTABLE)) == - (XD_ECC1_ERROR | XD_ECC1_UNCORRECTABLE)) || - ((reg & (XD_ECC2_ERROR | XD_ECC2_UNCORRECTABLE)) == - (XD_ECC2_ERROR | XD_ECC2_UNCORRECTABLE))) { + if (((reg & XD_ECC1_ERROR) && + (reg & XD_ECC1_UNCORRECTABLE)) || + ((reg & XD_ECC2_ERROR) && + (reg & XD_ECC2_UNCORRECTABLE))) { rtsx_write_register(chip, XD_PAGE_STATUS, 0xFF, |