Lines Matching refs:pcr

18 static u8 rtl8411_get_ic_version(struct rtsx_pcr *pcr)  in rtl8411_get_ic_version()  argument
22 rtsx_pci_read_register(pcr, SYS_VER, &val); in rtl8411_get_ic_version()
26 static int rtl8411b_is_qfn48(struct rtsx_pcr *pcr) in rtl8411b_is_qfn48() argument
30 rtsx_pci_read_register(pcr, RTL8411B_PACKAGE_MODE, &val); in rtl8411b_is_qfn48()
38 static void rtl8411_fetch_vendor_settings(struct rtsx_pcr *pcr) in rtl8411_fetch_vendor_settings() argument
40 struct pci_dev *pdev = pcr->pci; in rtl8411_fetch_vendor_settings()
45 pcr_dbg(pcr, "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG1, reg1); in rtl8411_fetch_vendor_settings()
50 pcr->aspm_en = rtsx_reg_to_aspm(reg1); in rtl8411_fetch_vendor_settings()
51 pcr->sd30_drive_sel_1v8 = in rtl8411_fetch_vendor_settings()
53 pcr->card_drive_sel &= 0x3F; in rtl8411_fetch_vendor_settings()
54 pcr->card_drive_sel |= rtsx_reg_to_card_drive_sel(reg1); in rtl8411_fetch_vendor_settings()
57 pcr_dbg(pcr, "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG3, reg3); in rtl8411_fetch_vendor_settings()
58 pcr->sd30_drive_sel_3v3 = rtl8411_reg_to_sd30_drive_sel_3v3(reg3); in rtl8411_fetch_vendor_settings()
61 static void rtl8411b_fetch_vendor_settings(struct rtsx_pcr *pcr) in rtl8411b_fetch_vendor_settings() argument
63 struct pci_dev *pdev = pcr->pci; in rtl8411b_fetch_vendor_settings()
67 pcr_dbg(pcr, "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG1, reg); in rtl8411b_fetch_vendor_settings()
72 pcr->aspm_en = rtsx_reg_to_aspm(reg); in rtl8411b_fetch_vendor_settings()
73 pcr->sd30_drive_sel_1v8 = in rtl8411b_fetch_vendor_settings()
75 pcr->sd30_drive_sel_3v3 = in rtl8411b_fetch_vendor_settings()
79 static void rtl8411_force_power_down(struct rtsx_pcr *pcr, u8 pm_state, bool runtime) in rtl8411_force_power_down() argument
81 rtsx_pci_write_register(pcr, FPDCTL, 0x07, 0x07); in rtl8411_force_power_down()
84 static int rtl8411_extra_init_hw(struct rtsx_pcr *pcr) in rtl8411_extra_init_hw() argument
86 rtsx_pci_init_cmd(pcr); in rtl8411_extra_init_hw()
88 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DRIVE_SEL, in rtl8411_extra_init_hw()
89 0xFF, pcr->sd30_drive_sel_3v3); in rtl8411_extra_init_hw()
90 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CD_PAD_CTL, in rtl8411_extra_init_hw()
93 return rtsx_pci_send_cmd(pcr, 100); in rtl8411_extra_init_hw()
96 static int rtl8411b_extra_init_hw(struct rtsx_pcr *pcr) in rtl8411b_extra_init_hw() argument
98 rtsx_pci_init_cmd(pcr); in rtl8411b_extra_init_hw()
100 if (rtl8411b_is_qfn48(pcr)) in rtl8411b_extra_init_hw()
101 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, in rtl8411b_extra_init_hw()
103 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DRIVE_SEL, in rtl8411b_extra_init_hw()
104 0xFF, pcr->sd30_drive_sel_3v3); in rtl8411b_extra_init_hw()
105 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CD_PAD_CTL, in rtl8411b_extra_init_hw()
107 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, FUNC_FORCE_CTL, in rtl8411b_extra_init_hw()
110 return rtsx_pci_send_cmd(pcr, 100); in rtl8411b_extra_init_hw()
113 static int rtl8411_turn_on_led(struct rtsx_pcr *pcr) in rtl8411_turn_on_led() argument
115 return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x00); in rtl8411_turn_on_led()
118 static int rtl8411_turn_off_led(struct rtsx_pcr *pcr) in rtl8411_turn_off_led() argument
120 return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x01); in rtl8411_turn_off_led()
123 static int rtl8411_enable_auto_blink(struct rtsx_pcr *pcr) in rtl8411_enable_auto_blink() argument
125 return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0xFF, 0x0D); in rtl8411_enable_auto_blink()
128 static int rtl8411_disable_auto_blink(struct rtsx_pcr *pcr) in rtl8411_disable_auto_blink() argument
130 return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0x08, 0x00); in rtl8411_disable_auto_blink()
133 static int rtl8411_card_power_on(struct rtsx_pcr *pcr, int card) in rtl8411_card_power_on() argument
137 rtsx_pci_init_cmd(pcr); in rtl8411_card_power_on()
138 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, in rtl8411_card_power_on()
140 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_CTL, in rtl8411_card_power_on()
142 err = rtsx_pci_send_cmd(pcr, 100); in rtl8411_card_power_on()
149 err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_card_power_on()
156 err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_card_power_on()
163 err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_card_power_on()
168 return rtsx_pci_write_register(pcr, LDO_CTL, BPP_LDO_POWB, BPP_LDO_ON); in rtl8411_card_power_on()
171 static int rtl8411_card_power_off(struct rtsx_pcr *pcr, int card) in rtl8411_card_power_off() argument
175 err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_card_power_off()
180 return rtsx_pci_write_register(pcr, LDO_CTL, in rtl8411_card_power_off()
184 static int rtl8411_do_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage, in rtl8411_do_switch_output_voltage() argument
192 err = rtsx_pci_write_register(pcr, in rtl8411_do_switch_output_voltage()
193 SD30_DRIVE_SEL, 0x07, pcr->sd30_drive_sel_3v3); in rtl8411_do_switch_output_voltage()
198 err = rtsx_pci_write_register(pcr, in rtl8411_do_switch_output_voltage()
199 SD30_DRIVE_SEL, 0x07, pcr->sd30_drive_sel_1v8); in rtl8411_do_switch_output_voltage()
207 return rtsx_pci_write_register(pcr, LDO_CTL, mask, val); in rtl8411_do_switch_output_voltage()
210 static int rtl8411_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) in rtl8411_switch_output_voltage() argument
212 return rtl8411_do_switch_output_voltage(pcr, voltage, in rtl8411_switch_output_voltage()
216 static int rtl8402_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) in rtl8402_switch_output_voltage() argument
218 return rtl8411_do_switch_output_voltage(pcr, voltage, in rtl8402_switch_output_voltage()
222 static unsigned int rtl8411_cd_deglitch(struct rtsx_pcr *pcr) in rtl8411_cd_deglitch() argument
226 card_exist = rtsx_pci_readl(pcr, RTSX_BIPR); in rtl8411_cd_deglitch()
230 rtsx_pci_write_register(pcr, CD_PAD_CTL, in rtl8411_cd_deglitch()
233 rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x00); in rtl8411_cd_deglitch()
238 rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_cd_deglitch()
242 card_exist = rtsx_pci_readl(pcr, RTSX_BIPR); in rtl8411_cd_deglitch()
250 rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_cd_deglitch()
253 pcr_dbg(pcr, "After CD deglitch, card_exist = 0x%x\n", in rtl8411_cd_deglitch()
259 rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x40); in rtl8411_cd_deglitch()
260 rtsx_pci_write_register(pcr, CD_PAD_CTL, in rtl8411_cd_deglitch()
264 rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x80); in rtl8411_cd_deglitch()
265 rtsx_pci_write_register(pcr, CD_PAD_CTL, in rtl8411_cd_deglitch()
462 static void rtl8411_init_common_params(struct rtsx_pcr *pcr) in rtl8411_init_common_params() argument
464 pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104; in rtl8411_init_common_params()
465 pcr->num_slots = 2; in rtl8411_init_common_params()
466 pcr->flags = 0; in rtl8411_init_common_params()
467 pcr->card_drive_sel = RTL8411_CARD_DRIVE_DEFAULT; in rtl8411_init_common_params()
468 pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B; in rtl8411_init_common_params()
469 pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D; in rtl8411_init_common_params()
470 pcr->aspm_en = ASPM_L1_EN; in rtl8411_init_common_params()
471 pcr->aspm_mode = ASPM_MODE_CFG; in rtl8411_init_common_params()
472 pcr->tx_initial_phase = SET_CLOCK_PHASE(23, 7, 14); in rtl8411_init_common_params()
473 pcr->rx_initial_phase = SET_CLOCK_PHASE(4, 3, 10); in rtl8411_init_common_params()
474 pcr->ic_version = rtl8411_get_ic_version(pcr); in rtl8411_init_common_params()
477 void rtl8411_init_params(struct rtsx_pcr *pcr) in rtl8411_init_params() argument
479 rtl8411_init_common_params(pcr); in rtl8411_init_params()
480 pcr->ops = &rtl8411_pcr_ops; in rtl8411_init_params()
481 set_pull_ctrl_tables(pcr, rtl8411); in rtl8411_init_params()
484 void rtl8411b_init_params(struct rtsx_pcr *pcr) in rtl8411b_init_params() argument
486 rtl8411_init_common_params(pcr); in rtl8411b_init_params()
487 pcr->ops = &rtl8411b_pcr_ops; in rtl8411b_init_params()
488 if (rtl8411b_is_qfn48(pcr)) in rtl8411b_init_params()
489 set_pull_ctrl_tables(pcr, rtl8411b_qfn48); in rtl8411b_init_params()
491 set_pull_ctrl_tables(pcr, rtl8411b_qfn64); in rtl8411b_init_params()
494 void rtl8402_init_params(struct rtsx_pcr *pcr) in rtl8402_init_params() argument
496 rtl8411_init_common_params(pcr); in rtl8402_init_params()
497 pcr->ops = &rtl8402_pcr_ops; in rtl8402_init_params()
498 set_pull_ctrl_tables(pcr, rtl8411); in rtl8402_init_params()