diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
index 732e5c8..6718ae2 100644
--- a/arch/arm/cpu/armv7/sunxi/board.c
+++ b/arch/arm/cpu/armv7/sunxi/board.c
@@ -12,10 +12,6 @@
 
 #include <common.h>
 #include <i2c.h>
-#ifndef CONFIG_DM_ETH
-#include <netdev.h>
-#endif
-#include <miiphy.h>
 #include <serial.h>
 #ifdef CONFIG_SPL_BUILD
 #include <spl.h>
@@ -221,14 +217,6 @@
 	mdelay(200);
 #endif
 
-#if defined CONFIG_SUNXI_EMAC && !defined CONFIG_DM_ETH
-	rc = sunxi_emac_initialize(bis);
-	if (rc < 0) {
-		printf("sunxi: failed to initialize emac\n");
-		return rc;
-	}
-#endif
-
 #ifdef CONFIG_SUNXI_GMAC
 	rc = sunxi_gmac_initialize(bis);
 	if (rc < 0) {
diff --git a/drivers/net/sunxi_emac.c b/drivers/net/sunxi_emac.c
index 306a022..e939bf2 100644
--- a/drivers/net/sunxi_emac.c
+++ b/drivers/net/sunxi_emac.c
@@ -513,74 +513,6 @@
 	clrsetbits_le32(&regs->mac_mcfg, 0xf << 2, 0xd << 2);
 }
 
-#ifndef CONFIG_DM_ETH
-static int sunxi_emac_eth_init(struct eth_device *dev, bd_t *bis)
-{
-	return _sunxi_emac_eth_init(dev->priv, dev->enetaddr);
-}
-
-static void sunxi_emac_eth_halt(struct eth_device *dev)
-{
-	/* Nothing to do here */
-}
-
-static int sunxi_emac_eth_recv(struct eth_device *dev)
-{
-	int rx_len;
-
-	rx_len = _sunxi_emac_eth_recv(dev->priv, net_rx_packets[0]);
-	if (rx_len <= 0)
-		return 0;
-
-	/* Pass to upper layer */
-	net_process_received_packet(net_rx_packets[0], rx_len);
-
-	return rx_len;
-}
-
-static int sunxi_emac_eth_send(struct eth_device *dev, void *packet, int length)
-{
-	return _sunxi_emac_eth_send(dev->priv, packet, length);
-}
-
-int sunxi_emac_initialize(void)
-{
-	struct emac_regs *regs =
-		(struct emac_regs *)SUNXI_EMAC_BASE;
-	struct eth_device *dev;
-	struct emac_eth_dev *priv;
-
-	dev = malloc(sizeof(*dev));
-	if (dev == NULL)
-		return -ENOMEM;
-
-	priv = (struct emac_eth_dev *)malloc(sizeof(struct emac_eth_dev));
-	if (!priv) {
-		free(dev);
-		return -ENOMEM;
-	}
-
-	memset(dev, 0, sizeof(*dev));
-	memset(priv, 0, sizeof(struct emac_eth_dev));
-
-	priv->regs = regs;
-	dev->iobase = (int)regs;
-	dev->priv = priv;
-	dev->init = sunxi_emac_eth_init;
-	dev->halt = sunxi_emac_eth_halt;
-	dev->send = sunxi_emac_eth_send;
-	dev->recv = sunxi_emac_eth_recv;
-	strcpy(dev->name, "emac");
-
-	sunxi_emac_board_setup(priv);
-
-	eth_register(dev);
-
-	return sunxi_emac_init_phy(priv, dev);
-}
-#endif
-
-#ifdef CONFIG_DM_ETH
 static int sunxi_emac_eth_start(struct udevice *dev)
 {
 	struct eth_pdata *pdata = dev_get_platdata(dev);
@@ -653,4 +585,3 @@
 	.priv_auto_alloc_size = sizeof(struct emac_eth_dev),
 	.platdata_auto_alloc_size = sizeof(struct eth_pdata),
 };
-#endif
diff --git a/include/netdev.h b/include/netdev.h
index e6bdfdf..662d173 100644
--- a/include/netdev.h
+++ b/include/netdev.h
@@ -80,7 +80,6 @@
 int skge_initialize(bd_t *bis);
 int smc91111_initialize(u8 dev_num, int base_addr);
 int smc911x_initialize(u8 dev_num, int base_addr);
-int sunxi_emac_initialize(bd_t *bis);
 int tsi108_eth_initialize(bd_t *bis);
 int uec_standard_init(bd_t *bis);
 int uli526x_initialize(bd_t *bis);
