1#ifdef CVMX_BUILD_FOR_LINUX_KERNEL
2#include <asm/octeon/cvmx.h>
3#include <asm/octeon/cvmx-qlm.h>
4#else
5#if !defined(__FreeBSD__) || !defined(_KERNEL)
6#include <cvmx.h>
7#include <cvmx-qlm.h>
8#else
9#include "cvmx.h"
10#include "cvmx-qlm.h"
11#endif
12#endif
13
14const __cvmx_qlm_jtag_field_t __cvmx_qlm_jtag_field_cn56xx[] =
15{
16    {"prbs_error_count",        267, 220},       // BIST/PRBS error count (only valid if pbrs_lock asserted)
17    {"prbs_unlock_count",       219, 212},       // BIST/PRBS unlock count (only valid if pbrs_lock asserted)
18    {"prbs_locked",             211, 211},       // BIST/PRBS lock (asserted after QLM achieves lock)
19    {"reset_prbs",              210, 210},       // BIST/PRBS reset (write 0 to reset)
20    {"run_prbs",                209, 209},       // run PRBS test pattern
21    {"run_bist",                208, 208},       // run bist (May only work for PCIe ?)
22    {"unknown",                 207, 202},       //
23    {"biasdrvsel",              201,        199},           //   assign biasdrvsel          = fus_cfg_reg[201:199] ^ jtg_cfg_reg[201:199] ^ ((pi_qlm_cfg == 2'h0) ? 3'h4 : (pi_qlm_cfg == 2'h2) ? 3'h7 : 3'h2);
24    {"biasbuffsel",             198,        196},           //   assign biasbuffsel         = fus_cfg_reg[198:196] ^ jtg_cfg_reg[198:196] ^ 3'h4;
25    {"tcoeff",                  195,        192},           //   assign tcoeff              = fus_cfg_reg[195:192] ^ jtg_cfg_reg[195:192] ^ (pi_qlm_cfg[1] ? 4'h0 : 4'hc);
26    {"mb5000",                  181,        181},           //   assign mb5000              = fus_cfg_reg[181]     ^ jtg_cfg_reg[181]     ^ 1'h0;
27    {"interpbw",                180,        176},           //   assign interpbw            = fus_cfg_reg[180:176] ^ jtg_cfg_reg[180:176] ^ ((qlm_spd == 2'h0) ? 5'h1f : (qlm_spd == 2'h1) ? 5'h10 : 5'h0);
28    {"mb",                      175,        172},           //   assign mb                  = fus_cfg_reg[175:172] ^ jtg_cfg_reg[175:172] ^ 4'h0;
29    {"bwoff",                   171,        160},           //   assign bwoff               = fus_cfg_reg[171:160] ^ jtg_cfg_reg[171:160] ^ 12'h0;
30    {"bg_ref_sel",              153,        153},           //   assign bg_ref_sel          = fus_cfg_reg[153]     ^ jtg_cfg_reg[153]     ^ 1'h0;
31    {"div2en",                  152,        152},           //   assign div2en              = fus_cfg_reg[152]     ^ jtg_cfg_reg[152]     ^ 1'h0;
32    {"trimen",                  151,        150},           //   assign trimen              = fus_cfg_reg[151:150] ^ jtg_cfg_reg[151:150] ^ 2'h0;
33    {"clkr",                    149,        144},           //   assign clkr                = fus_cfg_reg[149:144] ^ jtg_cfg_reg[149:144] ^ 6'h0;
34    {"clkf",                    143,        132},           //   assign clkf                = fus_cfg_reg[143:132] ^ jtg_cfg_reg[143:132] ^ 12'h18;
35    {"bwadj",                   131,        120},           //   assign bwadj               = fus_cfg_reg[131:120] ^ jtg_cfg_reg[131:120] ^ 12'h30;
36    {"shlpbck",                 119,        118},           //   assign shlpbck             = fus_cfg_reg[119:118] ^ jtg_cfg_reg[119:118] ^ 2'h0;
37    {"serdes_pll_byp",          117,        117},           //   assign serdes_pll_byp      = fus_cfg_reg[117]     ^ jtg_cfg_reg[117]     ^ 1'h0;
38    {"ic50dac",                 116,        112},           //   assign ic50dac             = fus_cfg_reg[116:112] ^ jtg_cfg_reg[116:112] ^ 5'h11;
39    {"sl_posedge_sample",       111,        111},           //   assign sl_posedge_sample   = fus_cfg_reg[111]     ^ jtg_cfg_reg[111]     ^ 1'h0;
40    {"sl_enable",               110,        110},           //   assign sl_enable           = fus_cfg_reg[110]     ^ jtg_cfg_reg[110]     ^ 1'h0;
41    {"rx_rout_comp_bypass",     109,        109},           //   assign rx_rout_comp_bypass = fus_cfg_reg[109]     ^ jtg_cfg_reg[109]     ^ 1'h0;
42    {"ir50dac",                 108,        104},           //   assign ir50dac             = fus_cfg_reg[108:104] ^ jtg_cfg_reg[108:104] ^ 5'h11;
43    {"rx_res_offset",           103,        100},           //   assign rx_res_offset       = fus_cfg_reg[103:100] ^ jtg_cfg_reg[103:100] ^ 4'h2;
44    {"rx_rout_comp_value",      99,         96},            //   assign rx_rout_comp_value  = fus_cfg_reg[99:96]   ^ jtg_cfg_reg[99:96]   ^ 4'h7;
45    {"tx_rout_comp_value",      95,         92},            //   assign tx_rout_comp_value  = fus_cfg_reg[95:92]   ^ jtg_cfg_reg[95:92]   ^ 4'h7;
46    {"tx_res_offset",           91,         88},            //   assign tx_res_offset       = fus_cfg_reg[91:88]   ^ jtg_cfg_reg[91:88]   ^ 4'h1;
47    {"tx_rout_comp_bypass",     87,         87},            //   assign tx_rout_comp_bypass = fus_cfg_reg[87]      ^ jtg_cfg_reg[87]      ^ 1'h0;
48    {"idle_dac",                86,         84},            //   assign idle_dac            = fus_cfg_reg[86:84]   ^ jtg_cfg_reg[86:84]   ^ 3'h4;
49    {"hyst_en",                 83,         83},            //   assign hyst_en             = fus_cfg_reg[83]      ^ jtg_cfg_reg[83]      ^ 1'h1;
50    {"rndt",                    82,         82},            //   assign rndt                = fus_cfg_reg[82]      ^ jtg_cfg_reg[82]      ^ 1'h0;
51    {"cfg_tx_com",              79,         79},            //   CN52XX cfg_tx_com     = fus_cfg_reg[79] ^ jtg_cfg_reg[79] ^ 1'h0;
52    {"cfg_cdr_errcor",          78,         78},            //   CN52XX cfg_cdr_errcor = fus_cfg_reg[78] ^ jtg_cfg_reg[78] ^ 1'h0;
53    {"cfg_cdr_secord",          77,         77},            //   CN52XX cfg_cdr_secord = fus_cfg_reg[77] ^ jtg_cfg_reg[77] ^ 1'h1;
54    {"cfg_cdr_rotate",          76,         76},            //   assign cfg_cdr_rotate      = fus_cfg_reg[76]      ^ jtg_cfg_reg[76]      ^ 1'h0;
55    {"cfg_cdr_rqoffs",          75,         68},            //   assign cfg_cdr_rqoffs      = fus_cfg_reg[75:68]   ^ jtg_cfg_reg[75:68]   ^ 8'h40;
56    {"cfg_cdr_incx",            67,         64},            //   assign cfg_cdr_incx        = fus_cfg_reg[67:64]   ^ jtg_cfg_reg[67:64]   ^ 4'h2;
57    {"cfg_cdr_state",           63,         56},            //   assign cfg_cdr_state       = fus_cfg_reg[63:56]   ^ jtg_cfg_reg[63:56]   ^ 8'h0;
58    {"cfg_cdr_bypass",          55,         55},            //   assign cfg_cdr_bypass      = fus_cfg_reg[55]      ^ jtg_cfg_reg[55]      ^ 1'h0;
59    {"cfg_tx_byp",              54,         54},            //   assign cfg_tx_byp          = fus_cfg_reg[54]      ^ jtg_cfg_reg[54]      ^ 1'h0;
60    {"cfg_tx_val",              53,         44},            //   assign cfg_tx_val          = fus_cfg_reg[53:44]   ^ jtg_cfg_reg[53:44]   ^ 10'h0;
61    {"cfg_rx_pol_set",          43,         43},            //   assign cfg_rx_pol_set      = fus_cfg_reg[43]      ^ jtg_cfg_reg[43]      ^ 1'h0;
62    {"cfg_rx_pol_clr",          42,         42},            //   assign cfg_rx_pol_clr      = fus_cfg_reg[42]      ^ jtg_cfg_reg[42]      ^ 1'h0;
63    {"cfg_cdr_bw_ctl",          41,         40},            //   assign cfg_cdr_bw_ctl      = fus_cfg_reg[41:40]   ^ jtg_cfg_reg[41:40]   ^ 2'h0;
64    {"cfg_rst_n_set",           39,         39},            //   assign cfg_rst_n_set       = fus_cfg_reg[39]      ^ jtg_cfg_reg[39]      ^ 1'h0;
65    {"cfg_rst_n_clr",           38,         38},            //   assign cfg_rst_n_clr       = fus_cfg_reg[38]      ^ jtg_cfg_reg[38]      ^ 1'h0;
66    {"cfg_tx_clk2",             37,         37},            //   assign cfg_tx_clk2         = fus_cfg_reg[37]      ^ jtg_cfg_reg[37]      ^ 1'h0;
67    {"cfg_tx_clk1",             36,         36},            //   assign cfg_tx_clk1         = fus_cfg_reg[36]      ^ jtg_cfg_reg[36]      ^ 1'h0;
68    {"cfg_tx_pol_set",          35,         35},            //   assign cfg_tx_pol_set      = fus_cfg_reg[35]      ^ jtg_cfg_reg[35]      ^ 1'h0;
69    {"cfg_tx_pol_clr",          34,         34},            //   assign cfg_tx_pol_clr      = fus_cfg_reg[34]      ^ jtg_cfg_reg[34]      ^ 1'h0;
70    {"cfg_tx_one",              33,         33},            //   assign cfg_tx_one          = fus_cfg_reg[33]      ^ jtg_cfg_reg[33]      ^ 1'h0;
71    {"cfg_tx_zero",             32,         32},            //   assign cfg_tx_zero         = fus_cfg_reg[32]      ^ jtg_cfg_reg[32]      ^ 1'h0;
72    {"cfg_rxd_wait",            31,         28},            //   assign cfg_rxd_wait        = fus_cfg_reg[31:28]   ^ jtg_cfg_reg[31:28]   ^ 4'h3;
73    {"cfg_rxd_short",           27,         27},            //   assign cfg_rxd_short       = fus_cfg_reg[27]      ^ jtg_cfg_reg[27]      ^ 1'h0;
74    {"cfg_rxd_set",             26,         26},            //   assign cfg_rxd_set         = fus_cfg_reg[26]      ^ jtg_cfg_reg[26]      ^ 1'h0;
75    {"cfg_rxd_clr",             25,         25},            //   assign cfg_rxd_clr         = fus_cfg_reg[25]      ^ jtg_cfg_reg[25]      ^ 1'h0;
76    {"cfg_loopback",            24,         24},            //   assign cfg_loopback        = fus_cfg_reg[24]      ^ jtg_cfg_reg[24]      ^ 1'h0;
77    {"cfg_tx_idle_set",         23,         23},            //   assign cfg_tx_idle_set     = fus_cfg_reg[23]      ^ jtg_cfg_reg[23]      ^ 1'h0;
78    {"cfg_tx_idle_clr",         22,         22},            //   assign cfg_tx_idle_clr     = fus_cfg_reg[22]      ^ jtg_cfg_reg[22]      ^ 1'h0;
79    {"cfg_rx_idle_set",         21,         21},            //   assign cfg_rx_idle_set     = fus_cfg_reg[21]      ^ jtg_cfg_reg[21]      ^ 1'h0;
80    {"cfg_rx_idle_clr",         20,         20},            //   assign cfg_rx_idle_clr     = fus_cfg_reg[20]      ^ jtg_cfg_reg[20]      ^ 1'h0;
81    {"cfg_rx_idle_thr",         19,         16},            //   assign cfg_rx_idle_thr     = fus_cfg_reg[19:16]   ^ jtg_cfg_reg[19:16]   ^ 4'h0;
82    {"cfg_com_thr",             15,         12},            //   assign cfg_com_thr         = fus_cfg_reg[15:12]   ^ jtg_cfg_reg[15:12]   ^ 4'h3;
83    {"cfg_rx_offset",           11,         8},             //   assign cfg_rx_offset       = fus_cfg_reg[11:8]    ^ jtg_cfg_reg[11:8]    ^ 4'h4;
84    {"cfg_skp_max",             7,          4},             //   assign cfg_skp_max         = fus_cfg_reg[7:4]     ^ jtg_cfg_reg[7:4]     ^ 4'hc;
85    {"cfg_skp_min",             3,          0},             //   assign cfg_skp_min         = fus_cfg_reg[3:0]     ^ jtg_cfg_reg[3:0]     ^ 4'h4;
86    {NULL,                      -1,         -1}
87};
88
89const __cvmx_qlm_jtag_field_t __cvmx_qlm_jtag_field_cn52xx[] =
90{
91    {"prbs_error_count",        267, 220},       // BIST/PRBS error count (only valid if pbrs_lock asserted)
92    {"prbs_unlock_count",       219, 212},       // BIST/PRBS unlock count (only valid if pbrs_lock asserted)
93    {"prbs_locked",             211, 211},       // BIST/PRBS lock (asserted after QLM achieves lock)
94    {"reset_prbs",              210, 210},       // BIST/PRBS reset (write 0 to reset)
95    {"run_prbs",                209, 209},       // run PRBS test pattern
96    {"run_bist",                208, 208},       // run bist (May only work for PCIe ?)
97    {"unknown",                 207, 202},       //
98
99    {"biasdrvsel",              201,        199},           //   assign biasdrvsel          = fus_cfg_reg[201:199] ^ jtg_cfg_reg[201:199] ^ ((pi_qlm_cfg == 2'h0) ? 3'h4 : (pi_qlm_cfg == 2'h2) ? 3'h7 : 3'h2);
100    {"biasbuffsel",             198,        196},           //   assign biasbuffsel         = fus_cfg_reg[198:196] ^ jtg_cfg_reg[198:196] ^ 3'h4;
101    {"tcoeff",                  195,        192},           //   assign tcoeff              = fus_cfg_reg[195:192] ^ jtg_cfg_reg[195:192] ^ (pi_qlm_cfg[1] ? 4'h0 : 4'hc);
102    {"mb5000",                  181,        181},           //   assign mb5000              = fus_cfg_reg[181]     ^ jtg_cfg_reg[181]     ^ 1'h0;
103    {"interpbw",                180,        176},           //   assign interpbw            = fus_cfg_reg[180:176] ^ jtg_cfg_reg[180:176] ^ ((qlm_spd == 2'h0) ? 5'h1f : (qlm_spd == 2'h1) ? 5'h10 : 5'h0);
104    {"mb",                      175,        172},           //   assign mb                  = fus_cfg_reg[175:172] ^ jtg_cfg_reg[175:172] ^ 4'h0;
105    {"bwoff",                   171,        160},           //   assign bwoff               = fus_cfg_reg[171:160] ^ jtg_cfg_reg[171:160] ^ 12'h0;
106    {"bg_ref_sel",              153,        153},           //   assign bg_ref_sel          = fus_cfg_reg[153]     ^ jtg_cfg_reg[153]     ^ 1'h0;
107    {"div2en",                  152,        152},           //   assign div2en              = fus_cfg_reg[152]     ^ jtg_cfg_reg[152]     ^ 1'h0;
108    {"trimen",                  151,        150},           //   assign trimen              = fus_cfg_reg[151:150] ^ jtg_cfg_reg[151:150] ^ 2'h0;
109    {"clkr",                    149,        144},           //   assign clkr                = fus_cfg_reg[149:144] ^ jtg_cfg_reg[149:144] ^ 6'h0;
110    {"clkf",                    143,        132},           //   assign clkf                = fus_cfg_reg[143:132] ^ jtg_cfg_reg[143:132] ^ 12'h18;
111    {"bwadj",                   131,        120},           //   assign bwadj               = fus_cfg_reg[131:120] ^ jtg_cfg_reg[131:120] ^ 12'h30;
112    {"shlpbck",                 119,        118},           //   assign shlpbck             = fus_cfg_reg[119:118] ^ jtg_cfg_reg[119:118] ^ 2'h0;
113    {"serdes_pll_byp",          117,        117},           //   assign serdes_pll_byp      = fus_cfg_reg[117]     ^ jtg_cfg_reg[117]     ^ 1'h0;
114    {"ic50dac",                 116,        112},           //   assign ic50dac             = fus_cfg_reg[116:112] ^ jtg_cfg_reg[116:112] ^ 5'h11;
115    {"sl_posedge_sample",       111,        111},           //   assign sl_posedge_sample   = fus_cfg_reg[111]     ^ jtg_cfg_reg[111]     ^ 1'h0;
116    {"sl_enable",               110,        110},           //   assign sl_enable           = fus_cfg_reg[110]     ^ jtg_cfg_reg[110]     ^ 1'h0;
117    {"rx_rout_comp_bypass",     109,        109},           //   assign rx_rout_comp_bypass = fus_cfg_reg[109]     ^ jtg_cfg_reg[109]     ^ 1'h0;
118    {"ir50dac",                 108,        104},           //   assign ir50dac             = fus_cfg_reg[108:104] ^ jtg_cfg_reg[108:104] ^ 5'h11;
119    {"rx_res_offset",           103,        100},           //   assign rx_res_offset       = fus_cfg_reg[103:100] ^ jtg_cfg_reg[103:100] ^ 4'h2;
120    {"rx_rout_comp_value",      99,         96},            //   assign rx_rout_comp_value  = fus_cfg_reg[99:96]   ^ jtg_cfg_reg[99:96]   ^ 4'h7;
121    {"tx_rout_comp_value",      95,         92},            //   assign tx_rout_comp_value  = fus_cfg_reg[95:92]   ^ jtg_cfg_reg[95:92]   ^ 4'h7;
122    {"tx_res_offset",           91,         88},            //   assign tx_res_offset       = fus_cfg_reg[91:88]   ^ jtg_cfg_reg[91:88]   ^ 4'h1;
123    {"tx_rout_comp_bypass",     87,         87},            //   assign tx_rout_comp_bypass = fus_cfg_reg[87]      ^ jtg_cfg_reg[87]      ^ 1'h0;
124    {"idle_dac",                86,         84},            //   assign idle_dac            = fus_cfg_reg[86:84]   ^ jtg_cfg_reg[86:84]   ^ 3'h4;
125    {"hyst_en",                 83,         83},            //   assign hyst_en             = fus_cfg_reg[83]      ^ jtg_cfg_reg[83]      ^ 1'h1;
126    {"rndt",                    82,         82},            //   assign rndt                = fus_cfg_reg[82]      ^ jtg_cfg_reg[82]      ^ 1'h0;
127    {"cfg_tx_com",              79,         79},            //   CN52XX cfg_tx_com     = fus_cfg_reg[79] ^ jtg_cfg_reg[79] ^ 1'h0;
128    {"cfg_cdr_errcor",          78,         78},            //   CN52XX cfg_cdr_errcor = fus_cfg_reg[78] ^ jtg_cfg_reg[78] ^ 1'h0;
129    {"cfg_cdr_secord",          77,         77},            //   CN52XX cfg_cdr_secord = fus_cfg_reg[77] ^ jtg_cfg_reg[77] ^ 1'h1;
130    {"cfg_cdr_rotate",          76,         76},            //   assign cfg_cdr_rotate      = fus_cfg_reg[76]      ^ jtg_cfg_reg[76]      ^ 1'h0;
131    {"cfg_cdr_rqoffs",          75,         68},            //   assign cfg_cdr_rqoffs      = fus_cfg_reg[75:68]   ^ jtg_cfg_reg[75:68]   ^ 8'h40;
132    {"cfg_cdr_incx",            67,         64},            //   assign cfg_cdr_incx        = fus_cfg_reg[67:64]   ^ jtg_cfg_reg[67:64]   ^ 4'h2;
133    {"cfg_cdr_state",           63,         56},            //   assign cfg_cdr_state       = fus_cfg_reg[63:56]   ^ jtg_cfg_reg[63:56]   ^ 8'h0;
134    {"cfg_cdr_bypass",          55,         55},            //   assign cfg_cdr_bypass      = fus_cfg_reg[55]      ^ jtg_cfg_reg[55]      ^ 1'h0;
135    {"cfg_tx_byp",              54,         54},            //   assign cfg_tx_byp          = fus_cfg_reg[54]      ^ jtg_cfg_reg[54]      ^ 1'h0;
136    {"cfg_tx_val",              53,         44},            //   assign cfg_tx_val          = fus_cfg_reg[53:44]   ^ jtg_cfg_reg[53:44]   ^ 10'h0;
137    {"cfg_rx_pol_set",          43,         43},            //   assign cfg_rx_pol_set      = fus_cfg_reg[43]      ^ jtg_cfg_reg[43]      ^ 1'h0;
138    {"cfg_rx_pol_clr",          42,         42},            //   assign cfg_rx_pol_clr      = fus_cfg_reg[42]      ^ jtg_cfg_reg[42]      ^ 1'h0;
139    {"cfg_cdr_bw_ctl",          41,         40},            //   assign cfg_cdr_bw_ctl      = fus_cfg_reg[41:40]   ^ jtg_cfg_reg[41:40]   ^ 2'h0;
140    {"cfg_rst_n_set",           39,         39},            //   assign cfg_rst_n_set       = fus_cfg_reg[39]      ^ jtg_cfg_reg[39]      ^ 1'h0;
141    {"cfg_rst_n_clr",           38,         38},            //   assign cfg_rst_n_clr       = fus_cfg_reg[38]      ^ jtg_cfg_reg[38]      ^ 1'h0;
142    {"cfg_tx_clk2",             37,         37},            //   assign cfg_tx_clk2         = fus_cfg_reg[37]      ^ jtg_cfg_reg[37]      ^ 1'h0;
143    {"cfg_tx_clk1",             36,         36},            //   assign cfg_tx_clk1         = fus_cfg_reg[36]      ^ jtg_cfg_reg[36]      ^ 1'h0;
144    {"cfg_tx_pol_set",          35,         35},            //   assign cfg_tx_pol_set      = fus_cfg_reg[35]      ^ jtg_cfg_reg[35]      ^ 1'h0;
145    {"cfg_tx_pol_clr",          34,         34},            //   assign cfg_tx_pol_clr      = fus_cfg_reg[34]      ^ jtg_cfg_reg[34]      ^ 1'h0;
146    {"cfg_tx_one",              33,         33},            //   assign cfg_tx_one          = fus_cfg_reg[33]      ^ jtg_cfg_reg[33]      ^ 1'h0;
147    {"cfg_tx_zero",             32,         32},            //   assign cfg_tx_zero         = fus_cfg_reg[32]      ^ jtg_cfg_reg[32]      ^ 1'h0;
148    {"cfg_rxd_wait",            31,         28},            //   assign cfg_rxd_wait        = fus_cfg_reg[31:28]   ^ jtg_cfg_reg[31:28]   ^ 4'h3;
149    {"cfg_rxd_short",           27,         27},            //   assign cfg_rxd_short       = fus_cfg_reg[27]      ^ jtg_cfg_reg[27]      ^ 1'h0;
150    {"cfg_rxd_set",             26,         26},            //   assign cfg_rxd_set         = fus_cfg_reg[26]      ^ jtg_cfg_reg[26]      ^ 1'h0;
151    {"cfg_rxd_clr",             25,         25},            //   assign cfg_rxd_clr         = fus_cfg_reg[25]      ^ jtg_cfg_reg[25]      ^ 1'h0;
152    {"cfg_loopback",            24,         24},            //   assign cfg_loopback        = fus_cfg_reg[24]      ^ jtg_cfg_reg[24]      ^ 1'h0;
153    {"cfg_tx_idle_set",         23,         23},            //   assign cfg_tx_idle_set     = fus_cfg_reg[23]      ^ jtg_cfg_reg[23]      ^ 1'h0;
154    {"cfg_tx_idle_clr",         22,         22},            //   assign cfg_tx_idle_clr     = fus_cfg_reg[22]      ^ jtg_cfg_reg[22]      ^ 1'h0;
155    {"cfg_rx_idle_set",         21,         21},            //   assign cfg_rx_idle_set     = fus_cfg_reg[21]      ^ jtg_cfg_reg[21]      ^ 1'h0;
156    {"cfg_rx_idle_clr",         20,         20},            //   assign cfg_rx_idle_clr     = fus_cfg_reg[20]      ^ jtg_cfg_reg[20]      ^ 1'h0;
157    {"cfg_rx_idle_thr",         19,         16},            //   assign cfg_rx_idle_thr     = fus_cfg_reg[19:16]   ^ jtg_cfg_reg[19:16]   ^ 4'h0;
158    {"cfg_com_thr",             15,         12},            //   assign cfg_com_thr         = fus_cfg_reg[15:12]   ^ jtg_cfg_reg[15:12]   ^ 4'h3;
159    {"cfg_rx_offset",           11,         8},             //   assign cfg_rx_offset       = fus_cfg_reg[11:8]    ^ jtg_cfg_reg[11:8]    ^ 4'h4;
160    {"cfg_skp_max",             7,          4},             //   assign cfg_skp_max         = fus_cfg_reg[7:4]     ^ jtg_cfg_reg[7:4]     ^ 4'hc;
161    {"cfg_skp_min",             3,          0},             //   assign cfg_skp_min         = fus_cfg_reg[3:0]     ^ jtg_cfg_reg[3:0]     ^ 4'h4;
162    {NULL,                      -1,         -1}
163};
164
165
166const __cvmx_qlm_jtag_field_t __cvmx_qlm_jtag_field_cn63xx[] =
167{
168    {"prbs_err_cnt",        299, 252},  // prbs_err_cnt[47..0]
169    {"prbs_lock",           251, 251},  // prbs_lock
170    {"jtg_prbs_rst_n",      250, 250},  // jtg_prbs_rst_n
171    {"jtg_run_prbs31",      249, 249},  // jtg_run_prbs31
172    {"jtg_run_prbs7",       248, 248},  // jtg_run_prbs7
173    {"Unused1",             247, 245},  // 0
174    {"cfg_pwrup_set",       244, 244},  // cfg_pwrup_set
175    {"cfg_pwrup_clr",       243, 243},  // cfg_pwrup_clr
176    {"cfg_rst_n_set",       242, 242},  // cfg_rst_n_set
177    {"cfg_rst_n_clr",       241, 241},  // cfg_rst_n_clr
178    {"cfg_tx_idle_set",     240, 240},  // cfg_tx_idle_set
179    {"cfg_tx_idle_clr",     239, 239},  // cfg_tx_idle_clr
180    {"cfg_tx_byp",          238, 238},  // cfg_tx_byp
181    {"cfg_tx_byp_inv",      237, 237},  // cfg_tx_byp_inv
182    {"cfg_tx_byp_val",      236, 227},  // cfg_tx_byp_val[9..0]
183    {"cfg_loopback",        226, 226},  // cfg_loopback
184    {"shlpbck",             225, 224},  // shlpbck[1..0]
185    {"sl_enable",           223, 223},  // sl_enable
186    {"sl_posedge_sample",   222, 222},  // sl_posedge_sample
187    {"trimen",              221, 220},  // trimen[1..0]
188    {"serdes_tx_byp",       219, 219},  // serdes_tx_byp
189    {"serdes_pll_byp",      218, 218},  // serdes_pll_byp
190    {"lowf_byp",            217, 217},  // lowf_byp
191    {"spdsel_byp",          216, 216},  // spdsel_byp
192    {"div4_byp",            215, 215},  // div4_byp
193    {"clkf_byp",            214, 208},  // clkf_byp[6..0]
194    {"Unused2",             207, 206},  // 0
195    {"biasdrv_hs_ls_byp",   205, 201},  // biasdrv_hs_ls_byp[4..0]
196    {"tcoeff_hf_ls_byp",    200, 197},  // tcoeff_hf_ls_byp[3..0]
197    {"biasdrv_hf_byp",      196, 192},  // biasdrv_hf_byp[4..0]
198    {"tcoeff_hf_byp",       191, 188},  // tcoeff_hf_byp[3..0]
199    {"Unused3",             187, 186},  // 0
200    {"biasdrv_lf_ls_byp",   185, 181},  // biasdrv_lf_ls_byp[4..0]
201    {"tcoeff_lf_ls_byp",    180, 177},  // tcoeff_lf_ls_byp[3..0]
202    {"biasdrv_lf_byp",      176, 172},  // biasdrv_lf_byp[4..0]
203    {"tcoeff_lf_byp",       171, 168},  // tcoeff_lf_byp[3..0]
204    {"Unused4",             167, 167},  // 0
205    {"interpbw",            166, 162},  // interpbw[4..0]
206    {"pll_cpb",             161, 159},  // pll_cpb[2..0]
207    {"pll_cps",             158, 156},  // pll_cps[2..0]
208    {"pll_diffamp",         155, 152},  // pll_diffamp[3..0]
209    {"Unused5",             151, 150},  // 0
210    {"cfg_rx_idle_set",     149, 149},  // cfg_rx_idle_set
211    {"cfg_rx_idle_clr",     148, 148},  // cfg_rx_idle_clr
212    {"cfg_rx_idle_thr",     147, 144},  // cfg_rx_idle_thr[3..0]
213    {"cfg_com_thr",         143, 140},  // cfg_com_thr[3..0]
214    {"cfg_rx_offset",       139, 136},  // cfg_rx_offset[3..0]
215    {"cfg_skp_max",         135, 132},  // cfg_skp_max[3..0]
216    {"cfg_skp_min",         131, 128},  // cfg_skp_min[3..0]
217    {"cfg_fast_pwrup",      127, 127},  // cfg_fast_pwrup
218    {"Unused6",             126, 100},  // 0
219    {"detected_n",           99,  99},  // detected_n
220    {"detected_p",           98,  98},  // detected_p
221    {"dbg_res_rx",           97,  94},  // dbg_res_rx[3..0]
222    {"dbg_res_tx",           93,  90},  // dbg_res_tx[3..0]
223    {"cfg_tx_pol_set",       89,  89},  // cfg_tx_pol_set
224    {"cfg_tx_pol_clr",       88,  88},  // cfg_tx_pol_clr
225    {"cfg_rx_pol_set",       87,  87},  // cfg_rx_pol_set
226    {"cfg_rx_pol_clr",       86,  86},  // cfg_rx_pol_clr
227    {"cfg_rxd_set",          85,  85},  // cfg_rxd_set
228    {"cfg_rxd_clr",          84,  84},  // cfg_rxd_clr
229    {"cfg_rxd_wait",         83,  80},  // cfg_rxd_wait[3..0]
230    {"cfg_cdr_limit",        79,  79},  // cfg_cdr_limit
231    {"cfg_cdr_rotate",       78,  78},  // cfg_cdr_rotate
232    {"cfg_cdr_bw_ctl",       77,  76},  // cfg_cdr_bw_ctl[1..0]
233    {"cfg_cdr_trunc",        75,  74},  // cfg_cdr_trunc[1..0]
234    {"cfg_cdr_rqoffs",       73,  64},  // cfg_cdr_rqoffs[9..0]
235    {"cfg_cdr_inc2",         63,  58},  // cfg_cdr_inc2[5..0]
236    {"cfg_cdr_inc1",         57,  52},  // cfg_cdr_inc1[5..0]
237    {"fusopt_voter_sync",    51,  51},  // fusopt_voter_sync
238    {"rndt",                 50,  50},  // rndt
239    {"hcya",                 49,  49},  // hcya
240    {"hyst",                 48,  48},  // hyst
241    {"idle_dac",             47,  45},  // idle_dac[2..0]
242    {"bg_ref_sel",           44,  44},  // bg_ref_sel
243    {"ic50dac",              43,  39},  // ic50dac[4..0]
244    {"ir50dac",              38,  34},  // ir50dac[4..0]
245    {"tx_rout_comp_bypass",  33,  33},  // tx_rout_comp_bypass
246    {"tx_rout_comp_value",   32,  29},  // tx_rout_comp_value[3..0]
247    {"tx_res_offset",        28,  25},  // tx_res_offset[3..0]
248    {"rx_rout_comp_bypass",  24,  24},  // rx_rout_comp_bypass
249    {"rx_rout_comp_value",   23,  20},  // rx_rout_comp_value[3..0]
250    {"rx_res_offset",        19,  16},  // rx_res_offset[3..0]
251    {"rx_cap_gen2",          15,  12},  // rx_cap_gen2[3..0]
252    {"rx_eq_gen2",           11,   8},  // rx_eq_gen2[3..0]
253    {"rx_cap_gen1",           7,   4},  // rx_cap_gen1[3..0]
254    {"rx_eq_gen1",            3,   0},  // rx_eq_gen1[3..0]
255    {NULL, -1, -1}
256};
257
258const __cvmx_qlm_jtag_field_t __cvmx_qlm_jtag_field_cn66xx[] =
259{
260    {"prbs_err_cnt",        303, 256},  // prbs_err_cnt[47..0]
261    {"prbs_lock",           255, 255},  // prbs_lock
262    {"jtg_prbs_rx_rst_n",   254, 254},  // jtg_prbs_rx_rst_n
263    {"jtg_prbs_tx_rst_n",   253, 253},  // jtg_prbs_tx_rst_n
264    {"jtg_prbs_mode",       252, 251},  // jtg_prbs_mode[252:251]
265    {"jtg_prbs_rst_n",      250, 250},  // jtg_prbs_rst_n
266    {"jtg_run_prbs31",      249, 249},  // jtg_run_prbs31 - Use jtg_prbs_mode instead
267    {"jtg_run_prbs7",       248, 248},  // jtg_run_prbs7 - Use jtg_prbs_mode instead
268    {"Unused1",             247, 246},  // 0
269    {"div5_byp",            245, 245},  // div5_byp
270    {"cfg_pwrup_set",       244, 244},  // cfg_pwrup_set
271    {"cfg_pwrup_clr",       243, 243},  // cfg_pwrup_clr
272    {"cfg_rst_n_set",       242, 242},  // cfg_rst_n_set
273    {"cfg_rst_n_clr",       241, 241},  // cfg_rst_n_clr
274    {"cfg_tx_idle_set",     240, 240},  // cfg_tx_idle_set
275    {"cfg_tx_idle_clr",     239, 239},  // cfg_tx_idle_clr
276    {"cfg_tx_byp",          238, 238},  // cfg_tx_byp
277    {"cfg_tx_byp_inv",      237, 237},  // cfg_tx_byp_inv
278    {"cfg_tx_byp_val",      236, 227},  // cfg_tx_byp_val[9..0]
279    {"cfg_loopback",        226, 226},  // cfg_loopback
280    {"shlpbck",             225, 224},  // shlpbck[1..0]
281    {"sl_enable",           223, 223},  // sl_enable
282    {"sl_posedge_sample",   222, 222},  // sl_posedge_sample
283    {"trimen",              221, 220},  // trimen[1..0]
284    {"serdes_tx_byp",       219, 219},  // serdes_tx_byp
285    {"serdes_pll_byp",      218, 218},  // serdes_pll_byp
286    {"lowf_byp",            217, 217},  // lowf_byp
287    {"spdsel_byp",          216, 216},  // spdsel_byp
288    {"div4_byp",            215, 215},  // div4_byp
289    {"clkf_byp",            214, 208},  // clkf_byp[6..0]
290    {"biasdrv_hs_ls_byp",   207, 203},  // biasdrv_hs_ls_byp[4..0]
291    {"tcoeff_hf_ls_byp",    202, 198},  // tcoeff_hf_ls_byp[4..0]
292    {"biasdrv_hf_byp",      197, 193},  // biasdrv_hf_byp[4..0]
293    {"tcoeff_hf_byp",       192, 188},  // tcoeff_hf_byp[4..0]
294    {"biasdrv_lf_ls_byp",   187, 183},  // biasdrv_lf_ls_byp[4..0]
295    {"tcoeff_lf_ls_byp",    182, 178},  // tcoeff_lf_ls_byp[4..0]
296    {"biasdrv_lf_byp",      177, 173},  // biasdrv_lf_byp[4..0]
297    {"tcoeff_lf_byp",       172, 168},  // tcoeff_lf_byp[4..0]
298    {"Unused4",             167, 167},  // 0
299    {"interpbw",            166, 162},  // interpbw[4..0]
300    {"pll_cpb",             161, 159},  // pll_cpb[2..0]
301    {"pll_cps",             158, 156},  // pll_cps[2..0]
302    {"pll_diffamp",         155, 152},  // pll_diffamp[3..0]
303    {"cfg_err_thr",         151, 150},  // cfg_err_thr
304    {"cfg_rx_idle_set",     149, 149},  // cfg_rx_idle_set
305    {"cfg_rx_idle_clr",     148, 148},  // cfg_rx_idle_clr
306    {"cfg_rx_idle_thr",     147, 144},  // cfg_rx_idle_thr[3..0]
307    {"cfg_com_thr",         143, 140},  // cfg_com_thr[3..0]
308    {"cfg_rx_offset",       139, 136},  // cfg_rx_offset[3..0]
309    {"cfg_skp_max",         135, 132},  // cfg_skp_max[3..0]
310    {"cfg_skp_min",         131, 128},  // cfg_skp_min[3..0]
311    {"cfg_fast_pwrup",      127, 127},  // cfg_fast_pwrup
312    {"Unused6",             126, 101},  // 0
313    {"cfg_indep_dis",       100, 100},  // cfg_indep_dis
314    {"detected_n",           99,  99},  // detected_n
315    {"detected_p",           98,  98},  // detected_p
316    {"dbg_res_rx",           97,  94},  // dbg_res_rx[3..0]
317    {"dbg_res_tx",           93,  90},  // dbg_res_tx[3..0]
318    {"cfg_tx_pol_set",       89,  89},  // cfg_tx_pol_set
319    {"cfg_tx_pol_clr",       88,  88},  // cfg_tx_pol_clr
320    {"cfg_rx_pol_set",       87,  87},  // cfg_rx_pol_set
321    {"cfg_rx_pol_clr",       86,  86},  // cfg_rx_pol_clr
322    {"cfg_rxd_set",          85,  85},  // cfg_rxd_set
323    {"cfg_rxd_clr",          84,  84},  // cfg_rxd_clr
324    {"cfg_rxd_wait",         83,  80},  // cfg_rxd_wait[3..0]
325    {"cfg_cdr_limit",        79,  79},  // cfg_cdr_limit
326    {"cfg_cdr_rotate",       78,  78},  // cfg_cdr_rotate
327    {"cfg_cdr_bw_ctl",       77,  76},  // cfg_cdr_bw_ctl[1..0]
328    {"cfg_cdr_trunc",        75,  74},  // cfg_cdr_trunc[1..0]
329    {"cfg_cdr_rqoffs",       73,  64},  // cfg_cdr_rqoffs[9..0]
330    {"cfg_cdr_inc2",         63,  58},  // cfg_cdr_inc2[5..0]
331    {"cfg_cdr_inc1",         57,  52},  // cfg_cdr_inc1[5..0]
332    {"fusopt_voter_sync",    51,  51},  // fusopt_voter_sync
333    {"rndt",                 50,  50},  // rndt
334    {"hcya",                 49,  49},  // hcya
335    {"hyst",                 48,  48},  // hyst
336    {"idle_dac",             47,  45},  // idle_dac[2..0]
337    {"bg_ref_sel",           44,  44},  // bg_ref_sel
338    {"ic50dac",              43,  39},  // ic50dac[4..0]
339    {"ir50dac",              38,  34},  // ir50dac[4..0]
340    {"tx_rout_comp_bypass",  33,  33},  // tx_rout_comp_bypass
341    {"tx_rout_comp_value",   32,  29},  // tx_rout_comp_value[3..0]
342    {"tx_res_offset",        28,  25},  // tx_res_offset[3..0]
343    {"rx_rout_comp_bypass",  24,  24},  // rx_rout_comp_bypass
344    {"rx_rout_comp_value",   23,  20},  // rx_rout_comp_value[3..0]
345    {"rx_res_offset",        19,  16},  // rx_res_offset[3..0]
346    {"rx_cap_gen2",          15,  12},  // rx_cap_gen2[3..0]
347    {"rx_eq_gen2",           11,   8},  // rx_eq_gen2[3..0]
348    {"rx_cap_gen1",           7,   4},  // rx_cap_gen1[3..0]
349    {"rx_eq_gen1",            3,   0},  // rx_eq_gen1[3..0]
350    {NULL, -1, -1}
351};
352
353const __cvmx_qlm_jtag_field_t __cvmx_qlm_jtag_field_cn68xx[] =
354{
355    {"prbs_err_cnt",        303, 256},  // prbs_err_cnt[47..0]
356    {"prbs_lock",           255, 255},  // prbs_lock
357    {"jtg_prbs_rx_rst_n",   254, 254},  // jtg_prbs_rx_rst_n
358    {"jtg_prbs_tx_rst_n",   253, 253},  // jtg_prbs_tx_rst_n
359    {"jtg_prbs_mode",       252, 251},  // jtg_prbs_mode[252:251]
360    {"jtg_prbs_rst_n",      250, 250},  // jtg_prbs_rst_n
361    {"jtg_run_prbs31",      249, 249},  // jtg_run_prbs31 - Use jtg_prbs_mode instead
362    {"jtg_run_prbs7",       248, 248},  // jtg_run_prbs7 - Use jtg_prbs_mode instead
363    {"Unused1",             247, 245},  // 0
364    {"cfg_pwrup_set",       244, 244},  // cfg_pwrup_set
365    {"cfg_pwrup_clr",       243, 243},  // cfg_pwrup_clr
366    {"cfg_rst_n_set",       242, 242},  // cfg_rst_n_set
367    {"cfg_rst_n_clr",       241, 241},  // cfg_rst_n_clr
368    {"cfg_tx_idle_set",     240, 240},  // cfg_tx_idle_set
369    {"cfg_tx_idle_clr",     239, 239},  // cfg_tx_idle_clr
370    {"cfg_tx_byp",          238, 238},  // cfg_tx_byp
371    {"cfg_tx_byp_inv",      237, 237},  // cfg_tx_byp_inv
372    {"cfg_tx_byp_val",      236, 227},  // cfg_tx_byp_val[9..0]
373    {"cfg_loopback",        226, 226},  // cfg_loopback
374    {"shlpbck",             225, 224},  // shlpbck[1..0]
375    {"sl_enable",           223, 223},  // sl_enable
376    {"sl_posedge_sample",   222, 222},  // sl_posedge_sample
377    {"trimen",              221, 220},  // trimen[1..0]
378    {"serdes_tx_byp",       219, 219},  // serdes_tx_byp
379    {"serdes_pll_byp",      218, 218},  // serdes_pll_byp
380    {"lowf_byp",            217, 217},  // lowf_byp
381    {"spdsel_byp",          216, 216},  // spdsel_byp
382    {"div4_byp",            215, 215},  // div4_byp
383    {"clkf_byp",            214, 208},  // clkf_byp[6..0]
384    {"biasdrv_hs_ls_byp",   207, 203},  // biasdrv_hs_ls_byp[4..0]
385    {"tcoeff_hf_ls_byp",    202, 198},  // tcoeff_hf_ls_byp[4..0]
386    {"biasdrv_hf_byp",      197, 193},  // biasdrv_hf_byp[4..0]
387    {"tcoeff_hf_byp",       192, 188},  // tcoeff_hf_byp[4..0]
388    {"biasdrv_lf_ls_byp",   187, 183},  // biasdrv_lf_ls_byp[4..0]
389    {"tcoeff_lf_ls_byp",    182, 178},  // tcoeff_lf_ls_byp[4..0]
390    {"biasdrv_lf_byp",      177, 173},  // biasdrv_lf_byp[4..0]
391    {"tcoeff_lf_byp",       172, 168},  // tcoeff_lf_byp[4..0]
392    {"Unused4",             167, 167},  // 0
393    {"interpbw",            166, 162},  // interpbw[4..0]
394    {"pll_cpb",             161, 159},  // pll_cpb[2..0]
395    {"pll_cps",             158, 156},  // pll_cps[2..0]
396    {"pll_diffamp",         155, 152},  // pll_diffamp[3..0]
397    {"cfg_err_thr",         151, 150},  // cfg_err_thr
398    {"cfg_rx_idle_set",     149, 149},  // cfg_rx_idle_set
399    {"cfg_rx_idle_clr",     148, 148},  // cfg_rx_idle_clr
400    {"cfg_rx_idle_thr",     147, 144},  // cfg_rx_idle_thr[3..0]
401    {"cfg_com_thr",         143, 140},  // cfg_com_thr[3..0]
402    {"cfg_rx_offset",       139, 136},  // cfg_rx_offset[3..0]
403    {"cfg_skp_max",         135, 132},  // cfg_skp_max[3..0]
404    {"cfg_skp_min",         131, 128},  // cfg_skp_min[3..0]
405    {"cfg_fast_pwrup",      127, 127},  // cfg_fast_pwrup
406    {"Unused6",             126, 100},  // 0
407    {"detected_n",           99,  99},  // detected_n
408    {"detected_p",           98,  98},  // detected_p
409    {"dbg_res_rx",           97,  94},  // dbg_res_rx[3..0]
410    {"dbg_res_tx",           93,  90},  // dbg_res_tx[3..0]
411    {"cfg_tx_pol_set",       89,  89},  // cfg_tx_pol_set
412    {"cfg_tx_pol_clr",       88,  88},  // cfg_tx_pol_clr
413    {"cfg_rx_pol_set",       87,  87},  // cfg_rx_pol_set
414    {"cfg_rx_pol_clr",       86,  86},  // cfg_rx_pol_clr
415    {"cfg_rxd_set",          85,  85},  // cfg_rxd_set
416    {"cfg_rxd_clr",          84,  84},  // cfg_rxd_clr
417    {"cfg_rxd_wait",         83,  80},  // cfg_rxd_wait[3..0]
418    {"cfg_cdr_limit",        79,  79},  // cfg_cdr_limit
419    {"cfg_cdr_rotate",       78,  78},  // cfg_cdr_rotate
420    {"cfg_cdr_bw_ctl",       77,  76},  // cfg_cdr_bw_ctl[1..0]
421    {"cfg_cdr_trunc",        75,  74},  // cfg_cdr_trunc[1..0]
422    {"cfg_cdr_rqoffs",       73,  64},  // cfg_cdr_rqoffs[9..0]
423    {"cfg_cdr_inc2",         63,  58},  // cfg_cdr_inc2[5..0]
424    {"cfg_cdr_inc1",         57,  52},  // cfg_cdr_inc1[5..0]
425    {"fusopt_voter_sync",    51,  51},  // fusopt_voter_sync
426    {"rndt",                 50,  50},  // rndt
427    {"hcya",                 49,  49},  // hcya
428    {"hyst",                 48,  48},  // hyst
429    {"idle_dac",             47,  45},  // idle_dac[2..0]
430    {"bg_ref_sel",           44,  44},  // bg_ref_sel
431    {"ic50dac",              43,  39},  // ic50dac[4..0]
432    {"ir50dac",              38,  34},  // ir50dac[4..0]
433    {"tx_rout_comp_bypass",  33,  33},  // tx_rout_comp_bypass
434    {"tx_rout_comp_value",   32,  29},  // tx_rout_comp_value[3..0]
435    {"tx_res_offset",        28,  25},  // tx_res_offset[3..0]
436    {"rx_rout_comp_bypass",  24,  24},  // rx_rout_comp_bypass
437    {"rx_rout_comp_value",   23,  20},  // rx_rout_comp_value[3..0]
438    {"rx_res_offset",        19,  16},  // rx_res_offset[3..0]
439    {"rx_cap_gen2",          15,  12},  // rx_cap_gen2[3..0]
440    {"rx_eq_gen2",           11,   8},  // rx_eq_gen2[3..0]
441    {"rx_cap_gen1",           7,   4},  // rx_cap_gen1[3..0]
442    {"rx_eq_gen1",            3,   0},  // rx_eq_gen1[3..0]
443    {NULL, -1, -1}
444};
445
446