Changeset 535


Ignore:
Timestamp:
Sep 21, 2018, 10:20:57 PM (5 years ago)
Author:
nicolas.van.phan@…
Message:

Replace TXT0 by MTTY0 for LETI

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/boot/tsar_mips32/boot.c

    r534 r535  
    403403    boot_info->x_max        = header->x_size; // [FIXME]
    404404    boot_info->y_max        = header->name[5] == 'l' ? header->y_size - 1 : header->y_size; // [FIXME]
     405    boot_info->use_mty0     = header->name[5] == 'l' ? true : false;
    405406    boot_info->paddr_width  = header->paddr_width;
    406407    boot_info->io_cxy       = header->io_cxy;
  • trunk/kernel/kern/kernel_init.c

    r534 r535  
    262262
    263263///////////////////////////////////////////////////////////////////////////////////////////
     264// This function is the same as txt0_device_init() but uses the internal multi_tty device
     265// attached to cluster (0,0) instead of the external tty_tsar.
     266// This function is used instead of txt0_device_init() only for TSAR LETI.
     267///////////////////////////////////////////////////////////////////////////////////////////
     268// @ info    : pointer on the local boot-info structure.
     269///////////////////////////////////////////////////////////////////////////////////////////
     270static void mtty0_device_init( boot_info_t * info)
     271{
     272    boot_device_t * dev_tbl;         // pointer on array of devices in boot_info
     273    uint32_t        dev_nr;          // actual number of devices in this cluster
     274    xptr_t          base;            // remote pointer on segment base
     275    uint32_t        func;            // device functional index
     276    uint32_t        impl;            // device implementation index
     277    uint32_t        i;               // device index in dev_tbl
     278    uint32_t        x;               // X cluster coordinate
     279    uint32_t        y;               // Y cluster coordinate
     280
     281    dev_nr = info->int_dev_nr;
     282    dev_tbl = info->int_dev;
     283
     284    // Loop on internal peripherals of cluster (0,0) to find MTY0
     285    for ( i = 0; i < dev_nr; i++ )
     286    {
     287        base = dev_tbl[i].base;
     288        func = FUNC_FROM_TYPE( dev_tbl[i].type );
     289        impl = IMPL_FROM_TYPE( dev_tbl[i].type );
     290
     291        if ( func == DEV_FUNC_TXT )
     292        {
     293            txt0_chdev.func     = func;
     294            txt0_chdev.impl     = impl;
     295            txt0_chdev.channel  = 0;
     296            txt0_chdev.base     = base;
     297            txt0_chdev.is_rx    = false;
     298
     299            // Initialize MTY0 chdev lock
     300            remote_spinlock_init( XPTR( local_cxy, &txt0_chdev.wait_lock ) );
     301
     302            // MTY specific initialization
     303            dev_txt_init( &txt0_chdev );
     304
     305            // register the MTY in all chdev_dir[x][y] structures
     306            for( x = 0 ; x < info->x_size ; x++ )
     307            {
     308                for( y = 0 ; y < info->y_max; y++ ) // [FIXME]
     309                {
     310                    cxy_t  cxy = (x<<info->y_width) + y;
     311                    hal_remote_swd( XPTR( cxy , &chdev_dir.txt_tx[0] ) ,
     312                                    XPTR( local_cxy , &txt0_chdev ) );
     313                }
     314            }
     315        }
     316    } // end loop on internal devices
     317} // end mty0_device_init()
     318
     319///////////////////////////////////////////////////////////////////////////////////////////
    264320// This function allocates memory and initializes the chdev descriptors for the internal
    265321// peripherals contained in the local cluster, other than the LAPIC, as specified by
     
    793849    thread->remote_locks = 0;
    794850
    795     // CP0 in I/O cluster initialises TXT0 chdev descriptor
    796     //if( (core_lid == 0) && (core_cxy == io_cxy) ) txt0_device_init( info );
    797851    // CP0 in cluster 0 initializes TXT0 chdev descriptor
    798     if( core_cxy == 0 && core_lid == 0 ) txt0_device_init( info );
     852    if( core_cxy == 0 && core_lid == 0 ) // [MODIF]
     853    {
     854        if( info->use_mty0 == 1 ) {
     855            mtty0_device_init( info );
     856        } else {
     857            txt0_device_init( info );
     858        }
     859    }
    799860    // [FIXME]
    800861
  • trunk/tools/arch_info/boot_info.h

    r530 r535  
    114114    uint32_t      x_max;                         /*! [FIXME] Nb of non-empty cluster in row */
    115115    uint32_t      y_max;                         /*! [FIXME] Nb of non_empty cluster in col */
     116    uint32_t      use_mty0;                      /*! [FIXME] Use multi_tty on cluster 0     */
    116117        uint32_t      io_cxy;                        /*! IO cluster identifier                  */
    117118
Note: See TracChangeset for help on using the changeset viewer.