Lines Matching refs:phy
70 static inline uint16_t *phy_io_addr(void *phy, uint32_t addr) in phy_io_addr() argument
72 return phy + (map_phy_addr_space(addr) << 2); in phy_io_addr()
75 static inline void phy_io_write16(uint16_t *phy, uint32_t addr, uint16_t data) in phy_io_write16() argument
77 mmio_write_16((uintptr_t)phy_io_addr(phy, addr), data); in phy_io_write16()
83 static inline uint16_t phy_io_read16(uint16_t *phy, uint32_t addr) in phy_io_read16() argument
85 uint16_t reg = mmio_read_16((uintptr_t) phy_io_addr(phy, addr)); in phy_io_read16()
99 static void read_phy_reg(uint16_t *phy, uint32_t addr, in read_phy_reg() argument
105 buf[i] = phy_io_read16(phy, (addr + i)); in read_phy_reg()
148 uint16_t *phy; in get_cdd_val() local
157 phy = phy_ptr[i]; in get_cdd_val()
158 if (phy == NULL) { in get_cdd_val()
162 phy_io_write16(phy, t_apbonly | in get_cdd_val()
165 read_phy_reg(phy, CDD_VAL_READ_ADDR, in get_cdd_val()
168 phy_io_write16(phy, t_apbonly | in get_cdd_val()
381 uint16_t *phy = NULL, value = 0x0; in save_phy_training_values() local
392 phy = phy_ptr[j]; in save_phy_training_values()
397 phy_io_write16(phy, t_apbonly | in save_phy_training_values()
400 phy_io_write16(phy, t_drtub | in save_phy_training_values()
415 value = phy_io_read16(phy, training_1D_values[i].addr); in save_phy_training_values()
419 phy_io_addr(phy, in save_phy_training_values()
432 value = phy_io_read16(phy, in save_phy_training_values()
438 value, phy_io_addr(phy, in save_phy_training_values()
456 phy_io_write16(phy, t_drtub | in save_phy_training_values()
459 phy_io_write16(phy, t_apbonly | in save_phy_training_values()
476 uint16_t *phy = NULL; in restore_phy_training_values() local
482 phy = phy_ptr[j]; in restore_phy_training_values()
497 phy_io_write16(phy, t_apbonly | in restore_phy_training_values()
500 phy_io_write16(phy, t_drtub | in restore_phy_training_values()
516 phy_io_write16(phy, training_1D_values[i].addr, in restore_phy_training_values()
522 phy_io_addr(phy, in restore_phy_training_values()
545 phy_io_write16(phy, training_2D_values[i].addr, in restore_phy_training_values()
551 phy_io_addr(phy, in restore_phy_training_values()
562 phy_io_write16(phy, t_drtub | in restore_phy_training_values()
565 phy_io_write16(phy, t_apbonly | in restore_phy_training_values()
575 static void load_pieimage(uint16_t *phy, in load_pieimage() argument
604 phy_io_write16(phy, image[i].addr, image[i].data); in load_pieimage()
608 static void prog_acsm_playback(uint16_t *phy, in prog_acsm_playback() argument
634 phy_io_write16(phy, t_acsm | (csr_acsm_playback0x0_addr + in prog_acsm_playback()
636 phy_io_write16(phy, t_acsm | (csr_acsm_playback1x0_addr + in prog_acsm_playback()
641 static void prog_acsm_ctr(uint16_t *phy, in prog_acsm_ctr() argument
648 phy_io_write16(phy, t_acsm | csr_acsm_ctrl13_addr, in prog_acsm_ctr()
651 phy_io_write16(phy, t_acsm | csr_acsm_ctrl0_addr, in prog_acsm_ctr()
655 static void prog_cal_rate_run(uint16_t *phy, in prog_cal_rate_run() argument
669 phy_io_write16(phy, addr, cal_rate); in prog_cal_rate_run()
672 static void prog_seq0bdly0(uint16_t *phy, in prog_seq0bdly0() argument
711 phy_io_write16(phy, addr, ps_count[0]); in prog_seq0bdly0()
713 debug("seq0bdly0 = 0x%x\n", phy_io_read16(phy, addr)); in prog_seq0bdly0()
716 phy_io_write16(phy, addr, ps_count[1]); in prog_seq0bdly0()
718 debug("seq0bdly1 = 0x%x\n", phy_io_read16(phy, addr)); in prog_seq0bdly0()
721 phy_io_write16(phy, addr, ps_count[2]); in prog_seq0bdly0()
723 debug("seq0bdly2 = 0x%x\n", phy_io_read16(phy, addr)); in prog_seq0bdly0()
726 phy_io_write16(phy, addr, ps_count[3]); in prog_seq0bdly0()
728 debug("seq0bdly3 = 0x%x\n", phy_io_read16(phy, addr)); in prog_seq0bdly0()
737 uint16_t *phy; in i_load_pie() local
740 phy = phy_ptr[i]; in i_load_pie()
741 if (phy == NULL) { in i_load_pie()
745 phy_io_write16(phy, in i_load_pie()
749 load_pieimage(phy, input->basic.dimm_type); in i_load_pie()
751 prog_seq0bdly0(phy, input); in i_load_pie()
752 phy_io_write16(phy, t_initeng | csr_seq0bdisable_flag0_addr, in i_load_pie()
754 phy_io_write16(phy, t_initeng | csr_seq0bdisable_flag1_addr, in i_load_pie()
756 phy_io_write16(phy, t_initeng | csr_seq0bdisable_flag2_addr, in i_load_pie()
758 phy_io_write16(phy, t_initeng | csr_seq0bdisable_flag3_addr, in i_load_pie()
760 phy_io_write16(phy, t_initeng | csr_seq0bdisable_flag4_addr, in i_load_pie()
762 phy_io_write16(phy, t_initeng | csr_seq0bdisable_flag5_addr, in i_load_pie()
764 phy_io_write16(phy, t_initeng | csr_seq0bdisable_flag6_addr, in i_load_pie()
768 phy_io_write16(phy, t_initeng | csr_seq0bdisable_flag7_addr, in i_load_pie()
770 prog_acsm_playback(phy, input, msg); /* rdimm */ in i_load_pie()
771 prog_acsm_ctr(phy, input); /* rdimm */ in i_load_pie()
773 phy_io_write16(phy, t_master | csr_cal_zap_addr, U(0x1)); in i_load_pie()
774 prog_cal_rate_run(phy, input); in i_load_pie()
776 phy_io_write16(phy, t_drtub | csr_ucclk_hclk_enables_addr, in i_load_pie()
779 phy_io_write16(phy, t_apbonly | csr_micro_cont_mux_sel_addr, 1U); in i_load_pie()
1023 static void prog_tx_pre_drv_mode(uint16_t *phy, in prog_tx_pre_drv_mode() argument
1045 phy_io_write16(phy, addr, tx_slew_rate); in prog_tx_pre_drv_mode()
1050 static void prog_atx_pre_drv_mode(uint16_t *phy, in prog_atx_pre_drv_mode() argument
1084 phy_io_write16(phy, addr, atx_slew_rate); in prog_atx_pre_drv_mode()
1088 static void prog_enable_cs_multicast(uint16_t *phy, in prog_enable_cs_multicast() argument
1098 phy_io_write16(phy, addr, input->adv.cast_cs_to_cid); in prog_enable_cs_multicast()
1101 static void prog_dfi_rd_data_cs_dest_map(uint16_t *phy, in prog_dfi_rd_data_cs_dest_map() argument
1119 phy_io_write16(phy, in prog_dfi_rd_data_cs_dest_map()
1136 phy_io_write16(phy, in prog_dfi_rd_data_cs_dest_map()
1139 phy_io_write16(phy, in prog_dfi_rd_data_cs_dest_map()
1160 phy_io_write16(phy, t_master | csr_dfi_rd_data_cs_dest_map_addr, in prog_dfi_rd_data_cs_dest_map()
1162 phy_io_write16(phy, t_master | csr_dfi_wr_data_cs_dest_map_addr, in prog_dfi_rd_data_cs_dest_map()
1171 static void prog_pll_ctrl(uint16_t *phy, in prog_pll_ctrl() argument
1180 phy_io_write16(phy, addr, pll_ctrl1); in prog_pll_ctrl()
1182 debug("pll_ctrl1 = 0x%x\n", phy_io_read16(phy, addr)); in prog_pll_ctrl()
1185 phy_io_write16(phy, addr, pll_test_mode); in prog_pll_ctrl()
1187 debug("pll_test_mode = 0x%x\n", phy_io_read16(phy, addr)); in prog_pll_ctrl()
1190 phy_io_write16(phy, addr, pll_ctrl4); in prog_pll_ctrl()
1192 debug("pll_ctrl4 = 0x%x\n", phy_io_read16(phy, addr)); in prog_pll_ctrl()
1195 static void prog_pll_ctrl2(uint16_t *phy, in prog_pll_ctrl2() argument
1217 phy_io_write16(phy, addr, pll_ctrl2); in prog_pll_ctrl2()
1219 debug("pll_ctrl2 = 0x%x\n", phy_io_read16(phy, addr)); in prog_pll_ctrl2()
1222 static void prog_dll_lck_param(uint16_t *phy, const struct input *input) in prog_dll_lck_param() argument
1226 phy_io_write16(phy, addr, U(0x212)); in prog_dll_lck_param()
1227 debug("dll_lck_param = 0x%x\n", phy_io_read16(phy, addr)); in prog_dll_lck_param()
1230 static void prog_dll_gain_ctl(uint16_t *phy, const struct input *input) in prog_dll_gain_ctl() argument
1234 phy_io_write16(phy, addr, U(0x61)); in prog_dll_gain_ctl()
1235 debug("dll_gain_ctl = 0x%x\n", phy_io_read16(phy, addr)); in prog_dll_gain_ctl()
1238 static void prog_pll_pwr_dn(uint16_t *phy, in prog_pll_pwr_dn() argument
1244 phy_io_write16(phy, addr, 0U); in prog_pll_pwr_dn()
1246 debug("pll_pwrdn = 0x%x\n", phy_io_read16(phy, addr)); in prog_pll_pwr_dn()
1249 static void prog_ard_ptr_init_val(uint16_t *phy, in prog_ard_ptr_init_val() argument
1261 phy_io_write16(phy, addr, ard_ptr_init_val); in prog_ard_ptr_init_val()
1264 static void prog_dqs_preamble_control(uint16_t *phy, in prog_dqs_preamble_control() argument
1285 phy_io_write16(phy, addr, data); in prog_dqs_preamble_control()
1289 phy_io_write16(phy, addr, data); in prog_dqs_preamble_control()
1292 static void prog_proc_odt_time_ctl(uint16_t *phy, in prog_proc_odt_time_ctl() argument
1315 phy_io_write16(phy, addr, proc_odt_time_ctl); in prog_proc_odt_time_ctl()
1382 static void prog_tx_odt_drv_stren(uint16_t *phy, in prog_tx_odt_drv_stren() argument
1404 phy_io_write16(phy, addr, tx_odt_drv_stren); in prog_tx_odt_drv_stren()
1457 static void prog_tx_impedance_ctrl1(uint16_t *phy, in prog_tx_impedance_ctrl1() argument
1478 phy_io_write16(phy, addr, tx_impedance_ctrl1); in prog_tx_impedance_ctrl1()
1555 static void prog_atx_impedance(uint16_t *phy, in prog_atx_impedance() argument
1579 phy_io_write16(phy, addr, atx_impedance); in prog_atx_impedance()
1583 static void prog_dfi_mode(uint16_t *phy, in prog_dfi_mode() argument
1595 phy_io_write16(phy, addr, dfi_mode); in prog_dfi_mode()
1598 static void prog_acx4_anib_dis(uint16_t *phy, const struct input *input) in prog_acx4_anib_dis() argument
1603 phy_io_write16(phy, addr, 0x0); in prog_acx4_anib_dis()
1604 debug("%s 0x%x\n", __func__, phy_io_read16(phy, addr)); in prog_acx4_anib_dis()
1607 static void prog_dfi_camode(uint16_t *phy, in prog_dfi_camode() argument
1613 phy_io_write16(phy, addr, dfi_camode); in prog_dfi_camode()
1616 static void prog_cal_drv_str0(uint16_t *phy, in prog_cal_drv_str0() argument
1629 phy_io_write16(phy, addr, cal_drv_str0); in prog_cal_drv_str0()
1632 static void prog_cal_uclk_info(uint16_t *phy, in prog_cal_uclk_info() argument
1644 phy_io_write16(phy, addr, cal_uclk_ticks_per1u_s); in prog_cal_uclk_info()
1647 static void prog_cal_rate(uint16_t *phy, in prog_cal_rate() argument
1660 phy_io_write16(phy, addr, cal_rate); in prog_cal_rate()
1663 static void prog_vref_in_global(uint16_t *phy, in prog_vref_in_global() argument
1682 phy_io_write16(phy, addr, vref_in_global); in prog_vref_in_global()
1685 static void prog_dq_dqs_rcv_cntrl(uint16_t *phy, in prog_dq_dqs_rcv_cntrl() argument
1712 phy_io_write16(phy, addr, dq_dqs_rcv_cntrl); in prog_dq_dqs_rcv_cntrl()
1717 static void prog_mem_alert_control(uint16_t *phy, in prog_mem_alert_control() argument
1744 phy_io_write16(phy, addr, mem_alert_control); in prog_mem_alert_control()
1746 phy_io_write16(phy, addr, mem_alert_control2); in prog_mem_alert_control()
1750 static void prog_dfi_freq_ratio(uint16_t *phy, in prog_dfi_freq_ratio() argument
1757 phy_io_write16(phy, addr, dfi_freq_ratio); in prog_dfi_freq_ratio()
1760 static void prog_tristate_mode_ca(uint16_t *phy, in prog_tristate_mode_ca() argument
1774 phy_io_write16(phy, addr, tristate_mode_ca); in prog_tristate_mode_ca()
1777 static void prog_dfi_xlat(uint16_t *phy, in prog_dfi_xlat() argument
1796 phy_io_write16(phy, addr, dfifreqxlat_dat); in prog_dfi_xlat()
1800 static void prog_dbyte_misc_mode(uint16_t *phy, in prog_dbyte_misc_mode() argument
1825 phy_io_write16(phy, addr, dq_dqs_rcv_cntrl1_1); in prog_dbyte_misc_mode()
1829 phy_io_write16(phy, addr, dbyte_misc_mode); in prog_dbyte_misc_mode()
1831 phy_io_write16(phy, addr, dq_dqs_rcv_cntrl1); in prog_dbyte_misc_mode()
1836 static void prog_master_x4config(uint16_t *phy, in prog_master_x4config() argument
1845 phy_io_write16(phy, addr, master_x4config); in prog_master_x4config()
1848 static void prog_dmipin_present(uint16_t *phy, in prog_dmipin_present() argument
1856 phy_io_write16(phy, addr, dmipin_present); in prog_dmipin_present()
1859 static void prog_dfi_phyupd(uint16_t *phy, in prog_dfi_phyupd() argument
1866 dfiphyupd_dat = phy_io_read16(phy, addr) & in prog_dfi_phyupd()
1869 phy_io_write16(phy, addr, dfiphyupd_dat); in prog_dfi_phyupd()
1872 static void prog_cal_misc2(uint16_t *phy, in prog_cal_misc2() argument
1879 cal_misc2_dat = phy_io_read16(phy, addr) | in prog_cal_misc2()
1882 phy_io_write16(phy, addr, cal_misc2_dat); in prog_cal_misc2()
1887 cal_offsets_dat = (phy_io_read16(phy, addr) & ~csr_cal_drv_pdth_mask) in prog_cal_misc2()
1890 phy_io_write16(phy, addr, cal_offsets_dat); in prog_cal_misc2()
1899 uint16_t *phy; in c_init_phy_config() local
1903 phy = phy_ptr[i]; in c_init_phy_config()
1904 if (phy == NULL) { in c_init_phy_config()
1909 prog_dfi_phyupd(phy, input); in c_init_phy_config()
1910 prog_cal_misc2(phy, input); in c_init_phy_config()
1911 prog_tx_pre_drv_mode(phy, input); in c_init_phy_config()
1912 prog_atx_pre_drv_mode(phy, input); in c_init_phy_config()
1913 prog_enable_cs_multicast(phy, input); /* rdimm and lrdimm */ in c_init_phy_config()
1914 prog_dfi_rd_data_cs_dest_map(phy, ip_rev, input, msg); in c_init_phy_config()
1915 prog_pll_ctrl2(phy, input); in c_init_phy_config()
1920 prog_pll_pwr_dn(phy, input); in c_init_phy_config()
1923 phy_io_write16(phy, 0x010048, 0x1); in c_init_phy_config()
1926 prog_ard_ptr_init_val(phy, input); in c_init_phy_config()
1927 prog_dqs_preamble_control(phy, input); in c_init_phy_config()
1928 prog_dll_lck_param(phy, input); in c_init_phy_config()
1929 prog_dll_gain_ctl(phy, input); in c_init_phy_config()
1930 prog_proc_odt_time_ctl(phy, input); in c_init_phy_config()
1931 prog_tx_odt_drv_stren(phy, input); in c_init_phy_config()
1932 prog_tx_impedance_ctrl1(phy, input); in c_init_phy_config()
1933 prog_atx_impedance(phy, input); in c_init_phy_config()
1934 prog_dfi_mode(phy, input); in c_init_phy_config()
1935 prog_dfi_camode(phy, input); in c_init_phy_config()
1936 prog_cal_drv_str0(phy, input); in c_init_phy_config()
1937 prog_cal_uclk_info(phy, input); in c_init_phy_config()
1938 prog_cal_rate(phy, input); in c_init_phy_config()
1939 prog_vref_in_global(phy, input, msg); in c_init_phy_config()
1940 prog_dq_dqs_rcv_cntrl(phy, input); in c_init_phy_config()
1941 prog_mem_alert_control(phy, input); in c_init_phy_config()
1942 prog_dfi_freq_ratio(phy, input); in c_init_phy_config()
1943 prog_tristate_mode_ca(phy, input); in c_init_phy_config()
1944 prog_dfi_xlat(phy, input); in c_init_phy_config()
1945 prog_dbyte_misc_mode(phy, input, msg); in c_init_phy_config()
1946 prog_master_x4config(phy, input); in c_init_phy_config()
1947 prog_dmipin_present(phy, input, msg); in c_init_phy_config()
1948 prog_acx4_anib_dis(phy, input); in c_init_phy_config()
1954 static uint32_t get_mail(uint16_t *phy, int stream) in get_mail() argument
1961 ((phy_io_read16(phy, t_apbonly | csr_uct_shadow_regs) in get_mail()
1970 mail = phy_io_read16(phy, t_apbonly | in get_mail()
1973 mail |= phy_io_read16(phy, t_apbonly | in get_mail()
1978 phy_io_write16(phy, t_apbonly | csr_dct_write_prot, 0); in get_mail()
1982 ((phy_io_read16(phy, t_apbonly | csr_uct_shadow_regs) in get_mail()
1991 phy_io_write16(phy, t_apbonly | csr_dct_write_prot, 1U); in get_mail()
2023 static void decode_stream_message(uint16_t *phy, int train2d) in decode_stream_message() argument
2032 index = get_mail(phy, 1); in decode_stream_message()
2037 args[i] = get_mail(phy, 1); in decode_stream_message()
2054 static int wait_fw_done(uint16_t *phy, int train2d) in wait_fw_done() argument
2059 mail = get_mail(phy, 0); in wait_fw_done()
2096 decode_stream_message(phy, train2d); in wait_fw_done()
2150 uint16_t *phy; in g_exec_fw() local
2153 phy = phy_ptr[i]; in g_exec_fw()
2154 if (phy == NULL) { in g_exec_fw()
2158 prog_pll_ctrl2(phy, input); in g_exec_fw()
2159 prog_pll_ctrl(phy, input); in g_exec_fw()
2160 phy_io_write16(phy, in g_exec_fw()
2163 phy_io_write16(phy, in g_exec_fw()
2167 phy_io_write16(phy, in g_exec_fw()
2170 phy_io_write16(phy, in g_exec_fw()
2174 ret = wait_fw_done(phy, train2d); in g_exec_fw()
2183 static inline int send_fw(uint16_t *phy, in send_fw() argument
2196 phy_io_write16(phy, dst + i, *(img + i)); in send_fw()
2216 uint16_t *phy; in load_fw() local
2249 phy = phy_ptr[i]; in load_fw()
2250 if (phy == NULL) { in load_fw()
2256 phy_io_write16(phy, t_master | in load_fw()
2262 phy_io_write16(phy, t_apbonly | csr_micro_cont_mux_sel_addr, 0); in load_fw()
2264 ret = send_fw(phy, PHY_GEN2_IMEM_ADDR, in load_fw()
2284 phy = phy_ptr[i]; in load_fw()
2285 if (phy == NULL) { in load_fw()
2289 ret = send_fw(phy, PHY_GEN2_DMEM_ADDR, msg, len); in load_fw()
2294 ret = send_fw(phy, PHY_GEN2_DMEM_ADDR + len / 2, in load_fw()
2592 ret = c_init_phy_config(priv->phy, priv->ip_rev, &input, &msg_1d); in compute_ddr_phy()
2602 ret = restore_phy_training_values(priv->phy, in compute_ddr_phy()
2631 ret = load_fw(priv->phy, &input, 0, &msg_1d, in compute_ddr_phy()
2640 ret = g_exec_fw(priv->phy, 0, &input); in compute_ddr_phy()
2651 get_cdd_val(priv->phy, rank, input.basic.frequency, in compute_ddr_phy()
2661 ret = load_fw(priv->phy, &input, 1, &msg_2d, in compute_ddr_phy()
2670 ret = g_exec_fw(priv->phy, 1, &input); in compute_ddr_phy()
2686 ret = save_phy_training_values(priv->phy, in compute_ddr_phy()
2704 i_load_pie(priv->phy, &input, &msg_1d); in compute_ddr_phy()