Lines Matching refs:interface

123  * Initialize and start the SPI interface.
125 * @param interface The identifier of the packet interface to configure and
126 * use as a SPI interface.
127 * @param mode The operating mode for the SPI interface. The interface
136 int cvmx_spi_start_interface(int interface, cvmx_spi_mode_t mode, int timeout, int num_ports)
144 INVOKE_CB( cvmx_spi_callbacks.reset_cb, interface, mode);
147 INVOKE_CB(cvmx_spi_callbacks.calendar_setup_cb, interface, mode, num_ports);
150 INVOKE_CB(cvmx_spi_callbacks.clock_detect_cb, interface, mode, timeout);
153 INVOKE_CB(cvmx_spi_callbacks.training_cb, interface, mode, timeout);
156 INVOKE_CB(cvmx_spi_callbacks.calendar_sync_cb, interface, mode, timeout);
158 // Callback to handle interface coming up
159 INVOKE_CB(cvmx_spi_callbacks.interface_up_cb, interface, mode);
165 * This routine restarts the SPI interface after it has lost synchronization
168 * @param interface The identifier of the packet interface to configure and
169 * use as a SPI interface.
170 * @param mode The operating mode for the SPI interface. The interface
177 int cvmx_spi_restart_interface(int interface, cvmx_spi_mode_t mode, int timeout)
186 cvmx_dprintf ("SPI%d: Restart %s\n", interface, modes[mode]);
190 INVOKE_CB(cvmx_spi_callbacks.reset_cb, interface,mode);
196 INVOKE_CB(cvmx_spi_callbacks.clock_detect_cb, interface, mode, timeout);
199 INVOKE_CB(cvmx_spi_callbacks.training_cb, interface, mode, timeout);
202 INVOKE_CB(cvmx_spi_callbacks.calendar_sync_cb, interface, mode, timeout);
204 // Callback to handle interface coming up
205 INVOKE_CB(cvmx_spi_callbacks.interface_up_cb, interface, mode);
216 * @param interface The identifier of the packet interface to configure and
217 * use as a SPI interface.
218 * @param mode The operating mode for the SPI interface. The interface
224 int cvmx_spi_reset_cb(int interface, cvmx_spi_mode_t mode)
236 spxx_int_msk.u64 = cvmx_read_csr(CVMX_SPXX_INT_MSK(interface));
237 cvmx_write_csr(CVMX_SPXX_INT_MSK(interface), 0);
238 stxx_int_msk.u64 = cvmx_read_csr(CVMX_STXX_INT_MSK(interface));
239 cvmx_write_csr(CVMX_STXX_INT_MSK(interface), 0);
241 /* Run BIST in the SPI interface */
242 cvmx_write_csr(CVMX_SRXX_COM_CTL(interface), 0);
243 cvmx_write_csr(CVMX_STXX_COM_CTL(interface), 0);
246 cvmx_write_csr(CVMX_SPXX_CLK_CTL(interface), spxx_clk_ctl.u64);
248 spxx_bist_stat.u64 = cvmx_read_csr(CVMX_SPXX_BIST_STAT(interface));
250 cvmx_dprintf("ERROR SPI%d: BIST failed on receive datapath FIFO\n", interface);
252 cvmx_dprintf("ERROR SPI%d: BIST failed on RX calendar table\n", interface);
254 cvmx_dprintf("ERROR SPI%d: BIST failed on TX calendar table\n", interface);
264 cvmx_write_csr(CVMX_SRXX_SPI4_CALX(index, interface), srxx_spi4_calx.u64);
268 cvmx_write_csr(CVMX_STXX_SPI4_CALX(index, interface), stxx_spi4_calx.u64);
272 cvmx_write_csr(CVMX_SPXX_INT_REG(interface), cvmx_read_csr(CVMX_SPXX_INT_REG(interface)));
273 cvmx_write_csr(CVMX_SPXX_INT_MSK(interface), spxx_int_msk.u64);
274 cvmx_write_csr(CVMX_STXX_INT_REG(interface), cvmx_read_csr(CVMX_STXX_INT_REG(interface)));
275 cvmx_write_csr(CVMX_STXX_INT_MSK(interface), stxx_int_msk.u64);
288 cvmx_write_csr(CVMX_SPXX_CLK_CTL(interface), spxx_clk_ctl.u64);
293 cvmx_write_csr(CVMX_SPXX_CLK_CTL(interface), spxx_clk_ctl.u64);
309 cvmx_write_csr (CVMX_SPXX_TRN4_CTL(interface), spxx_trn4_ctl.u64);
312 cvmx_write_csr (CVMX_SPXX_DBG_DESKEW_CTL(interface), spxx_dbg_deskew_ctl.u64);
320 * @param interface The identifier of the packet interface to configure and
321 * use as a SPI interface.
322 * @param mode The operating mode for the SPI interface. The interface
329 int cvmx_spi_calendar_setup_cb(int interface, cvmx_spi_mode_t mode, int num_ports)
343 cvmx_write_csr(CVMX_SRXX_COM_CTL(interface), srxx_com_ctl.u64);
357 cvmx_write_csr(CVMX_SRXX_SPI4_CALX(index, interface), srxx_spi4_calx.u64);
363 cvmx_write_csr(CVMX_SRXX_SPI4_STAT(interface), srxx_spi4_stat.u64);
379 cvmx_write_csr(CVMX_STXX_ARB_CTL(interface), stxx_arb_ctl.u64);
385 cvmx_write_csr(CVMX_GMXX_TX_SPI_MAX(interface), gmxx_tx_spi_max.u64);
389 cvmx_write_csr(CVMX_GMXX_TX_SPI_THRESH(interface), gmxx_tx_spi_thresh.u64);
394 cvmx_write_csr(CVMX_GMXX_TX_SPI_CTL(interface), gmxx_tx_spi_ctl.u64);
400 cvmx_write_csr(CVMX_STXX_SPI4_DAT(interface), stxx_spi4_dat.u64);
414 cvmx_write_csr(CVMX_STXX_SPI4_CALX(index, interface), stxx_spi4_calx.u64);
420 cvmx_write_csr(CVMX_STXX_SPI4_STAT(interface), stxx_spi4_stat.u64);
429 * @param interface The identifier of the packet interface to configure and
430 * use as a SPI interface.
431 * @param mode The operating mode for the SPI interface. The interface
438 int cvmx_spi_clock_detect_cb(int interface, cvmx_spi_mode_t mode, int timeout)
446 for the SPI interface to operate. */
447 cvmx_dprintf ("SPI%d: Waiting to see TsClk...\n", interface);
454 stat.u64 = cvmx_read_csr(CVMX_SPXX_CLK_STAT(interface));
460 cvmx_write_csr(CVMX_SPXX_CLK_STAT(interface), stat.u64);
466 cvmx_dprintf ("SPI%d: Timeout\n", interface);
471 cvmx_dprintf ("SPI%d: Waiting to see RsClk...\n", interface);
478 stat.u64 = cvmx_read_csr (CVMX_SPXX_CLK_STAT(interface));
484 cvmx_write_csr(CVMX_SPXX_CLK_STAT(interface), stat.u64);
490 cvmx_dprintf ("SPI%d: Timeout\n", interface);
501 * @param interface The identifier of the packet interface to configure and
502 * use as a SPI interface.
503 * @param mode The operating mode for the SPI interface. The interface
510 int cvmx_spi_training_cb(int interface, cvmx_spi_mode_t mode, int timeout)
530 cvmx_write_csr(CVMX_SPXX_CLK_CTL(interface), spxx_clk_ctl.u64);
534 spxx_trn4_ctl.u64 = cvmx_read_csr(CVMX_SPXX_TRN4_CTL(interface));
536 cvmx_write_csr (CVMX_SPXX_TRN4_CTL(interface), spxx_trn4_ctl.u64);
539 cvmx_dprintf ("SPI%d: Waiting for training\n", interface);
550 stat.u64 = cvmx_read_csr (CVMX_SPXX_CLK_STAT(interface));
554 cvmx_write_csr(CVMX_SPXX_CLK_STAT(interface), stat.u64);
559 cvmx_dprintf ("SPI%d: Timeout\n", interface);
570 * @param interface The identifier of the packet interface to configure and
571 * use as a SPI interface.
572 * @param mode The operating mode for the SPI interface. The interface
579 int cvmx_spi_calendar_sync_cb(int interface, cvmx_spi_mode_t mode, int timeout)
583 // SRX0 interface should be good, send calendar data
585 cvmx_dprintf ("SPI%d: Rx is synchronized, start sending calendar data\n", interface);
586 srxx_com_ctl.u64 = cvmx_read_csr(CVMX_SRXX_COM_CTL(interface));
589 cvmx_write_csr (CVMX_SRXX_COM_CTL(interface), srxx_com_ctl.u64);
601 cvmx_write_csr (CVMX_STXX_COM_CTL(interface), stxx_com_ctl.u64);
604 cvmx_dprintf ("SPI%d: Waiting to sync on STX[%d] STAT\n", interface, interface);
608 stat.u64 = cvmx_read_csr (CVMX_SPXX_CLK_STAT (interface));
611 cvmx_dprintf ("SPI%d: Timeout\n", interface);
621 * Callback to handle interface up
623 * @param interface The identifier of the packet interface to configure and
624 * use as a SPI interface.
625 * @param mode The operating mode for the SPI interface. The interface
631 int cvmx_spi_interface_up_cb(int interface, cvmx_spi_mode_t mode)
639 srxx_com_ctl.u64 = cvmx_read_csr(CVMX_SRXX_COM_CTL(interface));
641 cvmx_write_csr (CVMX_SRXX_COM_CTL(interface), srxx_com_ctl.u64);
642 cvmx_dprintf ("SPI%d: Rx is now up\n", interface);
647 stxx_com_ctl.u64 = cvmx_read_csr(CVMX_STXX_COM_CTL(interface));
649 cvmx_write_csr (CVMX_STXX_COM_CTL(interface), stxx_com_ctl.u64);
650 cvmx_dprintf ("SPI%d: Tx is now up\n", interface);
655 cvmx_write_csr(CVMX_GMXX_RXX_FRM_MIN(0,interface), gmxx_rxx_frm_min.u64);
658 cvmx_write_csr(CVMX_GMXX_RXX_FRM_MAX(0,interface), gmxx_rxx_frm_max.u64);
661 cvmx_write_csr(CVMX_GMXX_RXX_JABBER(0,interface), gmxx_rxx_jabber.u64);