--- a/arch/mips/ath79/dev-wmac.c
+++ b/arch/mips/ath79/dev-wmac.c
@@ -44,7 +44,7 @@ static struct platform_device ath79_wmac
 	},
 };
 
-static void __init ar913x_wmac_setup(void)
+static int ar913x_wmac_reset(void)
 {
 	/* reset the WMAC */
 	ath79_device_reset_set(AR913X_RESET_AMBA2WMAC);
@@ -53,10 +53,19 @@ static void __init ar913x_wmac_setup(voi
 	ath79_device_reset_clear(AR913X_RESET_AMBA2WMAC);
 	mdelay(10);
 
+	return 0;
+}
+
+static void __init ar913x_wmac_setup(void)
+{
+	ar913x_wmac_reset();
+
 	ath79_wmac_resources[0].start = AR913X_WMAC_BASE;
 	ath79_wmac_resources[0].end = AR913X_WMAC_BASE + AR913X_WMAC_SIZE - 1;
 	ath79_wmac_resources[1].start = ATH79_CPU_IRQ(2);
 	ath79_wmac_resources[1].end = ATH79_CPU_IRQ(2);
+
+	ath79_wmac_data.external_reset = ar913x_wmac_reset;
 }