Lines Matching defs:pcr

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