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

Tim Harvey tharvey at gateworks.com
Fri Mar 10 17:07:33 PST 2017


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";

        mdio {
                #address-cells = <1>;
                #size-cells = <0>;

                switch0 at 0 {
                        compatible = "marvell,mv88e6176";
                        #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:

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



More information about the linux-arm-kernel mailing list