[OpenWrt-Devel] Understanding Ethernet Architecture (I/O --> MDIO --> MII vs I/O --> MAC) for mt7620 (OpenWRT)
Daniel Santos
daniel.santos at pobox.com
Fri Jun 14 18:53:02 EDT 2019
Hello,
I'm still fairly new to Ethernet drivers and there are a lot of
interesting pieces. What I need help with is understanding MDIO -->
(R)MII vs direct I/O to the MAC (e.g., via ioread32, iowrite32). Why is
there not always a struct mii_bus to talk to this hardware? Is it
because the PHY and/or MAC hardware sometimes attached via an MDIO
device and sometimes directly to the I/O bus? Or does some type of
"indirect access" need to be enabled for that to work?
I might be trying to do something that's unnecessary however, I'm not
sure yet. I need to add functionality to change a port's
auto-negotiate, duplex, etc. I'm adding it to the swconfig first and
then will look at adding it for DSA afterwards. When I run "swconfig
dev switch0 port 0 show", the current mt7530 / mt7620 driver is querying
the MAC status register (at base + 0x3008 + 0x100 * port, described on
pages 323-324 of the MT7620 Programming Guide), so I implemented the
"set" functionality by modifying the MAC's control register (offset
0x3000 on page 321), but it doesn't seem to change anything. So I
figured maybe I need to modify the MII interface's control register for
the port (page 350), but upon debugging I can see that the struct
mii_bus *bus member is NULL.
So should I be able to change it via the MAC's control register and
something else is wrong? Why is there no struct mii_bus? Can I talk to
the MII hardware in some other way?
Thanks,
Daniel
https://download.villagetelco.org/hardware/MT7620/MT7620_ProgrammingGuide.pdf
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list