summaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/patches-3.3/640-MIPS-ath79-dir-825-b1-for-owrt-board-def.patch
blob: c3c383b0aeb16c4e3513ddae248f2e659ac55436 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
--- a/arch/mips/ath79/mach-dir-825-b1.c
+++ b/arch/mips/ath79/mach-dir-825-b1.c
@@ -46,6 +46,12 @@
 #define DIR825B1_MAC_LOCATION_0			0x1f66ffa0
 #define DIR825B1_MAC_LOCATION_1			0x1f66ffb4
 
+#define DIR825B1_OPENWRT_CAL_LOCATION_0		0x1f7f1000
+#define DIR825B1_OPENWRT_CAL_LOCATION_1		0x1f7f5000
+
+#define DIR825B1_OPENWRT_MAC_LOCATION_0		0x1f7fffa0
+#define DIR825B1_OPENWRT_MAC_LOCATION_1		0x1f7fffb4
+
 static struct gpio_led dir825b1_leds_gpio[] __initdata = {
 	{
 		.name		= "d-link:blue:usb",
@@ -124,12 +130,12 @@ static void dir825b1_read_ascii_mac(u8 *
 		memset(dest, 0, ETH_ALEN);
 }
 
-static void __init dir825b1_setup(void)
-{
+static void __init dir825b1_common_setup(unsigned int macloc1, unsigned int macloc2,
+	unsigned int calloc1, unsigned int calloc2) {
 	u8 mac1[ETH_ALEN], mac2[ETH_ALEN];
 
-	dir825b1_read_ascii_mac(mac1, DIR825B1_MAC_LOCATION_0);
-	dir825b1_read_ascii_mac(mac2, DIR825B1_MAC_LOCATION_1);
+	dir825b1_read_ascii_mac(mac1, macloc1);
+	dir825b1_read_ascii_mac(mac2, macloc2);
 
 	ath79_register_mdio(0, 0x0);
 
@@ -165,9 +171,27 @@ static void __init dir825b1_setup(void)
 	ap9x_pci_setup_wmac_led_pin(0, 5);
 	ap9x_pci_setup_wmac_led_pin(1, 5);
 
-	ap94_pci_init((u8 *) KSEG1ADDR(DIR825B1_CAL_LOCATION_0), mac1,
-		      (u8 *) KSEG1ADDR(DIR825B1_CAL_LOCATION_1), mac2);
+	ap94_pci_init((u8 *) KSEG1ADDR(calloc1), mac1,
+		      (u8 *) KSEG1ADDR(calloc2), mac2);
+}
+
+static void __init dir825b1_setup(void)
+{
+	dir825b1_common_setup(DIR825B1_MAC_LOCATION_0, DIR825B1_MAC_LOCATION_1,
+		DIR825B1_CAL_LOCATION_0, DIR825B1_CAL_LOCATION_1);
+}
+
+static void __init dir825b1_openwrt_setup(void)
+{
+	dir825b1_common_setup(DIR825B1_OPENWRT_MAC_LOCATION_0, DIR825B1_OPENWRT_MAC_LOCATION_1,
+		DIR825B1_OPENWRT_CAL_LOCATION_0, DIR825B1_OPENWRT_CAL_LOCATION_1);
 }
 
 MIPS_MACHINE(ATH79_MACH_DIR_825_B1, "DIR-825-B1", "D-Link DIR-825 rev. B1",
 	     dir825b1_setup);
+
+MIPS_MACHINE(ATH79_MACH_DIR_825_B1_OPENWRT, "DIR-825-B1_OPENWRT", "D-Link DIR-825 rev. B1 OpenWrt",
+	     dir825b1_openwrt_setup);
+
+MIPS_MACHINE(ATH79_MACH_DIR_825_B1_TOSTOCK, "DIR-825-B1_TOSTOCK", "D-Link DIR-825 rev. B1 TOSTOCK", dir825b1_openwrt_setup);
+
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
@@ -35,6 +35,8 @@ enum ath79_mach_type {
 	ATH79_MACH_DIR_615_C1,		/* D-Link DIR-615 rev. C1 */
 	ATH79_MACH_DIR_615_E4,		/* D-Link DIR-615 rev. E4 */
 	ATH79_MACH_DIR_825_B1,		/* D-Link DIR-825 rev. B1 */
+	ATH79_MACH_DIR_825_B1_OPENWRT,	/* D-Link DIR-825 rev. B1 OpenWrt */
+	ATH79_MACH_DIR_825_B1_TOSTOCK,	/* D-Link DIR-825 rev. B1 TOSTOCK */
 	ATH79_MACH_EW_DORIN,		/* embedded wireless Dorin Platform */
 	ATH79_MACH_EW_DORIN_ROUTER,	/* embedded wireless Dorin Router Platform */
 	ATH79_MACH_EAP7660D,		/* Senao EAP7660D */