aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/lantiq/patches-3.10/0210-lantiq-xrx200-firmware-multi-version.patch
blob: cf5e5cfba9f9ea36143b9ff9d89d4f67d43b90e0 (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
--- a/arch/mips/lantiq/xway/xrx200_phy_fw.c
+++ b/arch/mips/lantiq/xway/xrx200_phy_fw.c
@@ -24,7 +24,23 @@ static dma_addr_t xway_gphy_load(struct
 	void *fw_addr;
 	size_t size;
 
-	if (of_property_read_string(pdev->dev.of_node, "firmware", &fw_name)) {
+	if (of_get_property(pdev->dev.of_node, "firmware1", NULL) || of_get_property(pdev->dev.of_node, "firmware2", NULL)) {
+		switch(ltq_soc_type()) {
+			case SOC_TYPE_VR9:
+				if (of_property_read_string(pdev->dev.of_node, "firmware1", &fw_name)) {
+					dev_err(&pdev->dev, "failed to load firmware filename\n");
+					return 0;
+				}
+				break;
+			case SOC_TYPE_VR9_2:
+				if (of_property_read_string(pdev->dev.of_node, "firmware2", &fw_name)) {
+					dev_err(&pdev->dev, "failed to load firmware filename\n");
+					return 0;
+				}
+				break;
+		}
+	}
+	else if (of_property_read_string(pdev->dev.of_node, "firmware", &fw_name)) {
 		dev_err(&pdev->dev, "failed to load firmware filename\n");
 		return 0;
 	}