source: soft/giet_vm/giet_drivers/nic_driver.h @ 334

Last change on this file since 334 was 295, checked in by alain, 11 years ago

Introducing a major release, to suppoort the tsar_generic_leti platform
and the various (external or internal) peripherals configurations.
The map.xml format has been modified, in order to support the new
vci_iopic componentand a new policy for peripherals initialisation.
The IRQs are nom described in the XICU and IOPIC components
(and not anymore in the processors).
To enforce this major change, the map.xml file signature changed:
The signature value must be: 0xDACE2014

This new release has been tested on the tsar_generic_leti platform
for the following mappings:

  • 4c_4p_sort_leti
  • 4c_4p_sort_leti_ext
  • 4c_4p_transpose_leti
  • 4c_4p_transpose_leti_ext
  • 4c_1p_four_leti_ext
File size: 5.5 KB
Line 
1///////////////////////////////////////////////////////////////////////////////////
2// File     : nic_driver.h
3// Date     : 01/11/2013
4// Author   : alain greiner
5// Copyright (c) UPMC-LIP6
6///////////////////////////////////////////////////////////////////////////////////
7
8#ifndef _GIET_NIC_DRIVERS_H_
9#define _GIET_NIC_DRIVERS_H_
10
11///////////////////////////////////////////////////////////////////////////////////
12// NIC Registers  (vci_multi_nic)
13///////////////////////////////////////////////////////////////////////////////////
14
15enum SoclibMultiNicHyperviseurRegisters {
16    NIC_G_VIS                        = 0,   // bitfield : bit N = 0 -> channel N disabled
17    NIC_G_ON                         = 1,   // boolean : NIC component activated
18    NIC_G_NB_CHAN                    = 2,   // Number of channels present in this NIC (read only)
19    NIC_G_BC_ENABLE                  = 3,   // boolean : Enable Broadcast if non zero
20    NIC_G_TDM_ENABLE                 = 4,   // boolean : TDM Scheduler if non zero
21    NIC_G_TDM_PERIOD                 = 5,   // TDM time slot value
22    NIC_G_BYPASS_ENABLE              = 6,   // boolean : Enable bypass for TX packets
23    // alignment
24    NIC_G_MAC_4                      = 8,   // channel mac address 32 LSB bits array[8]
25    NIC_G_MAC_2                      = 16,  // channel mac address 16 MSB bits array[8]
26    // alignment
27    NIC_G_NPKT_RX_G2S_RECEIVED       = 32,  // number of packets received on GMII RX port
28    NIC_G_NPKT_RX_G2S_DISCARDED      = 33,  // number of RX packets discarded by RX_G2S FSM
29
30    NIC_G_NPKT_RX_DES_SUCCESS        = 34,  // number of RX packets transmited by RX_DES FSM
31    NIC_G_NPKT_RX_DES_TOO_SMALL      = 35,  // number of discarded too small RX packets (<60B)
32    NIC_G_NPKT_RX_DES_TOO_BIG        = 36,  // number of discarded too big RX packets (>1514B)
33    NIC_G_NPKT_RX_DES_MFIFO_FULL     = 37,  // number of discarded RX packets because fifo full
34    NIC_G_NPKT_RX_DES_CRC_FAIL       = 38,  // number of discarded RX packets because CRC32 failure
35
36    NIC_G_NPKT_RX_DISPATCH_RECEIVED  = 39,  // number of packets received by RX_DISPATCH FSM
37    NIC_G_NPKT_RX_DISPATCH_BROADCAST = 40,  // number of broadcast RX packets received
38    NIC_G_NPKT_RX_DISPATCH_DST_FAIL  = 41,  // number of discarded RX packets for DST MAC not found
39    NIC_G_NPKT_RX_DISPATCH_CH_FULL   = 42,  // number of discarded RX packets for channel full
40
41    NIC_G_NPKT_TX_DISPATCH_RECEIVED  = 43,  // number of packets received by TX_DISPATCH FSM
42    NIC_G_NPKT_TX_DISPATCH_TOO_SMALL = 44,  // number of discarded too small TX packets (<60B)
43    NIC_G_NPKT_TX_DISPATCH_TOO_BIG   = 45,  // number of discarded too big TX packets (>1514B)
44    NIC_G_NPKT_TX_DISPATCH_SRC_FAIL  = 46,  // number of discarded TX packets for SRC MAC failed
45    NIC_G_NPKT_TX_DISPATCH_BROADCAST = 47,  // number of broadcast TX packets received
46    NIC_G_NPKT_TX_DISPATCH_BYPASS    = 48,  // number of bypassed TX->RX packets
47    NIC_G_NPKT_TX_DISPATCH_TRANSMIT  = 49,  // number of transmit TX packets
48
49    NIC_CHANNEL_SPAN                 = 0x2000,
50};
51
52/////////////////////////////////////////////////////////////////////
53// A container descriptor has the following form:
54// LOW WORD : Container LSB base address     
55// HIGH WORD: Container status (leftmost bit), '1' means full
56//            Base address MSB extension, if needed (right aligned)
57//////////////////////////////////////////////////////////////////////
58enum SoclibMultiNicChannelRegisters
59{
60    NIC_RX_DESC_LO_0          = 0,   // RX_0 descriptor low word         (Read/Write)
61    NIC_RX_DESC_HI_0          = 1,   // RX_0 descriptor high word        (Read/Write)
62    NIC_RX_DESC_LO_1          = 2,   // RX_1 descriptor low word         (Read/Write)
63    NIC_RX_DESC_HI_1          = 3,   // RX_1 descriptor high word        (Read/Write)
64    NIC_TX_DESC_LO_0          = 4,   // TX_0 descriptor low word         (Read/Write)
65    NIC_TX_DESC_HI_0          = 5,   // TX_0 descriptor high word        (Read/Write)
66    NIC_TX_DESC_LO_1          = 6,   // TX_1 descriptor low word         (Read/Write)
67    NIC_TX_DESC_HI_1          = 7,   // TX_1 descriptor high word        (Read/Write)
68    NIC_MAC_4                 = 8,   // channel mac address 32 LSB bits  (Read Only)
69    NIC_MAC_2                 = 9,   // channel mac address 16 LSB bits  (Read Only)
70    NIC_RX_RUN                = 10,  // RX packets can be received       (write_only)
71    NIC_TX_RUN                = 11,  // TX packets can be transmitted    (write_only)
72};
73
74///////////////////////////////////////////////////////////////////////////////////
75// NIC device access functions  (vci_multi_nic)
76///////////////////////////////////////////////////////////////////////////////////
77
78extern unsigned int _nic_sync_write( const void*  buffer, 
79                                     unsigned int length );
80
81extern unsigned int _nic_sync_read(  const void*  buffer, 
82                                     unsigned int length );
83
84extern unsigned int _nic_cma_start();
85
86extern unsigned int _nic_cma_stop();
87
88extern void _nic_rx_isr( unsigned int irq_type,
89                         unsigned int irq_id,
90                         unsigned int channel );
91
92extern void _nic_tx_isr( unsigned int irq_type,
93                         unsigned int irq_id,
94                         unsigned int channel );
95
96///////////////////////////////////////////////////////////////////////////////////
97
98
99#endif
100
101// Local Variables:
102// tab-width: 4
103// c-basic-offset: 4
104// c-file-offsets:((innamespace . 0)(inline-open . 0))
105// indent-tabs-mode: nil
106// End:
107// vim: filetype=c:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
108
Note: See TracBrowser for help on using the repository browser.