Hi,
I'm working on a custom BBB with a 3-port ethernet switch-on-a-chip (Micrel
KSZ8863).
One of the Micrel switch ports is used to communicate with the CPU, the
other two are physical ethernet ports.
When the MDIO bus is scanned the switch responds with three addresses:
phy addr 1 - physical port 1
phy addr 2 - physical port 2
phy addr 3 - MII connection to CPU
Only address 3 is used to communicate with the switch so I made a device
tree change -
I changed the phy_id to 3 for CPSW slave 0:
&cpsw_emac0 {
phy_id = <&davinci_mdio>, <3>;
phy-mode = "mii";
};
(I also set cpsw_emac1 phy_id to an unused address, or set number of
slaves to 1.)
After making this change the switch still did not work.
I discovered the device tree changes for phy_id were being ignored.
The function davinci_mdio_update_dt_from_phymask() in
drivers/net/ethernet/ti/davinci_mdio.c
is called to overwrite the phy_id's in the device tree with id's discovered
in the MDIO bus scan.
To make the switch work I commented the line that calls
of_update_property().
Is there a way to prevent the update of dt phy_id's from occuring without a
custom kernel?
Thanks.
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.