mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
mfd: mmc: rtsx: Change default tx phase
The default phase can meet most cards' requirement, but it is not the optimal one. In some extreme situation, the rx phase point produced by the following tuning process will drift quite a distance. Before tuning UHS card, this patch will set a more proper initial tx phase point, which is calculated from statistic data, and can achieve a much better tx signal quality. Signed-off-by: Wei WANG <[email protected]> Acked-by: Lee Jones <[email protected]> Acked-by: Chris Ball <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
This commit is contained in:
parent
828fa1e601
commit
84d72f9cc2
7 changed files with 69 additions and 16 deletions
|
|
@ -452,6 +452,8 @@ void rtl8411_init_params(struct rtsx_pcr *pcr)
|
|||
pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B;
|
||||
pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D;
|
||||
pcr->aspm_en = ASPM_L1_EN;
|
||||
pcr->tx_initial_phase = SET_CLOCK_PHASE(23, 7, 14);
|
||||
pcr->rx_initial_phase = SET_CLOCK_PHASE(4, 3, 10);
|
||||
|
||||
pcr->ic_version = rtl8411_get_ic_version(pcr);
|
||||
pcr->sd_pull_ctl_enable_tbl = rtl8411_sd_pull_ctl_enable_tbl;
|
||||
|
|
@ -471,6 +473,8 @@ void rtl8411b_init_params(struct rtsx_pcr *pcr)
|
|||
pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B;
|
||||
pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D;
|
||||
pcr->aspm_en = ASPM_L1_EN;
|
||||
pcr->tx_initial_phase = SET_CLOCK_PHASE(23, 7, 14);
|
||||
pcr->rx_initial_phase = SET_CLOCK_PHASE(4, 3, 10);
|
||||
|
||||
pcr->ic_version = rtl8411_get_ic_version(pcr);
|
||||
|
||||
|
|
|
|||
|
|
@ -270,6 +270,8 @@ void rts5209_init_params(struct rtsx_pcr *pcr)
|
|||
pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B;
|
||||
pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D;
|
||||
pcr->aspm_en = ASPM_L1_EN;
|
||||
pcr->tx_initial_phase = SET_CLOCK_PHASE(27, 27, 16);
|
||||
pcr->rx_initial_phase = SET_CLOCK_PHASE(24, 6, 5);
|
||||
|
||||
pcr->ic_version = rts5209_get_ic_version(pcr);
|
||||
pcr->sd_pull_ctl_enable_tbl = rts5209_sd_pull_ctl_enable_tbl;
|
||||
|
|
|
|||
|
|
@ -291,6 +291,8 @@ void rts5227_init_params(struct rtsx_pcr *pcr)
|
|||
pcr->sd30_drive_sel_1v8 = CFG_DRIVER_TYPE_B;
|
||||
pcr->sd30_drive_sel_3v3 = CFG_DRIVER_TYPE_B;
|
||||
pcr->aspm_en = ASPM_L1_EN;
|
||||
pcr->tx_initial_phase = SET_CLOCK_PHASE(27, 27, 15);
|
||||
pcr->rx_initial_phase = SET_CLOCK_PHASE(30, 7, 7);
|
||||
|
||||
pcr->sd_pull_ctl_enable_tbl = rts5227_sd_pull_ctl_enable_tbl;
|
||||
pcr->sd_pull_ctl_disable_tbl = rts5227_sd_pull_ctl_disable_tbl;
|
||||
|
|
|
|||
|
|
@ -261,6 +261,8 @@ void rts5229_init_params(struct rtsx_pcr *pcr)
|
|||
pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B;
|
||||
pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D;
|
||||
pcr->aspm_en = ASPM_L1_EN;
|
||||
pcr->tx_initial_phase = SET_CLOCK_PHASE(27, 27, 15);
|
||||
pcr->rx_initial_phase = SET_CLOCK_PHASE(30, 6, 6);
|
||||
|
||||
pcr->ic_version = rts5229_get_ic_version(pcr);
|
||||
if (pcr->ic_version == IC_VER_C) {
|
||||
|
|
|
|||
|
|
@ -298,6 +298,8 @@ void rts5249_init_params(struct rtsx_pcr *pcr)
|
|||
pcr->sd30_drive_sel_1v8 = CFG_DRIVER_TYPE_C;
|
||||
pcr->sd30_drive_sel_3v3 = CFG_DRIVER_TYPE_B;
|
||||
pcr->aspm_en = ASPM_L1_EN;
|
||||
pcr->tx_initial_phase = SET_CLOCK_PHASE(1, 29, 16);
|
||||
pcr->rx_initial_phase = SET_CLOCK_PHASE(24, 6, 5);
|
||||
|
||||
pcr->ic_version = rts5249_get_ic_version(pcr);
|
||||
pcr->sd_pull_ctl_enable_tbl = rts5249_sd_pull_ctl_enable_tbl;
|
||||
|
|
|
|||
Loading…
Reference in a new issue