Hi.
Now I use marvell switch 88e6165 (6-port) and try to connect with MDIO and RGMII2 interface AM335x.
This task is very complex. Because i must to write DTS file for linux kernel and use driver for 88e6165.
Linux kernel have driver 88e6165 in /drivers/net/dsa/mv88e6123_61_65.c. But this code have very more bugs. These bugs in driver we fixed.
I know about work AM335x only in PHY mode with extended switch.
Now we have problems with DTS file. Ready-made solution i have not found. So we hand make DTS file. I doubt very much the correctness our linux DTS file.
/ { model = "TI AM335x BeagleBone"; compatible = "ti,am335x-bone", "ti,am33xx"; aliases { ethernet0 = &cpsw_emac1; }; cpus { cpu@0 { cpu0-supply = <&dcdc2_reg>; }; }; memory { device_type = "memory"; reg = <0x80000000 0x10000000>; /* 256 MB */ }; dsa@0 { compatible = "marvell,dsa"; #address-cells = <2>; #size-cells = <0>; interrupts = <10>; dsa,ethernet = <&mac>; dsa,mii-bus = <&davinci_mdio>; switch@0 { #address-cells = <1>; #size-cells = <0>; reg = <0 0>; /* MDIO address 0, switch 0 in tree */ port@0 { reg = <0>; label = "lan1"; phy-handle = <&davinci_mdio>; }; port@1 { reg = <1>; label = "lan2"; phy-handle = <&davinci_mdio>; }; port@2 { reg = <2>; label = "lan3"; phy-handle = <&davinci_mdio>; }; port@3 { reg = <3>; label = "lan4"; phy-handle = <&davinci_mdio>; }; port@4 { reg = <4>; label = "lan5"; phy-handle = <&davinci_mdio>; }; port@5 { reg = <5>; label = "cpu"; phy-handle = <&davinci_mdio>; }; }; }; }; &am33xx_pinmux { cpsw_default: cpsw_default { pinctrl-single,pins = < /* Slave 2 */ 0x40 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a0.rgmii2_tctl */ 0x44 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a1.rgmii2_rctl */ 0x48 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a2.rgmii2_td3 */ 0x4c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a3.rgmii2_td2 */ 0x50 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a4.rgmii2_td1 */ 0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a5.rgmii2_td0 */ 0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a6.rgmii2_tclk */ 0x5c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a7.rgmii2_rclk */ 0x60 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a8.rgmii2_rd3 */ 0x64 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a9.rgmii2_rd2 */ 0x68 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a10.rgmii2_rd1 */ 0x6c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a11.rgmii2_rd0 */ >; }; cpsw_sleep: cpsw_sleep { pinctrl-single,pins = < /* Slave 2 reset value*/ 0x40 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x44 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x48 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x4c (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x50 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x54 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x58 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x5c (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x60 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7) >; }; davinci_mdio_default: davinci_mdio_default { pinctrl-single,pins = < /* MDIO */ /* 0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) // mdio_data.mdio_data 0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) // mdio_clk.mdio_clk */ 0x148 (PIN_INPUT_PULLUP | MUX_MODE0) /* mdio_data.mdio_data */ 0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */ >; }; davinci_mdio_sleep: davinci_mdio_sleep { pinctrl-single,pins = < /* MDIO reset value */ /* 0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7) */ /* 0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7) */ /* 0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) // mdio_data.mdio_data 0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) // mdio_clk.mdio_clk */ 0x148 (PIN_INPUT_PULLUP | MUX_MODE0) /* mdio_data.mdio_data */ 0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */ >; }; }; &cpsw_emac1 { status = "okay"; phy_id = <&davinci_mdio>, <0x15>; phy-mode = "rgmii"; }; &mac { pinctrl-names = "default", "sleep"; pinctrl-0 = <&cpsw_default>; pinctrl-1 = <&cpsw_sleep>; active_slave = <1>; status = "okay"; }; &davinci_mdio { pinctrl-names = "default", "sleep"; pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; dsa@0 { }; };
May be somebody have right DTS file for marvell 88e6165 switch?