[PATCH] ARM: dts: imx: add Gateworks Ventana GW5904 support

Florian Fainelli f.fainelli at gmail.com
Fri Mar 10 17:20:11 PST 2017


On 03/10/2017 05:07 PM, Tim Harvey wrote:
> On Fri, Mar 10, 2017 at 12:43 PM, Florian Fainelli <f.fainelli at gmail.com> 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 at 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 at 0 {
>                                         reg = <0>;
>                                         label = "lan0";
>                                 };
> 
>                                 port at 1 {
>                                         reg = <1>;
>                                         label = "lan1";
>                                 };
> 
>                                 port at 2 {
>                                         reg = <2>;
>                                         label = "lan2";
>                                 };
> 
>                                 port at 3 {
>                                         reg = <3>;
>                                         label = "lan3";
>                                 };
> 
>                                 port at 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 at 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 at 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 at 0 {
>>> +                     #address-cells = <1>;
>>> +                     #size-cells = <0>;
>>> +                     reg = <0 0>; /* MDIO address 0, switch 0 in tree */
>>> +
>>> +                     port at 0 {
>>> +                             reg = <0>;
>>> +                             label = "lan4";
>>> +                     };
>>> +
>>> +                     port at 1 {
>>> +                             reg = <1>;
>>> +                             label = "lan3";
>>> +                     };
>>> +
>>> +                     port at 2 {
>>> +                             reg = <2>;
>>> +                             label = "lan2";
>>> +                     };
>>> +
>>> +                     port at 3 {
>>> +                             reg = <3>;
>>> +                             label = "lan1";
>>> +                     };
>>> +
>>> +                     port at 5 {
>>> +                             reg = <5>;
>>> +                             label = "cpu";
>>> +                             fixed-link {
>>> +                                     speed = <1000>;
>>> +                                     full-duplex;
>>> +                             };
>>> +                     };
>>> +             };
>>> +     };
>>> +};
>> --
>> Florian


-- 
Florian



More information about the linux-arm-kernel mailing list