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.

Reply via email to