You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.3 KiB
101 lines
3.3 KiB
From 7515c6f1da334184c3ece06e6f61461086d8e2b1 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
|
|
Date: Wed, 1 Apr 2015 18:18:01 +0200
|
|
Subject: [PATCH] MIPS: BCM47xx: Keep ID entries for non-standard devices
|
|
together
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|
Cc: linux-mips@linux-mips.org
|
|
Cc: Hauke Mehrtens <hauke@hauke-m.de>
|
|
Patchwork: https://patchwork.linux-mips.org/patch/9655/
|
|
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
|
|
---
|
|
arch/mips/bcm47xx/board.c | 48 ++++++++++++++++++++---------------------------
|
|
1 file changed, 20 insertions(+), 28 deletions(-)
|
|
|
|
diff --git a/arch/mips/bcm47xx/board.c b/arch/mips/bcm47xx/board.c
|
|
index d4a5a51..f936dcc 100644
|
|
--- a/arch/mips/bcm47xx/board.c
|
|
+++ b/arch/mips/bcm47xx/board.c
|
|
@@ -40,20 +40,6 @@ struct bcm47xx_board_type_list1 bcm47xx_board_list_model_name[] __initconst = {
|
|
{ {0}, NULL},
|
|
};
|
|
|
|
-/* model_no */
|
|
-static const
|
|
-struct bcm47xx_board_type_list1 bcm47xx_board_list_model_no[] __initconst = {
|
|
- {{BCM47XX_BOARD_ASUS_WL700GE, "Asus WL700"}, "WL700"},
|
|
- { {0}, NULL},
|
|
-};
|
|
-
|
|
-/* machine_name */
|
|
-static const
|
|
-struct bcm47xx_board_type_list1 bcm47xx_board_list_machine_name[] __initconst = {
|
|
- {{BCM47XX_BOARD_LINKSYS_WRTSL54GS, "Linksys WRTSL54GS"}, "WRTSL54GS"},
|
|
- { {0}, NULL},
|
|
-};
|
|
-
|
|
/* hardware_version */
|
|
static const
|
|
struct bcm47xx_board_type_list1 bcm47xx_board_list_hardware_version[] __initconst = {
|
|
@@ -202,6 +188,18 @@ struct bcm47xx_board_type_list2 bcm47xx_board_list_board_type_rev[] __initconst
|
|
{ {0}, NULL},
|
|
};
|
|
|
|
+/*
|
|
+ * Some devices don't use any common NVRAM entry for identification and they
|
|
+ * have only one model specific variable.
|
|
+ * They don't deserve own arrays, let's group them there using key-value array.
|
|
+ */
|
|
+static const
|
|
+struct bcm47xx_board_type_list2 bcm47xx_board_list_key_value[] __initconst = {
|
|
+ {{BCM47XX_BOARD_ASUS_WL700GE, "Asus WL700"}, "model_no", "WL700"},
|
|
+ {{BCM47XX_BOARD_LINKSYS_WRTSL54GS, "Linksys WRTSL54GS"}, "machine_name", "WRTSL54GS"},
|
|
+ { {0}, NULL},
|
|
+};
|
|
+
|
|
static const
|
|
struct bcm47xx_board_type bcm47xx_board_unknown[] __initconst = {
|
|
{BCM47XX_BOARD_UNKNOWN, "Unknown Board"},
|
|
@@ -225,20 +223,6 @@ static __init const struct bcm47xx_board_type *bcm47xx_board_get_nvram(void)
|
|
}
|
|
}
|
|
|
|
- if (bcm47xx_nvram_getenv("model_no", buf1, sizeof(buf1)) >= 0) {
|
|
- for (e1 = bcm47xx_board_list_model_no; e1->value1; e1++) {
|
|
- if (strstarts(buf1, e1->value1))
|
|
- return &e1->board;
|
|
- }
|
|
- }
|
|
-
|
|
- if (bcm47xx_nvram_getenv("machine_name", buf1, sizeof(buf1)) >= 0) {
|
|
- for (e1 = bcm47xx_board_list_machine_name; e1->value1; e1++) {
|
|
- if (strstarts(buf1, e1->value1))
|
|
- return &e1->board;
|
|
- }
|
|
- }
|
|
-
|
|
if (bcm47xx_nvram_getenv("hardware_version", buf1, sizeof(buf1)) >= 0) {
|
|
for (e1 = bcm47xx_board_list_hardware_version; e1->value1; e1++) {
|
|
if (strstarts(buf1, e1->value1))
|
|
@@ -314,6 +298,14 @@ static __init const struct bcm47xx_board_type *bcm47xx_board_get_nvram(void)
|
|
return &e2->board;
|
|
}
|
|
}
|
|
+
|
|
+ for (e2 = bcm47xx_board_list_key_value; e2->value1; e2++) {
|
|
+ if (bcm47xx_nvram_getenv(e2->value1, buf1, sizeof(buf1)) >= 0) {
|
|
+ if (!strcmp(buf1, e2->value2))
|
|
+ return &e2->board;
|
|
+ }
|
|
+ }
|
|
+
|
|
return bcm47xx_board_unknown;
|
|
}
|
|
|
|
--
|
|
1.8.4.5
|
|
|
|
|