fm-eth: Don't mark the MAC we use for MDIO as disabled in device tree
authorKumar Gala <galak@kernel.crashing.org>
Thu, 13 Oct 2011 19:55:59 +0000 (14:55 -0500)
committerKumar Gala <galak@kernel.crashing.org>
Tue, 18 Oct 2011 05:36:15 +0000 (00:36 -0500)
FM1-DTSEC1's MAC was being marked as disabled if the port was not
configured based on the SoC configuration.  However we utilize the MAC
interface for MDIO and thus should NOT mark it disabled.

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
drivers/net/fm/init.c

index 512d7dd3de0ecee98c8bc853c2185713e9a9fbaf..953c359e6e45c1354e926b414124206c2bfc1b92 100644 (file)
@@ -183,6 +183,8 @@ static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
 {
        int off, ph;
        phys_addr_t paddr = CONFIG_SYS_CCSRBAR_PHYS + info->compat_offset;
+       u64 dtsec1_addr = (u64)CONFIG_SYS_CCSRBAR_PHYS +
+                               CONFIG_SYS_FSL_FM1_DTSEC1_OFFSET;
 
        off = fdt_node_offset_by_compat_reg(blob, prop, paddr);
 
@@ -195,9 +197,13 @@ static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
        /* board code might have caused offset to change */
        off = fdt_node_offset_by_compat_reg(blob, prop, paddr);
 
-       /* disable both the mac node and the node that has a handle to it */
-       fdt_setprop_string(blob, off, "status", "disabled");
+       /* Don't disable FM1-DTSEC1 MAC as its used for MDIO */
+       if (paddr != dtsec1_addr) {
+               /* disable the mac node */
+               fdt_setprop_string(blob, off, "status", "disabled");
+       }
 
+       /* disable the node point to the mac */
        ph = fdt_get_phandle(blob, off);
        do_fixup_by_prop(blob, "fsl,fman-mac", &ph, sizeof(ph),
                "status", "disabled", strlen("disabled") + 1, 1);