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)
185 cvmx_dprintf ("SPI%d: Restart %s\n", interface, modes[mode]);
188 INVOKE_CB(cvmx_spi_callbacks.reset_cb, interface,mode);
194 INVOKE_CB(cvmx_spi_callbacks.clock_detect_cb, interface, mode, timeout);
197 INVOKE_CB(cvmx_spi_callbacks.training_cb, interface, mode, timeout);
200 INVOKE_CB(cvmx_spi_callbacks.calendar_sync_cb, interface, mode, timeout);
202 // Callback to handle interface coming up
203 INVOKE_CB(cvmx_spi_callbacks.interface_up_cb, interface, mode);
214 * @param interface The identifier of the packet interface to configure and
215 * use as a SPI interface.
216 * @param mode The operating mode for the SPI interface. The interface
222 int cvmx_spi_reset_cb(int interface, cvmx_spi_mode_t mode)
234 spxx_int_msk.u64 = cvmx_read_csr(CVMX_SPXX_INT_MSK(interface));
235 cvmx_write_csr(CVMX_SPXX_INT_MSK(interface), 0);
236 stxx_int_msk.u64 = cvmx_read_csr(CVMX_STXX_INT_MSK(interface));
237 cvmx_write_csr(CVMX_STXX_INT_MSK(interface), 0);
239 /* Run BIST in the SPI interface */
240 cvmx_write_csr(CVMX_SRXX_COM_CTL(interface), 0);
241 cvmx_write_csr(CVMX_STXX_COM_CTL(interface), 0);
244 cvmx_write_csr(CVMX_SPXX_CLK_CTL(interface), spxx_clk_ctl.u64);
246 spxx_bist_stat.u64 = cvmx_read_csr(CVMX_SPXX_BIST_STAT(interface));
248 cvmx_dprintf("ERROR SPI%d: BIST failed on receive datapath FIFO\n", interface);
250 cvmx_dprintf("ERROR SPI%d: BIST failed on RX calendar table\n", interface);
252 cvmx_dprintf("ERROR SPI%d: BIST failed on TX calendar table\n", interface);
262 cvmx_write_csr(CVMX_SRXX_SPI4_CALX(index, interface), srxx_spi4_calx.u64);
266 cvmx_write_csr(CVMX_STXX_SPI4_CALX(index, interface), stxx_spi4_calx.u64);
270 cvmx_write_csr(CVMX_SPXX_INT_REG(interface), cvmx_read_csr(CVMX_SPXX_INT_REG(interface)));
271 cvmx_write_csr(CVMX_SPXX_INT_MSK(interface), spxx_int_msk.u64);
272 cvmx_write_csr(CVMX_STXX_INT_REG(interface), cvmx_read_csr(CVMX_STXX_INT_REG(interface)));
273 cvmx_write_csr(CVMX_STXX_INT_MSK(interface), stxx_int_msk.u64);
286 cvmx_write_csr(CVMX_SPXX_CLK_CTL(interface), spxx_clk_ctl.u64);
291 cvmx_write_csr(CVMX_SPXX_CLK_CTL(interface), spxx_clk_ctl.u64);
307 cvmx_write_csr (CVMX_SPXX_TRN4_CTL(interface), spxx_trn4_ctl.u64);
310 cvmx_write_csr (CVMX_SPXX_DBG_DESKEW_CTL(interface), spxx_dbg_deskew_ctl.u64);
318 * @param interface The identifier of the packet interface to configure and
319 * use as a SPI interface.
320 * @param mode The operating mode for the SPI interface. The interface
327 int cvmx_spi_calendar_setup_cb(int interface, cvmx_spi_mode_t mode, int num_ports)
341 cvmx_write_csr(CVMX_SRXX_COM_CTL(interface), srxx_com_ctl.u64);
355 cvmx_write_csr(CVMX_SRXX_SPI4_CALX(index, interface), srxx_spi4_calx.u64);
361 cvmx_write_csr(CVMX_SRXX_SPI4_STAT(interface), srxx_spi4_stat.u64);
377 cvmx_write_csr(CVMX_STXX_ARB_CTL(interface), stxx_arb_ctl.u64);
383 cvmx_write_csr(CVMX_GMXX_TX_SPI_MAX(interface), gmxx_tx_spi_max.u64);
387 cvmx_write_csr(CVMX_GMXX_TX_SPI_THRESH(interface), gmxx_tx_spi_thresh.u64);
392 cvmx_write_csr(CVMX_GMXX_TX_SPI_CTL(interface), gmxx_tx_spi_ctl.u64);
398 cvmx_write_csr(CVMX_STXX_SPI4_DAT(interface), stxx_spi4_dat.u64);
412 cvmx_write_csr(CVMX_STXX_SPI4_CALX(index, interface), stxx_spi4_calx.u64);
418 cvmx_write_csr(CVMX_STXX_SPI4_STAT(interface), stxx_spi4_stat.u64);
427 * @param interface The identifier of the packet interface to configure and
428 * use as a SPI interface.
429 * @param mode The operating mode for the SPI interface. The interface
436 int cvmx_spi_clock_detect_cb(int interface, cvmx_spi_mode_t mode, int timeout)
444 for the SPI interface to operate. */
445 cvmx_dprintf ("SPI%d: Waiting to see TsClk...\n", interface);
452 stat.u64 = cvmx_read_csr(CVMX_SPXX_CLK_STAT(interface));
458 cvmx_write_csr(CVMX_SPXX_CLK_STAT(interface), stat.u64);
464 cvmx_dprintf ("SPI%d: Timeout\n", interface);
469 cvmx_dprintf ("SPI%d: Waiting to see RsClk...\n", interface);
476 stat.u64 = cvmx_read_csr (CVMX_SPXX_CLK_STAT(interface));
482 cvmx_write_csr(CVMX_SPXX_CLK_STAT(interface), stat.u64);
488 cvmx_dprintf ("SPI%d: Timeout\n", interface);
499 * @param interface The identifier of the packet interface to configure and
500 * use as a SPI interface.
501 * @param mode The operating mode for the SPI interface. The interface
508 int cvmx_spi_training_cb(int interface, cvmx_spi_mode_t mode, int timeout)
528 cvmx_write_csr(CVMX_SPXX_CLK_CTL(interface), spxx_clk_ctl.u64);
532 spxx_trn4_ctl.u64 = cvmx_read_csr(CVMX_SPXX_TRN4_CTL(interface));
534 cvmx_write_csr (CVMX_SPXX_TRN4_CTL(interface), spxx_trn4_ctl.u64);
537 cvmx_dprintf ("SPI%d: Waiting for training\n", interface);
548 stat.u64 = cvmx_read_csr (CVMX_SPXX_CLK_STAT(interface));
552 cvmx_write_csr(CVMX_SPXX_CLK_STAT(interface), stat.u64);
557 cvmx_dprintf ("SPI%d: Timeout\n", interface);
568 * @param interface The identifier of the packet interface to configure and
569 * use as a SPI interface.
570 * @param mode The operating mode for the SPI interface. The interface
577 int cvmx_spi_calendar_sync_cb(int interface, cvmx_spi_mode_t mode, int timeout)
581 // SRX0 interface should be good, send calendar data
583 cvmx_dprintf ("SPI%d: Rx is synchronized, start sending calendar data\n", interface);
584 srxx_com_ctl.u64 = cvmx_read_csr(CVMX_SRXX_COM_CTL(interface));
587 cvmx_write_csr (CVMX_SRXX_COM_CTL(interface), srxx_com_ctl.u64);
599 cvmx_write_csr (CVMX_STXX_COM_CTL(interface), stxx_com_ctl.u64);
602 cvmx_dprintf ("SPI%d: Waiting to sync on STX[%d] STAT\n", interface, interface);
606 stat.u64 = cvmx_read_csr (CVMX_SPXX_CLK_STAT (interface));
609 cvmx_dprintf ("SPI%d: Timeout\n", interface);
619 * Callback to handle interface up
621 * @param interface The identifier of the packet interface to configure and
622 * use as a SPI interface.
623 * @param mode The operating mode for the SPI interface. The interface
629 int cvmx_spi_interface_up_cb(int interface, cvmx_spi_mode_t mode)
637 srxx_com_ctl.u64 = cvmx_read_csr(CVMX_SRXX_COM_CTL(interface));
639 cvmx_write_csr (CVMX_SRXX_COM_CTL(interface), srxx_com_ctl.u64);
640 cvmx_dprintf ("SPI%d: Rx is now up\n", interface);
645 stxx_com_ctl.u64 = cvmx_read_csr(CVMX_STXX_COM_CTL(interface));
647 cvmx_write_csr (CVMX_STXX_COM_CTL(interface), stxx_com_ctl.u64);
648 cvmx_dprintf ("SPI%d: Tx is now up\n", interface);
660 cvmx_write_csr(CVMX_GMXX_RXX_FRM_MIN(0,interface), gmxx_rxx_frm_min.u64);
663 cvmx_write_csr(CVMX_GMXX_RXX_FRM_MAX(0,interface), gmxx_rxx_frm_max.u64);
666 cvmx_write_csr(CVMX_GMXX_RXX_JABBER(0,interface), gmxx_rxx_jabber.u64);