Ignore:
Timestamp:
Nov 11, 2014, 4:07:29 PM (9 years ago)
Author:
alain
Message:

Introducing support for multiple TTY terminals (up to 16 channels) in the tsar_generic_iob platform.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/tsar_generic_iob/top.cpp

    r818 r874  
    3838// The external peripherals HWI IRQs are translated to WTI IRQs by the
    3939// external IOPIC component, that must be configured by the OS to route
    40 // these WTI ITQS to one or several internal XICU components.
     40// these WTI IRQS to one or several internal XICU components.
    4141// - IOPIC HWI[1:0]     connected to IRQ_NIC_RX[1:0]
    4242// - IOPIC HWI[3:2]     connected to IRQ_NIC_TX[1:0]
    4343// - IOPIC HWI[7:4]     connected to IRQ_CMA_TX[3:0]]
    4444// - IOPIC HWI[8]       connected to IRQ_BDEV
    45 // - IOPIC HWI[9]       connected to IRQ_TTY_RX[0]
     45// - IOPIC HWI[31:16]   connected to IRQ_TTY_RX[15:0]
    4646//
    4747// Besides the external peripherals, each cluster contains one XICU component,
     
    7878// - Y_SIZE           : number of clusters in a column
    7979// - NB_PROCS_MAX     : number of processors per cluster (power of 2)
    80 // - NB_TTY_CHANNELS  : number of TTY channels in I/O network (must be 1)
     80// - NB_TTY_CHANNELS  : number of TTY channels in I/O network (up to 16)
    8181// - NB_NIC_CHANNELS  : number of NIC channels in I/O network (up to 2)
    8282// - NB_CMA_CHANNELS  : number of CMA channels in I/O network (up to 4)
     
    454454           "The NB_DMA_CHANNELS parameter cannot be larger than 4" );
    455455
    456    assert( (NB_TTY_CHANNELS == 1) and
    457            "The NB_TTY_CHANNELS parameter must be 1" );
     456   assert( (NB_TTY_CHANNELS >= 1) and (NB_TTY_CHANNELS <= 16) and
     457           "The NB_TTY_CHANNELS parameter cannot be larger than 16" );
    458458
    459459   assert( (NB_NIC_CHANNELS == 2) and
     
    801801    sc_signal<bool>                   signal_irq_false;
    802802    sc_signal<bool>                   signal_irq_bdev;
    803     sc_signal<bool>                   signal_irq_mtty_rx;
     803    sc_signal<bool>                   signal_irq_mtty_rx[NB_TTY_CHANNELS];
    804804    sc_signal<bool>                   signal_irq_mnic_rx[NB_NIC_CHANNELS];
    805805    sc_signal<bool>                   signal_irq_mnic_tx[NB_NIC_CHANNELS];
     
    11561156    mtty->p_resetn                                       (signal_resetn);
    11571157    mtty->p_vci                                          (signal_vci_tgt_mtty);
    1158     mtty->p_irq[0]                                       (signal_irq_mtty_rx);
    1159 
     1158    for ( size_t i=0 ; i<NB_TTY_CHANNELS ; i++ )
     1159    {
     1160        mtty->p_irq[i]                                   (signal_irq_mtty_rx[i]);
     1161    }
    11601162    std::cout << "  - MTTY connected" << std::endl;
    11611163
     
    11851187       else if(i < 4+NB_CMA_CHANNELS)  iopi->p_hwi[i] (signal_irq_cdma[i-4]);
    11861188       else if(i < 8)                  iopi->p_hwi[i] (signal_irq_false);
    1187        else if(i == 8)                 iopi->p_hwi[i] (signal_irq_bdev);
    1188        else if(i == 9)                 iopi->p_hwi[i] (signal_irq_mtty_rx);
     1189       else if(i < 9)                  iopi->p_hwi[i] (signal_irq_bdev);
     1190       else if(i < 16)                 iopi->p_hwi[i] (signal_irq_false);
     1191       else if(i < 16+NB_TTY_CHANNELS) iopi->p_hwi[i] (signal_irq_mtty_rx[i-16]);
    11891192       else                            iopi->p_hwi[i] (signal_irq_false);
    11901193    }
     
    15231526            {
    15241527                clusters[0][0]->iob->print_trace();
    1525                 clusters[XMAX-1][YMAX-1]->iob->print_trace();
    15261528//              clusters[0][0]->signal_int_vci_tgt_iobx.print_trace( "[SIG]IOB0_INT_TGT");
    15271529//              clusters[0][0]->signal_int_vci_ini_iobx.print_trace( "[SIG]IOB0_INT_INI");
     
    15311533//              signal_vci_tgt_iob0.print_trace("[SIG]IOB0_IOX_TGT");
    15321534
    1533 //              cdma->print_trace();
    1534 //              signal_vci_tgt_cdma.print_trace("[SIG]IOX_CDMA_TGT");
    1535 //              signal_vci_ini_cdma.print_trace("[SIG]IOX_CDMA_INI");
     1535                cdma->print_trace();
     1536                signal_vci_tgt_cdma.print_trace("[SIG]IOX_CDMA_TGT");
     1537                signal_vci_ini_cdma.print_trace("[SIG]IOX_CDMA_INI");
    15361538
    15371539//              brom->print_trace();
     
    15411543//              signal_vci_tgt_mtty.print_trace("[SIG]IOX_MTTY_TGT");
    15421544
    1543                 bdev->print_trace();
    1544                 signal_vci_tgt_bdev.print_trace("[SIG]BDEV_TGT");
    1545                 signal_vci_ini_bdev.print_trace("[SIG]BDEV_INI");
     1545//              bdev->print_trace();
     1546//              signal_vci_tgt_bdev.print_trace("[SIG]BDEV_TGT");
     1547//              signal_vci_ini_bdev.print_trace("[SIG]BDEV_INI");
    15461548
    15471549//              mnic->print_trace();
     
    15511553//              signal_vci_tgt_fbuf.print_trace("[SIG]FBUF");
    15521554
    1553                 iopi->print_trace();
    1554                 signal_vci_ini_iopi.print_trace("[SIG]IOPI_INI");
    1555                 signal_vci_tgt_iopi.print_trace("[SIG]IOPI_TGT");
    1556                 iox_network->print_trace();
     1555//              iopi->print_trace();
     1556//              signal_vci_ini_iopi.print_trace("[SIG]IOPI_INI");
     1557//              signal_vci_tgt_iopi.print_trace("[SIG]IOPI_TGT");
     1558//              iox_network->print_trace();
    15571559
    15581560                // interrupts
    15591561                if (signal_irq_bdev)       std::cout << "### IRQ_BDEV ACTIVE"       << std::endl;
    1560                 if (signal_irq_mtty_rx)    std::cout << "### IRQ_MTTY ACTIVE"      << std::endl;
     1562                if (signal_irq_mtty_rx[0]) std::cout << "### IRQ_MTTY_RX[0] ACTIVE" << std::endl;
    15611563                if (signal_irq_mnic_rx[0]) std::cout << "### IRQ_MNIC_RX[0] ACTIVE" << std::endl;
    15621564                if (signal_irq_mnic_rx[1]) std::cout << "### IRQ_MNIC_RX[1] ACTIVE" << std::endl;
Note: See TracChangeset for help on using the changeset viewer.