davinci: Factor out emac mac address handling
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-davinci / board-dm644x-evm.c
index 987d27fcacb09b480e89787a40d27cba21a2a7b0..d9d40450bdc5d8c018b03c18305d282d1160faab 100644 (file)
@@ -44,6 +44,7 @@
 #include <mach/psc.h>
 #include <mach/nand.h>
 #include <mach/mmc.h>
+#include <mach/emac.h>
 #include <mach/common.h>
 
 #define DM644X_EVM_PHY_MASK            (0x2)
@@ -437,28 +438,13 @@ static struct pcf857x_platform_data pcf_data_u35 = {
  *  - 0x0039, 1 byte NTSC vs PAL (bit 0x80 == PAL)
  *  - ... newer boards may have more
  */
-static struct memory_accessor *at24_mem_acc;
-
-static void at24_setup(struct memory_accessor *mem_acc, void *context)
-{
-       char mac_addr[ETH_ALEN];
-       struct davinci_soc_info *soc_info = &davinci_soc_info;
-
-       at24_mem_acc = mem_acc;
-
-       /* Read MAC addr from EEPROM */
-       if (at24_mem_acc->read(at24_mem_acc, mac_addr, 0x7f00, ETH_ALEN) ==
-           ETH_ALEN) {
-               printk(KERN_INFO "Read MAC addr from EEPROM: %pM\n", mac_addr);
-               memcpy(soc_info->emac_pdata->mac_addr, mac_addr, ETH_ALEN);
-       }
-}
 
 static struct at24_platform_data eeprom_info = {
        .byte_len       = (256*1024) / 8,
        .page_size      = 64,
        .flags          = AT24_FLAG_ADDR16,
-       .setup          = at24_setup,
+       .setup          = davinci_get_mac_addr,
+       .context        = (void *)0x7f00,
 };
 
 /*
@@ -684,7 +670,6 @@ static __init void davinci_evm_init(void)
 
        soc_info->emac_pdata->phy_mask = DM644X_EVM_PHY_MASK;
        soc_info->emac_pdata->mdio_max_freq = DM644X_EVM_MDIO_FREQUENCY;
-       dm644x_init_emac(soc_info->emac_pdata);
 
        /* Register the fixup for PHY on DaVinci */
        phy_register_fixup_for_uid(LXT971_PHY_ID, LXT971_PHY_MASK,