summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
Diffstat (limited to 'target')
-rw-r--r--target/mips/ath79/patches/4.1.13/0001-openwrt-ath79.patch47200
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0001-mtd-add-rb4xx-nand-driver.patch351
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0002-phy-add-ethtool-ioctl-support-used-by-ag71xx-driver.patch80
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0003-net-add-ag71xx-mac-driver.patch4245
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0004-drivers-link-SPI-drivers-before-MTD-drivers.patch27
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0005-spi-add-various-flags-to-spi_transfer-and-spi_messag.patch34
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0006-spi-add-rb4xx-SPI-driver.patch557
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0007-spi-add-rb4xx-cpld-driver.patch548
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0008-gpio-add-GPIO-latch-driver.patch290
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0009-spi-export-spi_bitbang_bufs-function.patch45
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0010-spi-add-type-field-to-spi_transfer-struct.patch37
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0011-mtd-m25p80-set-SPI-transfer-type.patch29
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0012-mips-ath79-swizzle-PCI-address-for-ar71xx.patch130
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0013-net-add-swconfig-support.patch1859
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0014-phy-add-detach-callback-to-struct-phy_driver.patch46
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0015-phy-add-ar8216-PHY-support.patch3671
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0016-phy-mdio-bitbang-ignore-TA-value.patch44
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0017-MIPS-ath79-fix-maximum-timeout.patch37
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0018-net-allow-PHY-drivers-to-insert-packet-mangle-hooks.patch211
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0019-MIPS-ath79-process-board-cmdline-option.patch26
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0020-spi-ath79-add-fast-flash-read-support.patch202
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0021-phy-add-mdio-boardinfo.patch227
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0022-mips-ath79-add-ath79-ethernet-driver.patch1429
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0023-MIPS-ath79-add-Mikrotik-rb4xx-device-support.patch536
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0024-various-fixups-for-Werror.patch105
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0025-rb4xx_nand-add-partition-for-cfgfs.patch28
-rw-r--r--target/mips/dragino-ms14s/patches/3.14.54/0026-various-fixups-for-ath5k-fixing-system-freezes.patch108
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0001-mtd-add-rb4xx-nand-driver.patch351
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0002-phy-add-ethtool-ioctl-support-used-by-ag71xx-driver.patch80
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0003-net-add-ag71xx-mac-driver.patch4245
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0004-drivers-link-SPI-drivers-before-MTD-drivers.patch27
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0005-spi-add-various-flags-to-spi_transfer-and-spi_messag.patch34
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0006-spi-add-rb4xx-SPI-driver.patch557
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0007-spi-add-rb4xx-cpld-driver.patch548
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0008-gpio-add-GPIO-latch-driver.patch290
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0009-spi-export-spi_bitbang_bufs-function.patch45
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0010-spi-add-type-field-to-spi_transfer-struct.patch37
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0011-mtd-m25p80-set-SPI-transfer-type.patch29
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0012-mips-ath79-swizzle-PCI-address-for-ar71xx.patch130
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0013-net-add-swconfig-support.patch1859
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0014-phy-add-detach-callback-to-struct-phy_driver.patch46
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0015-phy-add-ar8216-PHY-support.patch3671
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0016-phy-mdio-bitbang-ignore-TA-value.patch44
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0017-MIPS-ath79-fix-maximum-timeout.patch37
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0018-net-allow-PHY-drivers-to-insert-packet-mangle-hooks.patch211
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0019-MIPS-ath79-process-board-cmdline-option.patch26
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0020-spi-ath79-add-fast-flash-read-support.patch202
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0021-phy-add-mdio-boardinfo.patch227
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0022-mips-ath79-add-ath79-ethernet-driver.patch1429
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0023-MIPS-ath79-add-Mikrotik-rb4xx-device-support.patch536
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0024-various-fixups-for-Werror.patch105
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0025-rb4xx_nand-add-partition-for-cfgfs.patch28
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0026-various-fixups-for-ath5k-fixing-system-freezes.patch108
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0027-ar71xx-add-zboot-support.patch64
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0028-ag71xx-workaround-some-link-state-bug.patch39
-rw-r--r--target/mips/mikrotik-rb4xx/patches/3.14.54/0029-MIPS-Fix-build-with-binutils-2.24.51.patch474
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0001-mtd-add-rb4xx-nand-driver.patch351
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0002-phy-add-ethtool-ioctl-support-used-by-ag71xx-driver.patch80
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0003-net-add-ag71xx-mac-driver.patch4185
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0005-spi-add-various-flags-to-spi_transfer-and-spi_messag.patch34
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0006-spi-add-rb4xx-SPI-driver.patch538
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0007-spi-add-rb4xx-cpld-driver.patch525
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0008-gpio-add-GPIO-latch-driver.patch290
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0009-spi-export-spi_bitbang_bufs-function.patch45
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0010-spi-add-type-field-to-spi_transfer-struct.patch37
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0012-mips-ath79-swizzle-PCI-address-for-ar71xx.patch130
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0013-net-add-swconfig-support.patch1837
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0015-phy-add-ar8216-PHY-support.patch4513
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0016-phy-mdio-bitbang-ignore-TA-value.patch44
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0017-MIPS-ath79-fix-maximum-timeout.patch37
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0018-net-allow-PHY-drivers-to-insert-packet-mangle-hooks.patch167
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0019-MIPS-ath79-process-board-cmdline-option.patch26
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0020-spi-ath79-add-fast-flash-read-support.patch202
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0021-phy-add-mdio-boardinfo.patch199
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0022-mips-ath79-add-ath79-ethernet-driver.patch1429
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0023-MIPS-ath79-add-Mikrotik-rb4xx-device-support.patch536
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0024-various-fixups-for-Werror.patch66
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0025-rb4xx_nand-add-partition-for-cfgfs.patch28
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0027-ar71xx-add-zboot-support.patch64
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0028-ag71xx-workaround-some-link-state-bug.patch39
-rw-r--r--target/mips/mikrotik-rb4xx/patches/4.1.10/0029-gpio-add-gpio-latch-driver.patch1261
-rw-r--r--target/mips/systems/dragino-ms14s1
-rw-r--r--target/mips/systems/mikrotik-rb4xx1
83 files changed, 47202 insertions, 47044 deletions
diff --git a/target/mips/ath79/patches/4.1.13/0001-openwrt-ath79.patch b/target/mips/ath79/patches/4.1.13/0001-openwrt-ath79.patch
new file mode 100644
index 000000000..4178f20cb
--- /dev/null
+++ b/target/mips/ath79/patches/4.1.13/0001-openwrt-ath79.patch
@@ -0,0 +1,47200 @@
+diff -Nur linux-4.1.13.orig/arch/mips/ath79/clock.c linux-4.1.13/arch/mips/ath79/clock.c
+--- linux-4.1.13.orig/arch/mips/ath79/clock.c 2015-11-09 23:34:10.000000000 +0100
++++ linux-4.1.13/arch/mips/ath79/clock.c 2015-12-04 19:57:05.422010155 +0100
+@@ -25,7 +25,7 @@
+ #include "common.h"
+
+ #define AR71XX_BASE_FREQ 40000000
+-#define AR724X_BASE_FREQ 5000000
++#define AR724X_BASE_FREQ 40000000
+ #define AR913X_BASE_FREQ 5000000
+
+ struct clk {
+@@ -99,8 +99,8 @@
+ div = ((pll >> AR724X_PLL_DIV_SHIFT) & AR724X_PLL_DIV_MASK);
+ freq = div * ref_rate;
+
+- div = ((pll >> AR724X_PLL_REF_DIV_SHIFT) & AR724X_PLL_REF_DIV_MASK);
+- freq *= div;
++ div = ((pll >> AR724X_PLL_REF_DIV_SHIFT) & AR724X_PLL_REF_DIV_MASK) * 2;
++ freq /= div;
+
+ cpu_rate = freq;
+
+@@ -350,6 +350,91 @@
+ iounmap(dpll_base);
+ }
+
++static void __init qca953x_clocks_init(void)
++{
++ unsigned long ref_rate;
++ unsigned long cpu_rate;
++ unsigned long ddr_rate;
++ unsigned long ahb_rate;
++ u32 pll, out_div, ref_div, nint, frac, clk_ctrl, postdiv;
++ u32 cpu_pll, ddr_pll;
++ u32 bootstrap;
++
++ bootstrap = ath79_reset_rr(QCA953X_RESET_REG_BOOTSTRAP);
++ if (bootstrap & QCA953X_BOOTSTRAP_REF_CLK_40)
++ ref_rate = 40 * 1000 * 1000;
++ else
++ ref_rate = 25 * 1000 * 1000;
++
++ pll = ath79_pll_rr(QCA953X_PLL_CPU_CONFIG_REG);
++ out_div = (pll >> QCA953X_PLL_CPU_CONFIG_OUTDIV_SHIFT) &
++ QCA953X_PLL_CPU_CONFIG_OUTDIV_MASK;
++ ref_div = (pll >> QCA953X_PLL_CPU_CONFIG_REFDIV_SHIFT) &
++ QCA953X_PLL_CPU_CONFIG_REFDIV_MASK;
++ nint = (pll >> QCA953X_PLL_CPU_CONFIG_NINT_SHIFT) &
++ QCA953X_PLL_CPU_CONFIG_NINT_MASK;
++ frac = (pll >> QCA953X_PLL_CPU_CONFIG_NFRAC_SHIFT) &
++ QCA953X_PLL_CPU_CONFIG_NFRAC_MASK;
++
++ cpu_pll = nint * ref_rate / ref_div;
++ cpu_pll += frac * (ref_rate >> 6) / ref_div;
++ cpu_pll /= (1 << out_div);
++
++ pll = ath79_pll_rr(QCA953X_PLL_DDR_CONFIG_REG);
++ out_div = (pll >> QCA953X_PLL_DDR_CONFIG_OUTDIV_SHIFT) &
++ QCA953X_PLL_DDR_CONFIG_OUTDIV_MASK;
++ ref_div = (pll >> QCA953X_PLL_DDR_CONFIG_REFDIV_SHIFT) &
++ QCA953X_PLL_DDR_CONFIG_REFDIV_MASK;
++ nint = (pll >> QCA953X_PLL_DDR_CONFIG_NINT_SHIFT) &
++ QCA953X_PLL_DDR_CONFIG_NINT_MASK;
++ frac = (pll >> QCA953X_PLL_DDR_CONFIG_NFRAC_SHIFT) &
++ QCA953X_PLL_DDR_CONFIG_NFRAC_MASK;
++
++ ddr_pll = nint * ref_rate / ref_div;
++ ddr_pll += frac * (ref_rate >> 6) / (ref_div << 4);
++ ddr_pll /= (1 << out_div);
++
++ clk_ctrl = ath79_pll_rr(QCA953X_PLL_CLK_CTRL_REG);
++
++ postdiv = (clk_ctrl >> QCA953X_PLL_CLK_CTRL_CPU_POST_DIV_SHIFT) &
++ QCA953X_PLL_CLK_CTRL_CPU_POST_DIV_MASK;
++
++ if (clk_ctrl & QCA953X_PLL_CLK_CTRL_CPU_PLL_BYPASS)
++ cpu_rate = ref_rate;
++ else if (clk_ctrl & QCA953X_PLL_CLK_CTRL_CPUCLK_FROM_CPUPLL)
++ cpu_rate = cpu_pll / (postdiv + 1);
++ else
++ cpu_rate = ddr_pll / (postdiv + 1);
++
++ postdiv = (clk_ctrl >> QCA953X_PLL_CLK_CTRL_DDR_POST_DIV_SHIFT) &
++ QCA953X_PLL_CLK_CTRL_DDR_POST_DIV_MASK;
++
++ if (clk_ctrl & QCA953X_PLL_CLK_CTRL_DDR_PLL_BYPASS)
++ ddr_rate = ref_rate;
++ else if (clk_ctrl & QCA953X_PLL_CLK_CTRL_DDRCLK_FROM_DDRPLL)
++ ddr_rate = ddr_pll / (postdiv + 1);
++ else
++ ddr_rate = cpu_pll / (postdiv + 1);
++
++ postdiv = (clk_ctrl >> QCA953X_PLL_CLK_CTRL_AHB_POST_DIV_SHIFT) &
++ QCA953X_PLL_CLK_CTRL_AHB_POST_DIV_MASK;
++
++ if (clk_ctrl & QCA953X_PLL_CLK_CTRL_AHB_PLL_BYPASS)
++ ahb_rate = ref_rate;
++ else if (clk_ctrl & QCA953X_PLL_CLK_CTRL_AHBCLK_FROM_DDRPLL)
++ ahb_rate = ddr_pll / (postdiv + 1);
++ else
++ ahb_rate = cpu_pll / (postdiv + 1);
++
++ ath79_add_sys_clkdev("ref", ref_rate);
++ ath79_add_sys_clkdev("cpu", cpu_rate);
++ ath79_add_sys_clkdev("ddr", ddr_rate);
++ ath79_add_sys_clkdev("ahb", ahb_rate);
++
++ clk_add_alias("wdt", NULL, "ref", NULL);
++ clk_add_alias("uart", NULL, "ref", NULL);
++}
++
+ static void __init qca955x_clocks_init(void)
+ {
+ unsigned long ref_rate;
+@@ -435,6 +520,100 @@
+ clk_add_alias("uart", NULL, "ref", NULL);
+ }
+
++static void __init qca956x_clocks_init(void)
++{
++ unsigned long ref_rate;
++ unsigned long cpu_rate;
++ unsigned long ddr_rate;
++ unsigned long ahb_rate;
++ u32 pll, out_div, ref_div, nint, hfrac, lfrac, clk_ctrl, postdiv;
++ u32 cpu_pll, ddr_pll;
++ u32 bootstrap;
++
++ bootstrap = ath79_reset_rr(QCA956X_RESET_REG_BOOTSTRAP);
++ if (bootstrap & QCA956X_BOOTSTRAP_REF_CLK_40)
++ ref_rate = 40 * 1000 * 1000;
++ else
++ ref_rate = 25 * 1000 * 1000;
++
++ pll = ath79_pll_rr(QCA956X_PLL_CPU_CONFIG_REG);
++ out_div = (pll >> QCA956X_PLL_CPU_CONFIG_OUTDIV_SHIFT) &
++ QCA956X_PLL_CPU_CONFIG_OUTDIV_MASK;
++ ref_div = (pll >> QCA956X_PLL_CPU_CONFIG_REFDIV_SHIFT) &
++ QCA956X_PLL_CPU_CONFIG_REFDIV_MASK;
++
++ pll = ath79_pll_rr(QCA956X_PLL_CPU_CONFIG1_REG);
++ nint = (pll >> QCA956X_PLL_CPU_CONFIG1_NINT_SHIFT) &
++ QCA956X_PLL_CPU_CONFIG1_NINT_MASK;
++ hfrac = (pll >> QCA956X_PLL_CPU_CONFIG1_NFRAC_H_SHIFT) &
++ QCA956X_PLL_CPU_CONFIG1_NFRAC_H_MASK;
++ lfrac = (pll >> QCA956X_PLL_CPU_CONFIG1_NFRAC_L_SHIFT) &
++ QCA956X_PLL_CPU_CONFIG1_NFRAC_L_MASK;
++
++ cpu_pll = nint * ref_rate / ref_div;
++ cpu_pll += (lfrac * ref_rate) / ((ref_div * 25) << 13);
++ cpu_pll += (hfrac >> 13) * ref_rate / ref_div;
++ cpu_pll /= (1 << out_div);
++
++ pll = ath79_pll_rr(QCA956X_PLL_DDR_CONFIG_REG);
++ out_div = (pll >> QCA956X_PLL_DDR_CONFIG_OUTDIV_SHIFT) &
++ QCA956X_PLL_DDR_CONFIG_OUTDIV_MASK;
++ ref_div = (pll >> QCA956X_PLL_DDR_CONFIG_REFDIV_SHIFT) &
++ QCA956X_PLL_DDR_CONFIG_REFDIV_MASK;
++ pll = ath79_pll_rr(QCA956X_PLL_DDR_CONFIG1_REG);
++ nint = (pll >> QCA956X_PLL_DDR_CONFIG1_NINT_SHIFT) &
++ QCA956X_PLL_DDR_CONFIG1_NINT_MASK;
++ hfrac = (pll >> QCA956X_PLL_DDR_CONFIG1_NFRAC_H_SHIFT) &
++ QCA956X_PLL_DDR_CONFIG1_NFRAC_H_MASK;
++ lfrac = (pll >> QCA956X_PLL_DDR_CONFIG1_NFRAC_L_SHIFT) &
++ QCA956X_PLL_DDR_CONFIG1_NFRAC_L_MASK;
++
++ ddr_pll = nint * ref_rate / ref_div;
++ ddr_pll += (lfrac * ref_rate) / ((ref_div * 25) << 13);
++ ddr_pll += (hfrac >> 13) * ref_rate / ref_div;
++ ddr_pll /= (1 << out_div);
++
++ clk_ctrl = ath79_pll_rr(QCA956X_PLL_CLK_CTRL_REG);
++
++ postdiv = (clk_ctrl >> QCA956X_PLL_CLK_CTRL_CPU_POST_DIV_SHIFT) &
++ QCA956X_PLL_CLK_CTRL_CPU_POST_DIV_MASK;
++
++ if (clk_ctrl & QCA956X_PLL_CLK_CTRL_CPU_PLL_BYPASS)
++ cpu_rate = ref_rate;
++ else if (clk_ctrl & QCA956X_PLL_CLK_CTRL_CPU_DDRCLK_FROM_CPUPLL)
++ cpu_rate = ddr_pll / (postdiv + 1);
++ else
++ cpu_rate = cpu_pll / (postdiv + 1);
++
++ postdiv = (clk_ctrl >> QCA956X_PLL_CLK_CTRL_DDR_POST_DIV_SHIFT) &
++ QCA956X_PLL_CLK_CTRL_DDR_POST_DIV_MASK;
++
++ if (clk_ctrl & QCA956X_PLL_CLK_CTRL_DDR_PLL_BYPASS)
++ ddr_rate = ref_rate;
++ else if (clk_ctrl & QCA956X_PLL_CLK_CTRL_CPU_DDRCLK_FROM_DDRPLL)
++ ddr_rate = cpu_pll / (postdiv + 1);
++ else
++ ddr_rate = ddr_pll / (postdiv + 1);
++
++ postdiv = (clk_ctrl >> QCA956X_PLL_CLK_CTRL_AHB_POST_DIV_SHIFT) &
++ QCA956X_PLL_CLK_CTRL_AHB_POST_DIV_MASK;
++
++ if (clk_ctrl & QCA956X_PLL_CLK_CTRL_AHB_PLL_BYPASS)
++ ahb_rate = ref_rate;
++ else if (clk_ctrl & QCA956X_PLL_CLK_CTRL_AHBCLK_FROM_DDRPLL)
++ ahb_rate = ddr_pll / (postdiv + 1);
++ else
++ ahb_rate = cpu_pll / (postdiv + 1);
++
++ ath79_add_sys_clkdev("ref", ref_rate);
++ ath79_add_sys_clkdev("cpu", cpu_rate);
++ ath79_add_sys_clkdev("ddr", ddr_rate);
++ ath79_add_sys_clkdev("ahb", ahb_rate);
++
++ clk_add_alias("wdt", NULL, "ref", NULL);
++ clk_add_alias("uart", NULL, "ref", NULL);
++}
++
+ void __init ath79_clocks_init(void)
+ {
+ if (soc_is_ar71xx())
+@@ -447,8 +626,12 @@
+ ar933x_clocks_init();
+ else if (soc_is_ar934x())
+ ar934x_clocks_init();
++ else if (soc_is_qca953x())
++ qca953x_clocks_init();
+ else if (soc_is_qca955x())
+ qca955x_clocks_init();
++ else if (soc_is_qca956x())
++ qca956x_clocks_init();
+ else
+ BUG();
+ }
+@@ -488,3 +671,15 @@
+ return clk->rate;
+ }
+ EXPORT_SYMBOL(clk_get_rate);
++
++int clk_set_rate(struct clk *clk, unsigned long rate)
++{
++ return 0;
++}
++EXPORT_SYMBOL_GPL(clk_set_rate);
++
++long clk_round_rate(struct clk *clk, unsigned long rate)
++{
++ return 0;
++}
++EXPORT_SYMBOL_GPL(clk_round_rate);
+diff -Nur linux-4.1.13.orig/arch/mips/ath79/common.c linux-4.1.13/arch/mips/ath79/common.c
+--- linux-4.1.13.orig/arch/mips/ath79/common.c 2015-11-09 23:34:10.000000000 +0100
++++ linux-4.1.13/arch/mips/ath79/common.c 2015-12-04 19:57:04.474072175 +0100
+@@ -22,6 +22,7 @@
+ #include "common.h"
+
+ static DEFINE_SPINLOCK(ath79_device_reset_lock);
++static DEFINE_MUTEX(ath79_flash_mutex);
+
+ u32 ath79_cpu_freq;
+ EXPORT_SYMBOL_GPL(ath79_cpu_freq);
+@@ -72,10 +73,14 @@
+ reg = AR933X_RESET_REG_RESET_MODULE;
+ else if (soc_is_ar934x())
+ reg = AR934X_RESET_REG_RESET_MODULE;
++ else if (soc_is_qca953x())
++ reg = QCA953X_RESET_REG_RESET_MODULE;
+ else if (soc_is_qca955x())
+ reg = QCA955X_RESET_REG_RESET_MODULE;
++ else if (soc_is_qca956x())
++ reg = QCA956X_RESET_REG_RESET_MODULE;
+ else
+- BUG();
++ panic("Reset register not defined for this SOC");
+