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
43 rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, ®1); in rtl8411_fetch_vendor_settings()
44 pcr_dbg(pcr, "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG1, reg1); in rtl8411_fetch_vendor_settings()
49 pcr->aspm_en = rtsx_reg_to_aspm(reg1); in rtl8411_fetch_vendor_settings()
50 pcr->sd30_drive_sel_1v8 = in rtl8411_fetch_vendor_settings()
52 pcr->card_drive_sel &= 0x3F; in rtl8411_fetch_vendor_settings()
53 pcr->card_drive_sel |= rtsx_reg_to_card_drive_sel(reg1); in rtl8411_fetch_vendor_settings()
55 rtsx_pci_read_config_byte(pcr, PCR_SETTING_REG3, ®3); in rtl8411_fetch_vendor_settings()
56 pcr_dbg(pcr, "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG3, reg3); in rtl8411_fetch_vendor_settings()
57 pcr->sd30_drive_sel_3v3 = rtl8411_reg_to_sd30_drive_sel_3v3(reg3); in rtl8411_fetch_vendor_settings()
60 static void rtl8411b_fetch_vendor_settings(struct rtsx_pcr *pcr) in rtl8411b_fetch_vendor_settings() argument
64 rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, ®); in rtl8411b_fetch_vendor_settings()
65 pcr_dbg(pcr, "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG1, reg); in rtl8411b_fetch_vendor_settings()
70 pcr->aspm_en = rtsx_reg_to_aspm(reg); in rtl8411b_fetch_vendor_settings()
71 pcr->sd30_drive_sel_1v8 = in rtl8411b_fetch_vendor_settings()
73 pcr->sd30_drive_sel_3v3 = in rtl8411b_fetch_vendor_settings()
77 static void rtl8411_force_power_down(struct rtsx_pcr *pcr, u8 pm_state) in rtl8411_force_power_down() argument
79 rtsx_pci_write_register(pcr, FPDCTL, 0x07, 0x07); in rtl8411_force_power_down()
82 static int rtl8411_extra_init_hw(struct rtsx_pcr *pcr) in rtl8411_extra_init_hw() argument
84 rtsx_pci_init_cmd(pcr); in rtl8411_extra_init_hw()
86 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DRIVE_SEL, in rtl8411_extra_init_hw()
87 0xFF, pcr->sd30_drive_sel_3v3); in rtl8411_extra_init_hw()
88 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CD_PAD_CTL, in rtl8411_extra_init_hw()
91 return rtsx_pci_send_cmd(pcr, 100); in rtl8411_extra_init_hw()
94 static int rtl8411b_extra_init_hw(struct rtsx_pcr *pcr) in rtl8411b_extra_init_hw() argument
96 rtsx_pci_init_cmd(pcr); in rtl8411b_extra_init_hw()
98 if (rtl8411b_is_qfn48(pcr)) in rtl8411b_extra_init_hw()
99 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, in rtl8411b_extra_init_hw()
101 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DRIVE_SEL, in rtl8411b_extra_init_hw()
102 0xFF, pcr->sd30_drive_sel_3v3); in rtl8411b_extra_init_hw()
103 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CD_PAD_CTL, in rtl8411b_extra_init_hw()
105 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, FUNC_FORCE_CTL, in rtl8411b_extra_init_hw()
108 return rtsx_pci_send_cmd(pcr, 100); in rtl8411b_extra_init_hw()
111 static int rtl8411_turn_on_led(struct rtsx_pcr *pcr) in rtl8411_turn_on_led() argument
113 return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x00); in rtl8411_turn_on_led()
116 static int rtl8411_turn_off_led(struct rtsx_pcr *pcr) in rtl8411_turn_off_led() argument
118 return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x01); in rtl8411_turn_off_led()
121 static int rtl8411_enable_auto_blink(struct rtsx_pcr *pcr) in rtl8411_enable_auto_blink() argument
123 return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0xFF, 0x0D); in rtl8411_enable_auto_blink()
126 static int rtl8411_disable_auto_blink(struct rtsx_pcr *pcr) in rtl8411_disable_auto_blink() argument
128 return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0x08, 0x00); in rtl8411_disable_auto_blink()
131 static int rtl8411_card_power_on(struct rtsx_pcr *pcr, int card) in rtl8411_card_power_on() argument
135 rtsx_pci_init_cmd(pcr); in rtl8411_card_power_on()
136 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, in rtl8411_card_power_on()
138 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_CTL, in rtl8411_card_power_on()
140 err = rtsx_pci_send_cmd(pcr, 100); in rtl8411_card_power_on()
147 err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_card_power_on()
154 err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_card_power_on()
161 err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_card_power_on()
166 return rtsx_pci_write_register(pcr, LDO_CTL, BPP_LDO_POWB, BPP_LDO_ON); in rtl8411_card_power_on()
169 static int rtl8411_card_power_off(struct rtsx_pcr *pcr, int card) in rtl8411_card_power_off() argument
173 err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_card_power_off()
178 return rtsx_pci_write_register(pcr, LDO_CTL, in rtl8411_card_power_off()
182 static int rtl8411_do_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage, in rtl8411_do_switch_output_voltage() argument
190 err = rtsx_pci_write_register(pcr, in rtl8411_do_switch_output_voltage()
191 SD30_DRIVE_SEL, 0x07, pcr->sd30_drive_sel_3v3); in rtl8411_do_switch_output_voltage()
196 err = rtsx_pci_write_register(pcr, in rtl8411_do_switch_output_voltage()
197 SD30_DRIVE_SEL, 0x07, pcr->sd30_drive_sel_1v8); in rtl8411_do_switch_output_voltage()
205 return rtsx_pci_write_register(pcr, LDO_CTL, mask, val); in rtl8411_do_switch_output_voltage()
208 static int rtl8411_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) in rtl8411_switch_output_voltage() argument
210 return rtl8411_do_switch_output_voltage(pcr, voltage, in rtl8411_switch_output_voltage()
214 static int rtl8402_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) in rtl8402_switch_output_voltage() argument
216 return rtl8411_do_switch_output_voltage(pcr, voltage, in rtl8402_switch_output_voltage()
220 static unsigned int rtl8411_cd_deglitch(struct rtsx_pcr *pcr) in rtl8411_cd_deglitch() argument
224 card_exist = rtsx_pci_readl(pcr, RTSX_BIPR); in rtl8411_cd_deglitch()
228 rtsx_pci_write_register(pcr, CD_PAD_CTL, in rtl8411_cd_deglitch()
231 rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x00); in rtl8411_cd_deglitch()
236 rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_cd_deglitch()
240 card_exist = rtsx_pci_readl(pcr, RTSX_BIPR); in rtl8411_cd_deglitch()
248 rtsx_pci_write_register(pcr, CARD_PWR_CTL, in rtl8411_cd_deglitch()
251 pcr_dbg(pcr, "After CD deglitch, card_exist = 0x%x\n", in rtl8411_cd_deglitch()
257 rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x40); in rtl8411_cd_deglitch()
258 rtsx_pci_write_register(pcr, CD_PAD_CTL, in rtl8411_cd_deglitch()
262 rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x80); in rtl8411_cd_deglitch()
263 rtsx_pci_write_register(pcr, CD_PAD_CTL, in rtl8411_cd_deglitch()
460 static void rtl8411_init_common_params(struct rtsx_pcr *pcr) in rtl8411_init_common_params() argument
462 pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104; in rtl8411_init_common_params()
463 pcr->num_slots = 2; in rtl8411_init_common_params()
464 pcr->flags = 0; in rtl8411_init_common_params()
465 pcr->card_drive_sel = RTL8411_CARD_DRIVE_DEFAULT; in rtl8411_init_common_params()
466 pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B; in rtl8411_init_common_params()
467 pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D; in rtl8411_init_common_params()
468 pcr->aspm_en = ASPM_L1_EN; in rtl8411_init_common_params()
469 pcr->tx_initial_phase = SET_CLOCK_PHASE(23, 7, 14); in rtl8411_init_common_params()
470 pcr->rx_initial_phase = SET_CLOCK_PHASE(4, 3, 10); in rtl8411_init_common_params()
471 pcr->ic_version = rtl8411_get_ic_version(pcr); in rtl8411_init_common_params()
474 void rtl8411_init_params(struct rtsx_pcr *pcr) in rtl8411_init_params() argument
476 rtl8411_init_common_params(pcr); in rtl8411_init_params()
477 pcr->ops = &rtl8411_pcr_ops; in rtl8411_init_params()
478 set_pull_ctrl_tables(pcr, rtl8411); in rtl8411_init_params()
481 void rtl8411b_init_params(struct rtsx_pcr *pcr) in rtl8411b_init_params() argument
483 rtl8411_init_common_params(pcr); in rtl8411b_init_params()
484 pcr->ops = &rtl8411b_pcr_ops; in rtl8411b_init_params()
485 if (rtl8411b_is_qfn48(pcr)) in rtl8411b_init_params()
486 set_pull_ctrl_tables(pcr, rtl8411b_qfn48); in rtl8411b_init_params()
488 set_pull_ctrl_tables(pcr, rtl8411b_qfn64); in rtl8411b_init_params()
491 void rtl8402_init_params(struct rtsx_pcr *pcr) in rtl8402_init_params() argument
493 rtl8411_init_common_params(pcr); in rtl8402_init_params()
494 pcr->ops = &rtl8402_pcr_ops; in rtl8402_init_params()
495 set_pull_ctrl_tables(pcr, rtl8411); in rtl8402_init_params()