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