Files
smod_atsc_app/atsc_app/adrv9009/jesd204b.h
T

1335 lines
64 KiB
C
Executable File

#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