SerDes Lane A is xfi
The probing of the Marvell chip fails late with error -517. The problem seems to be that somehow the reference from the CPU port to the ethernet interface is not working. Function dsa_port_parse_of in dsa2.c fails because of_find_net_device_by_node(ethernet); returns NULL.
LSDK:2108
ethernet@f0000 {
fixed-link = <6 1 10000 0 0>;
phy-connection-type = "10gbase-kr";
};
mdio1:mdio@fd000 {
switch0: switch0@6 {
compatible = "marvell,mv88e6190";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x6>;
interrupts-extended = <&extirq 10 IRQ_TYPE_LEVEL_LOW>;
dsa,member = <0 0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
label = "cpu";
fixed-link = <6 1 10000 0 0>;
ethernet = <&enet6>;
local-mac-address = [42 00 00 00 00 80];
fixed-link {
speed = <10000>;
full-duplex;
};
};
static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn)
{
struct device_node *ethernet = of_parse_phandle(dn, "ethernet", 0);
const char *name = of_get_property(dn, "label", NULL);
bool link = of_property_read_bool(dn, "link");
dp->dn = dn;
if (ethernet) {
struct net_device *master;
master = of_find_net_device_by_node(ethernet);
if (!master)
return -EPROBE_DEFER;
return dsa_port_parse_cpu(dp, master);
}
if (link)
return dsa_port_parse_dsa(dp);
return dsa_port_parse_user(dp, name);
}