Lines Matching refs:pcr
38 struct rtsx_pcr *pcr; member
69 rtsx_pci_write_register(host->pcr, CARD_STOP, in sd_clear_error()
86 rtsx_pci_read_register(host->pcr, start + i + j, in dump_reg_range()
104 return rtsx_pci_readl(host->pcr, RTSX_BIPR) & SD_EXIST; in sd_get_cd_int()
107 static void sd_cmd_set_sd_cmd(struct rtsx_pcr *pcr, struct mmc_command *cmd) in sd_cmd_set_sd_cmd() argument
109 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD0, 0xFF, in sd_cmd_set_sd_cmd()
111 rtsx_pci_write_be32(pcr, SD_CMD1, cmd->arg); in sd_cmd_set_sd_cmd()
114 static void sd_cmd_set_data_len(struct rtsx_pcr *pcr, u16 blocks, u16 blksz) in sd_cmd_set_data_len() argument
116 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_L, 0xFF, blocks); in sd_cmd_set_data_len()
117 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_H, 0xFF, blocks >> 8); in sd_cmd_set_data_len()
118 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_L, 0xFF, blksz); in sd_cmd_set_data_len()
119 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_H, 0xFF, blksz >> 8); in sd_cmd_set_data_len()
162 struct rtsx_pcr *pcr = host->pcr; in sd_pre_dma_transfer() local
175 count = rtsx_pci_dma_map_sg(pcr, data->sg, data->sg_len, read); in sd_pre_dma_transfer()
213 struct rtsx_pcr *pcr = host->pcr; in sdmmc_post_req() local
217 rtsx_pci_dma_unmap_sg(pcr, data->sg, data->sg_len, read); in sdmmc_post_req()
224 struct rtsx_pcr *pcr = host->pcr; in sd_send_cmd_get_rsp() local
248 err = rtsx_pci_write_register(pcr, SD_BUS_STAT, in sd_send_cmd_get_rsp()
256 rtsx_pci_init_cmd(pcr); in sd_send_cmd_get_rsp()
257 sd_cmd_set_sd_cmd(pcr, cmd); in sd_send_cmd_get_rsp()
258 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, rsp_type); in sd_send_cmd_get_rsp()
259 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, in sd_send_cmd_get_rsp()
261 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, in sd_send_cmd_get_rsp()
263 rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, in sd_send_cmd_get_rsp()
270 rtsx_pci_add_cmd(pcr, READ_REG_CMD, (u16)i, 0, 0); in sd_send_cmd_get_rsp()
274 rtsx_pci_add_cmd(pcr, READ_REG_CMD, (u16)i, 0, 0); in sd_send_cmd_get_rsp()
277 rtsx_pci_add_cmd(pcr, READ_REG_CMD, SD_STAT1, 0, 0); in sd_send_cmd_get_rsp()
279 err = rtsx_pci_send_cmd(pcr, timeout); in sd_send_cmd_get_rsp()
294 ptr = rtsx_pci_get_cmd_data(pcr) + 1; in sd_send_cmd_get_rsp()
335 rtsx_pci_write_register(pcr, SD_BUS_STAT, in sd_send_cmd_get_rsp()
342 struct rtsx_pcr *pcr = host->pcr; in sd_read_data() local
357 rtsx_pci_init_cmd(pcr); in sd_read_data()
358 sd_cmd_set_sd_cmd(pcr, cmd); in sd_read_data()
359 sd_cmd_set_data_len(pcr, 1, byte_cnt); in sd_read_data()
360 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, in sd_read_data()
364 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, in sd_read_data()
367 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, in sd_read_data()
369 rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, in sd_read_data()
372 err = rtsx_pci_send_cmd(pcr, timeout); in sd_read_data()
381 err = rtsx_pci_read_ppbuf(pcr, buf, buf_len); in sd_read_data()
396 struct rtsx_pcr *pcr = host->pcr; in sd_write_data() local
410 err = rtsx_pci_write_ppbuf(pcr, buf, buf_len); in sd_write_data()
418 rtsx_pci_init_cmd(pcr); in sd_write_data()
419 sd_cmd_set_data_len(pcr, 1, byte_cnt); in sd_write_data()
420 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, in sd_write_data()
423 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, 0xFF, in sd_write_data()
425 rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, in sd_write_data()
428 err = rtsx_pci_send_cmd(pcr, timeout); in sd_write_data()
442 struct rtsx_pcr *pcr = host->pcr; in sd_read_long_data() local
463 rtsx_pci_init_cmd(pcr); in sd_read_long_data()
464 sd_cmd_set_sd_cmd(pcr, cmd); in sd_read_long_data()
465 sd_cmd_set_data_len(pcr, data->blocks, data->blksz); in sd_read_long_data()
466 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, IRQSTAT0, in sd_read_long_data()
468 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC3, in sd_read_long_data()
470 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC2, in sd_read_long_data()
472 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC1, in sd_read_long_data()
474 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC0, 0xFF, (u8)data_len); in sd_read_long_data()
475 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMACTL, in sd_read_long_data()
478 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, in sd_read_long_data()
480 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, cfg2 | resp_type); in sd_read_long_data()
481 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, 0xFF, in sd_read_long_data()
483 rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, in sd_read_long_data()
485 rtsx_pci_send_cmd_no_wait(pcr); in sd_read_long_data()
487 err = rtsx_pci_dma_transfer(pcr, data->sg, host->sg_count, 1, 10000); in sd_read_long_data()
500 struct rtsx_pcr *pcr = host->pcr; in sd_write_long_data() local
523 rtsx_pci_init_cmd(pcr); in sd_write_long_data()
524 sd_cmd_set_data_len(pcr, data->blocks, data->blksz); in sd_write_long_data()
525 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, IRQSTAT0, in sd_write_long_data()
527 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC3, in sd_write_long_data()
529 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC2, in sd_write_long_data()
531 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC1, in sd_write_long_data()
533 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC0, 0xFF, (u8)data_len); in sd_write_long_data()
534 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMACTL, in sd_write_long_data()
537 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, in sd_write_long_data()
539 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, cfg2); in sd_write_long_data()
540 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, 0xFF, in sd_write_long_data()
542 rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, in sd_write_long_data()
544 rtsx_pci_send_cmd_no_wait(pcr); in sd_write_long_data()
545 err = rtsx_pci_dma_transfer(pcr, data->sg, host->sg_count, 0, 10000); in sd_write_long_data()
573 rtsx_pci_write_register(host->pcr, SD_CFG1, in sd_enable_initial_mode()
579 rtsx_pci_write_register(host->pcr, SD_CFG1, in sd_disable_initial_mode()
620 struct rtsx_pcr *pcr = host->pcr; in sd_change_phase() local
626 rtsx_pci_init_cmd(pcr); in sd_change_phase()
628 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CHANGE_CLK, CHANGE_CLK); in sd_change_phase()
630 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, in sd_change_phase()
633 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, in sd_change_phase()
635 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPCLK0_CTL, PHASE_NOT_RESET, 0); in sd_change_phase()
636 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPCLK0_CTL, in sd_change_phase()
638 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CHANGE_CLK, 0); in sd_change_phase()
639 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, SD_ASYNC_FIFO_NOT_RST, 0); in sd_change_phase()
641 err = rtsx_pci_send_cmd(pcr, 100); in sd_change_phase()
698 err = rtsx_pci_read_register(host->pcr, SD_DATA_STATE, &val); in sd_wait_data_idle()
801 struct rtsx_pcr *pcr = host->pcr; in sd_request() local
816 err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); in sd_request()
822 mutex_lock(&pcr->pcr_mutex); in sd_request()
824 rtsx_pci_start_run(pcr); in sd_request()
826 rtsx_pci_switch_clock(pcr, host->clock, host->ssc_depth, in sd_request()
828 rtsx_pci_write_register(pcr, CARD_SELECT, 0x07, SD_MOD_SEL); in sd_request()
829 rtsx_pci_write_register(pcr, CARD_SHARE_MODE, in sd_request()
859 mutex_unlock(&pcr->pcr_mutex); in sd_request()
900 err = rtsx_pci_write_register(host->pcr, SD_CFG1, in sd_set_bus_width()
908 struct rtsx_pcr *pcr = host->pcr; in sd_power_on() local
914 rtsx_pci_init_cmd(pcr); in sd_power_on()
915 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SELECT, 0x07, SD_MOD_SEL); in sd_power_on()
916 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SHARE_MODE, in sd_power_on()
918 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, in sd_power_on()
920 err = rtsx_pci_send_cmd(pcr, 100); in sd_power_on()
924 err = rtsx_pci_card_pull_ctl_enable(pcr, RTSX_SD_CARD); in sd_power_on()
928 err = rtsx_pci_card_power_on(pcr, RTSX_SD_CARD); in sd_power_on()
932 err = rtsx_pci_write_register(pcr, CARD_OE, SD_OUTPUT_EN, SD_OUTPUT_EN); in sd_power_on()
942 struct rtsx_pcr *pcr = host->pcr; in sd_power_off() local
947 rtsx_pci_init_cmd(pcr); in sd_power_off()
949 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, SD_CLK_EN, 0); in sd_power_off()
950 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_OE, SD_OUTPUT_EN, 0); in sd_power_off()
952 err = rtsx_pci_send_cmd(pcr, 100); in sd_power_off()
956 err = rtsx_pci_card_power_off(pcr, RTSX_SD_CARD); in sd_power_off()
960 return rtsx_pci_card_pull_ctl_disable(pcr, RTSX_SD_CARD); in sd_power_off()
978 struct rtsx_pcr *pcr = host->pcr; in sd_set_timing() local
981 rtsx_pci_init_cmd(pcr); in sd_set_timing()
986 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, in sd_set_timing()
989 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, in sd_set_timing()
991 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, in sd_set_timing()
993 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); in sd_set_timing()
998 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, in sd_set_timing()
1001 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, in sd_set_timing()
1003 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, in sd_set_timing()
1005 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); in sd_set_timing()
1006 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_PUSH_POINT_CTL, in sd_set_timing()
1008 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_SAMPLE_POINT_CTL, in sd_set_timing()
1015 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, in sd_set_timing()
1017 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, in sd_set_timing()
1019 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, in sd_set_timing()
1021 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); in sd_set_timing()
1022 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_PUSH_POINT_CTL, in sd_set_timing()
1024 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_SAMPLE_POINT_CTL, in sd_set_timing()
1029 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, in sd_set_timing()
1031 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, in sd_set_timing()
1033 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, in sd_set_timing()
1035 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); in sd_set_timing()
1036 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, in sd_set_timing()
1038 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_SAMPLE_POINT_CTL, in sd_set_timing()
1043 err = rtsx_pci_send_cmd(pcr, 100); in sd_set_timing()
1051 struct rtsx_pcr *pcr = host->pcr; in sdmmc_set_ios() local
1056 if (rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD)) in sdmmc_set_ios()
1059 mutex_lock(&pcr->pcr_mutex); in sdmmc_set_ios()
1061 rtsx_pci_start_run(pcr); in sdmmc_set_ios()
1090 rtsx_pci_switch_clock(pcr, ios->clock, host->ssc_depth, in sdmmc_set_ios()
1093 mutex_unlock(&pcr->pcr_mutex); in sdmmc_set_ios()
1099 struct rtsx_pcr *pcr = host->pcr; in sdmmc_get_ro() local
1106 mutex_lock(&pcr->pcr_mutex); in sdmmc_get_ro()
1108 rtsx_pci_start_run(pcr); in sdmmc_get_ro()
1111 val = rtsx_pci_readl(pcr, RTSX_BIPR); in sdmmc_get_ro()
1116 mutex_unlock(&pcr->pcr_mutex); in sdmmc_get_ro()
1124 struct rtsx_pcr *pcr = host->pcr; in sdmmc_get_cd() local
1131 mutex_lock(&pcr->pcr_mutex); in sdmmc_get_cd()
1133 rtsx_pci_start_run(pcr); in sdmmc_get_cd()
1136 val = rtsx_pci_card_exist(pcr); in sdmmc_get_cd()
1141 mutex_unlock(&pcr->pcr_mutex); in sdmmc_get_cd()
1148 struct rtsx_pcr *pcr = host->pcr; in sd_wait_voltage_stable_1() local
1162 err = rtsx_pci_read_register(pcr, SD_BUS_STAT, &stat); in sd_wait_voltage_stable_1()
1171 err = rtsx_pci_write_register(pcr, SD_BUS_STAT, in sd_wait_voltage_stable_1()
1181 struct rtsx_pcr *pcr = host->pcr; in sd_wait_voltage_stable_2() local
1189 err = rtsx_pci_write_register(pcr, SD_BUS_STAT, 0xFF, SD_CLK_TOGGLE_EN); in sd_wait_voltage_stable_2()
1199 err = rtsx_pci_read_register(pcr, SD_BUS_STAT, &stat); in sd_wait_voltage_stable_2()
1210 rtsx_pci_write_register(pcr, SD_BUS_STAT, in sd_wait_voltage_stable_2()
1212 rtsx_pci_write_register(pcr, CARD_CLK_EN, 0xFF, 0); in sd_wait_voltage_stable_2()
1222 struct rtsx_pcr *pcr = host->pcr; in sdmmc_switch_voltage() local
1232 err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); in sdmmc_switch_voltage()
1236 mutex_lock(&pcr->pcr_mutex); in sdmmc_switch_voltage()
1238 rtsx_pci_start_run(pcr); in sdmmc_switch_voltage()
1251 err = rtsx_pci_switch_output_voltage(pcr, voltage); in sdmmc_switch_voltage()
1263 err = rtsx_pci_write_register(pcr, SD_BUS_STAT, in sdmmc_switch_voltage()
1266 mutex_unlock(&pcr->pcr_mutex); in sdmmc_switch_voltage()
1274 struct rtsx_pcr *pcr = host->pcr; in sdmmc_execute_tuning() local
1280 err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); in sdmmc_execute_tuning()
1284 mutex_lock(&pcr->pcr_mutex); in sdmmc_execute_tuning()
1286 rtsx_pci_start_run(pcr); in sdmmc_execute_tuning()
1291 err = sd_change_phase(host, SDR104_TX_PHASE(pcr), false); in sdmmc_execute_tuning()
1295 err = sd_change_phase(host, SDR50_TX_PHASE(pcr), false); in sdmmc_execute_tuning()
1299 err = sd_change_phase(host, DDR50_TX_PHASE(pcr), false); in sdmmc_execute_tuning()
1314 err = sd_change_phase(host, DDR50_RX_PHASE(pcr), true); in sdmmc_execute_tuning()
1317 mutex_unlock(&pcr->pcr_mutex); in sdmmc_execute_tuning()
1336 struct rtsx_pcr *pcr = host->pcr; in init_extra_caps() local
1338 dev_dbg(sdmmc_dev(host), "pcr->extra_caps = 0x%x\n", pcr->extra_caps); in init_extra_caps()
1340 if (pcr->extra_caps & EXTRA_CAPS_SD_SDR50) in init_extra_caps()
1342 if (pcr->extra_caps & EXTRA_CAPS_SD_SDR104) in init_extra_caps()
1344 if (pcr->extra_caps & EXTRA_CAPS_SD_DDR50) in init_extra_caps()
1346 if (pcr->extra_caps & EXTRA_CAPS_MMC_HSDDR) in init_extra_caps()
1348 if (pcr->extra_caps & EXTRA_CAPS_MMC_8BIT) in init_extra_caps()
1388 struct rtsx_pcr *pcr; in rtsx_pci_sdmmc_drv_probe() local
1394 pcr = handle->pcr; in rtsx_pci_sdmmc_drv_probe()
1395 if (!pcr) in rtsx_pci_sdmmc_drv_probe()
1405 host->pcr = pcr; in rtsx_pci_sdmmc_drv_probe()
1412 pcr->slots[RTSX_SD_CARD].p_dev = pdev; in rtsx_pci_sdmmc_drv_probe()
1413 pcr->slots[RTSX_SD_CARD].card_event = rtsx_pci_sdmmc_card_event; in rtsx_pci_sdmmc_drv_probe()
1427 struct rtsx_pcr *pcr; in rtsx_pci_sdmmc_drv_remove() local
1433 pcr = host->pcr; in rtsx_pci_sdmmc_drv_remove()
1434 pcr->slots[RTSX_SD_CARD].p_dev = NULL; in rtsx_pci_sdmmc_drv_remove()
1435 pcr->slots[RTSX_SD_CARD].card_event = NULL; in rtsx_pci_sdmmc_drv_remove()
1446 rtsx_pci_complete_unfinished_transfer(pcr); in rtsx_pci_sdmmc_drv_remove()