Ignore:
Timestamp:
Jul 15, 2015, 6:14:15 PM (9 years ago)
Author:
bellefin
Message:

NIC driver: update the channel registers of the NIC component (add the status variable and change the descriptor structure)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_drivers/nic_driver.c

    r481 r613  
    126126    unsigned int extend   = (X_IO << Y_WIDTH) + Y_IO;
    127127
     128    unsigned int buf_0_addr;
     129    unsigned int buf_1_addr;
     130    unsigned int sts_0_addr;
     131    unsigned int sts_1_addr;
     132
     133    unsigned int desc_lo_0;
     134    unsigned int desc_lo_1;
     135    unsigned int desc_hi_0;
     136    unsigned int desc_hi_1;
     137
    128138    if ( is_rx )
    129139    {
    130         _nic_set_channel_register( channel, NIC_RX_DESC_LO_0, base          );
    131         _nic_set_channel_register( channel, NIC_RX_DESC_LO_1, base + 0x1000 );
    132         _nic_set_channel_register( channel, NIC_RX_DESC_HI_0, extend        );
    133         _nic_set_channel_register( channel, NIC_RX_DESC_HI_1, extend        );
     140        buf_0_addr = base;
     141        buf_1_addr = base + 0x1000;
     142        sts_0_addr = base + 0x4000;
     143        sts_1_addr = base + 0x4040;
     144
     145        desc_lo_0 = (sts_0_addr >> 6) + ((buf_0_addr & 0xFC0) << 20);
     146        desc_lo_1 = (sts_1_addr >> 6) + ((buf_1_addr & 0xFC0) << 20);
     147        desc_hi_0 = ((buf_0_addr & 0xFFFFF000) >> 12) + ((extend & 0xFFF) << 20);
     148        desc_hi_1 = ((buf_1_addr & 0xFFFFF000) >> 12) + ((extend & 0xFFF) << 20);
     149
     150        _nic_set_channel_register( channel, NIC_RX_DESC_LO_0, desc_lo_0     );
     151        _nic_set_channel_register( channel, NIC_RX_DESC_LO_1, desc_lo_1     );
     152        _nic_set_channel_register( channel, NIC_RX_DESC_HI_0, desc_hi_0     );
     153        _nic_set_channel_register( channel, NIC_RX_DESC_HI_1, desc_hi_1     );
    134154        _nic_set_channel_register( channel, NIC_RX_RUN      , 1             );
    135155    }
    136156    else
    137157    {
    138         _nic_set_channel_register( channel, NIC_TX_DESC_LO_0, base + 0x2000 );
    139         _nic_set_channel_register( channel, NIC_TX_DESC_LO_1, base + 0x3000 );
    140         _nic_set_channel_register( channel, NIC_TX_DESC_HI_0, extend        );
    141         _nic_set_channel_register( channel, NIC_TX_DESC_HI_1, extend        );
     158        buf_0_addr = base + 0x2000;
     159        buf_1_addr = base + 0x3000;
     160        sts_0_addr = base + 0x4080;
     161        sts_1_addr = base + 0x40c0;
     162
     163        desc_lo_0 = (sts_0_addr >> 6) + ((buf_0_addr & 0xFC0) << 20);
     164        desc_lo_1 = (sts_1_addr >> 6) + ((buf_1_addr & 0xFC0) << 20);
     165        desc_hi_0 = ((buf_0_addr & 0xFFFFF000) >> 12) + ((extend & 0xFFF) << 20);
     166        desc_hi_1 = ((buf_1_addr & 0xFFFFF000) >> 12) + ((extend & 0xFFF) << 20);
     167
     168        _nic_set_channel_register( channel, NIC_TX_DESC_LO_0, desc_lo_0     );
     169        _nic_set_channel_register( channel, NIC_TX_DESC_LO_1, desc_lo_1     );
     170        _nic_set_channel_register( channel, NIC_TX_DESC_HI_0, desc_hi_0     );
     171        _nic_set_channel_register( channel, NIC_TX_DESC_HI_1, desc_hi_1     );
    142172        _nic_set_channel_register( channel, NIC_TX_RUN      , 1             );
    143173    }
Note: See TracChangeset for help on using the changeset viewer.