On 03/10/2017 05:07 PM, Tim Harvey wrote: > On Fri, Mar 10, 2017 at 12:43 PM, Florian Fainelli <f.fainelli@xxxxxxxxx> wrote: >> >>> + dsa { >>> + compatible = "marvell,dsa"; >>> + #address-cells = <2>; >>> + #size-cells = <0>; >>> + >>> + dsa,ethernet = <&fec>; >>> + dsa,mii-bus = <&mdio>; >>> + >> >> Please consider using the new binding for DSA switches, see: >> >> https://patchwork.kernel.org/patch/9493037/ >> > > Hi Florian, > > I tried the new binding first, but haven't gotten it to work yet. Let > me make sure I understand what I should be doing. > > This is a MV88E6176 so I first need to add dt support for that to the > mv88e6xxx driver (which supports the device, just not via dt): > diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c > index 03dc886..fd5c716 100644 > --- a/drivers/net/dsa/mv88e6xxx/chip.c > +++ b/drivers/net/dsa/mv88e6xxx/chip.c > @@ -4602,6 +4602,10 @@ static const struct of_device_id mv88e6xxx_of_match[] = { > .data = &mv88e6xxx_table[MV88E6085], > }, > { > + .compatible = "marvell,mv88e6176", > + .data = &mv88e6xxx_table[MV88E6176], > + }, > + { > .compatible = "marvell,mv88e6190", > .data = &mv88e6xxx_table[MV88E6190], > }, > > Then I remove the old binding and add the new binding as such: > > &fec { > pinctrl-names = "default"; > pinctrl-0 = <&pinctrl_enet>; > phy-mode = "rgmii-id"; > status = "okay"; You most likely need to declare a fixed PHY for the FEC to be setting up the link, speed and duplex? > > mdio { > #address-cells = <1>; > #size-cells = <0>; > > switch0@0 { > compatible = "marvell,mv88e6176"; I don't think it's necessary to define a new compatible string, using the existing marvell,mv88e6085 should be good enough, the driver does runtime detection of the switch chip. > #address-cells = <1>; > #size-cells = <0>; > reg = <0>; > > ports { > #address-cells = <1>; > #size-cells = <0>; > port@0 { > reg = <0>; > label = "lan0"; > }; > > port@1 { > reg = <1>; > label = "lan1"; > }; > > port@2 { > reg = <2>; > label = "lan2"; > }; > > port@3 { > reg = <3>; > label = "lan3"; > }; > > port@5 { > reg = <5>; > label = "cpu"; > ethernet = <&fec>; > fixed-link { > speed = <1000>; > full-duplex; > }; > }; > }; > }; > }; > }; > > This does give me eth0, lan1, lan2, lan3, lan4 netdevs but when I > bring up eth0 I crash: Presumably because the driver lets you initialize with a "phy-mode" property, but neither a valid "phy-handle" nor a fixed-link node, and that's clearly a bug here. > > root@ventana:~# ifconfig eth0 up > [ 45.826516] ------------[ cut here ]------------ > [ 45.831169] Kernel BUG at c01923cc [verbose debug info unavailable] > [ 45.837461] Internal error: Oops - BUG: 0 [#1] SMP ARM > [ 45.842617] Modules linked in: > [ 45.845692] CPU: 0 PID: 486 Comm: ifconfig Tainted: G W > 4.11.0-rc1-00020-g0885e48-dirty #537 > [ 45.855265] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) > [ 45.861805] task: ee2e55c0 task.stack: eddd2000 > [ 45.866348] PC is at mod_timer+0x1e4/0x22c > [ 45.870456] LR is at add_timer+0x20/0x28 > [ 45.874391] pc : [<c01923cc>] lr : [<c0192434>] psr: 600e0093 > [ 45.874391] sp : eddd3c20 ip : eddd3c60 fp : eddd3c5c > [ 45.885878] r10: 00000200 r9 : ee828818 r8 : 00000064 > [ 45.891112] r7 : ee802e00 r6 : ffff9d19 r5 : ee802e00 r4 : ee21b350 > [ 45.897649] r3 : 00000000 r2 : 00000000 r1 : ffff9d19 r0 : ee21b350 > [ 45.904187] Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM > Segment none > [ 45.911417] Control: 10c5387d Table: 3dea804a DAC: 00000051 > [ 45.917173] Process ifconfig (pid: 486, stack limit = 0xeddd2210) > [ 45.923275] Stack: (0xeddd3c20 to 0xeddd4000) > [ 45.927647] 3c20: c01257f8 c01256e8 000005e9 c01402fc 00000004 > 00000004 ee802e00 ee21b350 > [ 45.935838] 3c40: ee802e00 00000064 ee828818 00000200 eddd3c6c > eddd3c60 c0192434 c01921f4 > [ 45.944029] 3c60: eddd3c94 eddd3c70 c014026c c0192420 00000064 > ee21b330 eddd3c94 600e0013 > [ 45.952220] 3c80: ee21b330 00000004 eddd3cbc eddd3c98 c01403d8 > c01401f0 ee21b000 00000000 > [ 45.960410] 3ca0: c05f9e7c c05f9e7c 00000008 ee828818 eddd3ccc > eddd3cc0 c05e71a0 c0140368 > [ 45.968600] 3cc0: eddd3cec eddd3cd0 c05e945c c05e7188 eddd3d60 > ee21b000 ee837000 c05f9e7c > [ 45.976791] 3ce0: eddd3d14 eddd3cf0 c05e94c0 c05e9430 00000000 > ee837000 eddd3d23 00000000 > [ 45.984981] 3d00: c1649b9c ee828818 eddd3dbc eddd3d18 c05f9e14 > c05e9484 00000000 c05f7d48 > [ 45.993171] 3d20: 32000000 30383831 652e3030 72656874 2d74656e > 00000031 000003e8 000000c8 > [ 46.001361] 3d40: c0172424 c0171cf4 000003e8 000000c8 014000c0 > 00000000 c1649b9c ee828814 > [ 46.009551] 3d60: 38383132 2e303030 65687465 74656e72 303a312d > ee800030 eddd3dbc eddd3d88 > [ 46.017742] 3d80: c021e458 c09a2f30 eddd3dbc c05fcde0 c05f8cc0 > f11ba000 ee837000 ee828000 > [ 46.025931] 3da0: 00000000 f11ba000 ee837000 ee828000 eddd3df4 > eddd3dc0 c05fce40 c05f9d18 > [ 46.034122] 3dc0: 00000001 ee83766c eddd3df4 ee837000 00000000 > c0a6a9d4 ee837030 00000000 > [ 46.042311] 3de0: bebeaeaa 00000000 eddd3e1c eddd3df8 c078dde0 > c05fcbd0 eddd3e1c ee837000 > [ 46.050502] 3e00: ee837000 00000001 00001043 00001002 eddd3e44 > eddd3e20 c078e098 c078dd3c > [ 46.058692] 3e20: ee837000 ee83713c 00001002 ee20d80c 00000000 > bebeaeaa eddd3e6c eddd3e48 > [ 46.066881] 3e40: c078e17c c078e014 00000000 eddd3e90 00000000 > ee20d80c bebeaaac bebeaeaa > [ 46.075071] 3e60: eddd3edc eddd3e70 c080895c c078e168 c0e6b180 > bebeaaac 00000020 ee20d80c > [ 46.083261] 3e80: ee20d800 00000014 ee837000 00008914 30687465 > 00000000 00000000 00000000 > [ 46.091451] 3ea0: b6f81043 bebeaeaa 0000002c 0001b3b8 b6f81002 > 00008914 ed872920 bebeaaac > [ 46.099642] 3ec0: ed872900 00000004 eddd2000 00000000 eddd3eec > eddd3ee0 c080b334 c0808230 > [ 46.107832] 3ee0: eddd3f0c eddd3ef0 c076bab4 c080b1a4 bebeaaac > ed872920 edf05140 c023af64 > [ 46.116022] 3f00: eddd3f7c eddd3f10 c023a5a4 c076b968 ffffff9c > eddb6000 fffffffe c0107f44 > [ 46.124213] 3f20: eddd2000 00000000 eddd3f4c eddd3f38 c0236b2c > c021cb88 fffffffe ffffff9c > [ 46.132402] 3f40: eddd3f94 eddd3f50 c02242b8 c0236ad4 c0227ef8 > edf05140 00000004 edf05140 > [ 46.140593] 3f60: 00008914 bebeaaac eddd2000 00000000 eddd3fa4 > eddd3f80 c023af64 c023a514 > [ 46.148782] 3f80: 0001b8f0 0001b6c8 bebeab74 00000036 c0107f44 > eddd2000 00000000 eddd3fa8 > [ 46.156972] 3fa0: c0107da0 c023af34 0001b8f0 0001b6c8 00000004 > 00008914 bebeaaac 00001002 > [ 46.165162] 3fc0: 0001b8f0 0001b6c8 bebeab74 00000036 00000000 > 00000000 0001b8f8 00000000 > [ 46.173352] 3fe0: 0001b07c bebeaa9c 0000accf b6f17c66 000e0030 > 00000004 00000000 00000000 > [ 46.181534] Backtrace: > [ 46.184000] [<c01921e8>] (mod_timer) from [<c0192434>] (add_timer+0x20/0x28) > [ 46.191062] r10:00000200 r9:ee828818 r8:00000064 r7:ee802e00 > r6:ee21b350 r5:ee802e00 > [ 46.198899] r4:00000004 > [ 46.201453] [<c0192414>] (add_timer) from [<c014026c>] > (__queue_delayed_work+0x88/0x178) > [ 46.209560] [<c01401e4>] (__queue_delayed_work) from [<c01403d8>] > (queue_delayed_work_on+0x7c/0x84) > [ 46.218615] r6:00000004 r5:ee21b330 r4:600e0013 > [ 46.223254] [<c014035c>] (queue_delayed_work_on) from [<c05e71a0>] > (phy_start_machine+0x24/0x2c) > [ 46.232051] r9:ee828818 r8:00000008 r7:c05f9e7c r6:c05f9e7c > r5:00000000 r4:ee21b000 > [ 46.239811] [<c05e717c>] (phy_start_machine) from [<c05e945c>] > (phy_connect_direct+0x38/0x54) > [ 46.248351] [<c05e9424>] (phy_connect_direct) from [<c05e94c0>] > (phy_connect+0x48/0x80) > [ 46.256367] r7:c05f9e7c r6:ee837000 r5:ee21b000 r4:eddd3d60 > [ 46.262043] [<c05e9478>] (phy_connect) from [<c05f9e14>] > (fec_enet_mii_probe+0x108/0x170) > [ 46.270234] r9:ee828818 r8:c1649b9c r7:00000000 r6:eddd3d23 > r5:ee837000 r4:00000000 > [ 46.277991] [<c05f9d0c>] (fec_enet_mii_probe) from [<c05fce40>] > (fec_enet_open+0x27c/0x344) > [ 46.286351] r6:ee828000 r5:ee837000 r4:f11ba000 > [ 46.290985] [<c05fcbc4>] (fec_enet_open) from [<c078dde0>] > (__dev_open+0xb0/0x118) > [ 46.298567] r10:00000000 r9:bebeaeaa r8:00000000 r7:ee837030 > r6:c0a6a9d4 r5:00000000 > [ 46.306404] r4:ee837000 > [ 46.308950] [<c078dd30>] (__dev_open) from [<c078e098>] > (__dev_change_flags+0x90/0x154) > [ 46.316963] r7:00001002 r6:00001043 r5:00000001 r4:ee837000 > [ 46.322635] [<c078e008>] (__dev_change_flags) from [<c078e17c>] > (dev_change_flags+0x20/0x50) > [ 46.331085] r9:bebeaeaa r8:00000000 r7:ee20d80c r6:00001002 > r5:ee83713c r4:ee837000 > [ 46.338844] [<c078e15c>] (dev_change_flags) from [<c080895c>] > (devinet_ioctl+0x738/0x838) > [ 46.347033] r9:bebeaeaa r8:bebeaaac r7:ee20d80c r6:00000000 > r5:eddd3e90 r4:00000000 > [ 46.354790] [<c0808224>] (devinet_ioctl) from [<c080b334>] > (inet_ioctl+0x19c/0x1c8) > [ 46.362459] r10:00000000 r9:eddd2000 r8:00000004 r7:ed872900 > r6:bebeaaac r5:ed872920 > [ 46.370296] r4:00008914 > [ 46.372848] [<c080b198>] (inet_ioctl) from [<c076bab4>] > (sock_ioctl+0x158/0x32c) > [ 46.380262] [<c076b95c>] (sock_ioctl) from [<c023a5a4>] > (do_vfs_ioctl+0x9c/0xa20) > [ 46.387756] r7:c023af64 r6:edf05140 r5:ed872920 r4:bebeaaac > [ 46.393429] [<c023a508>] (do_vfs_ioctl) from [<c023af64>] > (SyS_ioctl+0x3c/0x64) > [ 46.400751] r10:00000000 r9:eddd2000 r8:bebeaaac r7:00008914 > r6:edf05140 r5:00000004 > [ 46.408589] r4:edf05140 > [ 46.411141] [<c023af28>] (SyS_ioctl) from [<c0107da0>] > (ret_fast_syscall+0x0/0x1c) > [ 46.418724] r9:eddd2000 r8:c0107f44 r7:00000036 r6:bebeab74 > r5:0001b6c8 r4:0001b8f0 > [ 46.426479] Code: eaffffbd e1a0500a e1a0a005 eaffffcc (e7f001f2) > [ 46.432587] ---[ end trace c923534ad86e0767 ]--- > Segmentation fault > root@ventana:~# [ 67.156856] systemd-journald[202]: Successfully > sent stream file descriptor to service manager. > > Is there something wrong with my dt node that you see or perhaps > something else going on here required by the new binding? > > Thanks, > > Tim > >>> + switch@0 { >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + reg = <0 0>; /* MDIO address 0, switch 0 in tree */ >>> + >>> + port@0 { >>> + reg = <0>; >>> + label = "lan4"; >>> + }; >>> + >>> + port@1 { >>> + reg = <1>; >>> + label = "lan3"; >>> + }; >>> + >>> + port@2 { >>> + reg = <2>; >>> + label = "lan2"; >>> + }; >>> + >>> + port@3 { >>> + reg = <3>; >>> + label = "lan1"; >>> + }; >>> + >>> + port@5 { >>> + reg = <5>; >>> + label = "cpu"; >>> + fixed-link { >>> + speed = <1000>; >>> + full-duplex; >>> + }; >>> + }; >>> + }; >>> + }; >>> +}; >> -- >> Florian -- Florian -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html