mirror of https://github.com/hak5/openwrt.git
brcm47xx: improve detection of Linksys WRTSL54GS
This closes #13319 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 37647lede-17.01
parent
6d7f796b52
commit
2b55968f5d
|
@ -1145,9 +1145,6 @@ static struct platform_t __init *platform_detect_legacy(void)
|
||||||
if (!strcmp(boardtype, "0x0101") && !strcmp(getvar("boot_ver"), "v3.6"))
|
if (!strcmp(boardtype, "0x0101") && !strcmp(getvar("boot_ver"), "v3.6"))
|
||||||
return &platforms[WRT54G3G];
|
return &platforms[WRT54G3G];
|
||||||
|
|
||||||
if (!strcmp(getvar("et1phyaddr"),"5") && !strcmp(getvar("et1mdcport"), "1"))
|
|
||||||
return &platforms[WRTSL54GS];
|
|
||||||
|
|
||||||
/* default to WRT54G */
|
/* default to WRT54G */
|
||||||
return &platforms[WRT54G];
|
return &platforms[WRT54G];
|
||||||
}
|
}
|
||||||
|
@ -1347,6 +1344,8 @@ static struct platform_t __init *platform_detect(void)
|
||||||
return &platforms[WRT610N];
|
return &platforms[WRT610N];
|
||||||
case BCM47XX_BOARD_LINKSYS_WRT610NV2:
|
case BCM47XX_BOARD_LINKSYS_WRT610NV2:
|
||||||
return &platforms[WRT610NV2];
|
return &platforms[WRT610NV2];
|
||||||
|
case BCM47XX_BOARD_LINKSYS_WRTSL54GS:
|
||||||
|
return &platforms[WRTSL54GS];
|
||||||
case BCM47XX_BOARD_MOTOROLA_WE800G:
|
case BCM47XX_BOARD_MOTOROLA_WE800G:
|
||||||
return &platforms[WE800G];
|
return &platforms[WE800G];
|
||||||
case BCM47XX_BOARD_MOTOROLA_WR850GP:
|
case BCM47XX_BOARD_MOTOROLA_WR850GP:
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o
|
obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/mips/bcm47xx/board.c
|
+++ b/arch/mips/bcm47xx/board.c
|
||||||
@@ -0,0 +1,223 @@
|
@@ -0,0 +1,235 @@
|
||||||
+#include <linux/export.h>
|
+#include <linux/export.h>
|
||||||
+#include <linux/string.h>
|
+#include <linux/string.h>
|
||||||
+#include <bcm47xx_board.h>
|
+#include <bcm47xx_board.h>
|
||||||
|
@ -38,6 +38,11 @@
|
||||||
+ { {0}, 0},
|
+ { {0}, 0},
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
|
+static const struct bcm47xx_board_type_list bcm47xx_board_list_machine_name[] = {
|
||||||
|
+ {{BCM47XX_BOARD_LINKSYS_WRTSL54GS, "Linksys WRTSL54GS"}, "WRTSL54GS",},
|
||||||
|
+ { {0}, 0},
|
||||||
|
+};
|
||||||
|
+
|
||||||
+static const struct bcm47xx_board_type_list bcm47xx_board_list_hardware_version[] = {
|
+static const struct bcm47xx_board_type_list bcm47xx_board_list_hardware_version[] = {
|
||||||
+ {{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16-",},
|
+ {{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16-",},
|
||||||
+ {{BCM47XX_BOARD_ASUS_WL330GE, "Asus WL330GE"}, "WL330GE-",},
|
+ {{BCM47XX_BOARD_ASUS_WL330GE, "Asus WL330GE"}, "WL330GE-",},
|
||||||
|
@ -156,6 +161,13 @@
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ if (bcm47xx_nvram_getenv("machine_name", buf1, sizeof(buf1)) >= 0) {
|
||||||
|
+ for (e = bcm47xx_board_list_machine_name; e->value1; e++) {
|
||||||
|
+ if (strstarts(buf1, e->value1))
|
||||||
|
+ return &e->board;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ if (bcm47xx_nvram_getenv("hardware_version", buf1, sizeof(buf1)) >= 0) {
|
+ if (bcm47xx_nvram_getenv("hardware_version", buf1, sizeof(buf1)) >= 0) {
|
||||||
+ for (e = bcm47xx_board_list_hardware_version; e->value1; e++) {
|
+ for (e = bcm47xx_board_list_hardware_version; e->value1; e++) {
|
||||||
+ if (strstarts(buf1, e->value1))
|
+ if (strstarts(buf1, e->value1))
|
||||||
|
@ -234,7 +246,7 @@
|
||||||
+EXPORT_SYMBOL(bcm47xx_board_get_name);
|
+EXPORT_SYMBOL(bcm47xx_board_get_name);
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
|
+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
|
||||||
@@ -0,0 +1,91 @@
|
@@ -0,0 +1,92 @@
|
||||||
+#ifndef __BCM47XX_BOARD_H
|
+#ifndef __BCM47XX_BOARD_H
|
||||||
+#define __BCM47XX_BOARD_H
|
+#define __BCM47XX_BOARD_H
|
||||||
+
|
+
|
||||||
|
@ -293,6 +305,7 @@
|
||||||
+ BCM47XX_BOARD_LINKSYS_WRT54G3GV2,
|
+ BCM47XX_BOARD_LINKSYS_WRT54G3GV2,
|
||||||
+ BCM47XX_BOARD_LINKSYS_WRT610NV1,
|
+ BCM47XX_BOARD_LINKSYS_WRT610NV1,
|
||||||
+ BCM47XX_BOARD_LINKSYS_WRT610NV2,
|
+ BCM47XX_BOARD_LINKSYS_WRT610NV2,
|
||||||
|
+ BCM47XX_BOARD_LINKSYS_WRTSL54GS,
|
||||||
+
|
+
|
||||||
+ BCM47XX_BOARD_MOTOROLA_WE800G,
|
+ BCM47XX_BOARD_MOTOROLA_WE800G,
|
||||||
+ BCM47XX_BOARD_MOTOROLA_WR850GP,
|
+ BCM47XX_BOARD_MOTOROLA_WR850GP,
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o
|
obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/mips/bcm47xx/board.c
|
+++ b/arch/mips/bcm47xx/board.c
|
||||||
@@ -0,0 +1,223 @@
|
@@ -0,0 +1,235 @@
|
||||||
+#include <linux/export.h>
|
+#include <linux/export.h>
|
||||||
+#include <linux/string.h>
|
+#include <linux/string.h>
|
||||||
+#include <bcm47xx_board.h>
|
+#include <bcm47xx_board.h>
|
||||||
|
@ -38,6 +38,11 @@
|
||||||
+ { {0}, 0},
|
+ { {0}, 0},
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
|
+static const struct bcm47xx_board_type_list bcm47xx_board_list_machine_name[] = {
|
||||||
|
+ {{BCM47XX_BOARD_LINKSYS_WRTSL54GS, "Linksys WRTSL54GS"}, "WRTSL54GS",},
|
||||||
|
+ { {0}, 0},
|
||||||
|
+};
|
||||||
|
+
|
||||||
+static const struct bcm47xx_board_type_list bcm47xx_board_list_hardware_version[] = {
|
+static const struct bcm47xx_board_type_list bcm47xx_board_list_hardware_version[] = {
|
||||||
+ {{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16-",},
|
+ {{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16-",},
|
||||||
+ {{BCM47XX_BOARD_ASUS_WL330GE, "Asus WL330GE"}, "WL330GE-",},
|
+ {{BCM47XX_BOARD_ASUS_WL330GE, "Asus WL330GE"}, "WL330GE-",},
|
||||||
|
@ -156,6 +161,13 @@
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ if (bcm47xx_nvram_getenv("machine_name", buf1, sizeof(buf1)) >= 0) {
|
||||||
|
+ for (e = bcm47xx_board_list_machine_name; e->value1; e++) {
|
||||||
|
+ if (strstarts(buf1, e->value1))
|
||||||
|
+ return &e->board;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ if (bcm47xx_nvram_getenv("hardware_version", buf1, sizeof(buf1)) >= 0) {
|
+ if (bcm47xx_nvram_getenv("hardware_version", buf1, sizeof(buf1)) >= 0) {
|
||||||
+ for (e = bcm47xx_board_list_hardware_version; e->value1; e++) {
|
+ for (e = bcm47xx_board_list_hardware_version; e->value1; e++) {
|
||||||
+ if (strstarts(buf1, e->value1))
|
+ if (strstarts(buf1, e->value1))
|
||||||
|
@ -234,7 +246,7 @@
|
||||||
+EXPORT_SYMBOL(bcm47xx_board_get_name);
|
+EXPORT_SYMBOL(bcm47xx_board_get_name);
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
|
+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
|
||||||
@@ -0,0 +1,91 @@
|
@@ -0,0 +1,92 @@
|
||||||
+#ifndef __BCM47XX_BOARD_H
|
+#ifndef __BCM47XX_BOARD_H
|
||||||
+#define __BCM47XX_BOARD_H
|
+#define __BCM47XX_BOARD_H
|
||||||
+
|
+
|
||||||
|
@ -293,6 +305,7 @@
|
||||||
+ BCM47XX_BOARD_LINKSYS_WRT54G3GV2,
|
+ BCM47XX_BOARD_LINKSYS_WRT54G3GV2,
|
||||||
+ BCM47XX_BOARD_LINKSYS_WRT610NV1,
|
+ BCM47XX_BOARD_LINKSYS_WRT610NV1,
|
||||||
+ BCM47XX_BOARD_LINKSYS_WRT610NV2,
|
+ BCM47XX_BOARD_LINKSYS_WRT610NV2,
|
||||||
|
+ BCM47XX_BOARD_LINKSYS_WRTSL54GS,
|
||||||
+
|
+
|
||||||
+ BCM47XX_BOARD_MOTOROLA_WE800G,
|
+ BCM47XX_BOARD_MOTOROLA_WE800G,
|
||||||
+ BCM47XX_BOARD_MOTOROLA_WR850GP,
|
+ BCM47XX_BOARD_MOTOROLA_WR850GP,
|
||||||
|
|
Loading…
Reference in New Issue