/* cassini register map: 2M memory mapped in 32-bit memory space accessible as *32-bitwords.thereisnoi/oportaccess.REG_addressesare *sharedbetweencassiniandcassini+.REG_PLUS_addressesonly *appearincassini+.REG_MINUS_addressesonlyappearincassini.
*/ #define CAS_ID_REV2 0x02 #define CAS_ID_REVPLUS 0x10 #define CAS_ID_REVPLUS02u 0x11 #define CAS_ID_REVSATURNB2 0x30
/** global resources **/
/* this register sets the weights for the weighted round robin arbiter. e.g., *ifrxweight==1andtxweight==0,rx==2xtxtransfercredit *foritsnextturntoaccessthepcibus. *map:0x0=x1,0x1=x2,0x2=x4,0x3=x8 *DEFAULT:0x0,SIZE:5bits
*/ #define REG_CAWR 0x0004 /* core arbitration weight */ #define CAWR_RX_DMA_WEIGHT_SHIFT 0 #define CAWR_RX_DMA_WEIGHT_MASK 0x03 /* [0:1] */ #define CAWR_TX_DMA_WEIGHT_SHIFT 2 #define CAWR_TX_DMA_WEIGHT_MASK 0x0C /* [3:2] */ #define CAWR_RR_DIS 0x10 /* [4] */
/* if enabled, BIM can send bursts across PCI bus > cacheline size. burst *sizesdeterminedbylengthofpacketordescriptortransferandthe *maxlengthallowedbythetarget. *DEFAULT:0x0,SIZE:1bit
*/ #define REG_INF_BURST 0x0008 /* infinite burst enable reg */ #define INF_BURST_EN 0x1 /* enable */
/* top level interrupts [0-9] are auto-cleared to 0 when the status *registerisread.secondlevelinterrupts[13-18]areclearedat *thesource.txcompletionregister3isreplicatedin[19-31] *DEFAULT:0x00000000,SIZE:29bits
*/ #define REG_INTR_STATUS 0x000C /* interrupt status register */ #define INTR_TX_INTME 0x00000001 /* frame w/ INT ME desc bit set xferredfromhostqueueto
TX FIFO */ #define INTR_TX_ALL 0x00000002 /* all xmit frames xferred into TXFIFO.i.e., TXKick==TXcomplete.if PACED_MODEset,thenTXFIFO
also empty */ #define INTR_TX_DONE 0x00000004 /* any frame xferred into tx
FIFO */ #define INTR_TX_TAG_ERROR 0x00000008 /* TX FIFO tag framing
corrupted. FATAL ERROR */ #define INTR_RX_DONE 0x00000010 /* at least 1 frame xferred fromRXFIFOtohostmem. RXcompletionregupdated. maybedelayedbyrecv
intr blanking. */ #define INTR_RX_BUF_UNAVAIL 0x00000020 /* no more receive buffers.
RX Kick == RX complete */ #define INTR_RX_TAG_ERROR 0x00000040 /* RX FIFO tag framing
corrupted. FATAL ERROR */ #define INTR_RX_COMP_FULL 0x00000080 /* no more room in completion ringtopostdescriptors. RXcompleteheadincrto almostreachRXcomplete
tail */ #define INTR_RX_BUF_AE 0x00000100 /* less than the programmablethreshold# offreedescravailfor
hw use */ #define INTR_RX_COMP_AF 0x00000200 /* less than the programmablethreshold# ofdescrspacesforhw useincompletiondescr
ring */ #define INTR_RX_LEN_MISMATCH 0x00000400 /* len field from MAC != lenofnon-reassemblypkt fromfifoduringDMAor headerparserprovidesTCP headerandpayloadsize> MACpacketsize.
FATAL ERROR */ #define INTR_SUMMARY 0x00001000 /* summary interrupt bit. this bitwillbesetifaninterrupt generatedonthepcibus.useful whendriverispollingfor
interrupts */ #define INTR_PCS_STATUS 0x00002000 /* PCS interrupt status register */ #define INTR_TX_MAC_STATUS 0x00004000 /* TX MAC status register has at
least 1 unmasked interrupt set */ #define INTR_RX_MAC_STATUS 0x00008000 /* RX MAC status register has at
least 1 unmasked interrupt set */ #define INTR_MAC_CTRL_STATUS 0x00010000 /* MAC control status register has atleast1unmaskedinterrupt
set */ #define INTR_MIF_STATUS 0x00020000 /* MIF status register has at least
1 unmasked interrupt set */ #define INTR_PCI_ERROR_STATUS 0x00040000 /* PCI error status register in the BIFhasatleast1unmasked
interrupt set */ #define INTR_TX_COMP_3_MASK 0xFFF80000 /* mask for TX completion
3 reg data */ #define INTR_TX_COMP_3_SHIFT 19 #define INTR_ERROR_MASK (INTR_MIF_STATUS | INTR_PCI_ERROR_STATUS | \
INTR_PCS_STATUS | INTR_RX_LEN_MISMATCH | \
INTR_TX_MAC_STATUS | INTR_RX_MAC_STATUS | \
INTR_TX_TAG_ERROR | INTR_RX_TAG_ERROR | \
INTR_MAC_CTRL_STATUS)
/* determines which status events will cause an interrupt. layout same *asREG_INTR_STATUS. *DEFAULT:0xFFFFFFFF,SIZE:16bits
*/ #define REG_INTR_MASK 0x0010 /* Interrupt mask */
/* top level interrupt bits that are cleared during read of REG_INTR_STATUS_ALIAS. *usefulwhendriverispollingforinterrupts.layoutsameasREG_INTR_MASK. *DEFAULT:0x00000000,SIZE:12bits
*/ #define REG_ALIAS_CLEAR 0x0014 /* alias clear mask
(used w/ status alias) */ /* same as REG_INTR_STATUS except that only bits cleared are those selected by *REG_ALIAS_CLEAR *DEFAULT:0x00000000,SIZE:29bits
*/ #define REG_INTR_STATUS_ALIAS 0x001C /* interrupt status alias
(selective clear) */
/* DEFAULT: 0x0, SIZE: 3 bits */ #define REG_PCI_ERR_STATUS 0x1000 /* PCI error status */ #define PCI_ERR_BADACK 0x01 /* reserved in Cassini+. setifnoACK64#duringABS64cycle
in Cassini. */ #define PCI_ERR_DTRTO 0x02 /* delayed xaction timeout. set if
no read retry after 2^15 clocks */ #define PCI_ERR_OTHER 0x04 /* other PCI errors */ #define PCI_ERR_BIM_DMA_WRITE 0x08 /* BIM received 0 count DMA write req.
unused in Cassini. */ #define PCI_ERR_BIM_DMA_READ 0x10 /* BIM received 0 count DMA read req.
unused in Cassini. */ #define PCI_ERR_BIM_DMA_TIMEOUT 0x20 /* BIM received 255 retries during
DMA. unused in cassini. */
/* mask for PCI status events that will set PCI_ERR_STATUS. if cleared, event *causesaninterrupttobegenerated. *DEFAULT:0x7,SIZE:3bits
*/ #define REG_PCI_ERR_STATUS_MASK 0x1004 /* PCI Error status mask */
/* writing to SW_RESET_TX and SW_RESET_RX will issue a global *reset.polluntilTXandRXreadbackas0'sforcompletion.
*/ #define REG_SW_RESET 0x1010 /* Software reset */ #define SW_RESET_TX 0x00000001 /* reset TX DMA engine. poll until
cleared to 0. */ #define SW_RESET_RX 0x00000002 /* reset RX DMA engine. poll until
cleared to 0. */ #define SW_RESET_RSTOUT 0x00000004 /* force RSTOUT# pin active (low). resetsPHYandanythingelse connectedtoRSTOUT#.RSTOUT# isalsoactivatedbylocalPCI resetwhenhot-swapisbeing
done. */ #define SW_RESET_BLOCK_PCS_SLINK 0x00000008 /* if a global reset is done with thisbitset,PCSandSLINK moduleswon'tbereset.
i.e., link won't drop. */ #define SW_RESET_BREQ_SM_MASK 0x00007F00 /* breq state machine [6:0] */ #define SW_RESET_PCIARB_SM_MASK 0x00070000 /* pci arbitration state bits: 0b000:ARB_IDLE1 0b001:ARB_IDLE2 0b010:ARB_WB_ACK 0b011:ARB_WB_WAT 0b100:ARB_RB_ACK 0b101:ARB_RB_WAT 0b110:ARB_RB_END
0b111: ARB_WB_END */ #define SW_RESET_RDPCI_SM_MASK 0x00300000 /* read pci state bits: 0b00:RD_PCI_WAT 0b01:RD_PCI_RDY
0b11: RD_PCI_ACK */ #define SW_RESET_RDARB_SM_MASK 0x00C00000 /* read arbitration state bits: 0b00:AD_IDL_RX 0b01:AD_ACK_RX 0b10:AD_ACK_TX
0b11: AD_IDL_TX */ #define SW_RESET_WRPCI_SM_MASK 0x06000000 /* write pci state bits 0b00:WR_PCI_WAT 0b01:WR_PCI_RDY
0b11: WR_PCI_ACK */ #define SW_RESET_WRARB_SM_MASK 0x38000000 /* write arbitration state bits: 0b000:ARB_IDLE1 0b001:ARB_IDLE2 0b010:ARB_TX_ACK 0b011:ARB_TX_WAT 0b100:ARB_RX_ACK
0b110: ARB_RX_WAT */
/* Cassini only. 64-bit register used to check PCI datapath. when read, *valuewrittenhasbothlowerandupper32-bithalvesrotatedtotheright *onebitposition.e.g.,FFFFFFFFFFFFFFFF->7FFFFFFF7FFFFFFF
*/ #define REG_MINUS_BIM_DATAPATH_TEST 0x1018 /* Cassini: BIM datapath test
Cassini+: reserved */
/* output enables are provided for each device's chip select and for the rest *oftheoutputsfromcassinitoitslocalbusdevices.twoswprogrammable *bitsareconnectedtogeneralpurpuscontrol/statusbits. *DEFAULT:0x7
*/ #define REG_BIM_LOCAL_DEV_EN 0x1020 /* BIM local device
output EN. default: 0x7 */ #define BIM_LOCAL_DEV_PAD 0x01 /* address bus, RW signal, and OEsignaloutputenableonthe localbusinterface.these aresharedbetweenbothlocal
bus devices. tristate when 0. */ #define BIM_LOCAL_DEV_PROM 0x02 /* PROM chip select */ #define BIM_LOCAL_DEV_EXT 0x04 /* secondary local bus device chip
select output enable */ #define BIM_LOCAL_DEV_SOFT_0 0x08 /* sw programmable ctrl bit 0 */ #define BIM_LOCAL_DEV_SOFT_1 0x10 /* sw programmable ctrl bit 1 */ #define BIM_LOCAL_DEV_HW_RESET 0x20 /* internal hw reset. Cassini+ only. */
/* access 24 entry BIM read and write buffers. put address in REG_BIM_BUFFER_ADDR *andread/writefrom/toitREG_BIM_BUFFER_DATA_LOWand_DATA_HI. *_DATA_HIshouldbethelastaccessofthesequence. *DEFAULT:undefined
*/ #define REG_BIM_BUFFER_ADDR 0x1024 /* BIM buffer address. for
purposes. */ #define BIM_BUFFER_ADDR_MASK 0x3F /* index (0 - 23) of buffer */ #define BIM_BUFFER_WR_SELECT 0x40 /* write buffer access = 1
read buffer access = 0 */ /* DEFAULT: undefined */ #define REG_BIM_BUFFER_DATA_LOW 0x1028 /* BIM buffer data low */ #define REG_BIM_BUFFER_DATA_HI 0x102C /* BIM buffer data high */
/* set BIM_RAM_BIST_START to start built-in self test for BIM read buffer. *bitauto-clearswhendonewithstatusreadfrom_SUMMARYand_PASSbits.
*/ #define REG_BIM_RAM_BIST 0x102C /* BIM RAM (read buffer) BIST
control/status */ #define BIM_RAM_BIST_RD_START 0x01 /* start BIST for BIM read buffer */ #define BIM_RAM_BIST_WR_START 0x02 /* start BIST for BIM write buffer. Cassinionly.reservedin
Cassini+. */ #define BIM_RAM_BIST_RD_PASS 0x04 /* summary BIST pass status for read
buffer. */ #define BIM_RAM_BIST_WR_PASS 0x08 /* summary BIST pass status for write buffer.Cassinionly.reserved
in Cassini+. */ #define BIM_RAM_BIST_RD_LOW_PASS 0x10 /* read low bank passes BIST */ #define BIM_RAM_BIST_RD_HI_PASS 0x20 /* read high bank passes BIST */ #define BIM_RAM_BIST_WR_LOW_PASS 0x40 /* write low bank passes BIST. Cassinionly.reservedin
Cassini+. */ #define BIM_RAM_BIST_WR_HI_PASS 0x80 /* write high bank passes BIST. Cassinionly.reservedin
Cassini+. */
/* ASUN: i'm not sure what this does as it's not in the spec. *DEFAULT:0xFC
*/ #define REG_BIM_DIAG_MUX 0x1030 /* BIM diagnostic probe mux
select register */
/* enable probe monitoring mode and select data appearing on the P_A* bus. bit *valuesfor_SEL_HI_MASKand_SEL_LOW_MASK: *0x0:internalprobe[7:0](pciarbstate,wtcemptyw,wtcfullw,wtcemptyw, *wtcemptyr,postpci) *0x1:internalprobe[15:8](pciwbufcomp,pciwpktcomp,pcirbufcomp, *pcirpktcomp,txdmawrreq,txdmawrack, *txdmawrrdy,txdmawrxfrdone) *0x2:internalprobe[23:16](txdmardreq,txdmardack,txdmardrdy,rxdmard, *rdarbstate,rdpcistate) *0x3:internalprobe[31:24](rxdmareq,rxdmaack,rxdmardy,wrarbstate, *wrpcistate) *0x4:pciioprobe[7:0]0x5:pciioprobe[15:8] *0x6:pciioprobe[23:16]0x7:pciioprobe[31:24] *0x8:pciioprobe[39:32]0x9:pciioprobe[47:40] *0xa:pciioprobe[55:48]0xb:pciioprobe[63:56] *thefollowingarenotavailableinCassini: *0xc:rxprobe[7:0]0xd:txprobe[7:0] *0xe:hpprobe[7:0]0xf:macprobe[7:0]
*/ #define REG_PLUS_PROBE_MUX_SELECT 0x1034 /* Cassini+: PROBE MUX SELECT */ #define PROBE_MUX_EN 0x80000000 /* allow probe signals to be drivenonlocalbusP_A[15:0]
for debugging */ #define PROBE_MUX_SUB_MUX_MASK 0x0000FF00 /* select sub module probe signals: 0x03=mac[1:0] 0x0C=rx[1:0] 0x30=tx[1:0]
0xC0 = hp[1:0] */ #define PROBE_MUX_SEL_HI_MASK 0x000000F0 /* select which module to appear onP_A[15:8].seeabovefor
values. */ #define PROBE_MUX_SEL_LOW_MASK 0x0000000F /* select which module to appear onP_A[7:0].seeabovefor
values. */
/* values mean the same thing as REG_INTR_MASK excep that it's for INTB.
DEFAULT: 0x1F */ #define REG_PLUS_INTR_MASK_1 0x1038 /* Cassini+: interrupt mask
register 2 for INTB */ #define REG_PLUS_INTRN_MASK(x) (REG_PLUS_INTR_MASK_1 + ((x) - 1)*16) /* bits correspond to both _MASK and _STATUS registers. _ALT corresponds to *allofthealternate(2-4)INTRregisterswhile_1correspondstoonly *_MASK_1and_STATUS_1registers. *DEFAULT:0x7forMASKregisters,0x0forALIAS_CLEARregisters
*/ #define INTR_RX_DONE_ALT 0x01 #define INTR_RX_COMP_FULL_ALT 0x02 #define INTR_RX_COMP_AF_ALT 0x04 #define INTR_RX_BUF_UNAVAIL_1 0x08 #define INTR_RX_BUF_AE_1 0x10 /* almost empty */ #define INTRN_MASK_RX_EN 0x80 #define INTRN_MASK_CLEAR_ALL (INTR_RX_DONE_ALT | \
INTR_RX_COMP_FULL_ALT | \
INTR_RX_COMP_AF_ALT | \
INTR_RX_BUF_UNAVAIL_1 | \
INTR_RX_BUF_AE_1) #define REG_PLUS_INTR_STATUS_1 0x103C /* Cassini+: interrupt status
register 2 for INTB. default: 0x1F */ #define REG_PLUS_INTRN_STATUS(x) (REG_PLUS_INTR_STATUS_1 + ((x) - 1)*16) #define INTR_STATUS_ALT_INTX_EN 0x80 /* generate INTX when one of the
flags are set. enables desc ring. */
#define REG_PLUS_ALIAS_CLEAR_1 0x1040 /* Cassini+: alias clear mask
register 2 for INTB */ #define REG_PLUS_ALIASN_CLEAR(x) (REG_PLUS_ALIAS_CLEAR_1 + ((x) - 1)*16)
#define REG_PLUS_INTR_STATUS_ALIAS_1 0x1044 /* Cassini+: interrupt status
register alias 2 for INTB */ #define REG_PLUS_INTRN_STATUS_ALIAS(x) (REG_PLUS_INTR_STATUS_ALIAS_1 + ((x) - 1)*16)
/* TX configuration. *descrringsizessize=32*(1<<n),n<9.e.g.,0x8=8k.default:0x8 *DEFAULT:0x3F000001
*/ #define REG_TX_CFG 0x2004 /* TX config */ #define TX_CFG_DMA_EN 0x00000001 /* enable TX DMA. if cleared, DMA willstopafterxferofcurrent
buffer has been completed. */ #define TX_CFG_FIFO_PIO_SEL 0x00000002 /* TX DMA FIFO can be accessedw/FIFOaddr anddataregisters. TXDMAshouldbe
disabled. */ #define TX_CFG_DESC_RING0_MASK 0x0000003C /* # desc entries in
ring 1. */ #define TX_CFG_DESC_RING0_SHIFT 2 #define TX_CFG_DESC_RINGN_MASK(a) (TX_CFG_DESC_RING0_MASK << (a)*4) #define TX_CFG_DESC_RINGN_SHIFT(a) (TX_CFG_DESC_RING0_SHIFT + (a)*4) #define TX_CFG_PACED_MODE 0x00100000 /* TX_ALL only set after TXFIFObecomesempty. if0,TX_ALLset
if descr queue empty. */ #define TX_CFG_DMA_RDPIPE_DIS 0x01000000 /* always set to 1 */ #define TX_CFG_COMPWB_Q1 0x02000000 /* completion writeback happens at theendofeverypacketkicked
through Q1. */ #define TX_CFG_COMPWB_Q2 0x04000000 /* completion writeback happens at theendofeverypacketkicked
through Q2. */ #define TX_CFG_COMPWB_Q3 0x08000000 /* completion writeback happens at theendofeverypacketkicked
through Q3 */ #define TX_CFG_COMPWB_Q4 0x10000000 /* completion writeback happens at theendofeverypacketkicked
through Q4 */ #define TX_CFG_INTR_COMPWB_DIS 0x20000000 /* disable pre-interrupt completion
writeback */ #define TX_CFG_CTX_SEL_MASK 0xC0000000 /* selects tx test port connection 0b00:txmacreq, txmacretryreq, txackandtxtag. 0b01:txdmardreq, txdmardack, txdmardrdy, txdmardtype0 0b11:txdmawrreq, txdmawrack, txdmawrrdy,
txdma wr xfr done. */ #define TX_CFG_CTX_SEL_SHIFT 30
/* 11-bit counters that point to next location in FIFO to be loaded/retrieved. *usedfordiagnosticsonly.
*/ #define REG_TX_FIFO_WRITE_PTR 0x2014 /* TX FIFO write pointer */ #define REG_TX_FIFO_SHADOW_WRITE_PTR 0x2018 /* TX FIFO shadow write pointer.tempholdreg.
diagnostics only. */ #define REG_TX_FIFO_READ_PTR 0x201C /* TX FIFO read pointer */ #define REG_TX_FIFO_SHADOW_READ_PTR 0x2020 /* TX FIFO shadow read
pointer */
/* (ro) 11-bit up/down counter w/ # of frames currently in TX FIFO */ #define REG_TX_FIFO_PKT_CNT 0x2024 /* TX FIFO packet counter */
/* current state of all state machines in TX */ #define REG_TX_SM_1 0x2028 /* TX state machine reg #1 */ #define TX_SM_1_CHAIN_MASK 0x000003FF /* chaining state machine */ #define TX_SM_1_CSUM_MASK 0x00000C00 /* checksum state machine */ #define TX_SM_1_FIFO_LOAD_MASK 0x0003F000 /* FIFO load state machine.
= 0x01 when TX disabled. */ #define TX_SM_1_FIFO_UNLOAD_MASK 0x003C0000 /* FIFO unload state machine */ #define TX_SM_1_CACHE_MASK 0x03C00000 /* desc. prefetch cache controller
state machine */ #define TX_SM_1_CBQ_ARB_MASK 0xF8000000 /* CBQ arbiter state machine */
#define REG_TX_SM_2 0x202C /* TX state machine reg #2 */ #define TX_SM_2_COMP_WB_MASK 0x07 /* completion writeback sm */ #define TX_SM_2_SUB_LOAD_MASK 0x38 /* sub load state machine */ #define TX_SM_2_KICK_MASK 0xC0 /* kick state machine */
/* 64-bit pointer to the transmit data buffer. only the 50 LSB are incremented *whiletheupper23bitsaretakenfromtheTXdescriptor
*/ #define REG_TX_DATA_PTR_LOW 0x2030 /* TX data pointer low */ #define REG_TX_DATA_PTR_HI 0x2034 /* TX data pointer high */
/* 13 bit registers written by driver w/ descriptor value that follows *lastvalidxmitdescriptor.kick#andcomplete#valuesareusedby *thexmitdmaenginetocontroltxdescrfetching.if>1valid *txdescrisavailablewithinthecachelinebeingread,cassiniwill *internallycacheupto4ofthem.0onreset._KICK=rw,_COMP=ro.
*/ #define REG_TX_KICK0 0x2038 /* TX kick reg #1 */ #define REG_TX_KICKN(x) (REG_TX_KICK0 + (x)*4) #define REG_TX_COMP0 0x2048 /* TX completion reg #1 */ #define REG_TX_COMPN(x) (REG_TX_COMP0 + (x)*4)
/* values of TX_COMPLETE_1-4 are written. each completion register *is2bytesinsizeandcontiguous.8Ballocationw/8Balignment. *NOTE:completionregvaluesareonlywrittenbackpriortoTX_INTMEand *TX_ALLinterrupts.atallothertimes,themostup-to-dateindexvalues *shouldbeobtainedfromtheREG_TX_COMPLETE_#registers. *here'sthelayout: *offsetfrombaseaddrcompletion#byte *0TX_COMPLETE_1_MSB *1TX_COMPLETE_1_LSB *2TX_COMPLETE_2_MSB *3TX_COMPLETE_2_LSB *4TX_COMPLETE_3_MSB *5TX_COMPLETE_3_LSB *6TX_COMPLETE_4_MSB *7TX_COMPLETE_4_LSB
*/ #define TX_COMPWB_SIZE 8 #define REG_TX_COMPWB_DB_LOW 0x2058 /* TX completion write back
base low */ #define REG_TX_COMPWB_DB_HI 0x205C /* TX completion write back
base high */ #define TX_COMPWB_MSB_MASK 0x00000000000000FFULL #define TX_COMPWB_MSB_SHIFT 0 #define TX_COMPWB_LSB_MASK 0x000000000000FF00ULL #define TX_COMPWB_LSB_SHIFT 8 #define TX_COMPWB_NEXT(x) ((x) >> 16)
/* 53 MSB used as base address. 11 LSB assumed to be 0. TX desc pointer must
* be 2KB-aligned. */ #define REG_TX_DB0_LOW 0x2060 /* TX descriptor base low #1 */ #define REG_TX_DB0_HI 0x2064 /* TX descriptor base hi #1 */ #define REG_TX_DBN_LOW(x) (REG_TX_DB0_LOW + (x)*8) #define REG_TX_DBN_HI(x) (REG_TX_DB0_HI + (x)*8)
/* current state of RX DMA state engines + other info *DEFAULT:0x0
*/ #define REG_RX_DEBUG 0x401C /* RX debug */ #define RX_DEBUG_LOAD_STATE_MASK 0x0000000F /* load state machine w/ MAC: 0x0=idle,0x1=load_bop 0x2=load1,0x3=load2 0x4=load3,0x5=load4 0x6=lastdetect 0x7=waitreq 0x8=waitreqstatuss1st 0x9=loadst 0xa=bubblemac
0xb = error */ #define RX_DEBUG_LM_STATE_MASK 0x00000070 /* load state machine w/ HP and RXFIFO: 0x0=idle,0x1=hpxfr 0x2=waithpready 0x3=waitflowcode 0x4=fifoxfer 0x5=makestatus 0x6=csumready
0x7 = error */ #define RX_DEBUG_FC_STATE_MASK 0x000000180 /* flow control state machine w/MAC: 0x0=idle 0x1=waitxoffack 0x2=waitxon
0x3 = wait xon ack */ #define RX_DEBUG_DATA_STATE_MASK 0x000001E00 /* unload data state machine states: 0x0=idledata 0x1=headerbegin 0x2=xferheader 0x3=xferheaderld 0x4=mtubegin 0x5=xfermtu 0x6=xfermtuld 0x7=jumbobegin 0x8=xferjumbo 0x9=xferjumbold 0xa=reasbegin 0xb=xferreas 0xc=flushtag 0xd=xferreasld 0xe=error
0xf = bubble idle */ #define RX_DEBUG_DESC_STATE_MASK 0x0001E000 /* unload desc state machine states: 0x0=idledesc 0x1=waitack 0x9=waitack2 0x2=fetchdesc1 0xa=fetchdesc2 0x3=loadptrs 0x4=waitdma 0x5=waitackbatch 0x6=postbatch
0x7 = xfr done */ #define RX_DEBUG_INTR_READ_PTR_MASK 0x30000000 /* interrupt read ptr of the
interrupt queue */ #define RX_DEBUG_INTR_WRITE_PTR_MASK 0xC0000000 /* interrupt write pointer
of the interrupt queue */
/* flow control frames are emitted using two PAUSE thresholds: *XOFFPAUSEusespausetimevaluepre-programmedintheSendPAUSEMACreg *XONPAUSEusesapausetimeof0.granularityofthresholdis64bytes. *PAUSEthresholdsdefinedintermsofFIFOoccupancyandmaybetranslated *intoFIFOvacancyusingRX_FIFO_SIZE.settingONwilltriggerXONframes *whenFIFOreaches0.OFFthresholdshouldnotbe>sizeofRXFIFO.max *valueis0x6F. *DEFAULT:0x00078
*/ #define REG_RX_PAUSE_THRESH 0x4020 /* RX pause thresholds */ #define RX_PAUSE_THRESH_QUANTUM 64 #define RX_PAUSE_THRESH_OFF_MASK 0x000001FF /* XOFF PAUSE emitted when RXFIFOoccupancy>
value*64B */ #define RX_PAUSE_THRESH_OFF_SHIFT 0 #define RX_PAUSE_THRESH_ON_MASK 0x001FF000 /* XON PAUSE emitted after emittingXOFFPAUSEwhenRX FIFOoccupancyfallsbelow thisvalue*64B.mustbe <XOFFthreshold.if= RX_FIFO_SIZE<XONframesare
never emitted. */ #define RX_PAUSE_THRESH_ON_SHIFT 12
/* 13-bit register used to control RX desc fetching and intr generation. if 4+ *validRXdescriptorsareavailable,Cassiniwillread4atatime. *writingNmeansthatalldescupto*but*excludingNareavailable.Nmust *beamultipleof4(N%4=0).firstdescshouldbecache-linealigned. *DEFAULT:0onreset
*/ #define REG_RX_KICK 0x4024 /* RX kick reg */
/* 8KB aligned 64-bit pointer to the base of the RX free/completion rings. *lower13bitsofthelowregisterarehard-wiredto0.
*/ #define REG_RX_DB_LOW 0x4028 /* RX descriptor ring
base low */ #define REG_RX_DB_HI 0x402C /* RX descriptor ring
base hi */ #define REG_RX_CB_LOW 0x4030 /* RX completion ring
base low */ #define REG_RX_CB_HI 0x4034 /* RX completion ring
base hi */ /* 13-bit register indicate desc used by cassini for receive frames. used *fordiagnosticpurposes. *DEFAULT:0onreset
*/ #define REG_RX_COMP 0x4038 /* (ro) RX completion */
/* HEAD and TAIL are used to control RX desc posting and interrupt *generation.hwmovestheheadregistertopassownershiptosw.sw *movesthetailregistertopassownershipbacktohw.togiveall *entriestohw,setTAIL=HEAD.ifHEADandTAILindicatethatno *moreentriesareavailable,DMAwillpauseandaninterruptwillbe *generatedtoindicatenomoreentriesareavailable.swcanuse *thisinterrupttoreducethe#oftimesitmustupdatethe *completiontailregister. *DEFAULT:0onreset
*/ #define REG_RX_COMP_HEAD 0x403C /* RX completion head */ #define REG_RX_COMP_TAIL 0x4040 /* RX completion tail */
/* values used for receive interrupt blanking. loaded each time the ISR is read *DEFAULT:0x00000000
*/ #define REG_RX_BLANK 0x4044 /* RX blanking register
for ISR read */ #define RX_BLANK_INTR_PKT_MASK 0x000001FF /* RX_DONE intr asserted if thismanysetsofcompletion writebacks(upto2packets) occursincethelasttime theISRwasread.0=no
packet blanking */ #define RX_BLANK_INTR_PKT_SHIFT 0 #define RX_BLANK_INTR_TIME_MASK 0x3FFFF000 /* RX_DONE interrupt asserted ifthatmanyclockswere countedsincelasttimethe ISRwasread. eachcountis512core clocks(125MHz).0=no
time blanking */ #define RX_BLANK_INTR_TIME_SHIFT 12
/* values used for interrupt generation based on threshold values of how *manyfreedescandcompletionentriesareavailableforhwuse. *DEFAULT:0x00000000
*/ #define REG_RX_AE_THRESH 0x4048 /* RX almost empty
thresholds */ #define RX_AE_THRESH_FREE_MASK 0x00001FFF /* RX_BUF_AE will be generatedif#desc availforhwuse<=
# */ #define RX_AE_THRESH_FREE_SHIFT 0 #define RX_AE_THRESH_COMP_MASK 0x0FFFE000 /* RX_COMP_AE will be generatedif#of completionentries availforhwuse<=
# */ #define RX_AE_THRESH_COMP_SHIFT 13
/* probabilities for random early drop (RED) thresholds on a FIFO threshold *basis.probabilityshouldincreasewhentheFIFOlevelincreases.control *packetsareneverdroppedandnotcountedinstats.probabilityprogrammed *ona12.5%granularity.e.g.,0x1=1/8packetsdropped. *DEFAULT:0x00000000
*/ #define REG_RX_RED 0x404C /* RX random early detect enable */ #define RX_RED_4K_6K_FIFO_MASK 0x000000FF /* 4KB < FIFO thresh < 6KB */ #define RX_RED_6K_8K_FIFO_MASK 0x0000FF00 /* 6KB < FIFO thresh < 8KB */ #define RX_RED_8K_10K_FIFO_MASK 0x00FF0000 /* 8KB < FIFO thresh < 10KB */ #define RX_RED_10K_12K_FIFO_MASK 0xFF000000 /* 10KB < FIFO thresh < 12KB */
/* next location in RX CTRL FIFO that will be loaded w/ data from RX IPP/read *fromtoretrievepacketcontrolinfo. *DEFAULT:0
*/ #define REG_RX_CTRL_FIFO_WRITE_PTR 0x4064 /* (ro) RX control FIFO
write ptr */ #define REG_RX_CTRL_FIFO_READ_PTR 0x4068 /* (ro) RX control FIFO read
ptr */
/* receive interrupt blanking. loaded each time interrupt alias register is *read. *DEFAULT:0x0
*/ #define REG_RX_BLANK_ALIAS_READ 0x406C /* RX blanking register for
alias read */ #define RX_BAR_INTR_PACKET_MASK 0x000001FF /* assert RX_DONE if # completionwritebacks >#sincelastISR read.0=no blanking.upto2 packetsper
completion wb. */ #define RX_BAR_INTR_TIME_MASK 0x3FFFF000 /* assert RX_DONE if # clocks>#sincelast ISRread.eachcount is512coreclocks (125MHz).0=no
blanking. */
/* diagnostic access to RX FIFO. 32 LSB accessed via DATA_LOW. 32 MSB accessed *viaDATA_HI_T0orDATA_HI_T1.TAGreadsthetagbit.writingHI_T0 *willunsetthetagbitwhilewritingHI_T1willsetthetagbit.toreset *tonormaloperationafterdiagnostics,writetoaddresslocation0x0. *RX_DMA_ENbitmustbesetto0x0forRXFIFOPIOaccess.DATA_HIshould *bethelastwriteaccessofawritesequence. *DEFAULT:undefined
*/ #define REG_RX_FIFO_ADDR 0x4080 /* RX FIFO address */ #define REG_RX_FIFO_TAG 0x4084 /* RX FIFO tag */ #define REG_RX_FIFO_DATA_LOW 0x4088 /* RX FIFO data low */ #define REG_RX_FIFO_DATA_HI_T0 0x408C /* RX FIFO data high T0 */ #define REG_RX_FIFO_DATA_HI_T1 0x4090 /* RX FIFO data high T1 */
/* diagnostic assess to RX CTRL FIFO. 8-bit FIFO_ADDR holds address of *81bitcontrolentryand6bitflowid.LOWandMIDareboth32-bit *accesses.HIis7-bitswith6-bitflowidand1bitcontrol *word.RX_DMA_ENmustbe0forRXCTRLFIFOPIOaccess.DATA_HI *shouldbelastwriteaccessofthewritesequence. *DEFAULT:undefined
*/ #define REG_RX_CTRL_FIFO_ADDR 0x4094 /* RX Control FIFO and
Batching FIFO addr */ #define REG_RX_CTRL_FIFO_DATA_LOW 0x4098 /* RX Control FIFO data
low */ #define REG_RX_CTRL_FIFO_DATA_MID 0x409C /* RX Control FIFO data
mid */ #define REG_RX_CTRL_FIFO_DATA_HI 0x4100 /* RX Control FIFO data
hi and flow id */ #define RX_CTRL_FIFO_DATA_HI_CTRL 0x0001 /* upper bit of ctrl word */ #define RX_CTRL_FIFO_DATA_HI_FLOW_MASK 0x007E /* flow id */
/* diagnostic access to RX IPP FIFO. same semantics as RX_FIFO. *DEFAULT:undefined
*/ #define REG_RX_IPP_FIFO_ADDR 0x4104 /* RX IPP FIFO address */ #define REG_RX_IPP_FIFO_TAG 0x4108 /* RX IPP FIFO tag */ #define REG_RX_IPP_FIFO_DATA_LOW 0x410C /* RX IPP FIFO data low */ #define REG_RX_IPP_FIFO_DATA_HI_T0 0x4110 /* RX IPP FIFO data high
T0 */ #define REG_RX_IPP_FIFO_DATA_HI_T1 0x4114 /* RX IPP FIFO data high
T1 */
/* 64-bit pointer to receive data buffer in host memory used for headers and *smallpackets.MSBinhighregister.loadedbyDMAstatemachineand *incrementsasDMAwritesreceivedata.only50LSBareincremented.top *13bitstakenfromRXdescriptor. *DEFAULT:undefined
*/ #define REG_RX_HEADER_PAGE_PTR_LOW 0x4118 /* (ro) RX header page ptr
low */ #define REG_RX_HEADER_PAGE_PTR_HI 0x411C /* (ro) RX header page ptr
high */ #define REG_RX_MTU_PAGE_PTR_LOW 0x4120 /* (ro) RX MTU page pointer
low */ #define REG_RX_MTU_PAGE_PTR_HI 0x4124 /* (ro) RX MTU page pointer
high */
/* PIO access into RX Header parser data RAM and flow database. *11-bitregister.DatafillstheLSBportionofbusiflessthan32bits. *DATA_RAM:writeRAM_FDB_DATAwithindextoaccessDATA_RAM. *RAMbytes=4*(x-1)+[3:0].e.g.,0->[3:0],31->[123:120] *FLOWDB:writeDATA_RAM_FDBregisterandthenread/writeFDB1-12toaccess *flowdatabase. *RX_DMA_ENmustbe0forRXparserRAMPIOaccess.RXParserRAMdatareg *shouldbethelastwriteaccessofthewritesequence. *DEFAULT:undefined
*/ #define REG_HP_DATA_RAM_FDB_ADDR 0x4154 /* HP data and FDB
RAM address */ #define HP_DATA_RAM_FDB_DATA_MASK 0x001F /* select 1 of 86 byte locationsinheader parserdataramto
read/write */ #define HP_DATA_RAM_FDB_FDB_MASK 0x3F00 /* 1 of 64 353-bit locations
in the flow database */ #define REG_HP_DATA_RAM_DATA 0x4158 /* HP data RAM data */
#define REG_HP_STATUS2 0x4198 /* (ro) HP status 3 */ #define HP_STATUS2_ACCUR2_MASK 0xF0000000 /* accu R2[3:0] */ #define HP_STATUS2_CSUM_OFF_MASK 0x07F00000 /* checksum start
start offset */ #define HP_STATUS2_ACCUR1_MASK 0x000FE000 /* accu R1 */ #define HP_STATUS2_FORCE_DROP 0x00001000 /* force drop */ #define HP_STATUS2_BWO_REASSM 0x00000800 /* batching w/o
reassembly */ #define HP_STATUS2_JH_SPLIT_EN 0x00000400 /* jumbo header split
enable */ #define HP_STATUS2_FORCE_TCP_NOCHECK 0x00000200 /* force tcp no payload
check */ #define HP_STATUS2_DATA_MASK_ZERO 0x00000100 /* mask of data length
equal to zero */ #define HP_STATUS2_FORCE_TCP_CHECK 0x00000080 /* force tcp payload
chk */ #define HP_STATUS2_MASK_TCP_THRESH 0x00000040 /* mask of payload
threshold */ #define HP_STATUS2_NO_ASSIST 0x00000020 /* no assist */ #define HP_STATUS2_CTRL_PACKET_FLAG 0x00000010 /* control packet flag */ #define HP_STATUS2_TCP_FLAG_CHECK 0x00000008 /* tcp flag check */ #define HP_STATUS2_SYN_FLAG 0x00000004 /* syn flag */ #define HP_STATUS2_TCP_CHECK 0x00000002 /* tcp payload chk */ #define HP_STATUS2_TCP_NOCHECK 0x00000001 /* tcp no payload chk */
/* BIST for header parser(HP) and flow database memories (FDBM). set _START *tostartBIST.controllerclears_STARToncompletion._STARTcanalso *beclearedtoforceterminationofBIST.abitsetindicatesthatthat *memorypasseditsBIST.
*/ #define REG_HP_RAM_BIST 0x419C /* HP RAM BIST reg */ #define HP_RAM_BIST_HP_DATA_PASS 0x80000000 /* HP data ram */ #define HP_RAM_BIST_HP_INSTR0_PASS 0x40000000 /* HP instr ram 0 */ #define HP_RAM_BIST_HP_INSTR1_PASS 0x20000000 /* HP instr ram 1 */ #define HP_RAM_BIST_HP_INSTR2_PASS 0x10000000 /* HP instr ram 2 */ #define HP_RAM_BIST_FDBM_AGE0_PASS 0x08000000 /* FDBM aging RAM0 */ #define HP_RAM_BIST_FDBM_AGE1_PASS 0x04000000 /* FDBM aging RAM1 */ #define HP_RAM_BIST_FDBM_FLOWID00_PASS 0x02000000 /* FDBM flowid RAM0
bank 0 */ #define HP_RAM_BIST_FDBM_FLOWID10_PASS 0x01000000 /* FDBM flowid RAM1
bank 0 */ #define HP_RAM_BIST_FDBM_FLOWID20_PASS 0x00800000 /* FDBM flowid RAM2
bank 0 */ #define HP_RAM_BIST_FDBM_FLOWID30_PASS 0x00400000 /* FDBM flowid RAM3
bank 0 */ #define HP_RAM_BIST_FDBM_FLOWID01_PASS 0x00200000 /* FDBM flowid RAM0
bank 1 */ #define HP_RAM_BIST_FDBM_FLOWID11_PASS 0x00100000 /* FDBM flowid RAM1
bank 2 */ #define HP_RAM_BIST_FDBM_FLOWID21_PASS 0x00080000 /* FDBM flowid RAM2
bank 1 */ #define HP_RAM_BIST_FDBM_FLOWID31_PASS 0x00040000 /* FDBM flowid RAM3
bank 1 */ #define HP_RAM_BIST_FDBM_TCPSEQ_PASS 0x00020000 /* FDBM tcp sequence
RAM */ #define HP_RAM_BIST_SUMMARY 0x00000002 /* all BIST tests */ #define HP_RAM_BIST_START 0x00000001 /* start/stop BIST */
/** MAC registers. **/ /* reset bits are set using a PIO write and self-cleared after the command *executionhascompleted.
*/ #define REG_MAC_TX_RESET 0x6000 /* TX MAC software reset
command (default: 0x0) */ #define REG_MAC_RX_RESET 0x6004 /* RX MAC software reset
command (default: 0x0) */ /* execute a pause flow control frame transmission
DEFAULT: 0x0XXXX */ #define REG_MAC_SEND_PAUSE 0x6008 /* send pause command reg */ #define MAC_SEND_PAUSE_TIME_MASK 0x0000FFFF /* value of pause time tobesentonnetwork inunitsofslot
times */ #define MAC_SEND_PAUSE_SEND 0x00010000 /* send pause flow ctrl
frame on network */
/* bit set indicates that event occurred. auto-cleared when status register *isreadandhavecorrespondingmaskbitsinmaskregister.eventswill *triggeraninterruptifthecorrespondingmaskbitis0. *statusregisterdefault:0x00000000 *maskregisterdefault=0xFFFFFFFFonreset
*/ #define REG_MAC_TX_STATUS 0x6010 /* TX MAC status reg */ #define MAC_TX_FRAME_XMIT 0x0001 /* successful frame
transmision */ #define MAC_TX_UNDERRUN 0x0002 /* terminated frame transmissiondueto datastarvationinthe
xmit data path */ #define MAC_TX_MAX_PACKET_ERR 0x0004 /* frame exceeds max allowed lengthpassedtoTXMAC
by the DMA engine */ #define MAC_TX_COLL_NORMAL 0x0008 /* rollover of the normal
collision counter */ #define MAC_TX_COLL_EXCESS 0x0010 /* rollover of the excessive
collision counter */ #define MAC_TX_COLL_LATE 0x0020 /* rollover of the late
collision counter */ #define MAC_TX_COLL_FIRST 0x0040 /* rollover of the first
collision counter */ #define MAC_TX_DEFER_TIMER 0x0080 /* rollover of the defer
timer */ #define MAC_TX_PEAK_ATTEMPTS 0x0100 /* rollover of the peak
attempts counter */
#define REG_MAC_RX_STATUS 0x6014 /* RX MAC status reg */ #define MAC_RX_FRAME_RECV 0x0001 /* successful receipt of
a frame */ #define MAC_RX_OVERFLOW 0x0002 /* dropped frame due to
RX FIFO overflow */ #define MAC_RX_FRAME_COUNT 0x0004 /* rollover of receive frame
counter */ #define MAC_RX_ALIGN_ERR 0x0008 /* rollover of alignment
error counter */ #define MAC_RX_CRC_ERR 0x0010 /* rollover of crc error
counter */ #define MAC_RX_LEN_ERR 0x0020 /* rollover of length
error counter */ #define MAC_RX_VIOL_ERR 0x0040 /* rollover of code
violation error */
/* DEFAULT: 0xXXXX0000 on reset */ #define REG_MAC_CTRL_STATUS 0x6018 /* MAC control status reg */ #define MAC_CTRL_PAUSE_RECEIVED 0x00000001 /* successful receptionofa pausecontrol
frame */ #define MAC_CTRL_PAUSE_STATE 0x00000002 /* MAC has made a transitionfrom "notpaused"to
"paused" */ #define MAC_CTRL_NOPAUSE_STATE 0x00000004 /* MAC has made a transitionfrom "paused"to"not
paused" */ #define MAC_CTRL_PAUSE_TIME_MASK 0xFFFF0000 /* value of pause time operandthatwas receivedinthelast pauseflowcontrol
frame */
/* layout identical to TX MAC[8:0] */ #define REG_MAC_TX_MASK 0x6020 /* TX MAC mask reg */ /* layout identical to RX MAC[6:0] */ #define REG_MAC_RX_MASK 0x6024 /* RX MAC mask reg */ /* layout identical to CTRL MAC[2:0] */ #define REG_MAC_CTRL_MASK 0x6028 /* MAC control mask reg */
/* to ensure proper operation, CFG_EN must be cleared to 0 and a delay *imposedbeforewritestootherbitsintheTX_MAC_CFGregisteroranyof *theMACparametersisperformed.delaydependentupontimerequiredto *transmitamaximumsizeframe(=MAC_FRAMESIZE_MAX*8/Mbps).e.g., *thedelayfora1518-byteframeona100Mbpsnetworkis125us. *alternatively,justpollTX_CFG_ENuntilitreadsbackas0. *NOTE:onhalf-duplex1Gbps,TX_CFG_CARRIER_EXTENDand *RX_CFG_CARRIER_EXTENDshouldbesetandtheSLOT_TIMEregistershould *be0x200(slottimeof512bytes)
*/ #define REG_MAC_TX_CFG 0x6030 /* TX MAC config reg */ #define MAC_TX_CFG_EN 0x0001 /* enable TX MAC. 0 will forceTXMACstate machinetoremainin idlestateorto transitiontoidlestate oncompletionofan
ongoing packet. */ #define MAC_TX_CFG_IGNORE_CARRIER 0x0002 /* disable CSMA/CD deferral process.setto1when fullduplexand0when
half duplex */ #define MAC_TX_CFG_IGNORE_COLL 0x0004 /* disable CSMA/CD backoff algorithm.setto1when fullduplexand0when
half duplex */ #define MAC_TX_CFG_IPG_EN 0x0008 /* enable extension of the Rx-to-TXIPG.after receivingaframe,TX MACwillresetits deferralprocessto carriersenseforthe amountoftime=IPG0+ IPG1andcommitto transmissionfortime specifiedinIPG2.when 0orwhenxmittingframes back-to-pack(Tx-to-Tx IPG),TXMACignores IPG0andwillonlyuse IPG1fordeferraltime.
IPG2 still used. */ #define MAC_TX_CFG_NEVER_GIVE_UP_EN 0x0010 /* TX MAC will not easily giveuponframe xmission.ifbackoff algorithmreachesthe ATTEMPT_LIMIT,itwill clearattemptscounter andcontinuetryingto sendtheframeas specifiedby GIVE_UP_LIM.when0, TXMACwillexecute
standard CSMA/CD prot. */ #define MAC_TX_CFG_NEVER_GIVE_UP_LIM 0x0020 /* when set, TX MAC will continuetotrytoxmit untilsuccessful.when 0,TXMACwillcontinue totryxmittinguntil successfulorbackoff algorithmreaches
ATTEMPT_LIMIT*16 */ #define MAC_TX_CFG_NO_BACKOFF 0x0040 /* modify CSMA/CD to disable backoffalgorithm.TX MACwillnotbackoff afteraxmissionattempt thatresultedina
collision. */ #define MAC_TX_CFG_SLOW_DOWN 0x0080 /* modify CSMA/CD so that deferralprocessisreset inresponsetocarrier senseduringtheentire durationofIPG.TXMAC willonlycommittoframe xmissionafterframe xmissionhasactually
begun. */ #define MAC_TX_CFG_NO_FCS 0x0100 /* TX MAC will not generate CRCforallxmitted packets.whenclear,CRC generationisdependent uponNO_CRCbitinthe xmitcontrolwordfrom
TX DMA */ #define MAC_TX_CFG_CARRIER_EXTEND 0x0200 /* enables xmit part of the carrierextension feature.thisallowsfor longercollisiondomains byextendingthecarrier andcollisionwindow fromtheendofFCSuntil theendoftheslottime ifnecessary.Required forhalf-duplexat1Gbps,
clear otherwise. */
/* when CRC is not stripped, reassembly packets will not contain the CRC. *thesewillbestrippedbyHRPbecauseitreassembleslayer4data,andthe *CRCislayer2.however,non-reassemblypacketswillstillcontaintheCRC *whenpassedtothehost.toensureproperoperation,needtowait3.2ms *afterclearingRX_CFG_ENbeforewritingtoanyotherRXMACregisters *orotherMACparameters.alternatively,pollRX_CFG_ENuntilitclears *to0.similary,HASH_FILTER_ENandADDR_FILTER_ENhavethesame *restrictionsasCFG_EN.
*/ #define REG_MAC_RX_CFG 0x6034 /* RX MAC config reg */ #define MAC_RX_CFG_EN 0x0001 /* enable RX MAC */ #define MAC_RX_CFG_STRIP_PAD 0x0002 /* always program to 0.
feature not supported */ #define MAC_RX_CFG_STRIP_FCS 0x0004 /* RX MAC will strip the last4bytesofa
received frame. */ #define MAC_RX_CFG_PROMISC_EN 0x0008 /* promiscuous mode */ #define MAC_RX_CFG_PROMISC_GROUP_EN 0x0010 /* accept all valid multicastframes(group
bit in DA field set) */ #define MAC_RX_CFG_HASH_FILTER_EN 0x0020 /* use hash table to filter
multicast addresses */ #define MAC_RX_CFG_ADDR_FILTER_EN 0x0040 /* cause RX MAC to use addressfilteringregs tofilterbothunicast andmulticast
addresses */ #define MAC_RX_CFG_DISABLE_DISCARD 0x0080 /* pass errored frames to RXDMAbysettingBAD bitbutnotAbortbit inthestatus.CRC, framing,andlengtherrs willnotincrement errorcounters.frames whichdon'tmatchdest addrwillbepassedup
w/ BAD bit set. */ #define MAC_RX_CFG_CARRIER_EXTEND 0x0100 /* enable reception of packetburstsgenerated bycarrierextension withpacketbursting senders.onlyapplies
to half-duplex 1Gbps */
/* DEFAULT: 0x0 */ #define REG_MAC_CTRL_CFG 0x6038 /* MAC control config reg */ #define MAC_CTRL_CFG_SEND_PAUSE_EN 0x0001 /* respond to requests for sendingpauseflowctrl
frames */ #define MAC_CTRL_CFG_RECV_PAUSE_EN 0x0002 /* respond to received
pause flow ctrl frames */ #define MAC_CTRL_CFG_PASS_CTRL 0x0004 /* pass valid MAC ctrl
packets to RX DMA */
/* to ensure proper operation, a global initialization sequence should be *performedwhenaloopbackconfigisenteredorexited.ifprogrammedafter *ahworglobalswreset,RX/TXMACsoftwareresetandinitialization *shouldbedonetoensurestableclocking. *DEFAULT:0x0
*/ #define REG_MAC_XIF_CFG 0x603C /* XIF config reg */ #define MAC_XIF_TX_MII_OUTPUT_EN 0x0001 /* enable output drivers
on MII xmit bus */ #define MAC_XIF_MII_INT_LOOPBACK 0x0002 /* loopback GMII xmit data pathtoGMIIrecvdata path.phymoderegister clockselectionmustbe settoGMIImodeand GMII_MODEshouldbeset to1.inloopbackmode, REFCLKwilldrivethe entiremaccore.0for
normal operation. */ #define MAC_XIF_DISABLE_ECHO 0x0004 /* disables receive data pathduringpacket xmission.clearto0 inanyfullduplexmode, inanyloopbackmode, orinhalf-duplexSERDES orSLINKmodes.setwhen inhalf-duplexwhen
using external phy. */ #define MAC_XIF_GMII_MODE 0x0008 /* MAC operates with GMII
clocks and datapath */ #define MAC_XIF_MII_BUFFER_OUTPUT_EN 0x0010 /* MII_BUF_EN pin. enable externaltristatebuffer ontheMIIreceive
bus. */ #define MAC_XIF_LINK_LED 0x0020 /* LINKLED# active (low) */ #define MAC_XIF_FDPLX_LED 0x0040 /* FDPLXLED# active (low) */
/* misc registers */ #define REG_MAC_RANDOM_SEED 0x61CC /* random number seed reg. 10-bitregisterusedasa seedfortherandomnumber generatorfortheCSMA/CD backoffalgorithm.only programmedafterpower-on resetandshouldbea randomvaluewhichhasa highlikelihoodofbeing uniqueforeachMAC attachedtoanetwork segment(e.g.,10LSBof
MAC address) */
/* ASUN: there's a PAUSE_TIMER (ro) described, but it's not in the address *map
*/
/* 27-bit register has the current state for key state machines in the MAC */ #define REG_MAC_STATE_MACHINE 0x61D0 /* (ro) state machine reg */ #define MAC_SM_RLM_MASK 0x07800000 #define MAC_SM_RLM_SHIFT 23 #define MAC_SM_RX_FC_MASK 0x00700000 #define MAC_SM_RX_FC_SHIFT 20 #define MAC_SM_TLM_MASK 0x000F0000 #define MAC_SM_TLM_SHIFT 16 #define MAC_SM_ENCAP_SM_MASK 0x0000F000 #define MAC_SM_ENCAP_SM_SHIFT 12 #define MAC_SM_TX_REQ_MASK 0x00000C00 #define MAC_SM_TX_REQ_SHIFT 10 #define MAC_SM_TX_FC_MASK 0x000003C0 #define MAC_SM_TX_FC_SHIFT 6 #define MAC_SM_FIFO_WRITE_SEL_MASK 0x00000038 #define MAC_SM_FIFO_WRITE_SEL_SHIFT 3 #define MAC_SM_TX_FIFO_EMPTY_MASK 0x00000007 #define MAC_SM_TX_FIFO_EMPTY_SHIFT 0
/** MIF registers. the MIF can be programmed in either bit-bang or *framemode.
**/ #define REG_MIF_BIT_BANG_CLOCK 0x6200 /* MIF bit-bang clock. 1->0willgeneratea risingedge.0->1will
generate a falling edge. */ #define REG_MIF_BIT_BANG_DATA 0x6204 /* MIF bit-bang data. 1-bit
register generates data */ #define REG_MIF_BIT_BANG_OUTPUT_EN 0x6208 /* MIF bit-bang output enable.enablewhen xmittingdatafromMIFto
transceiver. */
/* 32-bit register serves as an instruction register when the MIF is *programmedinframemode.loadthisregisterw/avalidinstruction *(asperIEEE802.3uMIIspec).pollthisregistertocheckforinstruction *executioncompletion.duringareadoperation,thisregisterwillalso *containthe16-bitdatareturnedbythetranceiver.unlessspecified *otherwise,fieldsareconsidered"don'tcare"whenpollingfor *completion.
*/ #define REG_MIF_FRAME 0x620C /* MIF frame/output reg */ #define MIF_FRAME_START_MASK 0xC0000000 /* start of frame. loadw/01when
issuing an instr */ #define MIF_FRAME_ST 0x40000000 /* STart of frame */ #define MIF_FRAME_OPCODE_MASK 0x30000000 /* opcode. 01 for a write.10fora
read */ #define MIF_FRAME_OP_READ 0x20000000 /* read OPcode */ #define MIF_FRAME_OP_WRITE 0x10000000 /* write OPcode */ #define MIF_FRAME_PHY_ADDR_MASK 0x0F800000 /* phy address. when issuinganinstr, thisfieldshouldbe loadedw/theXCVR
addr */ #define MIF_FRAME_PHY_ADDR_SHIFT 23 #define MIF_FRAME_REG_ADDR_MASK 0x007C0000 /* register address. whenissuinganinstr, addrofregister
to be read/written */ #define MIF_FRAME_REG_ADDR_SHIFT 18 #define MIF_FRAME_TURN_AROUND_MSB 0x00020000 /* turn around, MSB. whenissuinganinstr,
set this bit to 1 */ #define MIF_FRAME_TURN_AROUND_LSB 0x00010000 /* turn around, LSB. whenissuinganinstr, setthisbitto0. whenpollingfor completion,1means thatinstrexecution
has been completed */ #define MIF_FRAME_DATA_MASK 0x0000FFFF /* instruction payload loadwith16-bitdata tobewrittenin transceiverregfora write.doesn'tmatter inaread.when pollingfor completion,fieldis "don'tcare"forwrite and16-bitdata returnedbythe transceiverfora read(ifvalidbit
is set) */ #define REG_MIF_CFG 0x6210 /* MIF config reg */ #define MIF_CFG_PHY_SELECT 0x0001 /* 1 -> select MDIO_1
0 -> select MDIO_0 */ #define MIF_CFG_POLL_EN 0x0002 /* enable polling mechanism.ifset,
BB_MODE should be 0 */ #define MIF_CFG_BB_MODE 0x0004 /* 1 -> bit-bang mode
0 -> frame mode */ #define MIF_CFG_POLL_REG_MASK 0x00F8 /* register address to be usedbypollingmode. onlymeaningfulifPOLL_EN
is set to 1 */ #define MIF_CFG_POLL_REG_SHIFT 3 #define MIF_CFG_MDIO_0 0x0100 /* (ro) dual purpose. whenMDIO_0isidle, 1->tranceiveris connectedtoMDIO_0. whenMIFiscommunicating w/MDIO_0inbit-bang mode,thisbitindicates theincomingbitstream
during a read op */ #define MIF_CFG_MDIO_1 0x0200 /* (ro) dual purpose. whenMDIO_1isidle, 1->transceiveris connectedtoMDIO_1. whenMIFiscommunicating w/MDIO_1inbit-bang mode,thisbitindicates theincomingbitstream
during a read op */ #define MIF_CFG_POLL_PHY_MASK 0x7C00 /* tranceiver address to
be polled */ #define MIF_CFG_POLL_PHY_SHIFT 10
/* 16-bit register used to determine which bits in the POLL_STATUS portion of *theMIF_STATUSregisterwillcauseaninterrupt.ifamaskbitis0, *correspondingbitofthePOLL_STATUSwillgenerateaMIFinterruptwhen *set.DEFAULT:0xFFFF
*/ #define REG_MIF_MASK 0x6214 /* MIF mask reg */
/* 32-bit register used when in poll mode. auto-cleared after being read */ #define REG_MIF_STATUS 0x6218 /* MIF status reg */ #define MIF_STATUS_POLL_DATA_MASK 0xFFFF0000 /* poll data contains the"latestimage" updateoftheXCVR
reg being read */ #define MIF_STATUS_POLL_DATA_SHIFT 16 #define MIF_STATUS_POLL_STATUS_MASK 0x0000FFFF /* poll status indicates whichbitsinthe POLL_DATAfieldhave changedsincethe MIF_STATUSregwas
last read */ #define MIF_STATUS_POLL_STATUS_SHIFT 0
/* 7-bit register has current state for all state machines in the MIF */ #define REG_MIF_STATE_MACHINE 0x621C /* MIF state machine reg */ #define MIF_SM_CONTROL_MASK 0x07 /* control state machine
state */ #define MIF_SM_EXECUTION_MASK 0x60 /* execution state machine
state */
/** PCS/Serialink. the following registers are equivalent to the standard *MIImanagementregistersexceptthatthey'redirectlymappedin *Cassini'sregisterspace.
**/
/* the auto-negotiation enable bit should be programmed the same at *thelinkpartnerasinthelocaldevicetoenableauto-negotiationto *complete.whenthatbitisreprogrammed,auto-neg/manualconfigis *restartedautomatically. *DEFAULT:0x1040
*/ #define REG_PCS_MII_CTRL 0x9000 /* PCS MII control reg */ #define PCS_MII_CTRL_1000_SEL 0x0040 /* reads 1. ignored on
writes */ #define PCS_MII_CTRL_COLLISION_TEST 0x0080 /* COL signal at the PCS toMACinterfaceis activatedregardless
of activity */ #define PCS_MII_CTRL_DUPLEX 0x0100 /* forced 0x0. PCS behavioursamefor
half and full dplx */ #define PCS_MII_RESTART_AUTONEG 0x0200 /* self clearing. restartauto-
negotiation */ #define PCS_MII_ISOLATE 0x0400 /* read as 0. ignored
on writes */ #define PCS_MII_POWER_DOWN 0x0800 /* read as 0. ignored
on writes */ #define PCS_MII_AUTONEG_EN 0x1000 /* default 1. PCS goes throughautomatic linkconfigbeforeit canbeused.when0, linkcanbeused w/outanylinkconfig
phase */ #define PCS_MII_10_100_SEL 0x2000 /* read as 0. ignored on
writes */ #define PCS_MII_RESET 0x8000 /* reset PCS. self-clears
when done */
/* DEFAULT: 0x0108 */ #define REG_PCS_MII_STATUS 0x9004 /* PCS MII status reg */ #define PCS_MII_STATUS_EXTEND_CAP 0x0001 /* reads 0 */ #define PCS_MII_STATUS_JABBER_DETECT 0x0002 /* reads 0 */ #define PCS_MII_STATUS_LINK_STATUS 0x0004 /* 1 -> link up. 0->linkdown.0is latchedsothat0is keptuntilread.read 2xtodetermineifthe
link has gone up again */ #define PCS_MII_STATUS_AUTONEG_ABLE 0x0008 /* reads 1 (able to perform
auto-neg) */ #define PCS_MII_STATUS_REMOTE_FAULT 0x0010 /* 1 -> remote fault detected fromreceivedlinkcode word.onlyvalidafter
auto-neg completed */ #define PCS_MII_STATUS_AUTONEG_COMP 0x0020 /* 1 -> auto-negotiation completed 0->auto-negotiationnot
completed */ #define PCS_MII_STATUS_EXTEND_STATUS 0x0100 /* reads as 1. used as an indicationthatthisis a1000Base-XPHY.writes
to it are ignored */
/* contents updated as a result of autonegotiation. layout and definitions *identicaltoPCS_MII_ADVERT
*/ #define REG_PCS_MII_LPA 0x900C /* PCS MII link partner
ability reg */ #define PCS_MII_LPA_FD PCS_MII_ADVERT_FD #define PCS_MII_LPA_HD PCS_MII_ADVERT_HD #define PCS_MII_LPA_SYM_PAUSE PCS_MII_ADVERT_SYM_PAUSE #define PCS_MII_LPA_ASYM_PAUSE PCS_MII_ADVERT_ASYM_PAUSE #define PCS_MII_LPA_RF_MASK PCS_MII_ADVERT_RF_MASK #define PCS_MII_LPA_ACK PCS_MII_ADVERT_ACK #define PCS_MII_LPA_NEXT_PAGE PCS_MII_ADVERT_NEXT_PAGE
/* DEFAULT: 0x0 */ #define REG_PCS_CFG 0x9010 /* PCS config reg */ #define PCS_CFG_EN 0x01 /* enable PCS. must be 0whenmodifying
PCS_MII_ADVERT */ #define PCS_CFG_SD_OVERRIDE 0x02 /* sets signal detect to OK.bitis
non-resettable */ #define PCS_CFG_SD_ACTIVE_LOW 0x04 /* changes interpretation ofopticalsignaltomake signaldetectokaywhen
signal is low */ #define PCS_CFG_JITTER_STUDY_MASK 0x18 /* used to make jitter measurements.asingle codegroupisxmitted regularly. 0x0=normaloperation 0x1=highfreqtest pattern,D21.5 0x2=lowfreqtest pattern,K28.7
0x3 = reserved */ #define PCS_CFG_10MS_TIMER_OVERRIDE 0x20 /* shortens 10-20ms auto- negotiationtimerto afewcyclesfortest
purposes */
/* used for diagnostic purposes. bits 20-22 autoclear on read */ #define REG_PCS_STATE_MACHINE 0x9014 /* (ro) PCS state machine
and diagnostic reg */ #define PCS_SM_TX_STATE_MASK 0x0000000F /* 0 and 1 indicate xmissionofidle. otherwise,xmissionof
a packet */ #define PCS_SM_RX_STATE_MASK 0x000000F0 /* 0 indicates reception ofidle.otherwise,
reception of packet */ #define PCS_SM_WORD_SYNC_STATE_MASK 0x00000700 /* 0 indicates loss of
sync */ #define PCS_SM_SEQ_DETECT_STATE_MASK 0x00001800 /* cycling through 0-3 indicatesreceptionof Configcodes.cycling through0-1indicates
reception of idles */ #define PCS_SM_LINK_STATE_MASK 0x0001E000 #define SM_LINK_STATE_UP 0x00016000 /* link state is up */
#define PCS_SM_LOSS_LINK_C 0x00100000 /* loss of link due to receptofConfig
codes */ #define PCS_SM_LOSS_LINK_SYNC 0x00200000 /* loss of link due to
loss of sync */ #define PCS_SM_LOSS_SIGNAL_DETECT 0x00400000 /* signal detect goes fromOKtoFAIL.bit29 willalsobesetif
this is set */ #define PCS_SM_NO_LINK_BREAKLINK 0x01000000 /* link not up due to receiptofbreaklink Ccodesfrompartner. Ccodesw/0content receivedtriggering start/restartof autonegotiation. shouldbesentfor
no longer than 20ms */ #define PCS_SM_NO_LINK_SERDES 0x02000000 /* serdes being initialized.seeserdes
state reg */ #define PCS_SM_NO_LINK_C 0x04000000 /* C codes not stable or
not received */ #define PCS_SM_NO_LINK_SYNC 0x08000000 /* word sync not
achieved */ #define PCS_SM_NO_LINK_WAIT_C 0x10000000 /* waiting for C codes
w/ ack bit set */ #define PCS_SM_NO_LINK_NO_IDLE 0x20000000 /* link partner continues tosendCcodes insteadofidle
symbols or pkt data */
/* this register indicates interrupt changes in specific PCS MII status bits. *PCS_INTmaybemaskedattheISRlevel.onlyasinglebitisimplemented *forlinkstatuschange.
*/ #define REG_PCS_INTR_STATUS 0x9018 /* PCS interrupt status */ #define PCS_INTR_STATUS_LINK_CHANGE 0x04 /* link status has changed
since last read */
/* control which network interface is used. no more than one bit should *beset. *DEFAULT:none
*/ #define REG_PCS_DATAPATH_MODE 0x9050 /* datapath mode reg */ #define PCS_DATAPATH_MODE_MII 0x00 /* PCS is not used and MII/GMIIisselected. selectionbetweenMIIand GMIIiscontrolledby
XIF_CFG */ #define PCS_DATAPATH_MODE_SERDES 0x02 /* PCS is used via the
10-bit interface */
/* input to serdes chip or serialink block */ #define REG_PCS_SERDES_CTRL 0x9054 /* serdes control reg */ #define PCS_SERDES_CTRL_LOOPBACK 0x01 /* enable loopback on
serdes interface */ #define PCS_SERDES_CTRL_SYNCD_EN 0x02 /* enable sync carrier detection.shouldbe 0x0fornormal
operation */ #define PCS_SERDES_CTRL_LOCKREF 0x04 /* frequency-lock RBC[0:1] toREFCLKwhenset. whenclear,receiver clocklockstoincoming
serial data */
/* multiplex test outputs into the PROM address (PA_3 through PA_0) pins. *shouldbe0x0fornormaloperations. *0b000normaloperation,PROMaddress[3:0]selected *0b001rxdmareq,rxdmaack,rxdmaready,rxdmaread *0b010rxmacreq,rxack,rxtag,rxclkshared *0b011txmacreq,txack,txtag,txretryreq *0b100txtp3,txtp2,txtp1,txtp0 *0b101RperiodRX,RperiodTX,RperiodHP,RperiodBIM *DEFAULT:0x0
*/ #define REG_PCS_SHARED_OUTPUT_SEL 0x9058 /* shared output select */ #define PCS_SOS_PROM_ADDR_MASK 0x0007
/* used for diagnostics. this register indicates progress of the SERDES *bootup. *0b00undergoingreset *0b01waiting500uswhilelockrefnisasserted *0b10waitingforcommadetect *0b11receivedataissynchronized *DEFAULT:0x0
*/ #define REG_PCS_SERDES_STATE 0x905C /* (ro) serdes state */ #define PCS_SERDES_STATE_MASK 0x03
/* used for diagnostics. indicates number of packets transmitted or received. *countersrolloverw/outgeneratinganinterrupt. *DEFAULT:0x0
*/ #define REG_PCS_PACKET_COUNT 0x9060 /* (ro) PCS packet counter */ #define PCS_PACKET_COUNT_TX 0x000007FF /* pkts xmitted by PCS */ #define PCS_PACKET_COUNT_RX 0x07FF0000 /* pkts recvd by PCS whetherthey encounteredanerror
or not */
/** LocalBus Devices. the following provides run-time access to the *Cassini'sPROM
***/ #define REG_EXPANSION_ROM_RUN_START 0x100000 /* expansion rom run time
access */ #define REG_EXPANSION_ROM_RUN_END 0x17FFFF
#define REG_SECOND_LOCALBUS_START 0x180000 /* secondary local bus
device */ #define REG_SECOND_LOCALBUS_END 0x1FFFFF
u8 op;
u8 soff, snext; /* if match succeeds, new offset and match */
u8 foff, fnext; /* if match fails, new offset and match */ /* output info */
u8 outop; /* output opcode */
/* _RING_INDEX is the index for the ring sizes to be used. _RING_SIZE *istheactualsize.thedefaultindexforthevariousringsis *8.NOTE:thereabunchofalignmentconstraintsfortherings.to *dealwiththat,ijustallocateringstocreatethedesired *alignment.herearetheconstraints: *RXDESCandCOMPringsmustbe8KBaligned *TXDESCmustbe2KBaligned. *ifyouchangethenumbers,becognizantofhowthealignmentwillchange *inINIT_BLOCKaswell.
*/
/* min is 2k, but we can't do jumbo frames unless it's at least 8k */ #define CAS_MIN_PAGE_SHIFT 11/* 2048 */ #define CAS_JUMBO_PAGE_SHIFT 13/* 8192 */ #define CAS_MAX_PAGE_SHIFT 14/* 16384 */
/* tiny buffers to deal with target abort issue. we allocate a bit *oversothatwedon'thavetargetabortissueswiththesebuffers *aswell.
*/ #define TX_TINY_BUF_LEN 0x100 #define TX_TINY_BUF_BLOCK ((INIT_BLOCK_TX + 1)*TX_TINY_BUF_LEN)
struct cas_tiny_count { int nbufs; int used;
};
struct cas {
spinlock_t lock; /* for most bits */
spinlock_t tx_lock[N_TX_RINGS]; /* tx bits */
spinlock_t stat_lock[N_TX_RINGS + 1]; /* for stat gathering */
spinlock_t rx_inuse_lock; /* rx inuse list */
spinlock_t rx_spare_lock; /* rx spare list */
void __iomem *regs; int tx_new[N_TX_RINGS], tx_old[N_TX_RINGS]; int rx_old[N_RX_DESC_RINGS]; int rx_cur[N_RX_COMP_RINGS], rx_new[N_RX_COMP_RINGS]; int rx_last[N_RX_DESC_RINGS];
struct napi_struct napi;
/* Set when chip is actually in operational state
* (ie. not power managed) */ int hw_running; int opened; struct mutex pm_mutex; /* open/close/suspend/resume */
/* we use sk_buffs for tx and pages for rx. the rx skbuffs
* are there for flow re-assembly. */ struct sk_buff *tx_skbs[N_TX_RINGS][TX_DESC_RING_SIZE]; struct sk_buff_head rx_flows[N_RX_FLOWS];
cas_page_t *rx_pages[N_RX_DESC_RINGS][RX_DESC_RING_SIZE]; struct list_head rx_spare_list, rx_inuse_list; int rx_spares_needed;
/* for small packets when copying would be quicker than
mapping */ struct cas_tiny_count tx_tiny_use[N_TX_RINGS][TX_DESC_RING_SIZE];
u8 *tx_tiny_bufs[N_TX_RINGS];
u32 msg_enable;
/* N_TX_RINGS must be >= N_RX_DESC_RINGS */ struct net_device_stats net_stats[N_TX_RINGS + 1];
u32 pci_cfg[64 >> 2];
u8 pci_revision;
int phy_type; int phy_addr;
u32 phy_id; #define CAS_FLAG_1000MB_CAP 0x00000001 #define CAS_FLAG_REG_PLUS 0x00000002 #define CAS_FLAG_TARGET_ABORT 0x00000004 #define CAS_FLAG_SATURN 0x00000008 #define CAS_FLAG_RXD_POST_MASK 0x000000F0 #define CAS_FLAG_RXD_POST_SHIFT 4 #define CAS_FLAG_RXD_POST(x) ((1 << (CAS_FLAG_RXD_POST_SHIFT + (x))) & \
CAS_FLAG_RXD_POST_MASK) #define CAS_FLAG_ENTROPY_DEV 0x00000100 #define CAS_FLAG_NO_HW_CSUM 0x00000200
u32 cas_flags; int packet_min; /* minimum packet size */ int tx_fifo_size; int rx_fifo_size; int rx_pause_off; int rx_pause_on; int crc_size; /* 4 if half-duplex */
int pci_irq_INTC; int min_frame_size; /* for tx fifo workaround */
/* page size allocation */ int page_size; int page_order; int mtu_stride;
u32 mac_rx_cfg;
/* Autoneg & PHY control */ int link_cntl; int link_fcntl; enum link_state lstate; struct timer_list link_timer; int timer_ticks; struct work_struct reset_task; #if0
atomic_t reset_task_pending; #else
atomic_t reset_task_pending;
atomic_t reset_task_pending_mtu;
atomic_t reset_task_pending_spare;
atomic_t reset_task_pending_all; #endif
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.127Bemerkung:
(vorverarbeitet am 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.