arm: socfpga: Fix ethernet reset handling
authorMarek Vasut <marex@denx.de>
Thu, 11 Feb 2016 15:36:43 +0000 (16:36 +0100)
committerMarek Vasut <marex@denx.de>
Wed, 24 Feb 2016 18:13:03 +0000 (19:13 +0100)
The following patch caused cpu_eth_init() to not be called anymore
for DM-capable boards:

commit c32a6fd07b1839e4a45729587ebc8e1c55601a4d
Date:   Sun Jan 17 14:51:56 2016 -0700
    net: Don't call board/cpu_eth_init() with driver model

This breaks ethernet on SoCFPGA, since we use that function to un-reset
the ethernet blocks. Invoke the ethernet reset function from arch_misc_init()
instead to fix the breakage.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Dinh Nguyen <dinguyen@opensource.altera.com>
Cc: Chin Liang See <clsee@altera.com>
Cc: Denis Bakhvalov <denis.bakhvalov@nokia.com>
arch/arm/mach-socfpga/misc.c

index 9b43b92f5bcd5faba60f691dc1cced2321b69593..ce3ff0acc4d38f558b21b49fc8b23463630b988d 100644 (file)
@@ -104,7 +104,7 @@ static void dwmac_deassert_reset(const unsigned int of_reset_id)
        socfpga_per_reset(reset, 0);
 }
 
-int cpu_eth_init(bd_t *bis)
+static int socfpga_eth_reset(void)
 {
        const void *fdt = gd->fdt_blob;
        struct fdtdec_phandle_args args;
@@ -137,6 +137,11 @@ int cpu_eth_init(bd_t *bis)
 
        return 0;
 }
+#else
+static int socfpga_eth_reset(void)
+{
+       return 0
+};
 #endif
 
 struct {
@@ -232,7 +237,7 @@ int arch_misc_init(void)
        setenv("bootmode", bsel_str[bsel].mode);
        if (fpga_id >= 0)
                setenv("fpgatype", socfpga_fpga_model[fpga_id].var);
-       return 0;
+       return socfpga_eth_reset();
 }
 #endif