#include <asm/mach-types.h>
#include <asm/gpio.h>
#include <asm/mach/arch.h>
-@@ -97,6 +98,15 @@ static struct mv643xx_eth_platform_data
+@@ -97,6 +98,20 @@ static struct mv643xx_eth_platform_data
.duplex = DUPLEX_FULL,
};
-+static struct dsa_platform_data wnr854t_switch_data = {
++static struct dsa_chip_data wnr854t_switch_chip_data = {
+ .port_names[0] = "lan3",
+ .port_names[1] = "lan4",
+ .port_names[2] = "wan",
+ .port_names[5] = "lan1",
+ .port_names[7] = "lan2",
+};
++
++static struct dsa_platform_data wnr854t_switch_plat_data = {
++ .nr_chips = 1,
++ .chip = &wnr854t_switch_chip_data,
++};
+
static void __init wnr854t_init(void)
{
/*
-@@ -110,6 +120,7 @@ static void __init wnr854t_init(void)
+@@ -110,6 +125,7 @@ static void __init wnr854t_init(void)
* Configure peripherals.
*/
orion5x_eth_init(&wnr854t_eth_data);
-+ orion5x_eth_switch_init(&wnr854t_switch_data, NO_IRQ);
++ orion5x_eth_switch_init(&wnr854t_switch_plat_data, NO_IRQ);
orion5x_uart0_init();
orion5x_setup_dev_boot_win(WNR854T_NOR_BOOT_BASE,
+++ /dev/null
-From: Lennert Buytenhek <buytenh@wantstofly.org>
-Date: Fri, 20 Mar 2009 09:50:39 +0000 (+0000)
-Subject: dsa: add support for the Marvell 88E6095/6095F switch chips
-X-Git-Tag: v2.6.30-rc1~662^2~146
-X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=076d3e10a54caa2c148de5732c126c7a31381d48
-
-dsa: add support for the Marvell 88E6095/6095F switch chips
-
-Add support for the Marvell 88E6095/6095F switch chips. These
-chips are similar to the 88e6131, so we can add the support to
-mv88e6131.c easily.
-
-Thanks to Gary Thomas <gary@mlbassoc.com> and Jesper Dangaard
-Brouer <hawk@diku.dk> for testing various patches.
-
-Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
-Tested-by: Gary Thomas <gary@mlbassoc.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
-
-diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
-index 49211b3..c51b554 100644
---- a/net/dsa/Kconfig
-+++ b/net/dsa/Kconfig
-@@ -41,13 +41,13 @@ config NET_DSA_MV88E6XXX_NEED_PPU
- default n
-
- config NET_DSA_MV88E6131
-- bool "Marvell 88E6131 ethernet switch chip support"
-+ bool "Marvell 88E6095/6095F/6131 ethernet switch chip support"
- select NET_DSA_MV88E6XXX
- select NET_DSA_MV88E6XXX_NEED_PPU
- select NET_DSA_TAG_DSA
- ---help---
-- This enables support for the Marvell 88E6131 ethernet switch
-- chip.
-+ This enables support for the Marvell 88E6095/6095F/6131
-+ ethernet switch chips.
-
- config NET_DSA_MV88E6123_61_65
- bool "Marvell 88E6123/6161/6165 ethernet switch chip support"
-diff --git a/net/dsa/mv88e6131.c b/net/dsa/mv88e6131.c
-index 70fae24..0029957 100644
---- a/net/dsa/mv88e6131.c
-+++ b/net/dsa/mv88e6131.c
-@@ -1,6 +1,6 @@
- /*
-- * net/dsa/mv88e6131.c - Marvell 88e6131 switch chip support
-- * Copyright (c) 2008 Marvell Semiconductor
-+ * net/dsa/mv88e6131.c - Marvell 88e6095/6095f/6131 switch chip support
-+ * Copyright (c) 2008-2009 Marvell Semiconductor
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
-@@ -21,6 +21,8 @@ static char *mv88e6131_probe(struct mii_bus *bus, int sw_addr)
- ret = __mv88e6xxx_reg_read(bus, sw_addr, REG_PORT(0), 0x03);
- if (ret >= 0) {
- ret &= 0xfff0;
-+ if (ret == 0x0950)
-+ return "Marvell 88E6095/88E6095F";
- if (ret == 0x1060)
- return "Marvell 88E6131";
- }
-@@ -36,7 +38,7 @@ static int mv88e6131_switch_reset(struct dsa_switch *ds)
- /*
- * Set all ports to the disabled state.
- */
-- for (i = 0; i < 8; i++) {
-+ for (i = 0; i < 11; i++) {
- ret = REG_READ(REG_PORT(i), 0x04);
- REG_WRITE(REG_PORT(i), 0x04, ret & 0xfffc);
- }
-@@ -136,7 +138,7 @@ static int mv88e6131_setup_global(struct dsa_switch *ds)
- * Clear all trunk masks.
- */
- for (i = 0; i < 8; i++)
-- REG_WRITE(REG_GLOBAL2, 0x07, 0x8000 | (i << 12) | 0xff);
-+ REG_WRITE(REG_GLOBAL2, 0x07, 0x8000 | (i << 12) | 0x7ff);
-
- /*
- * Clear all trunk mappings.
-@@ -159,9 +161,13 @@ static int mv88e6131_setup_port(struct dsa_switch *ds, int p)
-
- /*
- * MAC Forcing register: don't force link, speed, duplex
-- * or flow control state to any particular values.
-+ * or flow control state to any particular values on physical
-+ * ports, but force the CPU port to 1000 Mb/s full duplex.
- */
-- REG_WRITE(addr, 0x01, 0x0003);
-+ if (p == ds->cpu_port)
-+ REG_WRITE(addr, 0x01, 0x003e);
-+ else
-+ REG_WRITE(addr, 0x01, 0x0003);
-
- /*
- * Port Control: disable Core Tag, disable Drop-on-Lock,
-@@ -268,7 +274,7 @@ static int mv88e6131_setup(struct dsa_switch *ds)
- if (ret < 0)
- return ret;
-
-- for (i = 0; i < 6; i++) {
-+ for (i = 0; i < 11; i++) {
- ret = mv88e6131_setup_port(ds, i);
- if (ret < 0)
- return ret;
-@@ -279,7 +285,7 @@ static int mv88e6131_setup(struct dsa_switch *ds)
-
- static int mv88e6131_port_to_phy_addr(int port)
- {
-- if (port >= 0 && port != 3 && port <= 7)
-+ if (port >= 0 && port <= 11)
- return port;
- return -1;
- }