#ifndef __JESD204B_H__ #define __JESD204B_H__ //#include "type.h" #if 1 // #define ___RX_REG_MAP_ 1 #if ___RX_REG_MAP_ // bs : bit shift // bw : bit width // // lane_ctrl_common // #define rx_def_lane_ctrl_common_addr 0x0 #define rx_def_lane_ctrl_common_bs_csr_byte_reversal 0 // RO #define rx_def_lane_ctrl_common_bs_csr_bit_reversal 1 // RO #define rx_def_lane_ctrl_common_bs_rl 2 // R/W // // lane_ctrl_0 // #define rx_def_lane_ctrl_0_addr 0x4 #define rx_def_lane_ctrl_0_bs_csr_lane0_polarity 0 // RW #define rx_def_lane_ctrl_0_bs_csr_lane0_powerdown 1 // RW #define rx_def_lane_ctrl_0_bs_csr_alllanes_patternalign_en 2 // RW // // lane_ctrl_1 // #define rx_def_lane_ctrl_1_addr 0x8 #define rx_def_lane_ctrl_1_bs_csr_lane1_polarity 0 // RW #define rx_def_lane_ctrl_1_bs_csr_lane1_powerdown 1 // RW #define rx_def_lane_ctrl_1_bs_rl1 2 // RW // // lane_ctrl_2 // #define rx_def_lane_ctrl_2_addr 0xc #define rx_def_lane_ctrl_2_bs_csr_lane2_polarity 0 // RW #define rx_def_lane_ctrl_2_bs_csr_lane2_powerdown 1 // RW #define rx_def_lane_ctrl_2_bs_rl2 2 // RW // // lane_ctrl_3 // #define rx_def_lane_ctrl_3_addr 0x10 #define rx_def_lane_ctrl_3_bs_csr_lane3_polarity 0 // RW #define rx_def_lane_ctrl_3_bs_csr_lane3_powerdown 1 // RW #define rx_def_lane_ctrl_3_bs_rl3 2 // RW // // lane_ctrl_4 // #define rx_def_lane_ctrl_4_addr 0x14 #define rx_def_lane_ctrl_4_bs_csr_lane4_polarity 0 // RW #define rx_def_lane_ctrl_4_bs_csr_lane4_powerdown 1 // RW #define rx_def_lane_ctrl_4_bs_rl4 2 // RW // // lane_ctrl_5 // #define rx_def_lane_ctrl_5_addr 0x18 #define rx_def_lane_ctrl_5_bs_csr_lane5_polarity 0 // RW #define rx_def_lane_ctrl_5_bs_csr_lane5_powerdown 1 // RW #define rx_def_lane_ctrl_5_bs_rl5 2 // RW // // lane_ctrl_6 // #define rx_def_lane_ctrl_6_addr 0x1c #define rx_def_lane_ctrl_6_bs_csr_lane6_polarity 0 // RW #define rx_def_lane_ctrl_6_bs_csr_lane6_powerdown 1 // RW #define rx_def_lane_ctrl_6_bs_rl6 2 // RW // // lane_ctrl_7 // #define rx_def_lane_ctrl_7_addr 0x20 #define rx_def_lane_ctrl_7_bs_csr_lane7_polarity 0 // RW #define rx_def_lane_ctrl_7_bs_csr_lane7_powerdown 1 // RW #define rx_def_lane_ctrl_7_bs_rl7 2 // RW // // dll_ctrl // #define rx_def_dll_ctrl_addr 0x50 #define rx_def_dll_ctrl_bs_csr_lane_sync_en 0 // RW #define rx_def_dll_ctrl_bs_csr_dis_frame_align_det 1 // RW #define rx_def_dll_ctrl_bs_csr_dis_lane_align_det 2 // RW #define rx_def_dll_ctrl_bs_csr_ilas_data_sel 7 // RW #define rx_def_dll_ctrl_bs_rd0 11 // RW #define rx_def_dll_ctrl_bs_csr_link_reinit_disable 12 // RW #define rx_def_dll_ctrl_bs_rd1 13 // RW #define rx_def_dll_ctrl_bs_rd2 14 // RW #define rx_def_dll_ctrl_bs_rd3 15 // RW #define rx_def_dll_ctrl_bs_rd4 16 // RW #define rx_def_dll_ctrl_bw_csr_ilas_data_sel 4 // // syncn_sysref_ctrl // #define rx_def_syncn_sysref_ctrl_addr 0x54 #define rx_def_syncn_sysref_ctrl_bs_csr_link_reinit 0 // RW #define rx_def_syncn_sysref_ctrl_bs_csr_sysref_alwayson 1 // RW #define rx_def_syncn_sysref_ctrl_bs_csr_sysref_singledet 2 // RW #define rx_def_syncn_sysref_ctrl_bs_csr_rbd_offset 3 // RW #define rx_def_syncn_sysref_ctrl_bs_csr_force_rbd_release 11 // RW #define rx_def_syncn_sysref_ctrl_bs_csr_lmfc_offset 12 // RW #define rx_def_syncn_sysref_ctrl_bs_csr_cgs_bypass_sysref 20 // RW #define rx_def_syncn_sysref_ctrl_bs_csr_syncn_delay 21 // RW #define rx_def_syncn_sysref_ctrl_bw_csr_rbd_offset 8 #define rx_def_syncn_sysref_ctrl_bw_csr_lmfc_offset 8 #define rx_def_syncn_sysref_ctrl_bw_csr_syncn_delay 4 // // ctrl_reserve // #define rx_def_ctrl_reserve_addr 0x58 // // rx_err0 // #define rx_def_rx_err0_addr 0x60 #define rx_def_rx_err0_bs_csr_sysref_lmfc_err 1 // R/W1C #define rx_def_rx_err0_bs_csr_dll_data_ready_err 2 // R/W1C #define rx_def_rx_err0_bs_csr_frame_data_ready_err 3 // R/W1C #define rx_def_rx_err0_bs_csr_lane_deskew_err 4 // R/W1C #define rx_def_rx_err0_bs_re1 5 // R/W1C #define rx_def_rx_err0_bs_re2 6 // R/W1C #define rx_def_rx_err0_bs_re3 7 // R/W1C #define rx_def_rx_err0_bs_re4 8 // R/W1C // // rx_err1 // #define rx_def_rx_err1_addr 0x64 #define rx_def_rx_err1_addr_bs_csr_cg_sync_err 0 // R/W1C #define rx_def_rx_err1_addr_bs_csr_frame_alignment_err 1 // R/W1C #define rx_def_rx_err1_addr_bs_csr_lane_alignment_err 2 // R/W1C #define rx_def_rx_err1_addr_bs_csr_unexpected_kchar 3 // R/W1C #define rx_def_rx_err1_addr_bs_csr_not_in_table_err 4 // R/W1C #define rx_def_rx_err1_addr_bs_csr_disparity_err 5 // R/W1C #define rx_def_rx_err1_addr_bs_csr_ilas_err 6 // R/W1C #define rx_def_rx_err1_addr_bs_dllerr_rs 7 // R/W1C #define rx_def_rx_err1_addr_bs_csr_ecc_err_corrected 8 // R/W1C #define rx_def_rx_err1_addr_bs_csr_ecc_err_fatal 9 // R/W1C // // rx_err_enable // #define rx_def_rx_err_enable_addr 0x74 #define rx_def_rx_err_enable_bs_csr_sysref_lmfc_err_en 1 // RW #define rx_def_rx_err_enable_bs_csr_dll_data_ready_err_en 2 // RW #define rx_def_rx_err_enable_bs_csr_frame_data_ready_err_en 3 // RW #define rx_def_rx_err_enable_bs_csr_lane_deskew_err_en 4 // RW #define rx_def_rx_err_enable_bs_re1_en 5 // RW #define rx_def_rx_err_enable_bs_re2_en 6 // RW #define rx_def_rx_err_enable_bs_re3_en 7 // RW #define rx_def_rx_err_enable_bs_re4_en 8 // RW #define rx_def_rx_err_enable_bs_csr_cg_sync_err_en 11 #define rx_def_rx_err_enable_bs_csr_frame_alignment_err_en 12 #define rx_def_rx_err_enable_bs_csr_lane_alignment_err_en 13 #define rx_def_rx_err_enable_bs_csr_unexpected_kchar_en 14 #define rx_def_rx_err_enable_bs_csr_not_in_table_err_en 15 #define rx_def_rx_err_enable_bs_csr_disparity_err_en 16 #define rx_def_rx_err_enable_bs_csr_ilas_err_en 17 #define rx_def_rx_err_enable_bs_dllerr_rs_en 18 #define rx_def_rx_err_enable_bs_csr_ecc_err_corrected_en 19 #define rx_def_rx_err_enable_bs_csr_ecc_err_fatal_en 20 // // rx_err_link_reinit // #define rx_def_rx_err_link_reinit_addr 0x78 #define rx_def_rx_err_link_reinit_bs_csr_sysref_lmfc_err_link_reinit 1 //RW #define rx_def_rx_err_link_reinit_bs_csr_dll_data_ready_err_link_reinit 2 //RW #define rx_def_rx_err_link_reinit_bs_csr_frame_data_ready_err_link_reinit 3 //RW #define rx_def_rx_err_link_reinit_bs_csr_lane_deskew_err_link_reinit 4 //RW #define rx_def_rx_err_link_reinit_bs_rs1_link_reinit 5 //RW #define rx_def_rx_err_link_reinit_bs_rs2_link_reinit 6 //RW #define rx_def_rx_err_link_reinit_bs_rs3_link_reinit 7 //RW #define rx_def_rx_err_link_reinit_bs_rs4_link_reinit 8 //RW #define rx_def_rx_err_link_reinit_bs_rs5_link_reinit 11 //RW #define rx_def_rx_err_link_reinit_bs_csr_frame_alignment_err_link_reinit 12 //RW #define rx_def_rx_err_link_reinit_bs_csr_lane_alignment_err_link_reinit 13 //RW #define rx_def_rx_err_link_reinit_bs_csr_unexpected_kchar_link_reinit 14 //RW #define rx_def_rx_err_link_reinit_bs_csr_not_in_table_err_link_reinit 15 //RW #define rx_def_rx_err_link_reinit_bs_csr_disparity_err_link_reinit 16 //RW #define rx_def_rx_err_link_reinit_bs_csr_ilas_err_link_reinit 17 //RW #define rx_def_rx_err_link_reinit_bs_csr_dllerr_rs_link_reinit 18 //RW #define rx_def_rx_err_link_reinit_bs_csr_ecc_err_corrected_link_reinit 19 //RW #define rx_def_rx_err_link_reinit_bs_csr_ecc_err_fatal_link_reinit 20 //RW // // rx_status0 // #define rx_def_rx_status0_addr 0x80 #define rx_def_rx_status0_bs_csr_dev_syncn 0 // R #define rx_def_rx_status0_bs_csr_rbd_count 3 // R #define rx_def_rx_status0_bs_rs1 11 // R #define rx_def_rx_status0_bs_rs2 12 // R #define rx_def_rx_status0_bs_rs3 13 // R #define rx_def_rx_status0_bs_rs4 14 // R #define rx_def_rx_status0_bs_rs5 15 // R #define rx_def_rx_status0_bs_rs6 16 // R #define rx_def_rx_status0_bs_rs7 17 // R #define rx_def_rx_status0_bs_rs8 18 // R #define rx_def_rx_status0_bw_csr_rbd_count 8 // // rx_status1 // #define rx_def_rx_status1 0x84 #define rx_def_rx_status1_bs_csr_lane0_rx_pcfifo_full 0 // R #define rx_def_rx_status1_bs_csr_lane1_rx_pcfifo_full 1 // R #define rx_def_rx_status1_bs_csr_lane2_rx_pcfifo_full 2 // R #define rx_def_rx_status1_bs_csr_lane3_rx_pcfifo_full 3 // R #define rx_def_rx_status1_bs_csr_lane4_rx_pcfifo_full 4 // R #define rx_def_rx_status1_bs_csr_lane5_rx_pcfifo_full 5 // R #define rx_def_rx_status1_bs_csr_lane6_rx_pcfifo_full 6 // R #define rx_def_rx_status1_bs_csr_lane7_rx_pcfifo_full 7 // R #define rx_def_rx_status1_bs_csr_lane0_tx_pcfifo_empty 16 // R #define rx_def_rx_status1_bs_csr_lane1_tx_pcfifo_empty 17 // R #define rx_def_rx_status1_bs_csr_lane2_tx_pcfifo_empty 18 // R #define rx_def_rx_status1_bs_csr_lane3_tx_pcfifo_empty 19 // R #define rx_def_rx_status1_bs_csr_lane4_tx_pcfifo_empty 20 // R #define rx_def_rx_status1_bs_csr_lane5_tx_pcfifo_empty 21 // R #define rx_def_rx_status1_bs_csr_lane6_tx_pcfifo_empty 22 // R #define rx_def_rx_status1_bs_csr_lane7_tx_pcfifo_empty 23 // R // // rx_status2 // #define rx_def_rx_status2_addr 0x88 #define rx_def_rx_status2_bs_csr_lane0_rx_cal_busy 0 // R #define rx_def_rx_status2_bs_csr_lane1_rx_cal_busy 1 // R #define rx_def_rx_status2_bs_csr_lane2_rx_cal_busy 2 // R #define rx_def_rx_status2_bs_csr_lane3_rx_cal_busy 3 // R #define rx_def_rx_status2_bs_csr_lane4_rx_cal_busy 4 // R #define rx_def_rx_status2_bs_csr_lane5_rx_cal_busy 5 // R #define rx_def_rx_status2_bs_csr_lane6_rx_cal_busy 6 // R #define rx_def_rx_status2_bs_csr_lane7_rx_cal_busy 7 // R #define rx_def_rx_status2_bs_csr_lane0_pcs_valid 16 // R #define rx_def_rx_status2_bs_csr_lane1_pcs_valid 17 // R #define rx_def_rx_status2_bs_csr_lane2_pcs_valid 18 // R #define rx_def_rx_status2_bs_csr_lane3_pcs_valid 19 // R #define rx_def_rx_status2_bs_csr_lane4_pcs_valid 20 // R #define rx_def_rx_status2_bs_csr_lane5_pcs_valid 21 // R #define rx_def_rx_status2_bs_csr_lane6_pcs_valid 22 // R #define rx_def_rx_status2_bs_csr_lane7_pcs_valid 23 // R // // rx_status3 // #define rx_def_rx_status3_addr 0x8c #define rx_def_rx_status3_bs_csr_lane0_rx_locked_to_data 0 // R #define rx_def_rx_status3_bs_csr_lane1_rx_locked_to_data 1 // R #define rx_def_rx_status3_bs_csr_lane2_rx_locked_to_data 2 // R #define rx_def_rx_status3_bs_csr_lane3_rx_locked_to_data 3 // R #define rx_def_rx_status3_bs_csr_lane4_rx_locked_to_data 4 // R #define rx_def_rx_status3_bs_csr_lane5_rx_locked_to_data 5 // R #define rx_def_rx_status3_bs_csr_lane6_rx_locked_to_data 6 // R #define rx_def_rx_status3_bs_csr_lane7_rx_locked_to_data 7 // R // // ilas_data1 // #define rx_def_ilas_data1_addr 0x94 #define rx_def_ilas_data1_bs_csr_l 0 // RW #define rx_def_ilas_data1_bs_csr_scr_en 7 // RW #define rx_def_ilas_data1_bs_csr_f 8 // RW #define rx_def_ilas_data1_bs_csr_k 16 // RW #define rx_def_ilas_data1_bs_csr_m 24 // RW #define rx_def_ilas_data1_bw_csr_l 5 #define rx_def_ilas_data1_bw_csr_f 8 #define rx_def_ilas_data1_bw_csr_k 5 #define rx_def_ilas_data1_bw_csr_m 8 // // ilas_data2 // #define rx_def_ilas_data2_addr 0x98 #define rx_def_ilas_data2_bs_csr_n 0 // RW #define rx_def_ilas_data2_bs_csr_cs 6 // RW #define rx_def_ilas_data2_bs_csr_np 8 // RW #define rx_def_ilas_data2_bs_csr_subclassv 13 // RW #define rx_def_ilas_data2_bs_csr_s 16 // RW #define rx_def_ilas_data2_bs_csr_jesdv 21 // RW #define rx_def_ilas_data2_bs_csr_cf 24 // RW #define rx_def_ilas_data2_bs_csr_hd 31 // RW #define rx_def_ilas_data2_bw_csr_n 5 #define rx_def_ilas_data2_bw_csr_cs 2 #define rx_def_ilas_data2_bw_csr_np 5 #define rx_def_ilas_data2_bw_csr_subclassv 3 #define rx_def_ilas_data2_bw_csr_s 5 #define rx_def_ilas_data2_bw_csr_jesdv 3 #define rx_def_ilas_data2_bw_csr_cf 5 #define rx_def_ilas_data2_bw_csr_hd 1 // // ilas_octet0 // #define rx_def_ilas_octet0_addr 0xa0 #define rx_def_ilas_octet0_bs_no0 0 // R #define rx_def_ilas_octet0_bs_no1 8 // R #define rx_def_ilas_octet0_bs_no2 16 // R #define rx_def_ilas_octet0_bs_no3 24 // R #define rx_def_ilas_octet0_bw_no0 8 #define rx_def_ilas_octet0_bw_no1 8 #define rx_def_ilas_octet0_bw_no2 8 #define rx_def_ilas_octet0_bw_no3 8 // // ilas_octet1 // #define rx_def_ilas_octet1_addr 0xa4 #define rx_def_ilas_octet1_bs_no4 0 // R #define rx_def_ilas_octet1_bs_no5 8 // R #define rx_def_ilas_octet1_bs_no6 16 // R #define rx_def_ilas_octet1_bs_no7 24 // R #define rx_def_ilas_octet1_bw_no4 8 #define rx_def_ilas_octet1_bw_no5 8 #define rx_def_ilas_octet1_bw_no6 8 #define rx_def_ilas_octet1_bw_no7 8 // // ilas_octet2 // #define rx_def_ilas_octet2_addr 0xa8 #define rx_def_ilas_octet2_bs_no8 0 // R #define rx_def_ilas_octet2_bs_no9 8 // R #define rx_def_ilas_octet2_bs_no10 16 // R #define rx_def_ilas_octet2_bs_no11 24 // R #define rx_def_ilas_octet2_bw_no8 8 #define rx_def_ilas_octet2_bw_no9 8 #define rx_def_ilas_octet2_bw_no10 8 #define rx_def_ilas_octet2_bw_no11 8 // // ilas_octet3 // #define rx_def_ilas_octet3_addr 0xac #define rx_def_ilas_octet3_bs_no12 0 // R #define rx_def_ilas_octet3_bs_no13 8 // R #define rx_def_ilas_octet3_bw_no12 8 #define rx_def_ilas_octet3_bw_no13 8 // // ilas_data12 // #define rx_def_ilas_data12_addr 0xc0 #define rx_def_ilas_data12_bs_csr_fxk_l 0 // R #define rx_def_ilas_data12_bs_csr_fxk_h 2 // RW #define rx_def_ilas_data12_bw_csr_fxk_l 2 #define rx_def_ilas_data12_bw_csr_fxk_h 8 // // rx_test // #define rx_def_rx_test_addr 0xd0 #define rx_def_rx_test_bs_rx_testmode 0 // RW #define rx_def_rx_test_bw_rx_testmode 4 // // rx_status4 // #define rx_def_rx_status4_addr 0xf0 #define rx_def_rx_status4_bs_lane0_cs_state 0 // R #define rx_def_rx_status4_bs_lane1_cs_state 2 // R #define rx_def_rx_status4_bs_lane2_cs_state 4 // R #define rx_def_rx_status4_bs_lane3_cs_state 6 // R #define rx_def_rx_status4_bs_lane4_cs_state 8 // R #define rx_def_rx_status4_bs_lane5_cs_state 10 // R #define rx_def_rx_status4_bs_lane6_cs_state 12 // R #define rx_def_rx_status4_bs_lane7_cs_state 14 // R #define rx_def_rx_status4_bw_lane0_cs_state 2 // R #define rx_def_rx_status4_bw_lane1_cs_state 2 // R #define rx_def_rx_status4_bw_lane2_cs_state 2 // R #define rx_def_rx_status4_bw_lane3_cs_state 2 // R #define rx_def_rx_status4_bw_lane4_cs_state 2 // R #define rx_def_rx_status4_bw_lane5_cs_state 2 // R #define rx_def_rx_status4_bw_lane6_cs_state 2 // R #define rx_def_rx_status4_bw_lane7_cs_state 2 // R // // rx_status5 // #define rx_def_rx_status5_addr 0xf4 #define rx_def_rx_status5_bs_lane0_fs_state 0 // R #define rx_def_rx_status5_bs_lane1_fs_state 2 // R #define rx_def_rx_status5_bs_lane2_fs_state 4 // R #define rx_def_rx_status5_bs_lane3_fs_state 6 // R #define rx_def_rx_status5_bs_lane4_fs_state 8 // R #define rx_def_rx_status5_bs_lane5_fs_state 10 // R #define rx_def_rx_status5_bs_lane6_fs_state 12 // R #define rx_def_rx_status5_bs_lane7_fs_state 14 // R #define rx_def_rx_status5_bw_lane0_fs_state 2 #define rx_def_rx_status5_bw_lane1_fs_state 2 #define rx_def_rx_status5_bw_lane2_fs_state 2 #define rx_def_rx_status5_bw_lane3_fs_state 2 #define rx_def_rx_status5_bw_lane4_fs_state 2 #define rx_def_rx_status5_bw_lane5_fs_state 2 #define rx_def_rx_status5_bw_lane6_fs_state 2 #define rx_def_rx_status5_bw_lane7_fs_state 2 // // rx_status6 // #define rx_def_rx_status6_addr 0xf8 #define rx_def_rx_status6_bs_lane0_rx_fifo_full 0 // R #define rx_def_rx_status6_bs_lane1_rx_fifo_full 1 // R #define rx_def_rx_status6_bs_lane2_rx_fifo_full 2 // R #define rx_def_rx_status6_bs_lane3_rx_fifo_full 3 // R #define rx_def_rx_status6_bs_lane4_rx_fifo_full 4 // R #define rx_def_rx_status6_bs_lane5_rx_fifo_full 5 // R #define rx_def_rx_status6_bs_lane6_rx_fifo_full 6 // R #define rx_def_rx_status6_bs_lane7_rx_fifo_full 7 // R #define rx_def_rx_status6_bs_lane0_rx_fifo_empty 16 // R #define rx_def_rx_status6_bs_lane1_rx_fifo_empty 17 // R #define rx_def_rx_status6_bs_lane2_rx_fifo_empty 18 // R #define rx_def_rx_status6_bs_lane3_rx_fifo_empty 19 // R #define rx_def_rx_status6_bs_lane4_rx_fifo_empty 20 // R #define rx_def_rx_status6_bs_lane5_rx_fifo_empty 21 // R #define rx_def_rx_status6_bs_lane6_rx_fifo_empty 22 // R #define rx_def_rx_status6_bs_lane7_rx_fifo_empty 23 // R // // rx_status7 // #define rx_def_rx_status7_addr 0xfc #define rx_def_rx_status7_bs_lane0_dll_user_data_phase 0 // R #define rx_def_rx_status7_bs_lane1_dll_user_data_phase 1 // R #define rx_def_rx_status7_bs_lane2_dll_user_data_phase 2 // R #define rx_def_rx_status7_bs_lane3_dll_user_data_phase 3 // R #define rx_def_rx_status7_bs_lane4_dll_user_data_phase 4 // R #define rx_def_rx_status7_bs_lane5_dll_user_data_phase 5 // R #define rx_def_rx_status7_bs_lane6_dll_user_data_phase 6 // R #define rx_def_rx_status7_bs_lane7_dll_user_data_phase 7 // R #define rx_def_rx_status7_bs_lane0_ilas_cfg_data_started 16 // R #define rx_def_rx_status7_bs_lane1_ilas_cfg_data_started 17 // R #define rx_def_rx_status7_bs_lane2_ilas_cfg_data_started 18 // R #define rx_def_rx_status7_bs_lane3_ilas_cfg_data_started 19 // R #define rx_def_rx_status7_bs_lane4_ilas_cfg_data_started 20 // R #define rx_def_rx_status7_bs_lane5_ilas_cfg_data_started 21 // R #define rx_def_rx_status7_bs_lane6_ilas_cfg_data_started 22 // R #define rx_def_rx_status7_bs_lane7_ilas_cfg_data_started 23 // R #endif//___RX_REG_MAP_ // #define ___TX_REG_MAP__ 1 #if ___TX_REG_MAP__ // bs : bit shift // bw : bit width // // lane_ctrl_common // #define tx_def_lane_ctrl_common_addr 0x0 #define tx_def_lane_ctrl_common_bs_csr_byte_reversal 0 // RO #define tx_def_lane_ctrl_common_bs_csr_bit_reversal 1 // RO #define tx_def_lane_ctrl_common_bs_rl 2 // R/W // // lane_ctrl_0 // #define tx_def_lane_ctrl_0_addr 0x4 #define tx_def_lane_ctrl_0_bs_csr_lane0_polarity 0 // RW #define tx_def_lane_ctrl_0_bs_csr_lane0_powerdown 1 // RW #define tx_def_lane_ctrl_0_bs_rl0 2 // RW // // lane_ctrl_1 // #define tx_def_lane_ctrl_1_addr 0x8 #define tx_def_lane_ctrl_1_bs_csr_lane1_polarity 0 // RW #define tx_def_lane_ctrl_1_bs_csr_lane1_powerdown 1 // RW #define tx_def_lane_ctrl_1_bs_rl1 2 // RW // // lane_ctrl_2 // #define tx_def_lane_ctrl_2_addr 0xc #define tx_def_lane_ctrl_2_bs_csr_lane2_polarity 0 // RW #define tx_def_lane_ctrl_2_bs_csr_lane2_powerdown 1 // RW #define tx_def_lane_ctrl_2_bs_rl2 2 // RW // // lane_ctrl_3 // #define tx_def_lane_ctrl_3_addr 0x10 #define tx_def_lane_ctrl_3_bs_csr_lane3_polarity 0 // RW #define tx_def_lane_ctrl_3_bs_csr_lane3_powerdown 1 // RW #define tx_def_lane_ctrl_3_bs_rl3 2 // RW // // lane_ctrl_4 // #define tx_def_lane_ctrl_4_addr 0x14 #define tx_def_lane_ctrl_4_bs_csr_lane4_polarity 0 // RW #define tx_def_lane_ctrl_4_bs_csr_lane4_powerdown 1 // RW #define tx_def_lane_ctrl_4_bs_rl4 2 // RW // // lane_ctrl_5 // #define tx_def_lane_ctrl_5_addr 0x18 #define tx_def_lane_ctrl_5_bs_csr_lane5_polarity 0 // RW #define tx_def_lane_ctrl_5_bs_csr_lane5_powerdown 1 // RW #define tx_def_lane_ctrl_5_bs_rl5 2 // RW // // lane_ctrl_6 // #define tx_def_lane_ctrl_6_addr 0x1c #define tx_def_lane_ctrl_6_bs_csr_lane6_polarity 0 // RW #define tx_def_lane_ctrl_6_bs_csr_lane6_powerdown 1 // RW #define tx_def_lane_ctrl_6_bs_rl6 2 // RW // // lane_ctrl_7 // #define tx_def_lane_ctrl_7_addr 0x20 #define tx_def_lane_ctrl_7_bs_csr_lane7_polarity 0 // RW #define tx_def_lane_ctrl_7_bs_csr_lane7_powerdown 1 // RW #define tx_def_lane_ctrl_7_bs_rl7 2 // RW // // dll_ctrl // #define tx_def_dll_ctrl_addr 0x50 #define tx_def_dll_ctrl_bs_csr_lane_sync_en 0 // RW #define tx_def_dll_ctrl_bs_csr_ilas_multiframe 1 // RW #define tx_def_dll_ctrl_bs_csr_char_repl_disable 9 // RW #define tx_def_dll_ctrl_bs_test_ilas_loop 10 // RW #define tx_def_dll_ctrl_bs_csr_reinit_txsyncn_rise 11 // RW #define tx_def_dll_ctrl_bs_rd1 12 // RW #define tx_def_dll_ctrl_bs_rd2 13 // RW #define tx_def_dll_ctrl_bs_rd3 14 // RW #define tx_def_dll_ctrl_bs_rd4 15 // RW #define tx_def_dll_ctrl_bs_rd5 16 // RW #define tx_def_dll_ctrl_bw_csr_ilas_multiframe 8 // // syncn_sysref_ctrl // #define tx_def_syncn_sysref_ctrl_addr 0x54 #define tx_def_syncn_sysref_ctrl_bs_csr_link_reinit 0 // RW #define tx_def_syncn_sysref_ctrl_bs_csr_sysref_alwayson 1 // RW #define tx_def_syncn_sysref_ctrl_bs_csr_sysref_singledet 2 // RW #define tx_def_syncn_sysref_ctrl_bs_rs1 3 // RW #define tx_def_syncn_sysref_ctrl_bs_rs2 4 // RW #define tx_def_syncn_sysref_ctrl_bs_rs3 5 // RW #define tx_def_syncn_sysref_ctrl_bs_rs4 6 // RW #define tx_def_syncn_sysref_ctrl_bs_csr_lmfc_offset 12 // RW #define tx_def_syncn_sysref_ctrl_bs_csr_cgs_bypass_sysref 20 // RW #define tx_def_syncn_sysref_ctrl_bw_csr_lmfc_offset 8 // // ctrl_reserve // #define tx_def_ctrl_reserve_addr 0x58 // // tx_err // #define tx_def_tx_err_addr 0x60 #define tx_def_tx_err_bs_csr_syncn_err 0 // R/W1C #define tx_def_tx_err_bs_csr_sysref_lmfc_err 1 // R/W1C #define tx_def_tx_err_bs_csr_dll_data_invalid_err 2 // R/W1C #define tx_def_tx_err_bs_csr_frame_data_invalid_err 3 // R/W1C #define tx_def_tx_err_bs_csr_syncn_reinit_req 4 // R/W1C #define tx_def_tx_err_bs_re1 5 // R/W1C #define tx_def_tx_err_bs_re2 6 // R/W1C #define tx_def_tx_err_bs_re3 7 // R/W1C #define tx_def_tx_err_bs_re4 8 // R/W1C // // tx_err_enable // #define tx_def_tx_err_enable_addr 0x64 #define tx_def_tx_err_enable_bs_csr_syncn_err_en 0 // RW #define tx_def_tx_err_enable_bs_csr_sysref_lmfc_err_en 1 // RW #define tx_def_tx_err_enable_bs_csr_dll_data_invalid_err_en 2 // RW #define tx_def_tx_err_enable_bs_csr_frame_data_invalid_err_en 3 // RW #define tx_def_tx_err_enable_bs_csr_syncn_reinit_req_en 4 // RW #define tx_def_tx_err_enable_bs_re1_en 5 // RW #define tx_def_tx_err_enable_bs_re2_en 6 // RW #define tx_def_tx_err_enable_bs_re3_en 7 // RW #define tx_def_tx_err_enable_bs_re4_en 8 // RW // // tx_status0 // #define tx_def_tx_status0_addr 0x80 #define tx_def_tx_status0_bs_csr_dev_syncn 0 // R #define tx_def_tx_status0_bs_csr_dll_state 1 // R #define tx_def_tx_status0_bs_csr_ilas_cnt 3 // R #define tx_def_tx_status0_bs_csr_dbg_phadj 11 // R #define tx_def_tx_status0_bs_csr_dbg_adjdir 12 // R #define tx_def_tx_status0_bs_csr_dbg_adjcnt 13 // R #define tx_def_tx_status0_bw_csr_dll_state 2 #define tx_def_tx_status0_bw_csr_ilas_cnt 8 #define tx_def_tx_status0_bw_csr_dbg_adjcnt 8 // // tx_status1 // #define tx_def_tx_status1 0x84 #define tx_def_tx_status1_bs_csr_lane0_tx_pcfifo_full 0 // R #define tx_def_tx_status1_bs_csr_lane1_tx_pcfifo_full 1 // R #define tx_def_tx_status1_bs_csr_lane2_tx_pcfifo_full 2 // R #define tx_def_tx_status1_bs_csr_lane3_tx_pcfifo_full 3 // R #define tx_def_tx_status1_bs_csr_lane4_tx_pcfifo_full 4 // R #define tx_def_tx_status1_bs_csr_lane5_tx_pcfifo_full 5 // R #define tx_def_tx_status1_bs_csr_lane6_tx_pcfifo_full 6 // R #define tx_def_tx_status1_bs_csr_lane7_tx_pcfifo_full 7 // R #define tx_def_tx_status1_bs_csr_lane0_tx_pcfifo_empty 16 // R #define tx_def_tx_status1_bs_csr_lane1_tx_pcfifo_empty 17 // R #define tx_def_tx_status1_bs_csr_lane2_tx_pcfifo_empty 18 // R #define tx_def_tx_status1_bs_csr_lane3_tx_pcfifo_empty 19 // R #define tx_def_tx_status1_bs_csr_lane4_tx_pcfifo_empty 20 // R #define tx_def_tx_status1_bs_csr_lane5_tx_pcfifo_empty 21 // R #define tx_def_tx_status1_bs_csr_lane6_tx_pcfifo_empty 22 // R #define tx_def_tx_status1_bs_csr_lane7_tx_pcfifo_empty 23 // R // // tx_status2 // #define tx_def_tx_status2_addr 0x88 #define tx_def_tx_status2_bs_csr_lane0_tx_cal_busy 0 // R #define tx_def_tx_status2_bs_csr_lane1_tx_cal_busy 1 // R #define tx_def_tx_status2_bs_csr_lane2_tx_cal_busy 2 // R #define tx_def_tx_status2_bs_csr_lane3_tx_cal_busy 3 // R #define tx_def_tx_status2_bs_csr_lane4_tx_cal_busy 4 // R #define tx_def_tx_status2_bs_csr_lane5_tx_cal_busy 5 // R #define tx_def_tx_status2_bs_csr_lane6_tx_cal_busy 6 // R #define tx_def_tx_status2_bs_csr_lane7_tx_cal_busy 7 // R #define tx_def_tx_status2_bs_csr_lane0_pcs_valid 16 // R #define tx_def_tx_status2_bs_csr_lane1_pcs_valid 17 // R #define tx_def_tx_status2_bs_csr_lane2_pcs_valid 18 // R #define tx_def_tx_status2_bs_csr_lane3_pcs_valid 19 // R #define tx_def_tx_status2_bs_csr_lane4_pcs_valid 20 // R #define tx_def_tx_status2_bs_csr_lane5_pcs_valid 21 // R #define tx_def_tx_status2_bs_csr_lane6_pcs_valid 22 // R #define tx_def_tx_status2_bs_csr_lane7_pcs_valid 23 // R // // tx_status3 // #define tx_def_tx_status3_addr 0x8c // // ilas_data0 // #define tx_def_ilas_data0_addr 0x90 #define tx_def_ilas_data0_bs_csr_did 0 // RW #define tx_def_ilas_data0_bs_csr_bid 8 // RW #define tx_def_ilas_data0_bw_csr_did 8 #define tx_def_ilas_data0_bw_csr_bid 8 // // ilas_data1 // #define tx_def_ilas_data1_addr 0x94 #define tx_def_ilas_data1_bs_csr_l 0 // RW #define tx_def_ilas_data1_bs_csr_scr_en 7 // RW #define tx_def_ilas_data1_bs_csr_f 8 // RW #define tx_def_ilas_data1_bs_csr_k 16 // RW #define tx_def_ilas_data1_bs_csr_m 24 // RW #define tx_def_ilas_data1_bw_csr_l 5 #define tx_def_ilas_data1_bw_csr_f 8 #define tx_def_ilas_data1_bw_csr_k 5 #define tx_def_ilas_data1_bw_csr_m 8 // // ilas_data2 // #define tx_def_ilas_data2_addr 0x98 #define tx_def_ilas_data2_bs_csr_n 0 // RW #define tx_def_ilas_data2_bs_csr_cs 6 // RW #define tx_def_ilas_data2_bs_csr_np 8 // RW #define tx_def_ilas_data2_bs_csr_subclassv 13 // RW #define tx_def_ilas_data2_bs_csr_s 16 // RW #define tx_def_ilas_data2_bs_csr_jesdv 21 // RW #define tx_def_ilas_data2_bs_csr_cf 24 // RW #define tx_def_ilas_data2_bs_csr_hd 31 // RW #define tx_def_ilas_data2_bw_csr_n 5 #define tx_def_ilas_data2_bw_csr_cs 2 #define tx_def_ilas_data2_bw_csr_np 5 #define tx_def_ilas_data2_bw_csr_subclassv 3 #define tx_def_ilas_data2_bw_csr_s 5 #define tx_def_ilas_data2_bw_csr_jesdv 3 #define tx_def_ilas_data2_bw_csr_cf 5 #define tx_def_ilas_data2_bw_csr_hd 1 // // ilas_data3 // #define tx_def_ilas_data3_addr 0x9c #define tx_def_ilas_data3_bs_csr_rsvd1 0 // RW #define tx_def_ilas_data3_bs_csr_rsvd2 8 // RW #define tx_def_ilas_data3_bs_csr_adjcnt 16 // RW #define tx_def_ilas_data3_bs_csr_adjdir 30 // RW #define tx_def_ilas_data3_bs_csr_phadj 31 // RW #define tx_def_ilas_data3_bw_csr_rsvd1 8 #define tx_def_ilas_data3_bw_csr_rsvd2 8 #define tx_def_ilas_data3_bw_csr_adjcnt 4 // // ilas_data4 // #define tx_def_ilas_data4_addr 0xa0 #define tx_def_ilas_data4_bs_csr_lid_l0 0 // RW #define tx_def_ilas_data4_bs_csr_lid_l1 8 // RW #define tx_def_ilas_data4_bs_csr_lid_l2 16 // RW #define tx_def_ilas_data4_bs_csr_lid_l3 24 // RW #define tx_def_ilas_data4_bw_csr_lid_l0 5 #define tx_def_ilas_data4_bw_csr_lid_l1 5 #define tx_def_ilas_data4_bw_csr_lid_l2 5 #define tx_def_ilas_data4_bw_csr_lid_l3 5 // // ilas_data5 // #define tx_def_ilas_data5_addr 0xa4 #define tx_def_ilas_data5_bs_csr_lid_l4 0 // RW #define tx_def_ilas_data5_bs_csr_lid_l5 8 // RW #define tx_def_ilas_data5_bs_csr_lid_l6 16 // RW #define tx_def_ilas_data5_bs_csr_lid_l7 24 // RW #define tx_def_ilas_data5_bw_csr_lid_l4 5 #define tx_def_ilas_data5_bw_csr_lid_l5 5 #define tx_def_ilas_data5_bw_csr_lid_l6 5 #define tx_def_ilas_data5_bw_csr_lid_l7 5 // // ilas_data8 // #define tx_def_ilas_data8_addr 0xb0 #define tx_def_ilas_data8_bs_csr_fchk_l0 0 // RW #define tx_def_ilas_data8_bs_csr_fchk_l1 8 // RW #define tx_def_ilas_data8_bs_csr_fchk_l2 16 // RW #define tx_def_ilas_data8_bs_csr_fchk_l3 24 // RW #define tx_def_ilas_data8_bw_csr_fchk_l0 8 #define tx_def_ilas_data8_bw_csr_fchk_l1 8 #define tx_def_ilas_data8_bw_csr_fchk_l2 8 #define tx_def_ilas_data8_bw_csr_fchk_l3 8 // // ilas_data9 // #define tx_def_ilas_data9_addr 0xb4 #define tx_def_ilas_data9_bs_csr_fchk_l4 0 // RW #define tx_def_ilas_data9_bs_csr_fchk_l5 8 // RW #define tx_def_ilas_data9_bs_csr_fchk_l6 16 // RW #define tx_def_ilas_data9_bs_csr_fchk_l7 24 // RW #define tx_def_ilas_data9_bw_csr_fchk_l4 8 #define tx_def_ilas_data9_bw_csr_fchk_l5 8 #define tx_def_ilas_data9_bw_csr_fchk_l6 8 #define tx_def_ilas_data9_bw_csr_fchk_l7 8 // // ilas_data12 // #define tx_def_ilas_data12_addr 0xc0 #define tx_def_ilas_data12_bs_csr_fxk_l 0 // R #define tx_def_ilas_data12_bs_csr_fxk_h 2 // RW #define tx_def_ilas_data12_bw_csr_fxk_l 2 #define tx_def_ilas_data12_bw_csr_fxk_h 8 // // tx_test // #define tx_def_tx_test_addr 0xd0 #define tx_def_tx_test_bs_csr_tx_testmode 0 // RW #define tx_def_tx_test_bw_csr_tx_testmode 4 // // user_test_pattern_a // #define tx_def_user_test_pattern_a_addr 0xd4 #define tx_def_user_test_pattern_a_bs_test_pattern0 0 // RW #define tx_def_user_test_pattern_a_bs_test_pattern1 16 // RW #define tx_def_user_test_pattern_a_bw_test_pattern0 16 #define tx_def_user_test_pattern_a_bw_test_pattern1 16 // // user_test_pattern_b // #define tx_def_user_test_pattern_b_addr 0xd8 #define tx_def_user_test_pattern_b_bs_test_pattern2 0 // RW #define tx_def_user_test_pattern_b_bs_test_pattern3 16 // RW #define tx_def_user_test_pattern_b_bw_test_pattern2 16 #define tx_def_user_test_pattern_b_bw_test_pattern3 16 // // user_test_pattern_c // #define tx_def_user_test_pattern_c_addr 0xdc #define tx_def_user_test_pattern_c_bs_test_pattern4 0 // RW #define tx_def_user_test_pattern_c_bs_test_pattern5 16 // RW #define tx_def_user_test_pattern_c_bw_test_pattern4 16 #define tx_def_user_test_pattern_c_bw_test_pattern5 16 // // user_test_pattern_d // #define tx_def_user_test_pattern_d_addr 0xe0 #define tx_def_user_test_pattern_d_bs_test_pattern6 0 // RW #define tx_def_user_test_pattern_d_bs_test_pattern7 16 // RW #define tx_def_user_test_pattern_d_bw_test_pattern6 16 #define tx_def_user_test_pattern_d_bw_test_pattern7 16 #endif//___TX_REG_MAP__ #define ___REG_ADDR__ 1 #if ___REG_ADDR__ // JESD204B have following 3 APB ports, corresponding to 3 APB task. // JESD204B CTRL : cfg2jesd_p* <--> task: apb_jesd_write/read // JESD204B NPHY : cfg2jesd_serdes2_p* <--> task: apb_serdes2_write/read // JESD204B APHY : cfg2jesd_serdes3_p* <--> task: apb_serdes3_write/read // // Note: If system level APB configuration, each APB port need to plus corresponding base address. // for example: // JESD204B subsystem TB : apb_serdes3_write((ADDR_PHY0 + ADDR_INIT + REF_CLK_EN_ADDR)*4 , 32'd1); // System level TB : apb_write(JESD204B_APHY_BASE_ADDRESS + (ADDR_PHY0 + ADDR_INIT + REF_CLK_EN_ADDR)*4 , 32'd1); // ----------- JESD204B N PHY APB REGISTER ADDRESS ----------------- // // N PHY init #define N_ADDR_PLL 0x00000 //;//18 'h0_0000 #define N_ADDR_TX 0x00100 //;//18 'h0_0000 #define N_ADDR_RX 0x00200 //;//18 'h0_0200 #define N_ADDR_INIT 0x00300 //;//18 'h0_0300 #define N_ADDR_MONITOR 0x00400 //;//18 'h0_0400 // PLL & COMMON CFG ADDR #define N_SU_IDDQ_ADDR 0x00 // #define N_BIAS_VREFSEL_ADDR 0x01 // #define N_BIAS_IBCTL_CTLE_ADDR 0x02 // #define N_BIAS_IBCTL_PI_ADDR 0x03 // #define N_BIAS_IBCTLCU_ADDR 0x04 // #define N_BIAS_IBCTL_TX_ADDR 0x05 // #define N_PLL_MODE_ADDR 0x06 // #define N_FORCE_LK_ADDR 0x07 // #define N_SUREFCLKDIVSET_ADDR 0x08 // #define N_SUPLL_CPC_ADDR 0x09 // #define N_SUPLL_DIVSET_ADDR 0x0a // #define N_SUPLL_DIVSET_F_ADDR 0x0b // #define N_SUCRSADJ_EN_ADDR 0x0c // #define N_SUPLL_CRSTIN_EN_ADDR 0x0d // #define N_SUPLL_CRSTIN_ADDR 0x0e // #define N_SUPLL_DIVCLKSET_ADDR 0x0f // #define N_SUPLL_SSC_EN_ADDR 0x10 // #define N_SUPLL_SSC_PPM_ADDR 0x11 // #define N_SUPLL_SSC_CNT_ADDR 0x12 // #define N_SU_DEBUG_REG_WR_ADDR 0x13 // #define N_SUPLL_DTEST_SEL_ADDR 0x14 // #define N_LANE_BIST_ILB_EN_ADDR 0x15 // #define N_LANE_IDDQ_ADDR 0x16 // // TX LANE CFG ADDR #define N_TX_PCK_SEL_ADDR 0x00 // #define N_TX_RTERM_DET_EN_ADDR 0x01 // #define N_TX_WIDTH_ADDR 0x02 // #define N_TX_OOB_IN_ADDR 0x03 // #define N_TX_OOB_MODE_ADDR 0x04 // #define N_TX_RATE_ADDR 0x05 // #define N_TX_CE0_ADDR 0x06 // #define N_TX_CE1_ADDR 0x07 // #define N_TX_CE2_ADDR 0x08 // #define N_TX_TERMCCODEN_ADDR 0x09 // #define N_TX_TERMCCODEP_ADDR 0x0a // #define N_TX_BYPS_PD_TX_ADDR 0x0b // #define N_TX_BYPS_TX_EIDLE_ADDR 0x0c // #define N_TX_POLAR_ADDR 0x0d // #define N_TX_SYNC_EN_ADDR 0x0e // #define N_TX_MSBF_EN_ADDR 0x0f // #define N_TX_FORCE_RTERM_DET_RDY_ADDR 0x10 // #define N_TX_ADJ0_ADDR 0x11 // #define N_TX_ADJ1_ADDR 0x12 // #define N_TX_ADJ2_ADDR 0x13 // #define N_TX_BIASGN_PD_ADDR 0x14 // #define N_TX_BIST_EN_ADDR 0x15 // #define N_TX_PNGCTL_ADDR 0x16 // #define N_TX_DEBUG_REG_WR_ADDR 0x17 // // RX LANE CFG #define N_RX_WIDTH_ADDR 0x00 // #define N_RX_RATE_ADDR 0x01 // #define N_RX_RTERM_EN_ADDR 0x02 // #define N_RX_POLAR_ADDR 0x03 // #define N_RX_TSEQ_ADDR 0x04 // #define N_RX0_MODE_ADDR 0x05 // #define N_RX1_MODE_ADDR 0x06 // #define N_RX2_MODE_ADDR 0x07 // #define N_RX3_MODE_ADDR 0x08 // #define N_RX_IPTCODE_ADDR 0x09 // #define N_RX_MSBF_EN_ADDR 0x0a // #define N_RX_SQDET_SET_ADDR 0x0b // #define N_RX_PCK_SEL_ADDR 0x0c // #define N_RX_RDY_SEL_ADDR 0x0d // #define N_RX_FR_GAIN_ADDR 0x0e // #define N_RX_CDR_SET_ADDR 0x0f // #define N_RX_FREZ_ADPT_ADDR 0x10 // #define N_RX_AFE_RJST1_ADDR 0x11 // #define N_RX0_ADPT_EQ_SET_ADDR 0x12 // #define N_RX1_ADPT_EQ_SET_ADDR 0x13 // #define N_RX2_ADPT_EQ_SET_ADDR 0x14 // #define N_RX3_ADPT_EQ_SET_ADDR 0x15 // #define N_RX0_AFE_SET_ADDR 0x16 // #define N_RX1_AFE_SET_ADDR 0x17 // #define N_RX2_AFE_SET_ADDR 0x18 #define N_RX3_AFE_SET_ADDR 0x19 #define N_RX_DFE_SET_ADDR 0x1a #define N_RX0_DFE_ADX_ADDR 0x1b #define N_RX1_DFE_ADX_ADDR 0x1c #define N_RX2_DFE_ADX_ADDR 0x1d #define N_RX3_DFE_ADX_ADDR 0x1e #define N_RX_AFE_OS_SET_ADDR 0x1f #define N_RX_PI_CODE_ADDR 0x20 #define N_RX_DTEST_SEL_ADDR 0x21 #define N_RX_PILB_EN_ADDR 0x22 #define N_RX_BIST_EN_ADDR 0x23 #define N_RX_PCHCTL_ADDR 0x24 #define N_RX_PCHERRCLR_ADDR 0x25 #define N_RX0_DEBUG_REG_WR_ADDR 0x26 #define N_RX1_DEBUG_REG_WR_ADDR 0x27 #define N_RX2_DEBUG_REG_WR_ADDR 0x28 #define N_RX3_DEBUG_REG_WR_ADDR 0x29 #define N_RX_BYPS_PD_RX_ADDR 0x2a #define N_RX_BYPS_ADPT_EQ_CJ_ADDR 0x2b #define N_RX_BYPS_ADPT_DFE_ADDR 0x2c #define N_RX_BYPS_SAMP_TRIM_ADDR 0x2d // Initial Relate ADDR #define N_PD_PLL_ADDR 0x00 // #define N_SUMODE_ADDR 0x01 // #define N_TX_PD_TX_ADDR 0x02 // #define N_RX_PD_RX_ADDR 0x03 // #define N_AUTO_POWERUP_EN_ADDR 0x04 // #define N_RE_AUTO_POWERUP_ADDR 0x05 // #define N_CFG_WORK_ADDR 0x06 // // STATUS & MONITOR ADDR #define N_PLL_RDY_ADDR 0x00 // #define N_SU_DEBUG_REG_RE_ADDR 0x01 // #define N_SUPLL_DTESTO_ADDR 0x02 // #define N_TX_RTERM_DET_DONE_ADDR 0x03 // #define N_TX_RTERM_DET_OUT_ADDR 0x04 // #define N_TX_DEBUG_REG_RE_ADDR 0x05 // #define N_RX_EIDLE_ADDR 0x06 // #define N_RX_DTESTO_ADDR 0x07 // #define N_RX_BIST_OUT_ADDR 0x08 // #define N_RX0_PCH_ERR_ADDR 0x09 // #define N_RX1_PCH_ERR_ADDR 0x0a // #define N_RX2_PCH_ERR_ADDR 0x0b // #define N_RX3_PCH_ERR_ADDR 0x0c // #define N_RX0_DEBUG_REG_RE_ADDR 0x0d // #define N_RX1_DEBUG_REG_RE_ADDR 0x0e // #define N_RX2_DEBUG_REG_RE_ADDR 0x0f // #define N_RX3_DEBUG_REG_RE_ADDR 0x10 // #define N_RX_RDY_ADDR 0x11 // // ----------- JESD204B A PHY APB REGISTER ADDRESS ----------------- // // A PHY init #define ADDR_PHY0 0x00000 //; 32'h0_0000 #define ADDR_PHY1 0x20000 //; 32'h2_0000 #define ADDR_PLL 0x00000 //;17'h0_0000 #define ADDR_TX 0x00100 //;17'h0_0100 #define ADDR_RX 0x00200 //;17'h0_0200 #define ADDR_INIT 0x00300 //;17'h0_0300 #define ADDR_MONITOR 0x00400 //;17'h0_0400 // PLL & COMMON CFG ADDR #define REF_CLK_DIV2_EN_ADDR 0x00 // #define REF_RANGE_ADDR 0x01 // #define REF_CLK_MPLLA_DIV2_EN_ADDR 0x02 // #define REF_CLK_MPLLB_DIV2_EN_ADDR 0x03 // #define REF_CLKDET_EN_ADDR 0x04 // #define MPLLA_MULTIPLIER_ADDR 0x05 // #define MPLLB_MULTIPLIER_ADDR 0x06 // #define MPLLA_BANDWIDTH_ADDR 0x07 // #define MPLLB_BANDWIDTH_ADDR 0x08 // #define MPLLA_DIV10_CLK_EN_ADDR 0x09 // #define MPLLB_DIV10_CLK_EN_ADDR 0x0A // #define MPLLA_DIV8_CLK_EN_ADDR 0x0B // #define MPLLB_DIV8_CLK_EN_ADDR 0x0C // #define MPLLA_FRACN_CTRL_ADDR 0x0D // #define MPLLB_FRACN_CTRL_ADDR 0x0E // #define MPLLA_INIT_CAL_DISABLE_ADDR 0x0F // #define MPLLB_INIT_CAL_DISABLE_ADDR 0x10 // #define MPLLA_TX_CLK_DIV_ADDR 0x0F // #define MPLLB_TX_CLK_DIV_ADDR 0x10 // // TX LANE CFG ADDR #define LANE_TX2RX_SER_LB_EN_ADDR 0x00 // #define TX_DISABLE_ADDR 0x01 // #define TX_BEACON_EN_ADDR 0x02 // #define TX_VBOOST_EN_ADDR 0x03 // #define TX_IBOOST_LVL_ADDR 0x04 // #define TX_MISC_ADDR 0x05 // #define TX_INVERT_ADDR 0x06 // #define TX_DATA_EN_ADDR 0x07 // #define TX_REQ_ADDR 0x08 // #define TX_PSTATE_ADDR 0x09 // #define TX_LPD_ADDR 0x0a // #define TX_RATE_ADDR 0x0b // #define TX_MPLLB_SEL_ADDR 0x0c // #define TX_MPLL_EN_ADDR 0x0d // #define TX_DETRX_REQ_ADDR 0x0e // #define TX_EQ_MAIN_ADDR 0x0f // #define TX_EQ_POST_ADDR 0x10 // #define TX_EQ_PRE_ADDR 0x11 // // RX LANE CFG #define LANE_RX2TX_PAR_LB_EN_ADDR 0x00 // #define RX_DISABLE_ADDR 0x01 // #define RX_TERM_EN_ADDR 0x02 // #define RX_TERM_ACDC_ADDR 0x03 // #define RX_LOS_LFPS_EN_ADDR 0x04 // #define RX_LOS_THRESHOLD_ADDR 0x05 // #define RX_DATA_EN_ADDR 0x06 // #define RX_INVERT_ADDR 0x07 // #define RX_CDR_SSC_EN_ADDR 0x08 // #define RX_CDR_PPM_MAX_ADDR 0x09 // #define RX_REQ_ADDR 0x0a // #define RX_PSTATE_ADDR 0x0b // #define RX_LPD_ADDR 0x0c // #define RX_RATE_ADDR 0x0d // #define RX_REF_LD_VAL_ADDR 0x0e // #define RX_VCO_LD_VAL_ADDR 0x0f // #define RX_CDR_VCO_STEP_CTRL_ADDR 0x10 // #define RX_CDR_VCO_TEMP_COMP_EN_ADDR 0x11 // #define RX_CDR_VCO_FREQBAND_ADDR 0x12 // #define RX_MISC_ADDR 0x13 // #define RX_DFE_BYPASS_ADDR 0x14 // #define RX_EQ_ATT_LVL_ADDR 0x15 // #define RX_EQ_CTLE_BOOST_ADDR 0x16 // #define RX_EQ_CTLE_POLE_ADDR 0x17 // #define RX_EQ_DFE_TAP1_ADDR 0x18 // #define RX_EQ_VGA1_GAIN_ADDR 0x19 // #define RX_EQ_VGA2_GAIN_ADDR 0x1a // #define RX_ADAPT_SEL_ADDR 0x1b // #define RX_DELTA_IQ_ADDR 0x1c // #define RX_MARGIN_IQ_ADDR 0x1d // #define RX_ADAPT_CONT_ADDR 0x1e // #define RX_ADAPT_MODE_ADDR 0x1f // #define RX_ADAPT_REQ_ADDR 0x20 // #define RX_OFFCAN_CONT_ADDR 0x21 // #define RX_VREF_CTRL_ADDR 0x22 // // Initial Relate ADDR #define REF_CLK_EN_ADDR 0x00 // #define TX_CLK_RDY_ADDR 0x01 // #define PHY_RESET_ADDR 0x02 // #define TX_RESET_ADDR 0x03 // #define RX_RESET_ADDR 0x04 // #define CR_RD_ADDR 0x05 // #define CR_WR_ADDR 0x06 // #define CR_ADDR_ADDR 0x07 // #define CR_WDATA_ADDR 0x08 // #define PLL_RDY_ADDR 0x09 // #define RX_RDY_ADDR 0x0a // // STATUS & MONITOR ADDR #define TX_DETRX_RESULT_HOLD_ADDR 0x00 // #define RX_LOS_ADDR 0x01 // #define RX_PPM_DRIFT_HOLD_ADDR 0x02 // #define RX_ADAPT_FOM_HOLD_ADDR 0x03 // #define RX_TXMAIN_DIR_HOLD_ADDR 0x04 // #define RX_TXPOST_DIR_HOLD_ADDR 0x05 // #define RX_TXPRE_DIR_HOLD_ADDR 0x06 // #define REF_CLK_REQ_ADDR 0x07 // #define REF_CLKDET_RESULT_ADDR 0x08 // #define CR_BUS_BUSY_ADDR 0x09 // #define CR_RDATA_ADDR 0x0a // #define FIFO_STATUS_ADDR 0x0b // #define ACK_ADDR 0x0c // #define RX_VALID_ADDR 0x0d // // ----------- JESD204B MAC/PCS APB REGISTER ADDRESS ----------------- // #define ACCESS_JESD0 (0x0 << 12) //1'b0 << 12 #define ACCESS_JESD1 (0x1 << 12) //1'b1 << 12 #define ACCESS_GLB (0x0 << 10) //2'b00 << 10 #define ACCESS_TXDLL (0x1 << 10) //2'b01 << 10 #define ACCESS_RXDLL (0x2 << 10) //2'b10 << 10 #define ACCESS_FBDLL (0x3 << 10) //2'b11 << 10 #define TB_L 4 #define TB_F 4 #define TB_N 16 #define TB_CS 0 #define TB_SCR 0 #define TB_NP 16 #define TB_SUBCLASS 1 #define TB_JESDV 1 #define TB_CF 0 #define TB_HD 0 #define TB_S 1 #define TB_M 4 #define TB_K 32 //@h20210809 add #define TX_L 4 #define TX_F 2 // moodify 4 to 2 #define TX_N 14 #define TX_CS 0 #define TX_S 1 #define TX_M 4 #define TX_K 32 // #define TX_SCR 0 #define TX_NP 16 #define TX_SUBCLASS 1 #define TX_JESDV 1 #define TX_CF 0 #define TX_HD 0 #endif //__JESD_STATE_ #define __JESD_STATE_ 1 #if __JESD_STATE_ //state: INIT/FIFO/SYSREF/SYNC-STATUS #define ADDR_INT_STATUS 0x00 #define ADDR_AFIFO_STATUS 0x01 #define ADDR_TX_SYSREF_CNT_SYNC 0x02 #define ADDR_RX_SYSREF_CNT_SYNC 0x03 #define ADDR_FB_SYSREF_CNT_SYNC 0x04 #define ADDR_TX_SYNC_N_CNT_SYNC 0x05 #define ADDR_RX_SYNC_N_CNT_SYNC 0x06 #define ADDR_FB_SYNC_N_CNT_SYNC 0x07 #define ADDR_TX_PHY_READY 0x08 #define ADDR_RX_PHY_READY 0x09 #define ADDR_SYNC_STATUS 0x0A //h20210823 add #define ADDR_ACHAR_POSITION 0X0B #define ADDR_CFG_RD_MODE 0X10 #define ADDR_CFG_FC_MODE 0X11 #define ADDR_TXLINK_RESET_EN 0X12 #define ADDR_RXLINK_RESET_EN 0X13 //state: DATA FORMAT STATE /*#define ADDR_AD_DEMAPPING_SEL 0x20 #define ADDR_AD_LANE_SEL 0x21 #define ADDR_FB_DEMAPPING_SEL 0x22 #define ADDR_FB_LANE_SEL 0x23 #define ADDR_DA_DEMAPPING_SEL 0x24 #define ADDR_DA_LANE_SEL 0x25*/ //h20210823 modify addr #define ADDR_AD_BYTE_SWAP 0x20 #define ADDR_AD_BYTE_SHIFT 0x21 #define ADDR_AD_DEMAPPING_SEL 0x22 #define ADDR_AD_LANE_SEL 0x23 #define ADDR_FB_BYTE_SWAP 0x24 #define ADDR_FB_BYTE_SHIFT 0x25 #define ADDR_FB_DEMAPPING_SEL 0x26 #define ADDR_FB_LANE_SEL 0x27 #define ADDR_DA_DEMAPPING_SEL 0x28 #define ADDR_DA_LANE_SEL 0x29 #define ADDR_LATENCY_TEST_SEL 0x2A #define ADDR_SYSREF_SEL 0x2B #endif//__JESD_STATE_ #define USER_DEFINE_JESD 1 #if USER_DEFINE_JESD typedef struct{ uint8_t ad_demapping_sel; uint8_t ad_lane_sel; uint8_t fb_demapping_sel; uint8_t fb_lane_sel; uint8_t da_demapping_sel; uint8_t da_lane_sel; //h210823 add uint8_t ad_byte_swap; uint8_t ad_byte_shift; uint8_t fb_byte_swap; uint8_t fb_byte_shift; uint8_t latency_test_sel; uint8_t sysref_sel; uint8_t cfg_rd_mode; uint8_t cfg_fc_mode; uint8_t txlink_reset_en; uint8_t rxlink_reset_en; uint8_t achar_position;//read only }ST_JESD; #endif//USER_DEFINE_JESD void init_jesd204b_module(void); void update_jesd204b_state(void); void usr_jesd_rst_release(void); u32 apb_jesd_read(u32 addr, u32 *pdata); int apb_jesd_write(u32 addr, u32 data); void* jesd204b_thr(void * args); #endif// 1 #endif