ARMADA 370 - Distributed Switch Architecture (dsa) - device tree
post at twien.net
post at twien.net
Mon Oct 13 03:14:41 PDT 2014
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
More information about the linux-arm-kernel
mailing list