Changeset 128


Ignore:
Timestamp:
Jul 3, 2017, 3:06:59 PM (4 years ago)
Author:
max@…
Message:

style

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kernel/devices/dev_icu.c

    r23 r128  
    5656    icu->ext.icu.wti_bitmap = 0;
    5757    spinlock_init( &icu->ext.icu.wti_lock );
    58    
     58
    5959    // get implementation
    6060    uint32_t impl = icu->impl;
     
    7373        assert( false , __FUNCTION__ , "undefined ICU implementation" );
    7474    }
    75 } // end dev_icu_init()
     75}
    7676
    7777/////////////////////////////////////////////////////////////////////////////////////
     
    8383                                      uint32_t   irq_index )
    8484{
    85     if( irq_type == HWI_TYPE ) 
     85    if( irq_type == HWI_TYPE )
    8686    {
    8787        if( irq_index >= icu->ext.icu.hwi_nr )
    8888        {
    89             printk("\n[PANIC] in %s : illegal HWI index = %d / max = %d\n", 
     89            printk("\n[PANIC] in %s : illegal HWI index = %d / max = %d\n",
    9090                   __FUNCTION__ , irq_index , icu->ext.icu.hwi_nr );
    9191            hal_core_sleep();
     
    9696        if( irq_index >= icu->ext.icu.wti_nr )
    9797        {
    98             printk("\n[PANIC] in %s : illegal WTI index = %d / max = %d\n", 
     98            printk("\n[PANIC] in %s : illegal WTI index = %d / max = %d\n",
    9999                   __FUNCTION__ , irq_index , icu->ext.icu.wti_nr );
    100100            hal_core_sleep();
    101101        }
    102102    }
    103     else  //  irq_type == PTI_TYPE 
     103    else  //  irq_type == PTI_TYPE
    104104    {
    105105        if( irq_index >= icu->ext.icu.pti_nr )
     
    110110        }
    111111    }
    112 }  // end dev_icu_check_irq()
     112}
    113113
    114114////////////////////////////////////////
     
    126126
    127127    // call implementation specific ICU driver to enable IRQ
    128     if( icu->impl == IMPL_ICU_XCU ) 
     128    if( icu->impl == IMPL_ICU_XCU )
    129129    {
    130130         soclib_xcu_enable_irq( icu , 1<<irq_index , irq_type , lid );
     
    137137        // source chdev pointer in relevant interrupt vector
    138138        core_t * core = &LOCAL_CLUSTER->core_tbl[lid];
    139             core_set_irq_vector_entry( core , irq_type , irq_index , src_chdev );
     139        core_set_irq_vector_entry( core , irq_type , irq_index , src_chdev );
    140140
    141141        // (3) register IRQ type and index in source chdev descriptor
     
    143143        src_chdev->irq_id   = irq_index;
    144144    }
    145 }  // end dev_icu_enable_irq()
     145}
    146146
    147147/////////////////////////////////////////
     
    157157    dev_icu_check_irq( icu , irq_type , irq_index );
    158158
    159     // call the implementation specific ICU driver to disable IRQ 
    160     if( icu->impl == IMPL_ICU_XCU ) 
     159    // call the implementation specific ICU driver to disable IRQ
     160    if( icu->impl == IMPL_ICU_XCU )
    161161    {
    162162        soclib_xcu_disable_irq( icu , 1<<irq_index , irq_type , lid );
     
    169169        // the source chdev xptr from relevant interrupt vector
    170170        core_t * core = &LOCAL_CLUSTER->core_tbl[lid];
    171             core_set_irq_vector_entry( core , irq_type , irq_index , NULL );
    172     }
    173 } // end dev_icu_disable_irq()
     171        core_set_irq_vector_entry( core , irq_type , irq_index , NULL );
     172    }
     173}
    174174
    175175///////////////////////////////////////
     
    198198
    199199    // check PTI index
    200     assert( (pti_index < icu->ext.icu.pti_nr) , __FUNCTION__ , "illegal PTI index" ); 
    201 
    202     // call the implementation specific driver ICU to set period 
    203     if( icu->impl == IMPL_ICU_XCU ) 
     200    assert( (pti_index < icu->ext.icu.pti_nr) , __FUNCTION__ , "illegal PTI index" );
     201
     202    // call the implementation specific driver ICU to set period
     203    if( icu->impl == IMPL_ICU_XCU )
    204204    {
    205205        soclib_xcu_set_period( icu , pti_index , period );
    206206    }
    207 }  // end dev_icu_set_period()
     207}
    208208
    209209////////////////////////////////////////////
     
    215215
    216216    // check PTI index
    217     assert( (pti_index < icu->ext.icu.pti_nr) , __FUNCTION__ , "illegal PTI index" ); 
     217    assert( (pti_index < icu->ext.icu.pti_nr) , __FUNCTION__ , "illegal PTI index" );
    218218
    219219    // call the implementation specific driver ICU to acknowledge PTI IRQ
    220     if( icu->impl == IMPL_ICU_XCU ) 
     220    if( icu->impl == IMPL_ICU_XCU )
    221221    {
    222222        soclib_xcu_ack_timer( icu , pti_index );
    223223    }
    224 }  // end dev_icu_ack_timer()
     224}
    225225
    226226////////////////////////////////////
     
    228228                       lid_t    lid )
    229229{
    230     // check arguments 
     230    // check arguments
    231231    cluster_t * cluster  = LOCAL_CLUSTER;
    232232    uint32_t    y_width  = cluster->y_width;
     
    249249
    250250    // get implementation from remote ICU chdev
    251     uint32_t impl = hal_remote_lw( XPTR( icu_cxy , &icu_ptr->impl ) );   
     251    uint32_t impl = hal_remote_lw( XPTR( icu_cxy , &icu_ptr->impl ) );
    252252
    253253    // call the implementation specific ICU driver to send IPI
    254     if( impl == IMPL_ICU_XCU ) 
     254    if( impl == IMPL_ICU_XCU )
    255255    {
    256256        soclib_xcu_send_ipi( icu_xp , lid );
    257257    }
    258 }  // end dev_icu_send_ipi()
     258}
    259259
    260260//////////////////////////
     
    273273    chdev_t * icu    = (chdev_t *)GET_PTR( icu_xp );
    274274
    275     // call the implementation specific ICU driver 
     275    // call the implementation specific ICU driver
    276276    // to return highest priority pending IRQ of each type
    277277    if( icu->impl == IMPL_ICU_XCU )
     
    282282    // analyse ICU status and handle up to 3 pending IRQ (one WTI, one HWI, one PTI)
    283283
    284     if( wti_status )          // pending WTI 
    285         {
     284    if( wti_status )          // pending WTI
     285    {
    286286        index = wti_status - 1;
    287287
     
    297297        {
    298298            // get pointer on IRQ source chdev
    299                     src_chdev = core->wti_vector[index];
    300 
    301                     if( src_chdev == NULL )        // strange, but not fatal => disable IRQ
    302                     {
     299            src_chdev = core->wti_vector[index];
     300
     301            if( src_chdev == NULL )        // strange, but not fatal => disable IRQ
     302            {
    303303                printk("\n[WARNING] in %s : no handler for WTI %d on core %d in cluster %x\n",
    304304                       __FUNCTION__ , index , core->lid , local_cxy );
    305                     core->spurious_irqs ++;
    306                 dev_icu_disable_irq( core->lid , WTI_TYPE , index ); 
     305                core->spurious_irqs ++;
     306                dev_icu_disable_irq( core->lid , WTI_TYPE , index );
    307307            }
    308308            else                                 // call relevant ISR
    309309            {
    310                         icu_dmsg("\n[INFO] %s received WTI : index = %d for cpu %d in cluster %d\n",
     310                icu_dmsg("\n[INFO] %s received WTI : index = %d for cpu %d in cluster %d\n",
    311311                         __FUNCTION__ , index , core->lid , local_cxy );
    312312
    313313                // call ISR
    314                     src_chdev->isr( src_chdev );
     314                src_chdev->isr( src_chdev );
    315315            }
    316316        }
    317         }
    318 
    319         if( hwi_status )      // pending HWI
    320         {
     317    }
     318
     319    if( hwi_status )      // pending HWI
     320    {
    321321        index = hwi_status - 1;
    322322
    323323        // get pointer on IRQ source chdev
    324                 src_chdev = core->hwi_vector[index];
    325 
    326                 if( src_chdev == NULL )        // strange, but not fatal => disable IRQ
    327                 {
     324        src_chdev = core->hwi_vector[index];
     325
     326        if( src_chdev == NULL )        // strange, but not fatal => disable IRQ
     327        {
    328328            printk("\n[WARNING] in %s : no handler for HWI %d on core %d in cluster %x\n",
    329329                   __FUNCTION__ , index , core->lid , local_cxy );
    330                 core->spurious_irqs ++;
    331             dev_icu_disable_irq( core->lid , HWI_TYPE , index ); 
    332                 }
     330            core->spurious_irqs ++;
     331            dev_icu_disable_irq( core->lid , HWI_TYPE , index );
     332        }
    333333        else                    // call relevant ISR
    334334        {
    335                     icu_dmsg("\n[INFO] %s received HWI : index = %d for cpu %d in cluster %d\n",
     335            icu_dmsg("\n[INFO] %s received HWI : index = %d for cpu %d in cluster %d\n",
    336336                     __FUNCTION__ , index , core->lid , local_cxy );
    337337
    338338            // call ISR
    339                     src_chdev->isr( src_chdev );
    340         }
    341         }
     339            src_chdev->isr( src_chdev );
     340        }
     341    }
    342342
    343343    if( pti_status )      // pending PTI
    344         {
     344    {
    345345        index = pti_status - 1;
    346346
    347                 icu_dmsg("\n[INFO] %s received PTI : index = %d for cpu %d in cluster %d\n",
     347        icu_dmsg("\n[INFO] %s received PTI : index = %d for cpu %d in cluster %d\n",
    348348                 __FUNCTION__ , index , core->lid , local_cxy );
    349349
     
    360360            printk("\n[WARNING] in %s : no handler for PTI %d on core %d in cluster %x\n",
    361361                   __FUNCTION__ , index , core->lid , local_cxy );
    362                 core->spurious_irqs ++;
    363             dev_icu_disable_irq( core->lid , PTI_TYPE , index ); 
    364         }
    365         }
    366 }  // end dev_icu_irq_handler()
     362            core->spurious_irqs ++;
     363            dev_icu_disable_irq( core->lid , PTI_TYPE , index );
     364        }
     365    }
     366}
    367367
    368368////////////////////////////
     
    383383    // get first free mailbox index
    384384    uint32_t index = (uint32_t)bitmap_ffc( bitmap , size );
    385  
     385
    386386    // set bitmap entry if found
    387387    if( index < size ) bitmap_set( bitmap , index );
     
    389389    // release lock
    390390    spinlock_unlock( lock );
    391  
     391
    392392    return index;
    393 }  // end dev_icu_wti_alloc()
     393}
    394394
    395395//////////////////////////////////////////
     
    411411    spinlock_lock( lock );
    412412
    413     // clear bitmap entry 
     413    // clear bitmap entry
    414414    bitmap_clear( bitmap , index );
    415415
    416416    // release lock
    417417    spinlock_unlock( lock );
    418 
    419 }  // end dev_icu_wti_release()
     418}
    420419
    421420//////////////////////////////////////////////
     
    431430    if( icu->impl == IMPL_ICU_XCU )
    432431    {
    433         wti_ptr = soclib_xcu_wti_ptr( icu , wti_id );   
     432        wti_ptr = soclib_xcu_wti_ptr( icu , wti_id );
    434433    }
    435434
    436435    return wti_ptr;
    437 }   // end dev_icu_wti_xptr()
    438 
    439 
     436}
     437
Note: See TracChangeset for help on using the changeset viewer.