ARMADA 370 - Distributed Switch Architecture (dsa) - device tree

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Thu Oct 23 02:20:02 PDT 2014


Hello all,

I'm catching up on some past e-mails. Has this DSA issue been resolved?
I thought Andrew has done some DSA related work at some point? If not,
we could also involve Florian Fainelli in the loop, as he has done
quite a bit of DSA related stuff if I remember correctly.

Best regards,

Thomas

On Mon, 13 Oct 2014 07:19:04 -0400, Jason Cooper wrote:
> Tormod,
> 
> Sorry, I don't have time to reply atm.  However, I'm adding the mvebu
> devs and maintainers to the Cc.  You can also hit us up at #mvlinux on
> freenode.
> 
> thx,
> 
> Jason.
> 
> On Mon, Oct 13, 2014 at 12:14:41PM +0200, post at twien.net wrote:
> > Dear all,
> > I have a custom board equipped with an ARMADA 370 SoC (88f6W11) and
> > a Marvell switch chip (88e6352) (I have written a device driver for
> > the latter).
> > My question is how to set up a proper device tree specification for
> > the board. The device tree specification is listed below. This is
> > based on a similar .dts-file for the kirkwood SoC.
> > Further down is a excerpt of the start up sequence. I would imagine
> > the switch would be installed as the "PHY" for eth0 (which seems not
> > to be the case). I added some additional printout messages, and from
> > what I can see a generic device driver is loaded, and eventually the
> > mvneta_open/-probe function states that the PHY can not be found. I
> > have read the "examples" in the ../boot/dts directory and also read
> > the documentation. There are some confusing things, for example the
> > "dsa,mii-bus;" specification where I eventually put in "dsa,mii-bus
> > = <&mdio_bus>;". From both the examples and the documentation it
> > seemed I should specify a device on the mdio_bus, e.g. "phy0", but
> > when I did the whole thing crashed.
> > So specifying "mdio_bus" at least got me running a bit further, and
> > the dsa driver was detected and the proper switch device was
> > identified.
> > What I would like to achieve is to get eth0 to connect to port 5 on
> > the switch using SGMII.
> > Any advice on how to proceed would  be appreciated.
> > 
> > 
> > +---------+
> > |         |           +--------+
> > |         |   SGMII   |        |----- p0
> > |     eth0|-----------|p5      |  .    .
> > |         |           |        |----- p4
> > +---------+           +--------+
> > ARMADA 370             88e6352
> > 
> > 
> > Tormod
> > 
> > 
> > 
> > /*
> >  * Device Tree file for Marvell Armada 370 Ethernet Prototype board
> >  * ()
> >  *
> >  *  Copied from arch/arm/boot/dts/armada-370-rd.dts
> >  *
> >  *  Copyright (C) 2014 ...
> >  *
> >  * This file is licensed under the terms of the GNU General Public
> >  * License version 2.  This program is licensed "as is" without any
> >  * warranty of any kind, whether express or implied.
> >  */
> > 
> > /dts-v1/;
> > #include <dt-bindings/input/input.h>
> > #include <dt-bindings/gpio/gpio.h>
> > #include "armada-370.dtsi"
> > 
> > / {
> > 	model = "Marvell Armada 370 Ethernet Prototype";
> > 	compatible = "marvell,armada370", "marvell,armada-370-xp";
> > 
> > 	chosen {
> > 		bootargs = "console=ttyS0,115200 earlyprintk";
> > 	};
> > 
> > 	memory {
> > 		device_type = "memory";
> > 		reg = <0x00000000 0x40000000>; /* 1 GB */
> > 	};
> > 
> > 	soc {
> > 		ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
> > 			  MBUS_ID(0x01, 0xe0) 0 0xfff00000 0x100000>;
> > 
> > 
> >                 pcie-controller {
> >                         status = "okay";
> > 
> >                         /* Internal mini-PCIe connector */
> >                         pcie at 1,0 {
> >                                 /* Port 0, Lane 0 */
> >                                 status = "okay";
> >                         };
> > 
> >                         /* Internal mini-PCIe connector */
> >                         pcie at 2,0 {
> >                                 /* Port 1, Lane 0 */
> >                                 status = "okay";
> >                         };
> >                 };
> > 
> > 		internal-regs {
> > 			serial at 12000 {
> > 				status = "okay";
> > 			};
> > 
> > 			mdio_bus: mdio {
> > 				phy0: ethernet-phy at ff {
> > /*					compatible = "ethernet-phy-id5043.0eb0",
> > "ethernet-phy-ieee802.3-c22";
> > */
> > 					reg = <0xff>;  /* no PHY connected */
> > 					speed = <1000>;
> > 					duplex = <1>;
> > 				};
> > 
> > /*				phy1: ethernet-phy at 1 {
> > 					reg = <0x1>;
> > 				};
> > */
> > 			};
> > 
> > 			ethernet at 70000 {
> > 				status = "okay";
> > 				phy = <&phy0>;
> > 				phy-mode = "sgmii";
> > 			};
> > 
> > /*			ethernet at 74000 {
> > 				status = "okay";
> > 				phy = <&phy1>;
> > 				phy-mode = "rgmii-id";
> > 			};
> > */
> > 			mvsdio at d4000 {
> > 				pinctrl-0 = <&sdio_pins1>;
> > 				pinctrl-names = "default";
> > 				status = "okay";
> > 				/* No CD or WP GPIOs */
> > 				broken-cd;
> > 			};
> > 
> > 			usb at 50000 {
> > 				status = "okay";
> > 			};
> > 
> > 
> > /*			usb at 51000 {
> > 				status = "okay";
> > 			};
> > */
> > 			spi0: spi at 10600 {
> >                                 status = "okay";
> >                                 };
> > 
> > 			i2c at 11000 {
> >                                 pinctrl-0 = <&i2c0_pins>;
> >                                 pinctrl-names = "default";
> >                                 clock-frequency = <100000>;
> >                                 status = "okay";
> >                         };
> > 
> > 			nand at d0000 {
> > 				status = "okay";
> > 				num-cs = <1>;
> > 				marvell,nand-keep-config;
> > 				marvell,nand-enable-arbiter;
> > 				nand-on-flash-bbt;
> > 
> > 				partition at 0 {
> > 					label = "U-Boot";
> > 					reg = <0 0x800000>;
> > 				};
> > 				partition at 800000 {
> > 					label = "Linux";
> > 					reg = <0x800000 0x800000>;
> > 				};
> > 				partition at 1000000 {
> > 					label = "Filesystem";
> > 					reg = <0x1000000 0x3f000000>;
> > 				};
> > 			};
> > 		};
> > 	};
> > 
> > 	dsa at 0 {
> >                	compatible = "marvell,dsa";
> >                #address-cells = <2>;
> >                 #size-cells = <0>;
> >                	dsa,ethernet = <&eth0>;
> >                 dsa,mii-bus = <&mdio_bus>;
> > 
> >        	        switch at 0 {
> >                	        #address-cells = <1>;
> >                        	#size-cells = <0>;
> > 
> > 			reg = <0 0>;
> > 
> >        	                port at 0 {
> >                	                reg = <0>;
> >                        	        label = "lan1";
> >                         };
> > 
> >        	                port at 1 {
> >                	                reg = <1>;
> >                        	        label = "lan2";
> >                         };
> > 
> >        	                port at 2 {
> >                	                reg = <2>;
> >                        	        label = "lan3";
> >                         };
> > 
> >        	                port at 3 {
> >                	                reg = <3>;
> >                        	        label = "lan4";
> >                         };
> > 
> >        	                port at 5 {
> >                	                reg = <5>;
> >                        	        label = "cpu";
> >                         };
> > 
> > 			port at 6 {
> > 				reg = <6>;
> > 				label = "lan6";
> > 			};
> > 	 	};
> > 	};
> > 
> >  };
> > 
> > 
> > nand: device found, Manufacturer ID: 0x2c, Chip ID: 0x38
> > nand: Micron MT29F8G08ABABAWP
> > nand: 1024MiB, SLC, page size: 4096, OOB size: 224
> > pxa3xx-nand f10d0000.nand: ECC strength 16, ECC step size 2048
> > Bad block table found at page 262016, version 0x01
> > Bad block table found at page 261888, version 0x01
> > 3 ofpart partitions found on MTD device pxa3xx_nand-0
> > Creating 3 MTD partitions on "pxa3xx_nand-0":
> > 0x000000000000-0x000000800000 : "U-Boot"
> > 0x000000800000-0x000001000000 : "Linux"
> > 0x000001000000-0x000040000000 : "Filesystem"
> > mdiobus register device_node: mdio
> > libphy: orion_mdio_bus: probed
> > mdio_bus f1072004.mdio-mi: /soc/internal-regs/mdio/ethernet-phy at ff
> > PHY address 255 is too large
> > mvneta_probe: ethernet device: eth%d
> > mvneta_probe: phy_node: ethernet-phy
> > mvneta f1070000.ethernet eth0: Using hardware mac address
> > 00:50:43:02:02:00
> > ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
> > ehci-pci: EHCI PCI platform driver
> > ehci-orion: EHCI orion driver
> > orion-ehci f1050000.usb: EHCI Host Controller
> > orion-ehci f1050000.usb: new USB bus registered, assigned bus number 1
> > orion-ehci f1050000.usb: irq 26, io mem 0xf1050000
> > orion-ehci f1050000.usb: USB 2.0 started, EHCI 1.00
> > hub 1-0:1.0: USB hub found
> > hub 1-0:1.0: 1 port detected
> > usbcore: registered new interface driver usb-storage
> > mousedev: PS/2 mouse device common for all mice
> > rtc-mv f1010300.rtc: internal RTC not ticking
> > orion_wdt: Initial timeout 229 sec
> > usbcore: registered new interface driver usbhid
> > usbhid: USB HID core driver
> > TCP: cubic registered
> > Distributed Switch Architecture driver version 0.1
> > eth0[0]: detected a Marvell 88E6352 switch
> > libphy: dsa slave smi: probed
> > ThumbEE CPU extension supported.
> > drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
> > mvneta_mdio_probe: mvneta_probe: ethernet-phy
> > mvneta f1070000.ethernet eth0: could not find the PHY
> > mvneta f1070000.ethernet eth0: cannot probe MDIO bus
> > IP-Config: Failed to open eth0
> > IP-Config: Failed to open lan1
> > IP-Config: Failed to open lan2
> > IP-Config: Failed to open lan3
> > IP-Config: Failed to open lan4
> > IP-Config: Failed to open lan6
> > IP-Config: No network devices available
> > 
> > 
> > 
> > 
> > 
> > 
> > _______________________________________________
> > linux-arm-kernel mailing list
> > linux-arm-kernel at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> > 



-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com



More information about the linux-arm-kernel mailing list