Loading drivers/staging/rts5208/ms.c +150 −138 Original line number Diff line number Diff line Loading @@ -1488,7 +1488,8 @@ static int ms_read_extra_data(struct rtsx_chip *chip, } retval = ms_set_rw_reg_addr(chip, OverwriteFlag, MS_EXTRA_SIZE, SystemParm, 6); MS_EXTRA_SIZE, SystemParm, 6); if (retval != STATUS_SUCCESS) { rtsx_trace(chip); return STATUS_FAIL; Loading @@ -1512,8 +1513,8 @@ static int ms_read_extra_data(struct rtsx_chip *chip, return STATUS_SUCCESS; } static int ms_write_extra_data(struct rtsx_chip *chip, u16 block_addr, u8 page_num, u8 *buf, int buf_len) static int ms_write_extra_data(struct rtsx_chip *chip, u16 block_addr, u8 page_num, u8 *buf, int buf_len) { struct ms_info *ms_card = &chip->ms_card; int retval, i; Loading Loading @@ -1981,20 +1982,24 @@ static int ms_copy_page(struct rtsx_chip *chip, u16 old_blk, u16 new_blk, if (uncorrect_flag) { ms_set_page_status(log_blk, setPS_NG, extra, MS_EXTRA_SIZE); extra, MS_EXTRA_SIZE); if (i == 0) extra[0] &= 0xEF; ms_write_extra_data(chip, old_blk, i, extra, MS_EXTRA_SIZE); extra, MS_EXTRA_SIZE); dev_dbg(rtsx_dev(chip), "page %d : extra[0] = 0x%x\n", i, extra[0]); MS_SET_BAD_BLOCK_FLG(ms_card); ms_set_page_status(log_blk, setPS_Error, extra, MS_EXTRA_SIZE); extra, MS_EXTRA_SIZE); ms_write_extra_data(chip, new_blk, i, extra, MS_EXTRA_SIZE); extra, MS_EXTRA_SIZE); continue; } Loading @@ -2021,8 +2026,8 @@ static int ms_copy_page(struct rtsx_chip *chip, u16 old_blk, u16 new_blk, } } retval = ms_set_rw_reg_addr(chip, OverwriteFlag, MS_EXTRA_SIZE, SystemParm, (6 + MS_EXTRA_SIZE)); retval = ms_set_rw_reg_addr(chip, OverwriteFlag, MS_EXTRA_SIZE, SystemParm, (6 + MS_EXTRA_SIZE)); ms_set_err_code(chip, MS_NO_ERROR); Loading Loading @@ -2085,7 +2090,8 @@ static int ms_copy_page(struct rtsx_chip *chip, u16 old_blk, u16 new_blk, if (i == 0) { retval = ms_set_rw_reg_addr(chip, OverwriteFlag, MS_EXTRA_SIZE, SystemParm, 7); MS_EXTRA_SIZE, SystemParm, 7); if (retval != STATUS_SUCCESS) { rtsx_trace(chip); return STATUS_FAIL; Loading Loading @@ -2774,7 +2780,8 @@ static int ms_build_l2p_tbl(struct rtsx_chip *chip, int seg_no) phy_blk = ms_get_unused_block(chip, 0); retval = ms_copy_page(chip, tmp_blk, phy_blk, log_blk, 0, ms_card->page_off + 1); log_blk, 0, ms_card->page_off + 1); if (retval != STATUS_SUCCESS) { rtsx_trace(chip); return STATUS_FAIL; Loading Loading @@ -3454,9 +3461,10 @@ static int ms_read_multiple_pages(struct rtsx_chip *chip, u16 phy_blk, rtsx_send_cmd_no_wait(chip); retval = rtsx_transfer_data_partial(chip, MS_CARD, ptr, 512, scsi_sg_count(chip->srb), index, offset, DMA_FROM_DEVICE, retval = rtsx_transfer_data_partial(chip, MS_CARD, ptr, 512, scsi_sg_count(chip->srb), index, offset, DMA_FROM_DEVICE, chip->ms_timeout); if (retval < 0) { if (retval == -ETIMEDOUT) { Loading Loading @@ -3645,9 +3653,10 @@ static int ms_write_multiple_pages(struct rtsx_chip *chip, u16 old_blk, rtsx_send_cmd_no_wait(chip); retval = rtsx_transfer_data_partial(chip, MS_CARD, ptr, 512, scsi_sg_count(chip->srb), index, offset, DMA_TO_DEVICE, retval = rtsx_transfer_data_partial(chip, MS_CARD, ptr, 512, scsi_sg_count(chip->srb), index, offset, DMA_TO_DEVICE, chip->ms_timeout); if (retval < 0) { ms_set_err_code(chip, MS_TO_ERROR); Loading Loading @@ -3848,7 +3857,8 @@ static int ms_rw_multi_sector(struct scsi_cmnd *srb, struct rtsx_chip *chip, delay_write->delay_write_flag = 0; retval = ms_copy_page(chip, delay_write->old_phyblock, delay_write->new_phyblock, log_blk, delay_write->new_phyblock, log_blk, delay_write->pageoff, start_page); if (retval != STATUS_SUCCESS) { set_sense_type(chip, lun, Loading Loading @@ -3942,12 +3952,14 @@ static int ms_rw_multi_sector(struct scsi_cmnd *srb, struct rtsx_chip *chip, if (srb->sc_data_direction == DMA_FROM_DEVICE) { retval = ms_read_multiple_pages(chip, old_blk, log_blk, start_page, end_page, old_blk, log_blk, start_page, end_page, ptr, &index, &offset); } else { retval = ms_write_multiple_pages(chip, old_blk, new_blk, log_blk, start_page, end_page, ptr, &index, &offset); retval = ms_write_multiple_pages(chip, old_blk, new_blk, log_blk, start_page, end_page, ptr, &index, &offset); } if (retval != STATUS_SUCCESS) { Loading Loading
drivers/staging/rts5208/ms.c +150 −138 Original line number Diff line number Diff line Loading @@ -1488,7 +1488,8 @@ static int ms_read_extra_data(struct rtsx_chip *chip, } retval = ms_set_rw_reg_addr(chip, OverwriteFlag, MS_EXTRA_SIZE, SystemParm, 6); MS_EXTRA_SIZE, SystemParm, 6); if (retval != STATUS_SUCCESS) { rtsx_trace(chip); return STATUS_FAIL; Loading @@ -1512,8 +1513,8 @@ static int ms_read_extra_data(struct rtsx_chip *chip, return STATUS_SUCCESS; } static int ms_write_extra_data(struct rtsx_chip *chip, u16 block_addr, u8 page_num, u8 *buf, int buf_len) static int ms_write_extra_data(struct rtsx_chip *chip, u16 block_addr, u8 page_num, u8 *buf, int buf_len) { struct ms_info *ms_card = &chip->ms_card; int retval, i; Loading Loading @@ -1981,20 +1982,24 @@ static int ms_copy_page(struct rtsx_chip *chip, u16 old_blk, u16 new_blk, if (uncorrect_flag) { ms_set_page_status(log_blk, setPS_NG, extra, MS_EXTRA_SIZE); extra, MS_EXTRA_SIZE); if (i == 0) extra[0] &= 0xEF; ms_write_extra_data(chip, old_blk, i, extra, MS_EXTRA_SIZE); extra, MS_EXTRA_SIZE); dev_dbg(rtsx_dev(chip), "page %d : extra[0] = 0x%x\n", i, extra[0]); MS_SET_BAD_BLOCK_FLG(ms_card); ms_set_page_status(log_blk, setPS_Error, extra, MS_EXTRA_SIZE); extra, MS_EXTRA_SIZE); ms_write_extra_data(chip, new_blk, i, extra, MS_EXTRA_SIZE); extra, MS_EXTRA_SIZE); continue; } Loading @@ -2021,8 +2026,8 @@ static int ms_copy_page(struct rtsx_chip *chip, u16 old_blk, u16 new_blk, } } retval = ms_set_rw_reg_addr(chip, OverwriteFlag, MS_EXTRA_SIZE, SystemParm, (6 + MS_EXTRA_SIZE)); retval = ms_set_rw_reg_addr(chip, OverwriteFlag, MS_EXTRA_SIZE, SystemParm, (6 + MS_EXTRA_SIZE)); ms_set_err_code(chip, MS_NO_ERROR); Loading Loading @@ -2085,7 +2090,8 @@ static int ms_copy_page(struct rtsx_chip *chip, u16 old_blk, u16 new_blk, if (i == 0) { retval = ms_set_rw_reg_addr(chip, OverwriteFlag, MS_EXTRA_SIZE, SystemParm, 7); MS_EXTRA_SIZE, SystemParm, 7); if (retval != STATUS_SUCCESS) { rtsx_trace(chip); return STATUS_FAIL; Loading Loading @@ -2774,7 +2780,8 @@ static int ms_build_l2p_tbl(struct rtsx_chip *chip, int seg_no) phy_blk = ms_get_unused_block(chip, 0); retval = ms_copy_page(chip, tmp_blk, phy_blk, log_blk, 0, ms_card->page_off + 1); log_blk, 0, ms_card->page_off + 1); if (retval != STATUS_SUCCESS) { rtsx_trace(chip); return STATUS_FAIL; Loading Loading @@ -3454,9 +3461,10 @@ static int ms_read_multiple_pages(struct rtsx_chip *chip, u16 phy_blk, rtsx_send_cmd_no_wait(chip); retval = rtsx_transfer_data_partial(chip, MS_CARD, ptr, 512, scsi_sg_count(chip->srb), index, offset, DMA_FROM_DEVICE, retval = rtsx_transfer_data_partial(chip, MS_CARD, ptr, 512, scsi_sg_count(chip->srb), index, offset, DMA_FROM_DEVICE, chip->ms_timeout); if (retval < 0) { if (retval == -ETIMEDOUT) { Loading Loading @@ -3645,9 +3653,10 @@ static int ms_write_multiple_pages(struct rtsx_chip *chip, u16 old_blk, rtsx_send_cmd_no_wait(chip); retval = rtsx_transfer_data_partial(chip, MS_CARD, ptr, 512, scsi_sg_count(chip->srb), index, offset, DMA_TO_DEVICE, retval = rtsx_transfer_data_partial(chip, MS_CARD, ptr, 512, scsi_sg_count(chip->srb), index, offset, DMA_TO_DEVICE, chip->ms_timeout); if (retval < 0) { ms_set_err_code(chip, MS_TO_ERROR); Loading Loading @@ -3848,7 +3857,8 @@ static int ms_rw_multi_sector(struct scsi_cmnd *srb, struct rtsx_chip *chip, delay_write->delay_write_flag = 0; retval = ms_copy_page(chip, delay_write->old_phyblock, delay_write->new_phyblock, log_blk, delay_write->new_phyblock, log_blk, delay_write->pageoff, start_page); if (retval != STATUS_SUCCESS) { set_sense_type(chip, lun, Loading Loading @@ -3942,12 +3952,14 @@ static int ms_rw_multi_sector(struct scsi_cmnd *srb, struct rtsx_chip *chip, if (srb->sc_data_direction == DMA_FROM_DEVICE) { retval = ms_read_multiple_pages(chip, old_blk, log_blk, start_page, end_page, old_blk, log_blk, start_page, end_page, ptr, &index, &offset); } else { retval = ms_write_multiple_pages(chip, old_blk, new_blk, log_blk, start_page, end_page, ptr, &index, &offset); retval = ms_write_multiple_pages(chip, old_blk, new_blk, log_blk, start_page, end_page, ptr, &index, &offset); } if (retval != STATUS_SUCCESS) { Loading