#include <linux/module.h>
 #include <linux/err.h>
 #include <linux/clk.h>
+#include <linux/device.h>
 
 #include <asm/mach-adm5120/adm5120_defs.h>
 
 
 struct clk *clk_get(struct device *dev, const char *id)
 {
-       if (!strcmp(id, "UARTCLK"))
+       char *name = dev_name(dev);
+
+       if (!strcmp(name, "apb:uart0") || !strcmp(name, "apb:uart1"))
                return &uart_clk;
 
        return ERR_PTR(-ENOENT);
 
 
 struct amba_device adm5120_uart0_device = {
        .dev            = {
-               .bus_id = "APB:UART0",
+               .init_name = "apb:uart0",
                .platform_data = &adm5120_uart0_data,
        },
        .res            = {
 
 struct amba_device adm5120_uart1_device = {
        .dev            = {
-               .bus_id = "APB:UART1",
+               .init_name = "apb:uart1",
                .platform_data = &adm5120_uart1_data,
        },
        .res            = {
 
        struct flash_desc *fdesc;
        u32 t = 0;
 
-       map->name = dev->dev.bus_id;
+       map->name = dev_name(&dev->dev);
 
        if (dev->id > 1) {
                MAP_ERR(map, "invalid flash id\n");
 
        status = sw_int_status() & SWITCH_INTS_POLL;
        if ((done < limit) && (!status)) {
                SW_DBG("disable polling mode for %s\n", dev->name);
-               netif_rx_complete(dev, napi);
+               napi_complete(napi);
                sw_int_unmask(SWITCH_INTS_POLL);
                return 0;
        }
                sw_dump_intr_mask("poll ints", status);
                SW_DBG("enable polling mode for %s\n", dev->name);
                sw_int_mask(SWITCH_INTS_POLL);
-               netif_rx_schedule(dev, &priv->napi);
+               napi_schedule(&priv->napi);
        }
 #else
        sw_int_ack(status);
 
 static int adm5120_if_set_mac_address(struct net_device *dev, void *p)
 {
-       struct sockaddr *addr = p;
+       int ret;
+
+       ret = eth_mac_addr(dev, p);
+       if (ret)
+               return ret;
 
-       memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
        adm5120_write_mac(dev);
        return 0;
 }
        return 0;
 }
 
+static const struct net_device_ops adm5120sw_netdev_ops = {
+        .ndo_open               = adm5120_if_open,
+        .ndo_stop               = adm5120_if_stop,
+        .ndo_start_xmit         = adm5120_if_hard_start_xmit,
+        .ndo_set_multicast_list = adm5120_if_set_multicast_list,
+        .ndo_do_ioctl           = adm5120_if_do_ioctl,
+        .ndo_tx_timeout         = adm5120_if_tx_timeout,
+        .ndo_validate_addr      = eth_validate_addr,
+        .ndo_change_mtu         = eth_change_mtu,
+       .ndo_set_mac_address    = adm5120_if_set_mac_address,
+};
+
 static struct net_device *adm5120_if_alloc(void)
 {
        struct net_device *dev;
        priv->dev = dev;
 
        dev->irq                = ADM5120_IRQ_SWITCH;
-       dev->open               = adm5120_if_open;
-       dev->hard_start_xmit    = adm5120_if_hard_start_xmit;
-       dev->stop               = adm5120_if_stop;
-       dev->set_multicast_list = adm5120_if_set_multicast_list;
-       dev->do_ioctl           = adm5120_if_do_ioctl;
-       dev->tx_timeout         = adm5120_if_tx_timeout;
+       dev->netdev_ops         = &adm5120sw_netdev_ops;
        dev->watchdog_timeo     = TX_TIMEOUT;
-       dev->set_mac_address    = adm5120_if_set_mac_address;
 
 #ifdef CONFIG_ADM5120_SWITCH_NAPI
        netif_napi_add(dev, &priv->napi, adm5120_if_poll, 64);
 
+++ /dev/null
---- a/arch/mips/adm5120/common/platform.c
-+++ b/arch/mips/adm5120/common/platform.c
-@@ -190,7 +190,7 @@ struct amba_pl010_data adm5120_uart0_dat
- 
- struct amba_device adm5120_uart0_device = {
-       .dev            = {
--              .bus_id = "APB:UART0",
-+              .init_name = "apb:uart0",
-               .platform_data = &adm5120_uart0_data,
-       },
-       .res            = {
-@@ -208,7 +208,7 @@ struct amba_pl010_data adm5120_uart1_dat
- 
- struct amba_device adm5120_uart1_device = {
-       .dev            = {
--              .bus_id = "APB:UART1",
-+              .init_name = "apb:uart1",
-               .platform_data = &adm5120_uart1_data,
-       },
-       .res            = {
 
+++ /dev/null
---- a/drivers/mtd/maps/adm5120-flash.c
-+++ b/drivers/mtd/maps/adm5120-flash.c
-@@ -233,7 +233,7 @@ static int adm5120_flash_initinfo(struct
-       struct flash_desc *fdesc;
-       u32 t = 0;
- 
--      map->name = dev->dev.bus_id;
-+      map->name = dev_name(&dev->dev);
- 
-       if (dev->id > 1) {
-               MAP_ERR(map, "invalid flash id\n");
 
+++ /dev/null
---- a/drivers/net/adm5120sw.c
-+++ b/drivers/net/adm5120sw.c
-@@ -517,7 +517,7 @@ static int adm5120_if_poll(struct napi_s
-       status = sw_int_status() & SWITCH_INTS_POLL;
-       if ((done < limit) && (!status)) {
-               SW_DBG("disable polling mode for %s\n", dev->name);
--              netif_rx_complete(dev, napi);
-+              napi_complete(napi);
-               sw_int_unmask(SWITCH_INTS_POLL);
-               return 0;
-       }
-@@ -548,7 +548,7 @@ static irqreturn_t adm5120_switch_irq(in
-               sw_dump_intr_mask("poll ints", status);
-               SW_DBG("enable polling mode for %s\n", dev->name);
-               sw_int_mask(SWITCH_INTS_POLL);
--              netif_rx_schedule(dev, &priv->napi);
-+              napi_schedule(&priv->napi);
-       }
- #else
-       sw_int_ack(status);
 
+++ /dev/null
---- a/arch/mips/adm5120/common/clock.c
-+++ b/arch/mips/adm5120/common/clock.c
-@@ -19,6 +19,7 @@
- #include <linux/module.h>
- #include <linux/err.h>
- #include <linux/clk.h>
-+#include <linux/device.h>
- 
- #include <asm/mach-adm5120/adm5120_defs.h>
- 
-@@ -32,7 +33,9 @@ static struct clk uart_clk = {
- 
- struct clk *clk_get(struct device *dev, const char *id)
- {
--      if (!strcmp(id, "UARTCLK"))
-+      char *name = dev_name(dev);
-+
-+      if (!strcmp(name, "apb:uart0") || !strcmp(name, "apb:uart1"))
-               return &uart_clk;
- 
-       return ERR_PTR(-ENOENT);
 
+++ /dev/null
---- a/drivers/net/adm5120sw.c
-+++ b/drivers/net/adm5120sw.c
-@@ -973,9 +973,12 @@ static void adm5120_if_set_multicast_lis
- 
- static int adm5120_if_set_mac_address(struct net_device *dev, void *p)
- {
--      struct sockaddr *addr = p;
-+      int ret;
-+
-+      ret = eth_mac_addr(dev, p);
-+      if (ret)
-+              return ret;
- 
--      memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
-       adm5120_write_mac(dev);
-       return 0;
- }
-@@ -1017,6 +1020,18 @@ static int adm5120_if_do_ioctl(struct ne
-       return 0;
- }
- 
-+static const struct net_device_ops adm5120sw_netdev_ops = {
-+        .ndo_open               = adm5120_if_open,
-+        .ndo_stop               = adm5120_if_stop,
-+        .ndo_start_xmit         = adm5120_if_hard_start_xmit,
-+        .ndo_set_multicast_list = adm5120_if_set_multicast_list,
-+        .ndo_do_ioctl           = adm5120_if_do_ioctl,
-+        .ndo_tx_timeout         = adm5120_if_tx_timeout,
-+        .ndo_validate_addr      = eth_validate_addr,
-+        .ndo_change_mtu         = eth_change_mtu,
-+      .ndo_set_mac_address    = adm5120_if_set_mac_address,
-+};
-+
- static struct net_device *adm5120_if_alloc(void)
- {
-       struct net_device *dev;
-@@ -1030,14 +1045,8 @@ static struct net_device *adm5120_if_all
-       priv->dev = dev;
- 
-       dev->irq                = ADM5120_IRQ_SWITCH;
--      dev->open               = adm5120_if_open;
--      dev->hard_start_xmit    = adm5120_if_hard_start_xmit;
--      dev->stop               = adm5120_if_stop;
--      dev->set_multicast_list = adm5120_if_set_multicast_list;
--      dev->do_ioctl           = adm5120_if_do_ioctl;
--      dev->tx_timeout         = adm5120_if_tx_timeout;
-+      dev->netdev_ops         = &adm5120sw_netdev_ops;
-       dev->watchdog_timeo     = TX_TIMEOUT;
--      dev->set_mac_address    = adm5120_if_set_mac_address;
- 
- #ifdef CONFIG_ADM5120_SWITCH_NAPI
-       netif_napi_add(dev, &priv->napi, adm5120_if_poll, 64);
 
+++ /dev/null
---- a/arch/mips/adm5120/common/platform.c
-+++ b/arch/mips/adm5120/common/platform.c
-@@ -190,7 +190,7 @@ struct amba_pl010_data adm5120_uart0_dat
- 
- struct amba_device adm5120_uart0_device = {
-       .dev            = {
--              .bus_id = "APB:UART0",
-+              .init_name = "apb:uart0",
-               .platform_data = &adm5120_uart0_data,
-       },
-       .res            = {
-@@ -208,7 +208,7 @@ struct amba_pl010_data adm5120_uart1_dat
- 
- struct amba_device adm5120_uart1_device = {
-       .dev            = {
--              .bus_id = "APB:UART1",
-+              .init_name = "apb:uart1",
-               .platform_data = &adm5120_uart1_data,
-       },
-       .res            = {
 
+++ /dev/null
---- a/drivers/mtd/maps/adm5120-flash.c
-+++ b/drivers/mtd/maps/adm5120-flash.c
-@@ -233,7 +233,7 @@ static int adm5120_flash_initinfo(struct
-       struct flash_desc *fdesc;
-       u32 t = 0;
- 
--      map->name = dev->dev.bus_id;
-+      map->name = dev_name(&dev->dev);
- 
-       if (dev->id > 1) {
-               MAP_ERR(map, "invalid flash id\n");
 
+++ /dev/null
---- a/drivers/net/adm5120sw.c
-+++ b/drivers/net/adm5120sw.c
-@@ -517,7 +517,7 @@ static int adm5120_if_poll(struct napi_s
-       status = sw_int_status() & SWITCH_INTS_POLL;
-       if ((done < limit) && (!status)) {
-               SW_DBG("disable polling mode for %s\n", dev->name);
--              netif_rx_complete(dev, napi);
-+              napi_complete(napi);
-               sw_int_unmask(SWITCH_INTS_POLL);
-               return 0;
-       }
-@@ -548,7 +548,7 @@ static irqreturn_t adm5120_switch_irq(in
-               sw_dump_intr_mask("poll ints", status);
-               SW_DBG("enable polling mode for %s\n", dev->name);
-               sw_int_mask(SWITCH_INTS_POLL);
--              netif_rx_schedule(dev, &priv->napi);
-+              napi_schedule(&priv->napi);
-       }
- #else
-       sw_int_ack(status);
 
+++ /dev/null
---- a/arch/mips/adm5120/common/clock.c
-+++ b/arch/mips/adm5120/common/clock.c
-@@ -19,6 +19,7 @@
- #include <linux/module.h>
- #include <linux/err.h>
- #include <linux/clk.h>
-+#include <linux/device.h>
- 
- #include <asm/mach-adm5120/adm5120_defs.h>
- 
-@@ -32,7 +33,9 @@ static struct clk uart_clk = {
- 
- struct clk *clk_get(struct device *dev, const char *id)
- {
--      if (!strcmp(id, "UARTCLK"))
-+      char *name = dev_name(dev);
-+
-+      if (!strcmp(name, "apb:uart0") || !strcmp(name, "apb:uart1"))
-               return &uart_clk;
- 
-       return ERR_PTR(-ENOENT);
 
+++ /dev/null
---- a/drivers/net/adm5120sw.c
-+++ b/drivers/net/adm5120sw.c
-@@ -973,9 +973,12 @@ static void adm5120_if_set_multicast_lis
- 
- static int adm5120_if_set_mac_address(struct net_device *dev, void *p)
- {
--      struct sockaddr *addr = p;
-+      int ret;
-+
-+      ret = eth_mac_addr(dev, p);
-+      if (ret)
-+              return ret;
- 
--      memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
-       adm5120_write_mac(dev);
-       return 0;
- }
-@@ -1017,6 +1020,18 @@ static int adm5120_if_do_ioctl(struct ne
-       return 0;
- }
- 
-+static const struct net_device_ops adm5120sw_netdev_ops = {
-+        .ndo_open               = adm5120_if_open,
-+        .ndo_stop               = adm5120_if_stop,
-+        .ndo_start_xmit         = adm5120_if_hard_start_xmit,
-+        .ndo_set_multicast_list = adm5120_if_set_multicast_list,
-+        .ndo_do_ioctl           = adm5120_if_do_ioctl,
-+        .ndo_tx_timeout         = adm5120_if_tx_timeout,
-+        .ndo_validate_addr      = eth_validate_addr,
-+        .ndo_change_mtu         = eth_change_mtu,
-+      .ndo_set_mac_address    = adm5120_if_set_mac_address,
-+};
-+
- static struct net_device *adm5120_if_alloc(void)
- {
-       struct net_device *dev;
-@@ -1030,14 +1045,8 @@ static struct net_device *adm5120_if_all
-       priv->dev = dev;
- 
-       dev->irq                = ADM5120_IRQ_SWITCH;
--      dev->open               = adm5120_if_open;
--      dev->hard_start_xmit    = adm5120_if_hard_start_xmit;
--      dev->stop               = adm5120_if_stop;
--      dev->set_multicast_list = adm5120_if_set_multicast_list;
--      dev->do_ioctl           = adm5120_if_do_ioctl;
--      dev->tx_timeout         = adm5120_if_tx_timeout;
-+      dev->netdev_ops         = &adm5120sw_netdev_ops;
-       dev->watchdog_timeo     = TX_TIMEOUT;
--      dev->set_mac_address    = adm5120_if_set_mac_address;
- 
- #ifdef CONFIG_ADM5120_SWITCH_NAPI
-       netif_napi_add(dev, &priv->napi, adm5120_if_poll, 64);