ar71xx: allow overriding of the lan port names on AP91 based boards
[openwrt-10.03/.git] / target / linux / ar71xx / files / arch / mips / ar71xx / dev-ap91-eth.c
index d8dca1005874db5074e20b1450160ba10bfd0aa1..571901e670b50085a02a3c8943ea4a5df5b83f4f 100644 (file)
@@ -9,12 +9,43 @@
  */
 
 #include "devices.h"
+#include "dev-dsa.h"
+#include "dev-ap91-eth.h"
 
-void __init ap91_eth_init(u8 *mac_addr)
+static struct dsa_chip_data ap91_dsa_chip = {
+       .port_names[0]  = "cpu",
+       .port_names[1]  = "lan1",
+       .port_names[2]  = "lan2",
+       .port_names[3]  = "lan3",
+       .port_names[4]  = "lan4",
+};
+
+static struct dsa_platform_data ap91_dsa_data = {
+       .nr_chips       = 1,
+       .chip           = &ap91_dsa_chip,
+};
+
+static void ap91_eth_set_port_name(unsigned port, const char *name)
+{
+       if (port < 1 || port > 5)
+               return;
+
+       if (name)
+               ap91_dsa_chip.port_names[port] = (char *) name;
+}
+
+void __init ap91_eth_init(u8 *mac_addr, const char *port_names[])
 {
        if (mac_addr)
                ar71xx_set_mac_base(mac_addr);
 
+       if (port_names) {
+               int i;
+
+               for (i = 0; i < AP91_ETH_NUM_PORT_NAMES; i++)
+                       ap91_eth_set_port_name(i + 1, port_names[i]);
+       }
+
        /* WAN port */
        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
        ar71xx_eth0_data.phy_mask = 0x0;
@@ -36,4 +67,6 @@ void __init ap91_eth_init(u8 *mac_addr)
        ar71xx_add_device_mdio(0x0);
        ar71xx_add_device_eth(1);
        ar71xx_add_device_eth(0);
+
+       ar71xx_add_device_dsa(1, &ap91_dsa_data);
 }