Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 325033
b: refs/heads/master
c: a1cf146
h: refs/heads/master
i:
  325031: 1f77d78
v: v3
  • Loading branch information
Toshiaki Yamane authored and Greg Kroah-Hartman committed Sep 10, 2012
1 parent 8476b32 commit bfb02e5
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 70 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 90538e412c5d70d41f6b89cd8617558f687534e3
refs/heads/master: a1cf1468efa6273ddaf28ad00faa74a59aca489a
114 changes: 45 additions & 69 deletions trunk/drivers/staging/rts_pstor/sd.c
Original file line number Diff line number Diff line change
Expand Up @@ -2216,14 +2216,12 @@ static int reset_sd(struct rtsx_chip *chip)
#endif

retval = sd_prepare_reset(chip);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

retval = sd_dummy_clock(chip);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

if (CHK_SDIO_EXIST(chip) && !CHK_SDIO_IGNORED(chip) && try_sdio) {
int rty_cnt = 0;
Expand Down Expand Up @@ -2257,9 +2255,8 @@ static int reset_sd(struct rtsx_chip *chip)
/* Start Initialization Process of SD Card */
RTY_SD_RST:
retval = sd_send_cmd_get_rsp(chip, GO_IDLE_STATE, 0, SD_RSP_TYPE_R0, NULL, 0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

wait_timeout(20);

Expand All @@ -2286,9 +2283,8 @@ static int reset_sd(struct rtsx_chip *chip)
voltage = SUPPORT_VOLTAGE;

retval = sd_send_cmd_get_rsp(chip, GO_IDLE_STATE, 0, SD_RSP_TYPE_R0, NULL, 0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

wait_timeout(20);
}
Expand All @@ -2302,42 +2298,38 @@ static int reset_sd(struct rtsx_chip *chip)
}

j++;
if (j < 3) {
if (j < 3)
goto RTY_SD_RST;
} else {
else
TRACE_RET(chip, STATUS_FAIL);
}
}

retval = sd_send_cmd_get_rsp(chip, SD_APP_OP_COND, voltage, SD_RSP_TYPE_R3, rsp, 5);
if (retval != STATUS_SUCCESS) {
k++;
if (k < 3) {
if (k < 3)
goto RTY_SD_RST;
} else {
else
TRACE_RET(chip, STATUS_FAIL);
}
}

i++;
wait_timeout(20);
} while (!(rsp[1] & 0x80) && (i < 255));

if (i == 255) {
if (i == 255)
TRACE_RET(chip, STATUS_FAIL);
}

if (hi_cap_flow) {
if (rsp[1] & 0x40) {
if (rsp[1] & 0x40)
SET_SD_HCXC(sd_card);
} else {
else
CLR_SD_HCXC(sd_card);
}
if (CHECK_PID(chip, 0x5209) && CHK_SD_HCXC(sd_card) && !sd20_mode) {

if (CHECK_PID(chip, 0x5209) && CHK_SD_HCXC(sd_card) && !sd20_mode)
support_1v8 = (rsp[1] & 0x01) ? 1 : 0;
} else {
else
support_1v8 = 0;
}
} else {
CLR_SD_HCXC(sd_card);
support_1v8 = 0;
Expand All @@ -2346,46 +2338,39 @@ static int reset_sd(struct rtsx_chip *chip)

if (support_1v8) {
retval = sd_voltage_switch(chip);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}
}

