Lines Matching refs:interface

122  * Initialize and start the ILK interface.
124 * @param interface The identifier of the packet interface to configure and
125 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
128 * @param lane_mask the lane group for this interface
132 int cvmx_ilk_start_interface (int interface, unsigned char lane_mask)
145 if (interface >= CVMX_NUM_ILK_INTF)
152 * interface only */
153 other_intf = !interface;
154 this_qlm = interface + CVMX_ILK_QLM_BASE;
158 cvmx_dprintf ("ILK%d: %s: lane assignment conflict\n", interface,
163 /* check the legality of the lane mask. interface 0 can have 8 lanes,
164 * while interface 1 can have 4 lanes at most */
165 uni_mask = lane_mask >> (interface * 4);
167 uni_mask != 0xff) || (interface == 1 && lane_mask > 0xf0))
170 cvmx_dprintf ("ILK%d: %s: incorrect lane mask: 0x%x \n", interface,
184 cvmx_dprintf ("ILK%d: %s: qlm unavailable\n", interface, __FUNCTION__);
199 ilk_ser_cfg.s.ser_pwrup |= ((interface ==0) && (lane_mask > 0xf)) ?
200 0x3 : (1 << interface);
203 /* configure the lane enable of the interface */
204 ilk_txx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
205 ilk_rxx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG0(interface));
207 cvmx_write_csr (CVMX_ILK_TXX_CFG0(interface), ilk_txx_cfg0.u64);
208 cvmx_write_csr (CVMX_ILK_RXX_CFG0(interface), ilk_rxx_cfg0.u64);
210 /* write to local cache. for lane speed, if interface 0 has 8 lanes,
212 cvmx_ilk_intf_cfg[interface].intf_en = 1;
213 cvmx_ilk_intf_cfg[interface].lane_en_mask = lane_mask;
220 * set pipe group base and length for the interface
222 * @param interface The identifier of the packet interface to configure and
223 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
231 int cvmx_ilk_set_pipe (int interface, int pipe_base, unsigned int pipe_len)
239 if (interface >= CVMX_NUM_ILK_INTF)
246 cvmx_dprintf ("ILK%d: %s: pipe base/length out of bounds\n", interface,
253 ilk_txx_pipe.u64 = cvmx_read_csr (CVMX_ILK_TXX_PIPE(interface));
256 cvmx_write_csr (CVMX_ILK_TXX_PIPE(interface), ilk_txx_pipe.u64);
265 * @param interface The identifier of the packet interface to configure and
266 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
274 int cvmx_ilk_tx_set_channel (int interface, cvmx_ilk_pipe_chan_t *pch,
284 if (interface >= CVMX_NUM_ILK_INTF)
295 cvmx_write_csr(CVMX_ILK_TXX_IDX_PMAP(interface), ilk_txx_idx_pmap.u64);
296 cvmx_write_csr(CVMX_ILK_TXX_MEM_PMAP(interface), pch->chan);
307 * @param interface The identifier of the packet interface to configure and
308 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
316 int cvmx_ilk_rx_set_pknd (int interface, cvmx_ilk_chan_pknd_t *chpknd,
326 if (interface >= CVMX_NUM_ILK_INTF)
333 * are given in *chpknd and interface is not used as a param */
337 ilk_rxf_idx_pmap.s.index = interface * 256 + chpknd->chan;
350 * @param interface The identifier of the packet interface to configure and
351 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
359 static int cvmx_ilk_rx_cal_conf (int interface, int cal_depth,
372 if (interface >= CVMX_NUM_ILK_INTF)
388 ilk_rxx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG0(interface));
390 cvmx_write_csr (CVMX_ILK_RXX_CFG0(interface), ilk_rxx_cfg0.u64);
397 cvmx_write_csr (CVMX_ILK_RXX_IDX_CAL(interface), ilk_rxx_idx_cal.u64);
417 cvmx_write_csr(CVMX_ILK_RXX_MEM_CAL0(interface), ilk_rxx_mem_cal0.u64);
434 cvmx_write_csr(CVMX_ILK_RXX_MEM_CAL1(interface), ilk_rxx_mem_cal1.u64);
474 cvmx_write_csr(CVMX_ILK_RXX_MEM_CAL0(interface), ilk_rxx_mem_cal0.u64);
475 cvmx_write_csr(CVMX_ILK_RXX_MEM_CAL1(interface), ilk_rxx_mem_cal1.u64);
476 cvmx_read_csr (CVMX_ILK_RXX_MEM_CAL1(interface));
484 * @param interface The identifier of the packet interface to configure and
485 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
488 * @param hi_wm high water mark for this interface
492 static int cvmx_ilk_rx_set_hwm (int interface, int hi_wm)
500 if (interface >= CVMX_NUM_ILK_INTF)
507 ilk_rxx_cfg1.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG1(interface));
509 cvmx_write_csr (CVMX_ILK_RXX_CFG1(interface), ilk_rxx_cfg1.u64);
518 * @param interface The identifier of the packet interface to configure and
519 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
526 static int cvmx_ilk_rx_cal_ena (int interface, unsigned char cal_ena)
534 if (interface >= CVMX_NUM_ILK_INTF)
538 ilk_rxx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG0(interface));
540 cvmx_write_csr (CVMX_ILK_RXX_CFG0(interface), ilk_rxx_cfg0.u64);
541 cvmx_read_csr (CVMX_ILK_RXX_CFG0(interface));
550 * @param interface The identifier of the packet interface to configure and
551 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
556 * @param hi_wm high water mark for this interface
561 int cvmx_ilk_cal_setup_rx (int interface, int cal_depth,
570 if (interface >= CVMX_NUM_ILK_INTF)
573 res = cvmx_ilk_rx_cal_conf (interface, cal_depth, pent);
577 res = cvmx_ilk_rx_set_hwm (interface, hi_wm);
581 res = cvmx_ilk_rx_cal_ena (interface, cal_ena);
591 * @param interface The identifier of the packet interface to configure and
592 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
600 static int cvmx_ilk_tx_cal_conf (int interface, int cal_depth,
614 if (interface >= CVMX_NUM_ILK_INTF)
644 ilk_txx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
646 cvmx_write_csr (CVMX_ILK_TXX_CFG0(interface), ilk_txx_cfg0.u64);
651 cvmx_write_csr (CVMX_ILK_TXX_IDX_CAL(interface), ilk_txx_idx_cal.u64);
671 cvmx_write_csr(CVMX_ILK_TXX_MEM_CAL0(interface), ilk_txx_mem_cal0.u64);
688 cvmx_write_csr(CVMX_ILK_TXX_MEM_CAL1(interface), ilk_txx_mem_cal1.u64);
690 cvmx_read_csr (CVMX_ILK_TXX_MEM_CAL1(interface));
699 * @param interface The identifier of the packet interface to configure and
700 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
708 static int cvmx_ilk_bp_conf (int interface, int cal_depth, cvmx_ilk_cal_entry_t *pent)
716 /* enable bp for the interface */
740 * @param interface The identifier of the packet interface to configure and
741 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
748 static int cvmx_ilk_tx_cal_ena (int interface, unsigned char cal_ena)
756 if (interface >= CVMX_NUM_ILK_INTF)
760 ilk_txx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
762 cvmx_write_csr (CVMX_ILK_TXX_CFG0(interface), ilk_txx_cfg0.u64);
763 cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
772 * @param interface The identifier of the packet interface to configure and
773 * use as a ILK interface. cn68xx has 2 interfaces: ilk0 and
782 int cvmx_ilk_cal_setup_tx (int interface, int cal_depth,
790 if (interface >= CVMX_NUM_ILK_INTF)
793 res = cvmx_ilk_tx_cal_conf (interface, cal_depth, pent);
798 res = cvmx_ilk_bp_conf (interface, cal_depth, pent);
803 res = cvmx_ilk_tx_cal_ena (interface, cal_ena);
811 static void cvmx_ilk_reg_dump_rx (int interface)
828 ilk_rxx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG0(interface));
831 ilk_rxx_cfg1.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG1(interface));
834 ilk_rxx_int.u64 = cvmx_read_csr (CVMX_ILK_RXX_INT(interface));
836 cvmx_write_csr (CVMX_ILK_RXX_INT(interface), ilk_rxx_int.u64);
838 ilk_rxx_jabber.u64 = cvmx_read_csr (CVMX_ILK_RXX_JABBER(interface));
865 ilk_rxf_idx_pmap.s.index = interface * 256;
878 cvmx_write_csr (CVMX_ILK_RXX_IDX_CAL(interface), ilk_rxx_idx_cal.u64);
881 ilk_rxx_idx_cal.u64 = cvmx_read_csr(CVMX_ILK_RXX_IDX_CAL(interface));
884 ilk_rxx_mem_cal0.u64 = cvmx_read_csr(CVMX_ILK_RXX_MEM_CAL0(interface));
886 ilk_rxx_mem_cal1.u64 = cvmx_read_csr(CVMX_ILK_RXX_MEM_CAL1(interface));
891 static void cvmx_ilk_reg_dump_tx (int interface)
904 ilk_txx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
907 ilk_txx_cfg1.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG1(interface));
910 ilk_txx_pipe.u64 = cvmx_read_csr (CVMX_ILK_TXX_PIPE(interface));
916 cvmx_write_csr (CVMX_ILK_TXX_IDX_PMAP(interface), ilk_txx_idx_pmap.u64);
919 ilk_txx_mem_pmap.u64 = cvmx_read_csr (CVMX_ILK_TXX_MEM_PMAP(interface));
924 ilk_txx_int.u64 = cvmx_read_csr (CVMX_ILK_TXX_INT(interface));
929 cvmx_write_csr (CVMX_ILK_TXX_IDX_CAL(interface), ilk_txx_idx_cal.u64);
932 ilk_txx_idx_cal.u64 = cvmx_read_csr(CVMX_ILK_TXX_IDX_CAL(interface));
935 ilk_txx_mem_cal0.u64 = cvmx_read_csr(CVMX_ILK_TXX_MEM_CAL0(interface));
937 ilk_txx_mem_cal1.u64 = cvmx_read_csr(CVMX_ILK_TXX_MEM_CAL1(interface));
946 * @param interface The identifier of the packet interface to enable. cn68xx
952 void cvmx_ilk_runtime_status (int interface)
962 cvmx_dprintf ("\nilk run-time status: interface: %d\n", interface);
964 ilk_txx_cfg1.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG1(interface));
971 ilk_txx_flow_ctl0.u64 = cvmx_read_csr (CVMX_ILK_TXX_FLOW_CTL0(interface));
974 ilk_rxx_cfg1.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG1(interface));
978 ilk_rxx_int.u64 = cvmx_read_csr (CVMX_ILK_RXX_INT(interface));
983 cvmx_write_csr (CVMX_ILK_RXX_INT(interface), ilk_rxx_int.u64);
985 ilk_rxx_flow_ctl0.u64 = cvmx_read_csr (CVMX_ILK_RXX_FLOW_CTL0(interface));
988 ilk_rxx_flow_ctl1.u64 = cvmx_read_csr (CVMX_ILK_RXX_FLOW_CTL1(interface));
1001 * enable interface
1003 * @param interface The identifier of the packet interface to enable. cn68xx
1009 int cvmx_ilk_enable (int interface)
1024 if (interface >= CVMX_NUM_ILK_INTF)
1031 cvmx_dprintf ("<<<< ILK%d: Before enabling ilk\n", interface);
1032 cvmx_ilk_reg_dump_rx (interface);
1033 cvmx_ilk_reg_dump_tx (interface);
1039 ilk_txx_cfg1.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG1(interface));
1042 cvmx_write_csr (CVMX_ILK_TXX_CFG1(interface), ilk_txx_cfg1.u64);
1043 cvmx_read_csr (CVMX_ILK_TXX_CFG1(interface));
1047 ilk_rxx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG0(interface));
1049 cvmx_write_csr (CVMX_ILK_RXX_CFG0(interface), ilk_rxx_cfg0.u64);
1052 ilk_txx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
1054 cvmx_write_csr (CVMX_ILK_TXX_CFG0(interface), ilk_txx_cfg0.u64);
1063 result = __cvmx_helper_ilk_link_get(cvmx_helper_get_ipd_port(interface + CVMX_ILK_GBL_BASE, 0));
1068 ilk_rxx_cfg1.u64 = cvmx_read_csr(CVMX_ILK_RXX_CFG1(interface));
1075 cvmx_dprintf (">>>> ILK%d: After ILK is enabled\n", interface);
1076 cvmx_ilk_reg_dump_rx (interface);
1077 cvmx_ilk_reg_dump_tx (interface);
1087 * Disable interface
1089 * @param interface The identifier of the packet interface to disable. cn68xx
1094 int cvmx_ilk_disable (int interface)
1107 if (interface >= CVMX_NUM_ILK_INTF)
1111 ilk_txx_cfg1.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG1(interface));
1113 cvmx_write_csr (CVMX_ILK_TXX_CFG1(interface), ilk_txx_cfg1.u64);
1116 ilk_rxx_cfg1.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG1(interface));
1118 cvmx_write_csr (CVMX_ILK_RXX_CFG1(interface), ilk_rxx_cfg1.u64);
1122 ilk_rxx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG0(interface));
1124 cvmx_write_csr (CVMX_ILK_RXX_CFG0(interface), ilk_rxx_cfg0.u64);
1127 ilk_txx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
1129 cvmx_write_csr (CVMX_ILK_TXX_CFG0(interface), ilk_txx_cfg0.u64);
1136 * Provide interface enable status
1138 * @param interface The identifier of the packet interface to disable. cn68xx
1143 int cvmx_ilk_get_intf_ena (int interface)
1145 return cvmx_ilk_intf_cfg[interface].intf_en;
1166 * Provide interface lane mask
1168 * @param interface The identifier of the packet interface to disable. cn68xx
1173 unsigned char cvmx_ilk_get_intf_ln_msk (int interface)
1175 return cvmx_ilk_intf_cfg[interface].lane_en_mask;
1181 * @param interface The identifier of the packet interface to disable. cn68xx
1188 int cvmx_ilk_get_chan_info (int interface, unsigned char **chans,
1191 *chans = cvmx_ilk_chan_map[interface];
1192 *num_chan = cvmx_ilk_chans[interface];
1200 * @param interface The identifier of the packet interface to disable. cn68xx
1207 void cvmx_ilk_show_stats (int interface, cvmx_ilk_stats_ctrl_t *pstats)
1223 if (interface >= CVMX_NUM_ILK_INTF)
1239 cvmx_write_csr (CVMX_ILK_RXX_IDX_STAT0(interface),
1242 (CVMX_ILK_RXX_MEM_STAT0(interface));
1248 cvmx_write_csr (CVMX_ILK_RXX_IDX_STAT1(interface),
1251 (CVMX_ILK_RXX_MEM_STAT1(interface));
1253 cvmx_dprintf ("ILK%d Channel%d Rx: %d packets %d bytes\n", interface,
1261 cvmx_write_csr (CVMX_ILK_TXX_IDX_STAT0(interface),
1264 (CVMX_ILK_TXX_MEM_STAT0(interface));
1270 cvmx_write_csr (CVMX_ILK_TXX_IDX_STAT1(interface),
1273 (CVMX_ILK_TXX_MEM_STAT1(interface));
1275 cvmx_dprintf ("ILK%d Channel%d Tx: %d packets %d bytes\n", interface,
1289 cvmx_write_csr (CVMX_ILK_RXX_IDX_STAT0(interface), ilk_rxx_idx_stat0.u64);
1295 cvmx_write_csr (CVMX_ILK_RXX_IDX_STAT1(interface), ilk_rxx_idx_stat1.u64);
1301 cvmx_write_csr (CVMX_ILK_TXX_IDX_STAT0(interface), ilk_txx_idx_stat0.u64);
1307 cvmx_write_csr (CVMX_ILK_TXX_IDX_STAT1(interface), ilk_txx_idx_stat1.u64);
1312 (CVMX_ILK_RXX_MEM_STAT0(interface));
1314 (CVMX_ILK_RXX_MEM_STAT1(interface));
1315 cvmx_dprintf ("ILK%d Channel%d Rx: %d packets %d bytes\n", interface, i,
1320 (CVMX_ILK_TXX_MEM_STAT0(interface));
1322 (CVMX_ILK_TXX_MEM_STAT1(interface));
1323 cvmx_dprintf ("ILK%d Channel%d Tx: %d packets %d bytes\n", interface, i,
1334 * @param interface The identifier of the packet interface to disable. cn68xx
1341 int cvmx_ilk_lpbk (int interface, cvmx_ilk_lpbk_ena_t enable,
1351 if (interface >= CVMX_NUM_ILK_INTF)
1359 ilk_txx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
1362 cvmx_write_csr (CVMX_ILK_TXX_CFG0(interface), ilk_txx_cfg0.u64);
1364 ilk_rxx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG0(interface));
1367 cvmx_write_csr (CVMX_ILK_RXX_CFG0(interface), ilk_rxx_cfg0.u64);
1370 ilk_txx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
1372 cvmx_write_csr (CVMX_ILK_TXX_CFG0(interface), ilk_txx_cfg0.u64);
1381 ilk_txx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
1383 cvmx_write_csr (CVMX_ILK_TXX_CFG0(interface), ilk_txx_cfg0.u64);
1386 ilk_txx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_TXX_CFG0(interface));
1389 cvmx_write_csr (CVMX_ILK_TXX_CFG0(interface), ilk_txx_cfg0.u64);
1391 ilk_rxx_cfg0.u64 = cvmx_read_csr (CVMX_ILK_RXX_CFG0(interface));
1394 cvmx_write_csr (CVMX_ILK_RXX_CFG0(interface), ilk_rxx_cfg0.u64);