xref: /openbmc/qemu/hw/net/tulip.h (revision 4dad0a9aa818698e0735c8352bf7925a1660df6f)
134ea023dSSven Schnelle #ifndef HW_TULIP_H
234ea023dSSven Schnelle #define HW_TULIP_H
334ea023dSSven Schnelle 
434ea023dSSven Schnelle #include "qemu/units.h"
534ea023dSSven Schnelle #include "net/net.h"
6db1015e9SEduardo Habkost #include "qom/object.h"
734ea023dSSven Schnelle 
834ea023dSSven Schnelle #define TYPE_TULIP "tulip"
9*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(TULIPState, TULIP)
1034ea023dSSven Schnelle 
1134ea023dSSven Schnelle #define CSR(_x) ((_x) << 3)
1234ea023dSSven Schnelle 
1334ea023dSSven Schnelle #define CSR0_SWR        BIT(0)
1434ea023dSSven Schnelle #define CSR0_BAR        BIT(1)
1534ea023dSSven Schnelle #define CSR0_DSL_SHIFT  2
1634ea023dSSven Schnelle #define CSR0_DSL_MASK   0x1f
1734ea023dSSven Schnelle #define CSR0_BLE        BIT(7)
1834ea023dSSven Schnelle #define CSR0_PBL_SHIFT  8
1934ea023dSSven Schnelle #define CSR0_PBL_MASK   0x3f
2034ea023dSSven Schnelle #define CSR0_CAC_SHIFT  14
2134ea023dSSven Schnelle #define CSR0_CAC_MASK   0x3
2234ea023dSSven Schnelle #define CSR0_DAS        0x10000
2334ea023dSSven Schnelle #define CSR0_TAP_SHIFT  17
2434ea023dSSven Schnelle #define CSR0_TAP_MASK   0x7
2534ea023dSSven Schnelle #define CSR0_DBO        0x100000
2634ea023dSSven Schnelle #define CSR1_TPD        0x01
2734ea023dSSven Schnelle #define CSR0_RLE        BIT(23)
2834ea023dSSven Schnelle #define CSR0_WIE        BIT(24)
2934ea023dSSven Schnelle 
3034ea023dSSven Schnelle #define CSR2_RPD        0x01
3134ea023dSSven Schnelle 
3234ea023dSSven Schnelle #define CSR5_TI         BIT(0)
3334ea023dSSven Schnelle #define CSR5_TPS        BIT(1)
3434ea023dSSven Schnelle #define CSR5_TU         BIT(2)
3534ea023dSSven Schnelle #define CSR5_TJT        BIT(3)
3634ea023dSSven Schnelle #define CSR5_LNP_ANC    BIT(4)
3734ea023dSSven Schnelle #define CSR5_UNF        BIT(5)
3834ea023dSSven Schnelle #define CSR5_RI         BIT(6)
3934ea023dSSven Schnelle #define CSR5_RU         BIT(7)
4034ea023dSSven Schnelle #define CSR5_RPS        BIT(8)
4134ea023dSSven Schnelle #define CSR5_RWT        BIT(9)
4234ea023dSSven Schnelle #define CSR5_ETI        BIT(10)
4334ea023dSSven Schnelle #define CSR5_GTE        BIT(11)
4434ea023dSSven Schnelle #define CSR5_LNF        BIT(12)
4534ea023dSSven Schnelle #define CSR5_FBE        BIT(13)
4634ea023dSSven Schnelle #define CSR5_ERI        BIT(14)
4734ea023dSSven Schnelle #define CSR5_AIS        BIT(15)
4834ea023dSSven Schnelle #define CSR5_NIS        BIT(16)
4934ea023dSSven Schnelle #define CSR5_RS_SHIFT   17
5034ea023dSSven Schnelle #define CSR5_RS_MASK    7
5134ea023dSSven Schnelle #define CSR5_TS_SHIFT   20
5234ea023dSSven Schnelle #define CSR5_TS_MASK    7
5334ea023dSSven Schnelle 
5434ea023dSSven Schnelle #define CSR5_TS_STOPPED                 0
5534ea023dSSven Schnelle #define CSR5_TS_RUNNING_FETCH           1
5634ea023dSSven Schnelle #define CSR5_TS_RUNNING_WAIT_EOT        2
5734ea023dSSven Schnelle #define CSR5_TS_RUNNING_READ_BUF        3
5834ea023dSSven Schnelle #define CSR5_TS_RUNNING_SETUP           5
5934ea023dSSven Schnelle #define CSR5_TS_SUSPENDED               6
6034ea023dSSven Schnelle #define CSR5_TS_RUNNING_CLOSE           7
6134ea023dSSven Schnelle 
6234ea023dSSven Schnelle #define CSR5_RS_STOPPED                 0
6334ea023dSSven Schnelle #define CSR5_RS_RUNNING_FETCH           1
6434ea023dSSven Schnelle #define CSR5_RS_RUNNING_CHECK_EOR       2
6534ea023dSSven Schnelle #define CSR5_RS_RUNNING_WAIT_RECEIVE    3
6634ea023dSSven Schnelle #define CSR5_RS_SUSPENDED               4
6734ea023dSSven Schnelle #define CSR5_RS_RUNNING_CLOSE           5
6834ea023dSSven Schnelle #define CSR5_RS_RUNNING_FLUSH           6
6934ea023dSSven Schnelle #define CSR5_RS_RUNNING_QUEUE           7
7034ea023dSSven Schnelle 
7134ea023dSSven Schnelle #define CSR5_EB_SHIFT   23
7234ea023dSSven Schnelle #define CSR5_EB_MASK    7
7334ea023dSSven Schnelle 
7434ea023dSSven Schnelle #define CSR5_GPI        BIT(26)
7534ea023dSSven Schnelle #define CSR5_LC         BIT(27)
7634ea023dSSven Schnelle 
7734ea023dSSven Schnelle #define CSR6_HP         BIT(0)
7834ea023dSSven Schnelle #define CSR6_SR         BIT(1)
7934ea023dSSven Schnelle #define CSR6_HO         BIT(2)
8034ea023dSSven Schnelle #define CSR6_PB         BIT(3)
8134ea023dSSven Schnelle #define CSR6_IF         BIT(4)
8234ea023dSSven Schnelle #define CSR6_SB         BIT(5)
8334ea023dSSven Schnelle #define CSR6_PR         BIT(6)
8434ea023dSSven Schnelle #define CSR6_PM         BIT(7)
8534ea023dSSven Schnelle #define CSR6_FKD        BIT(8)
8634ea023dSSven Schnelle #define CSR6_FD         BIT(9)
8734ea023dSSven Schnelle 
8834ea023dSSven Schnelle #define CSR6_OM_SHIFT   10
8934ea023dSSven Schnelle #define CSR6_OM_MASK    3
9034ea023dSSven Schnelle #define CSR6_OM_NORMAL          0
9134ea023dSSven Schnelle #define CSR6_OM_INT_LOOPBACK    1
9234ea023dSSven Schnelle #define CSR6_OM_EXT_LOOPBACK    2
9334ea023dSSven Schnelle 
9434ea023dSSven Schnelle #define CSR6_FC         BIT(12)
9534ea023dSSven Schnelle #define CSR6_ST         BIT(13)
9634ea023dSSven Schnelle 
9734ea023dSSven Schnelle 
9834ea023dSSven Schnelle #define CSR6_TR_SHIFT   14
9934ea023dSSven Schnelle #define CSR6_TR_MASK    3
10034ea023dSSven Schnelle #define CSR6_TR_72      0
10134ea023dSSven Schnelle #define CSR6_TR_96      1
10234ea023dSSven Schnelle #define CSR6_TR_128     2
10334ea023dSSven Schnelle #define CSR6_TR_160     3
10434ea023dSSven Schnelle 
10534ea023dSSven Schnelle #define CSR6_CA         BIT(17)
10634ea023dSSven Schnelle #define CSR6_RA         BIT(30)
10734ea023dSSven Schnelle #define CSR6_SC         BIT(31)
10834ea023dSSven Schnelle 
10934ea023dSSven Schnelle #define CSR7_TIM        BIT(0)
11034ea023dSSven Schnelle #define CSR7_TSM        BIT(1)
11134ea023dSSven Schnelle #define CSR7_TUM        BIT(2)
11234ea023dSSven Schnelle #define CSR7_TJM        BIT(3)
11334ea023dSSven Schnelle #define CSR7_LPM        BIT(4)
11434ea023dSSven Schnelle #define CSR7_UNM        BIT(5)
11534ea023dSSven Schnelle #define CSR7_RIM        BIT(6)
11634ea023dSSven Schnelle #define CSR7_RUM        BIT(7)
11734ea023dSSven Schnelle #define CSR7_RSM        BIT(8)
11834ea023dSSven Schnelle #define CSR7_RWM        BIT(9)
11934ea023dSSven Schnelle #define CSR7_TMM        BIT(11)
12034ea023dSSven Schnelle #define CSR7_LFM        BIT(12)
12134ea023dSSven Schnelle #define CSR7_SEM        BIT(13)
12234ea023dSSven Schnelle #define CSR7_ERM        BIT(14)
12334ea023dSSven Schnelle #define CSR7_AIM        BIT(15)
12434ea023dSSven Schnelle #define CSR7_NIM        BIT(16)
12534ea023dSSven Schnelle 
12634ea023dSSven Schnelle #define CSR8_MISSED_FRAME_OVL           BIT(16)
12734ea023dSSven Schnelle #define CSR8_MISSED_FRAME_CNT_MASK      0xffff
12834ea023dSSven Schnelle 
12934ea023dSSven Schnelle #define CSR9_DATA_MASK  0xff
13034ea023dSSven Schnelle #define CSR9_SR_CS      BIT(0)
13134ea023dSSven Schnelle #define CSR9_SR_SK      BIT(1)
13234ea023dSSven Schnelle #define CSR9_SR_DI      BIT(2)
13334ea023dSSven Schnelle #define CSR9_SR_DO      BIT(3)
13434ea023dSSven Schnelle #define CSR9_REG        BIT(10)
13534ea023dSSven Schnelle #define CSR9_SR         BIT(11)
13634ea023dSSven Schnelle #define CSR9_BR         BIT(12)
13734ea023dSSven Schnelle #define CSR9_WR         BIT(13)
13834ea023dSSven Schnelle #define CSR9_RD         BIT(14)
13934ea023dSSven Schnelle #define CSR9_MOD        BIT(15)
14034ea023dSSven Schnelle #define CSR9_MDC        BIT(16)
14134ea023dSSven Schnelle #define CSR9_MDO        BIT(17)
14234ea023dSSven Schnelle #define CSR9_MII        BIT(18)
14334ea023dSSven Schnelle #define CSR9_MDI        BIT(19)
14434ea023dSSven Schnelle 
14534ea023dSSven Schnelle #define CSR11_CON       BIT(16)
14634ea023dSSven Schnelle #define CSR11_TIMER_MASK 0xffff
14734ea023dSSven Schnelle 
14834ea023dSSven Schnelle #define CSR12_MRA       BIT(0)
14934ea023dSSven Schnelle #define CSR12_LS100     BIT(1)
15034ea023dSSven Schnelle #define CSR12_LS10      BIT(2)
15134ea023dSSven Schnelle #define CSR12_APS       BIT(3)
15234ea023dSSven Schnelle #define CSR12_ARA       BIT(8)
15334ea023dSSven Schnelle #define CSR12_TRA       BIT(9)
15434ea023dSSven Schnelle #define CSR12_NSN       BIT(10)
15534ea023dSSven Schnelle #define CSR12_TRF       BIT(11)
15634ea023dSSven Schnelle #define CSR12_ANS_SHIFT 12
15734ea023dSSven Schnelle #define CSR12_ANS_MASK  7
15834ea023dSSven Schnelle #define CSR12_LPN       BIT(15)
15934ea023dSSven Schnelle #define CSR12_LPC_SHIFT 16
16034ea023dSSven Schnelle #define CSR12_LPC_MASK  0xffff
16134ea023dSSven Schnelle 
16234ea023dSSven Schnelle #define CSR13_SRL       BIT(0)
16334ea023dSSven Schnelle #define CSR13_CAC       BIT(2)
16434ea023dSSven Schnelle #define CSR13_AUI       BIT(3)
16534ea023dSSven Schnelle #define CSR13_SDM_SHIFT 4
16634ea023dSSven Schnelle #define CSR13_SDM_MASK  0xfff
16734ea023dSSven Schnelle 
16834ea023dSSven Schnelle #define CSR14_ECEN      BIT(0)
16934ea023dSSven Schnelle #define CSR14_LBK       BIT(1)
17034ea023dSSven Schnelle #define CSR14_DREN      BIT(2)
17134ea023dSSven Schnelle #define CSR14_LSE       BIT(3)
17234ea023dSSven Schnelle #define CSR14_CPEN_SHIFT 4
17334ea023dSSven Schnelle #define CSR14_CPEN_MASK 3
17434ea023dSSven Schnelle #define CSR14_MBO       BIT(6)
17534ea023dSSven Schnelle #define CSR14_ANE       BIT(7)
17634ea023dSSven Schnelle #define CSR14_RSQ       BIT(8)
17734ea023dSSven Schnelle #define CSR14_CSQ       BIT(9)
17834ea023dSSven Schnelle #define CSR14_CLD       BIT(10)
17934ea023dSSven Schnelle #define CSR14_SQE       BIT(11)
18034ea023dSSven Schnelle #define CSR14_LTE       BIT(12)
18134ea023dSSven Schnelle #define CSR14_APE       BIT(13)
18234ea023dSSven Schnelle #define CSR14_SPP       BIT(14)
18334ea023dSSven Schnelle #define CSR14_TAS       BIT(15)
18434ea023dSSven Schnelle 
18534ea023dSSven Schnelle #define CSR15_JBD       BIT(0)
18634ea023dSSven Schnelle #define CSR15_HUJ       BIT(1)
18734ea023dSSven Schnelle #define CSR15_JCK       BIT(2)
18834ea023dSSven Schnelle #define CSR15_ABM       BIT(3)
18934ea023dSSven Schnelle #define CSR15_RWD       BIT(4)
19034ea023dSSven Schnelle #define CSR15_RWR       BIT(5)
19134ea023dSSven Schnelle #define CSR15_LE1       BIT(6)
19234ea023dSSven Schnelle #define CSR15_LV1       BIT(7)
19334ea023dSSven Schnelle #define CSR15_TSCK      BIT(8)
19434ea023dSSven Schnelle #define CSR15_FUSQ      BIT(9)
19534ea023dSSven Schnelle #define CSR15_FLF       BIT(10)
19634ea023dSSven Schnelle #define CSR15_LSD       BIT(11)
19734ea023dSSven Schnelle #define CSR15_DPST      BIT(12)
19834ea023dSSven Schnelle #define CSR15_FRL       BIT(13)
19934ea023dSSven Schnelle #define CSR15_LE2       BIT(14)
20034ea023dSSven Schnelle #define CSR15_LV2       BIT(15)
20134ea023dSSven Schnelle 
20234ea023dSSven Schnelle #define RDES0_OF         BIT(0)
20334ea023dSSven Schnelle #define RDES0_CE         BIT(1)
20434ea023dSSven Schnelle #define RDES0_DB         BIT(2)
20534ea023dSSven Schnelle #define RDES0_RJ         BIT(4)
20634ea023dSSven Schnelle #define RDES0_FT         BIT(5)
20734ea023dSSven Schnelle #define RDES0_CS         BIT(6)
20834ea023dSSven Schnelle #define RDES0_TL         BIT(7)
20934ea023dSSven Schnelle #define RDES0_LS         BIT(8)
21034ea023dSSven Schnelle #define RDES0_FS         BIT(9)
21134ea023dSSven Schnelle #define RDES0_MF         BIT(10)
21234ea023dSSven Schnelle #define RDES0_RF         BIT(11)
21334ea023dSSven Schnelle #define RDES0_DT_SHIFT   12
21434ea023dSSven Schnelle #define RDES0_DT_MASK    3
215171ce2e2SPhilippe Mathieu-Daudé #define RDES0_DE         BIT(14)
21634ea023dSSven Schnelle #define RDES0_ES         BIT(15)
21734ea023dSSven Schnelle #define RDES0_FL_SHIFT   16
21834ea023dSSven Schnelle #define RDES0_FL_MASK    0x3fff
21934ea023dSSven Schnelle #define RDES0_FF         BIT(30)
22034ea023dSSven Schnelle #define RDES0_OWN        BIT(31)
22134ea023dSSven Schnelle 
22234ea023dSSven Schnelle #define RDES1_BUF1_SIZE_SHIFT 0
22334ea023dSSven Schnelle #define RDES1_BUF1_SIZE_MASK 0x7ff
22434ea023dSSven Schnelle 
22534ea023dSSven Schnelle #define RDES1_BUF2_SIZE_SHIFT 11
22634ea023dSSven Schnelle #define RDES1_BUF2_SIZE_MASK 0x7ff
22734ea023dSSven Schnelle #define RDES1_RCH       BIT(24)
22834ea023dSSven Schnelle #define RDES1_RER       BIT(25)
22934ea023dSSven Schnelle 
23034ea023dSSven Schnelle #define TDES0_DE        BIT(0)
23134ea023dSSven Schnelle #define TDES0_UF        BIT(1)
23234ea023dSSven Schnelle #define TDES0_LF        BIT(2)
23334ea023dSSven Schnelle #define TDES0_CC_SHIFT  3
23434ea023dSSven Schnelle #define TDES0_CC_MASK   0xf
23534ea023dSSven Schnelle #define TDES0_HF        BIT(7)
23634ea023dSSven Schnelle #define TDES0_EC        BIT(8)
23734ea023dSSven Schnelle #define TDES0_LC        BIT(9)
23834ea023dSSven Schnelle #define TDES0_NC        BIT(10)
23934ea023dSSven Schnelle #define TDES0_LO        BIT(11)
24034ea023dSSven Schnelle #define TDES0_TO        BIT(14)
24134ea023dSSven Schnelle #define TDES0_ES        BIT(15)
24234ea023dSSven Schnelle #define TDES0_OWN       BIT(31)
24334ea023dSSven Schnelle 
24434ea023dSSven Schnelle #define TDES1_BUF1_SIZE_SHIFT 0
24534ea023dSSven Schnelle #define TDES1_BUF1_SIZE_MASK 0x7ff
24634ea023dSSven Schnelle 
24734ea023dSSven Schnelle #define TDES1_BUF2_SIZE_SHIFT 11
24834ea023dSSven Schnelle #define TDES1_BUF2_SIZE_MASK 0x7ff
24934ea023dSSven Schnelle 
25034ea023dSSven Schnelle #define TDES1_FT0       BIT(22)
25134ea023dSSven Schnelle #define TDES1_DPD       BIT(23)
25234ea023dSSven Schnelle #define TDES1_TCH       BIT(24)
25334ea023dSSven Schnelle #define TDES1_TER       BIT(25)
25434ea023dSSven Schnelle #define TDES1_AC        BIT(26)
25534ea023dSSven Schnelle #define TDES1_SET       BIT(27)
25634ea023dSSven Schnelle #define TDES1_FT1       BIT(28)
25734ea023dSSven Schnelle #define TDES1_FS        BIT(29)
25834ea023dSSven Schnelle #define TDES1_LS        BIT(30)
25934ea023dSSven Schnelle #define TDES1_IC        BIT(31)
26034ea023dSSven Schnelle 
26134ea023dSSven Schnelle struct tulip_descriptor {
26234ea023dSSven Schnelle     uint32_t status;
26334ea023dSSven Schnelle     uint32_t control;
26434ea023dSSven Schnelle     uint32_t buf_addr1;
26534ea023dSSven Schnelle     uint32_t buf_addr2;
26634ea023dSSven Schnelle };
26734ea023dSSven Schnelle 
26834ea023dSSven Schnelle #endif
269