retval = sd_send_cmd_get_rsp(chip, ALL_SEND_CID, 0, SD_RSP_TYPE_R2, NULL, 0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

for (i = 0; i < 3; i++) {
retval = sd_send_cmd_get_rsp(chip, SEND_RELATIVE_ADDR, 0, SD_RSP_TYPE_R6, rsp, 5);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

sd_card->sd_addr = (u32)rsp[1] << 24;
sd_card->sd_addr += (u32)rsp[2] << 16;

if (sd_card->sd_addr) {
if (sd_card->sd_addr)
break;
}
}

retval = sd_check_csd(chip, 1);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

retval = sd_select_card(chip, 1);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

#ifdef SUPPORT_SD_LOCK
SD_UNLOCK_ENTRY:
retval = sd_update_lock_status(chip);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

if (sd_card->sd_lock_status & SD_LOCKED) {
sd_card->sd_lock_status |= (SD_LOCK_1BIT_MODE | SD_PWD_EXIST);
Expand All @@ -2396,38 +2381,34 @@ static int reset_sd(struct rtsx_chip *chip)
#endif

retval = sd_send_cmd_get_rsp(chip, APP_CMD, sd_card->sd_addr, SD_RSP_TYPE_R1, NULL, 0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

retval = sd_send_cmd_get_rsp(chip, SET_CLR_CARD_DETECT, 0, SD_RSP_TYPE_R1, NULL, 0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

if (support_1v8) {
retval = sd_send_cmd_get_rsp(chip, APP_CMD, sd_card->sd_addr, SD_RSP_TYPE_R1, NULL, 0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

retval = sd_send_cmd_get_rsp(chip, SET_BUS_WIDTH, 2, SD_RSP_TYPE_R1, NULL, 0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

switch_bus_width = SD_BUS_WIDTH_4;
} else {
switch_bus_width = SD_BUS_WIDTH_1;
}

retval = sd_send_cmd_get_rsp(chip, SET_BLOCKLEN, 0x200, SD_RSP_TYPE_R1, NULL, 0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

retval = sd_set_clock_divider(chip, SD_CLK_DIVIDE_0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

if (!(sd_card->raw_csd[4] & 0x40))
sd_dont_switch = 1;
Expand All @@ -2446,9 +2427,9 @@ static int reset_sd(struct rtsx_chip *chip)
if (retval == STATUS_SUCCESS) {
retval = sd_switch_function(chip, switch_bus_width);
if (retval != STATUS_SUCCESS) {
if (CHECK_PID(chip, 0x5209)) {
if (CHECK_PID(chip, 0x5209))
sd_change_bank_voltage(chip, SD_IO_3V3);
}

sd_init_power(chip);
sd_dont_switch = 1;
try_sdio = 0;
Expand All @@ -2457,9 +2438,9 @@ static int reset_sd(struct rtsx_chip *chip)
}
} else {
if (support_1v8) {
if (CHECK_PID(chip, 0x5209)) {
if (CHECK_PID(chip, 0x5209))
sd_change_bank_voltage(chip, SD_IO_3V3);
}

sd_init_power(chip);
sd_dont_switch = 1;
try_sdio = 0;
Expand All @@ -2471,13 +2452,12 @@ static int reset_sd(struct rtsx_chip *chip)

if (!support_1v8) {
retval = sd_send_cmd_get_rsp(chip, APP_CMD, sd_card->sd_addr, SD_RSP_TYPE_R1, NULL, 0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

retval = sd_send_cmd_get_rsp(chip, SET_BUS_WIDTH, 2, SD_RSP_TYPE_R1, NULL, 0);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}
}

#ifdef SUPPORT_SD_LOCK
Expand All @@ -2490,24 +2470,22 @@ static int reset_sd(struct rtsx_chip *chip)
RTSX_WRITE_REG(chip, SD30_DRIVE_SEL, 0x07, chip->sd30_drive_sel_1v8);

retval = sd_set_init_para(chip);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

if (CHK_SD_DDR50(sd_card)) {
if (CHK_SD_DDR50(sd_card))
retval = sd_ddr_tuning(chip);
} else {
else
retval = sd_sdr_tuning(chip);
}

if (retval != STATUS_SUCCESS) {
if (sd20_mode) {
TRACE_RET(chip, STATUS_FAIL);
} else {
retval = sd_init_power(chip);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

try_sdio = 0;
sd20_mode = 1;
goto Switch_Fail;
Expand All @@ -2518,9 +2496,8 @@ static int reset_sd(struct rtsx_chip *chip)

if (CHK_SD_DDR50(sd_card)) {
retval = sd_wait_state_data_ready(chip, 0x08, 1, 1000);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
read_lba0 = 0;
}
}

if (read_lba0) {
Expand All @@ -2530,9 +2507,9 @@ static int reset_sd(struct rtsx_chip *chip)
TRACE_RET(chip, STATUS_FAIL);
} else {
retval = sd_init_power(chip);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

try_sdio = 0;
sd20_mode = 1;
goto Switch_Fail;
Expand All @@ -2542,9 +2519,8 @@ static int reset_sd(struct rtsx_chip *chip)
}

retval = sd_check_wp_state(chip);
if (retval != STATUS_SUCCESS) {
if (retval != STATUS_SUCCESS)
TRACE_RET(chip, STATUS_FAIL);
}

chip->card_bus_width[chip->card2lun[SD_CARD]] = 4;

Expand Down

0 comments on commit bfb02e5

Please sign in to comment.