ARMADA 370 - Distributed Switch Architecture (dsa) - device tree
Jason Cooper
jason at lakedaemon.net
Mon Oct 13 04:19:04 PDT 2014
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 = <ð0>;
> 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
>
More information about the linux-arm-kernel
mailing list