mdio_regs: Test OUI mapping to PHYID
The OUI in the PHY ID is "bit-reversed," AKA each byte is bit reversed,
but the overall order is the same. This is a bit more complex than I
initially thought. Fix the mapping, and use a non-zero OUI for testing.
Fixes: d9602b6
("Add MII management functions")
Signed-off-by: Sean Anderson <seanga2@gmail.com>
This commit is contained in:
parent
508b090983
commit
7d93f91dd3
|
@ -28,8 +28,11 @@ module mdio_regs (
|
||||||
output reg link_monitor_test
|
output reg link_monitor_test
|
||||||
);
|
);
|
||||||
|
|
||||||
/* The current price of a CID is $805... */
|
/*
|
||||||
parameter [23:0] OUI = 0;
|
* A test OUI in "canonical" form. Don't use this! It's just here to
|
||||||
|
* test the bit-reversal logic (as seen in 802 8.2.2).
|
||||||
|
*/
|
||||||
|
parameter [23:0] OUI = 24'hacde48;
|
||||||
parameter [5:0] MODEL = 0;
|
parameter [5:0] MODEL = 0;
|
||||||
parameter [3:0] REVISION = 0;
|
parameter [3:0] REVISION = 0;
|
||||||
/*
|
/*
|
||||||
|
@ -199,14 +202,19 @@ module mdio_regs (
|
||||||
link_status_latched_next = link_status;
|
link_status_latched_next = link_status;
|
||||||
end
|
end
|
||||||
ID1: begin
|
ID1: begin
|
||||||
for (i = 0; i < 16; i = i + 1)
|
/* "bit-reverse" the OUI */
|
||||||
data_read_next[i] = OUI[17 - i];
|
for (i = 6; i < 8; i = i + 1)
|
||||||
|
data_read_next[i - 6] = OUI[7 - i];
|
||||||
|
for (i = 0; i < 8; i = i + 1)
|
||||||
|
data_read_next[i + 2] = OUI[15 - i];
|
||||||
|
for (i = 0; i < 6; i = i + 1)
|
||||||
|
data_read_next[i + 10] = OUI[23 - i];
|
||||||
end
|
end
|
||||||
ID2: begin
|
ID2: begin
|
||||||
data_read_next[3:0] = REVISION;
|
data_read_next[3:0] = REVISION;
|
||||||
data_read_next[9:4] = MODEL;
|
data_read_next[9:4] = MODEL;
|
||||||
for (i = 0; i < 6; i = i + 1)
|
for (i = 0; i < 6; i = i + 1)
|
||||||
data_read_next[i + 4] = OUI[23 - i];
|
data_read_next[i + 10] = OUI[7 - i];
|
||||||
end
|
end
|
||||||
NWCR: if (ENABLE_COUNTERS) begin
|
NWCR: if (ENABLE_COUNTERS) begin
|
||||||
data_read_next = nwc;
|
data_read_next = nwc;
|
||||||
|
|
|
@ -116,10 +116,10 @@ async def test_mdio(regs):
|
||||||
assert await xfer(BMSR) & BMSR_LSTATUS
|
assert await xfer(BMSR) & BMSR_LSTATUS
|
||||||
|
|
||||||
await xfer(PHYID1, 0xffff)
|
await xfer(PHYID1, 0xffff)
|
||||||
assert await xfer(PHYID1) == 0
|
assert await xfer(PHYID1) == 0xd5ec
|
||||||
|
|
||||||
await xfer(PHYID2, 0xffff)
|
await xfer(PHYID2, 0xffff)
|
||||||
assert await xfer(PHYID2) == 0
|
assert await xfer(PHYID2) == 0x4800
|
||||||
|
|
||||||
# I'm pretty sure this register will never be implemented
|
# I'm pretty sure this register will never be implemented
|
||||||
assert await xfer(EXTSTATUS) is None
|
assert await xfer(EXTSTATUS) is None
|
||||||
|
|
Loading…
Reference in New Issue