Datasheet

16-bit Non-PCI Small Form Factor 10/100 Ethernet Controller with Variable Voltage I/O & HP Auto-MDIX Support
Datasheet
Revision 2.9 (03-01-12) 128 SMSC LAN9220
DATASHEET
6.2.1 Special Restrictions on Back-to-Back Write/Read Cycles
It is important to note that there are specific restrictions on the timing of back-to-back write-read
operations. These restrictions concern reading the control registers after any write cycle to the
LAN9220 device. In many cases there is a required minimum delay between writing to the LAN9220,
and the subsequent side effect (change in the control register value). For example, when writing to the
TX Data FIFO, it takes up to 165ns for the level indication to change in the TX_FIFO_INF register.
In order to prevent the host from reading stale data after a write operation, minimum wait periods must
be enforced. These periods are specified in Table 6.1, "Read After Write Timing Rules". The host
processor is required to wait the specified period of time after any write to the LAN9220 before reading
the resource specified in the table. These wait periods are for read operations that immediately follow
any write cycle. Note that the required wait period is dependant upon the register being read after the
write.
Performing "dummy" reads of the BYTE_TEST register is a convenient way to guarantee that the
minimum write-to-read timing restriction is met. Table 6.1 also shows the number of dummy reads that
are required before reading the register indicated. The number of BYTE_TEST reads in this table is
based on the minimum timing for Tcycle (165ns). For microprocessors with slower busses the number
of reads may be reduced as long as the total time is equal to, or greater than the time specified in the
table. Note that dummy reads of the BYTE_TEST register are not required as long as the minimum
time period is met.
Table 6.1 Read After Write Timing Rules
REGISTER NAME
MINIMUM WAIT TIME FOR READ
FOLLOWING ANY WRITE CYCLE
(IN NS)
NUMBER OF BYTE_TEST
READS
(ASSUMING T
CYCLE
OF 165NS)
ID_REV 0 0
IRQ_CFG 165 1
INT_STS 165 1
INT_EN 165 1
BYTE_TEST 0 0
FIFO_INT 165 1
RX_CFG 165 1
TX_CFG 165 1
HW_CFG 165 1
RX_DP_CTRL 165 1
RX_FIFO_INF 0 0
TX_FIFO_INF 165 1
PMT_CTRL 330 2
GPIO_CFG 165 1
GPT_CFG 165 1
GPT_CNT 165 1
WORD_SWAP 165 1
FREE_RUN 330 2