199 lines
7.5 KiB
Diff
199 lines
7.5 KiB
Diff
|
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||
|
Date: Thu, 22 Oct 2015 00:33:25 +0200
|
||
|
Subject: ar71xx: fix ath79_soc_rev value for QCA9531 ver. 2
|
||
|
|
||
|
ath9k expects to get revision id 2 for the QCA9531 ver. 2 rev. 0. This
|
||
|
fixes the very low TX power on some devices like the TP-LINK
|
||
|
TL-WR841ND v10.
|
||
|
|
||
|
As ath79_soc_rev is only used to get the revision number to ath9k on the
|
||
|
QCA9533, just set it to the expected value on the ver. 2.
|
||
|
|
||
|
diff --git a/target/linux/ar71xx/patches-3.18/707-MIPS-ath79-add-support-for-QCA953x-SoC.patch b/target/linux/ar71xx/patches-3.18/707-MIPS-ath79-add-support-for-QCA953x-SoC.patch
|
||
|
index d541939..be53a5a 100644
|
||
|
--- a/target/linux/ar71xx/patches-3.18/707-MIPS-ath79-add-support-for-QCA953x-SoC.patch
|
||
|
+++ b/target/linux/ar71xx/patches-3.18/707-MIPS-ath79-add-support-for-QCA953x-SoC.patch
|
||
|
@@ -44,7 +44,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
config ATH79_NVRAM
|
||
|
--- a/arch/mips/ath79/clock.c
|
||
|
+++ b/arch/mips/ath79/clock.c
|
||
|
-@@ -350,6 +350,91 @@ static void __init ar934x_clocks_init(void)
|
||
|
+@@ -350,6 +350,91 @@ static void __init ar934x_clocks_init(vo
|
||
|
iounmap(dpll_base);
|
||
|
}
|
||
|
|
||
|
@@ -177,7 +177,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
platform_device_register(&ath79_uart_device);
|
||
|
--- a/arch/mips/ath79/dev-usb.c
|
||
|
+++ b/arch/mips/ath79/dev-usb.c
|
||
|
-@@ -236,6 +236,30 @@ static void __init ar934x_usb_setup(void)
|
||
|
+@@ -236,6 +236,30 @@ static void __init ar934x_usb_setup(void
|
||
|
&ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2));
|
||
|
}
|
||
|
|
||
|
@@ -228,7 +228,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
{
|
||
|
return ath79_soc_rev;
|
||
|
}
|
||
|
-@@ -126,7 +126,7 @@ static void __init ar933x_wmac_setup(void)
|
||
|
+@@ -126,7 +126,7 @@ static void __init ar933x_wmac_setup(voi
|
||
|
ath79_wmac_data.is_clk_25mhz = true;
|
||
|
|
||
|
if (ath79_soc_rev == 1)
|
||
|
@@ -237,8 +237,8 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
|
||
|
ath79_wmac_data.external_reset = ar933x_wmac_reset;
|
||
|
}
|
||
|
-@@ -151,6 +151,26 @@ static void ar934x_wmac_setup(void)
|
||
|
- ath79_wmac_data.get_mac_revision = ar93xx_get_soc_revision;
|
||
|
+@@ -149,6 +149,26 @@ static void ar934x_wmac_setup(void)
|
||
|
+ ath79_wmac_data.is_clk_25mhz = true;
|
||
|
}
|
||
|
|
||
|
+static void qca953x_wmac_setup(void)
|
||
|
@@ -264,7 +264,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
static void qca955x_wmac_setup(void)
|
||
|
{
|
||
|
u32 t;
|
||
|
-@@ -368,6 +388,8 @@ void __init ath79_register_wmac(u8 *cal_data, u8 *mac_addr)
|
||
|
+@@ -366,6 +386,8 @@ void __init ath79_register_wmac(u8 *cal_
|
||
|
ar933x_wmac_setup();
|
||
|
else if (soc_is_ar934x())
|
||
|
ar934x_wmac_setup();
|
||
|
@@ -286,7 +286,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
_prom_putchar = prom_putchar_ar71xx;
|
||
|
--- a/arch/mips/ath79/gpio.c
|
||
|
+++ b/arch/mips/ath79/gpio.c
|
||
|
-@@ -148,7 +148,7 @@ static void __iomem *ath79_gpio_get_function_reg(void)
|
||
|
+@@ -148,7 +148,7 @@ static void __iomem *ath79_gpio_get_func
|
||
|
soc_is_ar913x() ||
|
||
|
soc_is_ar933x())
|
||
|
reg = AR71XX_GPIO_REG_FUNC;
|
||
|
@@ -295,7 +295,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
reg = AR934X_GPIO_REG_FUNC;
|
||
|
else
|
||
|
BUG();
|
||
|
-@@ -187,7 +187,7 @@ void __init ath79_gpio_output_select(unsigned gpio, u8 val)
|
||
|
+@@ -187,7 +187,7 @@ void __init ath79_gpio_output_select(uns
|
||
|
unsigned int reg;
|
||
|
u32 t, s;
|
||
|
|
||
|
@@ -324,7 +324,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
}
|
||
|
--- a/arch/mips/ath79/irq.c
|
||
|
+++ b/arch/mips/ath79/irq.c
|
||
|
-@@ -106,6 +106,7 @@ static void __init ath79_misc_irq_init(void)
|
||
|
+@@ -106,6 +106,7 @@ static void __init ath79_misc_irq_init(v
|
||
|
else if (soc_is_ar724x() ||
|
||
|
soc_is_ar933x() ||
|
||
|
soc_is_ar934x() ||
|
||
|
@@ -405,7 +405,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
}
|
||
|
--- a/arch/mips/ath79/setup.c
|
||
|
+++ b/arch/mips/ath79/setup.c
|
||
|
-@@ -60,6 +60,7 @@ static void __init ath79_detect_sys_type(void)
|
||
|
+@@ -59,6 +59,7 @@ static void __init ath79_detect_sys_type
|
||
|
u32 major;
|
||
|
u32 minor;
|
||
|
u32 rev = 0;
|
||
|
@@ -413,12 +413,13 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
|
||
|
id = ath79_reset_rr(AR71XX_RESET_REG_REV_ID);
|
||
|
major = id & REV_ID_MAJOR_MASK;
|
||
|
-@@ -152,6 +153,16 @@ static void __init ath79_detect_sys_type(void)
|
||
|
+@@ -151,6 +152,17 @@ static void __init ath79_detect_sys_type
|
||
|
rev = id & AR934X_REV_ID_REVISION_MASK;
|
||
|
break;
|
||
|
|
||
|
+ case REV_ID_MAJOR_QCA9533_V2:
|
||
|
+ ver = 2;
|
||
|
++ ath79_soc_rev = 2;
|
||
|
+ /* drop through */
|
||
|
+
|
||
|
+ case REV_ID_MAJOR_QCA9533:
|
||
|
@@ -430,15 +431,23 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed.
|
||
|
case REV_ID_MAJOR_QCA9556:
|
||
|
ath79_soc = ATH79_SOC_QCA9556;
|
||
|
chip = "9556";
|
||
|
-@@ -170,7 +181,7 @@ static void __init ath79_detect_sys_type(void)
|
||
|
+@@ -167,11 +179,12 @@ static void __init ath79_detect_sys_type
|
||
|
+ panic("ath79: unknown SoC, id:0x%08x", id);
|
||
|
+ }
|
||
|
|
||
|
- ath79_soc_rev = rev;
|
||
|
+- ath79_soc_rev = rev;
|
||
|
++ if (ver == 1)
|
||
|
++ ath79_soc_rev = rev;
|
||
|
|
||
|
- if (soc_is_qca955x())
|
||
|
+- sprintf(ath79_sys_type, "Qualcomm Atheros QCA%s rev %u",
|
||
|
+- chip, rev);
|
||
|
+ if (soc_is_qca953x() || soc_is_qca955x())
|
||
|
- sprintf(ath79_sys_type, "Qualcomm Atheros QCA%s rev %u",
|
||
|
- chip, rev);
|
||
|
++ sprintf(ath79_sys_type, "Qualcomm Atheros QCA%s ver %u rev %u",
|
||
|
++ chip, ver, rev);
|
||
|
else
|
||
|
+ sprintf(ath79_sys_type, "Atheros AR%s rev %u", chip, rev);
|
||
|
+ pr_info("SoC: %s\n", ath79_sys_type);
|
||
|
--- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
|
||
|
+++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
|
||
|
@@ -105,6 +105,21 @@
|
||
|
diff --git a/target/linux/ar71xx/patches-3.18/735-MIPS-ath79-add-support-for-QCA956x-SoC.patch b/target/linux/ar71xx/patches-3.18/735-MIPS-ath79-add-support-for-QCA956x-SoC.patch
|
||
|
index 027163f..6e0b536 100644
|
||
|
--- a/target/linux/ar71xx/patches-3.18/735-MIPS-ath79-add-support-for-QCA956x-SoC.patch
|
||
|
+++ b/target/linux/ar71xx/patches-3.18/735-MIPS-ath79-add-support-for-QCA956x-SoC.patch
|
||
|
@@ -1,6 +1,6 @@
|
||
|
--- a/arch/mips/ath79/Kconfig
|
||
|
+++ b/arch/mips/ath79/Kconfig
|
||
|
-@@ -1213,6 +1213,12 @@ config SOC_QCA955X
|
||
|
+@@ -1248,6 +1248,12 @@ config SOC_QCA955X
|
||
|
select PCI_AR724X if PCI
|
||
|
def_bool n
|
||
|
|
||
|
@@ -13,7 +13,7 @@
|
||
|
config ATH79_DEV_M25P80
|
||
|
select ATH79_DEV_SPI
|
||
|
def_bool n
|
||
|
-@@ -1250,7 +1256,7 @@ config ATH79_DEV_USB
|
||
|
+@@ -1285,7 +1291,7 @@ config ATH79_DEV_USB
|
||
|
def_bool n
|
||
|
|
||
|
config ATH79_DEV_WMAC
|
||
|
@@ -452,7 +452,7 @@
|
||
|
return -ENODEV;
|
||
|
--- a/arch/mips/ath79/setup.c
|
||
|
+++ b/arch/mips/ath79/setup.c
|
||
|
-@@ -175,14 +175,29 @@ static void __init ath79_detect_sys_type
|
||
|
+@@ -176,6 +176,18 @@ static void __init ath79_detect_sys_type
|
||
|
rev = id & QCA955X_REV_ID_REVISION_MASK;
|
||
|
break;
|
||
|
|
||
|
@@ -471,19 +471,20 @@
|
||
|
default:
|
||
|
panic("ath79: unknown SoC, id:0x%08x", id);
|
||
|
}
|
||
|
-
|
||
|
- ath79_soc_rev = rev;
|
||
|
+@@ -183,9 +195,12 @@ static void __init ath79_detect_sys_type
|
||
|
+ if (ver == 1)
|
||
|
+ ath79_soc_rev = rev;
|
||
|
|
||
|
- if (soc_is_qca953x() || soc_is_qca955x())
|
||
|
-- sprintf(ath79_sys_type, "Qualcomm Atheros QCA%s rev %u",
|
||
|
+ if (soc_is_qca953x() || soc_is_qca955x() || soc_is_qca9561())
|
||
|
-+ sprintf(ath79_sys_type, "Qualcomm Atheros QCA%s ver %u rev %u",
|
||
|
-+ chip, ver, rev);
|
||
|
+ sprintf(ath79_sys_type, "Qualcomm Atheros QCA%s ver %u rev %u",
|
||
|
+ chip, ver, rev);
|
||
|
+ else if (soc_is_tp9343())
|
||
|
+ sprintf(ath79_sys_type, "Qualcomm Atheros TP%s rev %u",
|
||
|
- chip, rev);
|
||
|
++ chip, rev);
|
||
|
else
|
||
|
sprintf(ath79_sys_type, "Atheros AR%s rev %u", chip, rev);
|
||
|
+ pr_info("SoC: %s\n", ath79_sys_type);
|
||
|
--- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
|
||
|
+++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
|
||
|
@@ -143,6 +143,23 @@
|