Thread (52 messages) flat view 52 messages, 5 authors, 2020-03-29

Re: [PATCH 08/14] net: ks8851: Use 16-bit read of RXFC register

From: Marek Vasut <marex@denx.de>
Date: 2020-03-24 12:52:11

On 3/24/20 2:50 AM, Andrew Lunn wrote:
quoted
@@ -470,7 +455,7 @@ static void ks8851_rx_pkts(struct ks8851_net *ks)
 	unsigned rxstat;
 	u8 *rxpkt;
 
-	rxfc = ks8851_rdreg8(ks, KS_RXFC);
+	rxfc = (ks8851_rdreg16(ks, KS_RXFCTR) >> 8) & 0xff;
The datasheet says:

2. When software driver reads back Receive Frame Count (RXFCTR)
Register; the KSZ8851 will update both Receive Frame Header Status and
Byte Count Registers (RXFHSR/RXFHBCR)

Are you sure there is no side affect here?
Yes, look at the RXFC register 0x9c itself. It's a 16bit register, 0x9c
is the LSByte and 0x9d is the MSByte.

What happened here before was readout of register 0x9d, MSByte of RXFC,
which triggers the update of RXFHSR/RXFHBCR. What happens now is the
readout of the whole RXFC as 16bit value, which also triggers the update.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help