dir825b1: Add image for DIR-825-B1 that uses the whole flash (must first be flashed with the 'standard' image) and an image to revert the change to allow reversion to stock firmware.
SVN-Revision: 33326master
parent
31e063d212
commit
c3b7139ab2
@ -0,0 +1,66 @@ |
||||
#!/bin/sh |
||||
# |
||||
# Copyright (C) 2011 OpenWrt.org |
||||
# |
||||
|
||||
. /lib/functions/uci-defaults.sh |
||||
. /lib/ar71xx.sh |
||||
|
||||
board=$(ar71xx_board_name) |
||||
|
||||
findmtd() { |
||||
local partname="$1" |
||||
grep "\"$partname\"" /proc/mtd | awk -F: '{ print $1 }' |
||||
} |
||||
|
||||
getcalmac() { |
||||
local partname="$1" |
||||
local offset="$2" |
||||
|
||||
hexdump -e '17/1 "%c"' -s $offset -n 17 /dev/$(findmtd $partname) | tr -d : | tr 'A-Z' 'a-z' |
||||
} |
||||
|
||||
calcmacX() { |
||||
local mac="$1" |
||||
local X="$2" |
||||
|
||||
local oui="$(expr substr "$mac" 1 6)" |
||||
local end="$(expr substr "$mac" 7 12)" |
||||
|
||||
echo -n $oui |
||||
expr substr "$(printf "%6lx" "$(($(printf "%lu" 0x${end}) + $X))")" 1 6 |
||||
} |
||||
|
||||
getifmac() { |
||||
local ifname="$1" |
||||
|
||||
local ifmac |
||||
|
||||
ifmac="$(ifconfig "$ifname" | grep HWaddr)" |
||||
ifmac="${ifmac#*HWaddr }" |
||||
ifmac="${ifmac%% *}" |
||||
|
||||
echo "$ifmac" | tr -d : | tr 'A-Z' 'a-z' |
||||
} |
||||
|
||||
case "$board" in |
||||
dir-825-b1) |
||||
mac1="$(getcalmac caldata 65440)" |
||||
mac1="$(calcmacX "$mac1" 2)" |
||||
mac2="$(calcmacX "$mac1" 1)" |
||||
|
||||
if grep -q '"owrt_caldata"' /proc/mtd && [ "$mac1" = "$(getifmac eth0)" ] && [ "$mac2" = "$(getifmac eth1)" ]; then |
||||
dd if=/dev/$(findmtd caldata) of=/dev/$(findmtd owrt_caldata) bs=65536 count=1 |
||||
fi |
||||
;; |
||||
dir-825-b1-tostock) |
||||
mac1="$(getcalmac owrt_caldata 65440)" |
||||
mac1="$(calcmacX "$mac1" 2)" |
||||
mac2="$(calcmacX "$mac1" 1)" |
||||
if grep -q '"owrt_caldata"' /proc/mtd && [ "$mac1" = "$(getifmac eth0)" ] && [ "$mac2" = "$(getifmac eth1)" ]; then |
||||
dd if=/dev/$(findmtd owrt_caldata) of=/dev/$(findmtd caldata) bs=65536 count=1 |
||||
fi |
||||
;; |
||||
esac |
||||
|
||||
return 0 |
@ -0,0 +1,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 */
|
Loading…
Reference in new issue