diff mbox series

[LEDE-DEV] kernel: bump kernel 4.4 to 4.4.129 for 17.01

Message ID 20180428195124.56491-1-bladeoner112@gmail.com
State Accepted
Delegated to: John Crispin
Headers show
Series [LEDE-DEV] kernel: bump kernel 4.4 to 4.4.129 for 17.01 | expand

Commit Message

Etienne Haarsma April 28, 2018, 7:51 p.m. UTC
* Refreshed patches

Compile-tested: ar71xx
Run-tested: ar71xx

Signed-off-by: Etienne Haarsma  <bladeoner112@gmail.com>
---
 include/kernel-version.mk                     |  4 +--
 .../701-powerpc_ibm_apm82181_phyclk_fix.patch |  2 +-
 .../702-powerpc_ibm_phy_add_dt_parser.patch   | 10 +++----
 .../310-lib-add-rle-decompression.patch       |  2 +-
 .../910-unaligned_access_hacks.patch          | 12 ++++----
 ...a-round-up-ability-to-the-clock-divi.patch |  6 ++--
 ...5-Support-for-clock-parent-selection.patch |  8 +++---
 ...54-clk-bcm2835-Add-PWM-clock-support.patch |  2 +-
 ...ectly-enable-fractional-clock-suppor.patch |  6 ++--
 ...bcm2835-clean-up-coding-style-issues.patch |  4 +--
 ...pose-raw-clock-registers-via-debugfs.patch | 14 +++++-----
 ...ve-use-of-BCM2835_CLOCK_COUNT-in-dri.patch |  4 +--
 ...ganize-bcm2835_clock_array-assignmen.patch |  4 +--
 ...m2835-enable-management-of-PCM-clock.patch |  2 +-
 ...m2835-add-missing-PLL-clock-dividers.patch |  4 +--
 ...m2835-add-missing-osc-and-per-clocks.patch | 12 ++++----
 ...m2835-Mark-the-VPU-clock-as-critical.patch |  4 +--
 ...-GPIO-clocks-enabled-at-boot-as-crit.patch |  4 +--
 ...-PLLC-clocks-when-deciding-on-a-new-.patch |  4 +--
 ...-the-CM-SDRAM-clock-s-parent-as-crit.patch |  6 ++--
 ...t-rate-change-PLLs-on-behalf-of-divi.patch |  2 +-
 ...ppropriate-name-lookups-for-DSI1-s-p.patch |  6 ++--
 ...Add-an-enum-for-the-DSI1-pixel-clock.patch |  8 +++---
 ...p-the-PLL-s-requested-rate-to-the-ha.patch |  2 +-
 ...cm2835-Fix-fixed_divider-of-pllh_aux.patch |  2 +-
 ...rate-change-propagation-on-bcm2835-c.patch |  6 ++--
 ...te-change-propagation-to-PLLH_AUX-on.patch |  2 +-
 ...e-uninitialized-warning-in-bcm2835_c.patch |  2 +-
 ...t-rate-change-PLLs-on-behalf-of-DSI-.patch | 28 +++++++++----------
 ...nce-error-output-if-MS_SILENT-is-set.patch |  2 +-
 ...98-usb-dwc2-Remove-unnecessary-kfree.patch |  2 +-
 ...mtd-device-named-ubi-or-data-on-boot.patch |  4 +--
 .../530-jffs2_make_lzma_available.patch       |  2 +-
 .../653-disable_netlink_trim.patch            |  2 +-
 ...Add-support-for-MAP-E-FMRs-mesh-mode.patch | 28 +++++++++----------
 ...ng-with-source-address-failed-policy.patch | 18 ++++++------
 .../patches-4.4/701-phy_extension.patch       |  2 +-
 .../0026-NET-multi-phy-support.patch          |  6 ++--
 .../0001-NET-multi-phy-support.patch          |  6 ++--
 ...-a-hook-for-link-up-link-down-events.patch | 18 ++++++------
 ...export-phy_start_machine-for-phylink.patch |  2 +-
 .../0032-USB-dwc2-add-device_reset.patch      |  2 +-
 .../0034-NET-multi-phy-support.patch          |  6 ++--
 43 files changed, 136 insertions(+), 136 deletions(-)
diff mbox series

Patch

diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index ccffa7aa0e..5f2f87a4af 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -3,10 +3,10 @@ 
 LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .43
-LINUX_VERSION-4.4 = .126
+LINUX_VERSION-4.4 = .129
 
 LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
-LINUX_KERNEL_HASH-4.4.126 = e9c8f4c4cda89124e7c53bda979db3f9c12f7c177bee90ddd3ab38d5ae99cd58
+LINUX_KERNEL_HASH-4.4.129 = a165c4bada6a8d2355727ef6c97669e8c87c48f28bb410af34741c87fcf4712b
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
diff --git a/target/linux/apm821xx/patches-4.4/701-powerpc_ibm_apm82181_phyclk_fix.patch b/target/linux/apm821xx/patches-4.4/701-powerpc_ibm_apm82181_phyclk_fix.patch
index 011e785e99..3849645c28 100644
--- a/target/linux/apm821xx/patches-4.4/701-powerpc_ibm_apm82181_phyclk_fix.patch
+++ b/target/linux/apm821xx/patches-4.4/701-powerpc_ibm_apm82181_phyclk_fix.patch
@@ -30,7 +30,7 @@ 
  #endif
  }
  
-@@ -2587,7 +2596,7 @@ static int emac_init_config(struct emac_
+@@ -2605,7 +2614,7 @@ static int emac_init_config(struct emac_
  		if (of_device_is_compatible(np, "ibm,emac-apm821xx")) {
  			dev->features |= (EMAC_APM821XX_REQ_JUMBO_FRAME_SIZE |
  					  EMAC_FTR_APM821XX_NO_HALF_DUPLEX |
diff --git a/target/linux/apm821xx/patches-4.4/702-powerpc_ibm_phy_add_dt_parser.patch b/target/linux/apm821xx/patches-4.4/702-powerpc_ibm_phy_add_dt_parser.patch
index c84e761ed0..17efe08f95 100644
--- a/target/linux/apm821xx/patches-4.4/702-powerpc_ibm_phy_add_dt_parser.patch
+++ b/target/linux/apm821xx/patches-4.4/702-powerpc_ibm_phy_add_dt_parser.patch
@@ -18,7 +18,7 @@  Subject: [PATCH] phy device tree support for emac
  #include <linux/slab.h>
  
  #include <asm/processor.h>
-@@ -2392,6 +2393,246 @@ static int emac_read_uint_prop(struct de
+@@ -2410,6 +2411,246 @@ static int emac_read_uint_prop(struct de
  	return 0;
  }
  
@@ -265,7 +265,7 @@  Subject: [PATCH] phy device tree support for emac
  static int emac_init_phy(struct emac_instance *dev)
  {
  	struct device_node *np = dev->ofdev->dev.of_node;
-@@ -2462,6 +2703,18 @@ static int emac_init_phy(struct emac_ins
+@@ -2480,6 +2721,18 @@ static int emac_init_phy(struct emac_ins
  
  	emac_configure(dev);
  
@@ -284,7 +284,7 @@  Subject: [PATCH] phy device tree support for emac
  	if (dev->phy_address != 0xffffffff)
  		phy_map = ~(1 << dev->phy_address);
  
-@@ -2489,6 +2742,7 @@ static int emac_init_phy(struct emac_ins
+@@ -2507,6 +2760,7 @@ static int emac_init_phy(struct emac_ins
  		return -ENXIO;
  	}
  
@@ -292,7 +292,7 @@  Subject: [PATCH] phy device tree support for emac
  	/* Init PHY */
  	if (dev->phy.def->ops->init)
  		dev->phy.def->ops->init(&dev->phy);
-@@ -2907,6 +3161,8 @@ static int emac_probe(struct platform_de
+@@ -2925,6 +3179,8 @@ static int emac_probe(struct platform_de
  	/* I have a bad feeling about this ... */
  
   err_detach_tah:
@@ -301,7 +301,7 @@  Subject: [PATCH] phy device tree support for emac
  	if (emac_has_feature(dev, EMAC_FTR_HAS_TAH))
  		tah_detach(dev->tah_dev, dev->tah_port);
   err_detach_rgmii:
-@@ -2957,6 +3213,11 @@ static int emac_remove(struct platform_d
+@@ -2975,6 +3231,11 @@ static int emac_remove(struct platform_d
  	if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII))
  		zmii_detach(dev->zmii_dev, dev->zmii_port);
  
diff --git a/target/linux/ar71xx/patches-4.4/310-lib-add-rle-decompression.patch b/target/linux/ar71xx/patches-4.4/310-lib-add-rle-decompression.patch
index f5466db176..5b2d1a11de 100644
--- a/target/linux/ar71xx/patches-4.4/310-lib-add-rle-decompression.patch
+++ b/target/linux/ar71xx/patches-4.4/310-lib-add-rle-decompression.patch
@@ -12,7 +12,7 @@ 
  # ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.)
 --- a/lib/Makefile
 +++ b/lib/Makefile
-@@ -110,6 +110,7 @@ obj-$(CONFIG_XZ_DEC) += xz/
+@@ -108,6 +108,7 @@ obj-$(CONFIG_XZ_DEC) += xz/
  obj-$(CONFIG_RAID6_PQ) += raid6/
  obj-$(CONFIG_LZMA_COMPRESS) += lzma/
  obj-$(CONFIG_LZMA_DECOMPRESS) += lzma/
diff --git a/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch
index 7858abc64b..374f9be3b4 100644
--- a/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch
+++ b/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch
@@ -267,7 +267,7 @@ 
  		case IPV6_2292HOPOPTS:
 --- a/net/ipv6/ip6_gre.c
 +++ b/net/ipv6/ip6_gre.c
-@@ -395,7 +395,7 @@ static void ip6gre_err(struct sk_buff *s
+@@ -397,7 +397,7 @@ static void ip6gre_err(struct sk_buff *s
  		return;
  	ipv6h = (const struct ipv6hdr *)skb->data;
  	greh = (const struct gre_base_hdr *)(skb->data + offset);
@@ -276,7 +276,7 @@ 
  
  	t = ip6gre_tunnel_lookup(skb->dev, &ipv6h->daddr, &ipv6h->saddr,
  				 key, greh->protocol);
-@@ -482,11 +482,11 @@ static int ip6gre_rcv(struct sk_buff *sk
+@@ -484,11 +484,11 @@ static int ip6gre_rcv(struct sk_buff *sk
  			offset += 4;
  		}
  		if (flags&GRE_KEY) {
@@ -290,7 +290,7 @@ 
  			offset += 4;
  		}
  	}
-@@ -748,7 +748,7 @@ static netdev_tx_t ip6gre_xmit2(struct s
+@@ -750,7 +750,7 @@ static netdev_tx_t ip6gre_xmit2(struct s
  
  		if (tunnel->parms.o_flags&GRE_SEQ) {
  			++tunnel->o_seqno;
@@ -299,7 +299,7 @@ 
  			ptr--;
  		}
  		if (tunnel->parms.o_flags&GRE_KEY) {
-@@ -844,7 +844,7 @@ static inline int ip6gre_xmit_ipv6(struc
+@@ -846,7 +846,7 @@ static inline int ip6gre_xmit_ipv6(struc
  
  	dsfield = ipv6_get_dsfield(ipv6h);
  	if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
@@ -310,7 +310,7 @@ 
  	if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
 --- a/net/ipv6/ip6_tunnel.c
 +++ b/net/ipv6/ip6_tunnel.c
-@@ -1307,7 +1307,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1310,7 +1310,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  
  	dsfield = ipv6_get_dsfield(ipv6h);
  	if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
@@ -838,7 +838,7 @@ 
  
 --- a/net/ipv4/tcp_input.c
 +++ b/net/ipv4/tcp_input.c
-@@ -3818,14 +3818,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3820,14 +3820,16 @@ static bool tcp_parse_aligned_timestamp(
  {
  	const __be32 *ptr = (const __be32 *)(th + 1);
  
diff --git a/target/linux/brcm2708/patches-4.4/0252-clk-bcm2835-add-a-round-up-ability-to-the-clock-divi.patch b/target/linux/brcm2708/patches-4.4/0252-clk-bcm2835-add-a-round-up-ability-to-the-clock-divi.patch
index d9e82c78d2..8bf39adfbe 100644
--- a/target/linux/brcm2708/patches-4.4/0252-clk-bcm2835-add-a-round-up-ability-to-the-clock-divi.patch
+++ b/target/linux/brcm2708/patches-4.4/0252-clk-bcm2835-add-a-round-up-ability-to-the-clock-divi.patch
@@ -16,7 +16,7 @@  Signed-off-by: Michael Turquette <mturquette@baylibre.com>
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1170,22 +1170,24 @@ static int bcm2835_clock_is_on(struct cl
+@@ -1172,22 +1172,24 @@ static int bcm2835_clock_is_on(struct cl
  
  static u32 bcm2835_clock_choose_div(struct clk_hw *hw,
  				    unsigned long rate,
@@ -49,7 +49,7 @@  Signed-off-by: Michael Turquette <mturquette@baylibre.com>
  
  	/* clamp to min divider of 1 */
  	div = max_t(u32, div, 1 << CM_DIV_FRAC_BITS);
-@@ -1225,7 +1227,7 @@ static long bcm2835_clock_round_rate(str
+@@ -1227,7 +1229,7 @@ static long bcm2835_clock_round_rate(str
  				     unsigned long *parent_rate)
  {
  	struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
@@ -58,7 +58,7 @@  Signed-off-by: Michael Turquette <mturquette@baylibre.com>
  
  	return bcm2835_clock_rate_from_divisor(clock, *parent_rate, div);
  }
-@@ -1294,7 +1296,7 @@ static int bcm2835_clock_set_rate(struct
+@@ -1296,7 +1298,7 @@ static int bcm2835_clock_set_rate(struct
  	struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
  	struct bcm2835_cprman *cprman = clock->cprman;
  	const struct bcm2835_clock_data *data = clock->data;
diff --git a/target/linux/brcm2708/patches-4.4/0253-clk-bcm2835-Support-for-clock-parent-selection.patch b/target/linux/brcm2708/patches-4.4/0253-clk-bcm2835-Support-for-clock-parent-selection.patch
index afaadf6059..d436077c25 100644
--- a/target/linux/brcm2708/patches-4.4/0253-clk-bcm2835-Support-for-clock-parent-selection.patch
+++ b/target/linux/brcm2708/patches-4.4/0253-clk-bcm2835-Support-for-clock-parent-selection.patch
@@ -24,7 +24,7 @@  Signed-off-by: Michael Turquette <mturquette@baylibre.com>
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1222,16 +1222,6 @@ static long bcm2835_clock_rate_from_divi
+@@ -1224,16 +1224,6 @@ static long bcm2835_clock_rate_from_divi
  	return temp;
  }
  
@@ -41,7 +41,7 @@  Signed-off-by: Michael Turquette <mturquette@baylibre.com>
  static unsigned long bcm2835_clock_get_rate(struct clk_hw *hw,
  					    unsigned long parent_rate)
  {
-@@ -1303,13 +1293,75 @@ static int bcm2835_clock_set_rate(struct
+@@ -1305,13 +1295,75 @@ static int bcm2835_clock_set_rate(struct
  	return 0;
  }
  
@@ -118,7 +118,7 @@  Signed-off-by: Michael Turquette <mturquette@baylibre.com>
  };
  
  static int bcm2835_vpu_clock_is_on(struct clk_hw *hw)
-@@ -1325,7 +1377,9 @@ static const struct clk_ops bcm2835_vpu_
+@@ -1327,7 +1379,9 @@ static const struct clk_ops bcm2835_vpu_
  	.is_prepared = bcm2835_vpu_clock_is_on,
  	.recalc_rate = bcm2835_clock_get_rate,
  	.set_rate = bcm2835_clock_set_rate,
@@ -129,7 +129,7 @@  Signed-off-by: Michael Turquette <mturquette@baylibre.com>
  };
  
  static struct clk *bcm2835_register_pll(struct bcm2835_cprman *cprman,
-@@ -1419,45 +1473,23 @@ static struct clk *bcm2835_register_cloc
+@@ -1421,45 +1475,23 @@ static struct clk *bcm2835_register_cloc
  {
  	struct bcm2835_clock *clock;
  	struct clk_init_data init;
diff --git a/target/linux/brcm2708/patches-4.4/0254-clk-bcm2835-Add-PWM-clock-support.patch b/target/linux/brcm2708/patches-4.4/0254-clk-bcm2835-Add-PWM-clock-support.patch
index 8213d2b49b..65c5b6a469 100644
--- a/target/linux/brcm2708/patches-4.4/0254-clk-bcm2835-Add-PWM-clock-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0254-clk-bcm2835-Add-PWM-clock-support.patch
@@ -33,7 +33,7 @@  Signed-off-by: Michael Turquette <mturquette@baylibre.com>
  struct bcm2835_pll {
  	struct clk_hw hw;
  	struct bcm2835_cprman *cprman;
-@@ -1607,6 +1617,9 @@ static int bcm2835_clk_probe(struct plat
+@@ -1609,6 +1619,9 @@ static int bcm2835_clk_probe(struct plat
  				  cprman->regs + CM_PERIICTL, CM_GATE_BIT,
  				  0, &cprman->regs_lock);
  
diff --git a/target/linux/brcm2708/patches-4.4/0256-clk-bcm2835-correctly-enable-fractional-clock-suppor.patch b/target/linux/brcm2708/patches-4.4/0256-clk-bcm2835-correctly-enable-fractional-clock-suppor.patch
index 33578afeff..c1f1dba4e0 100644
--- a/target/linux/brcm2708/patches-4.4/0256-clk-bcm2835-correctly-enable-fractional-clock-suppor.patch
+++ b/target/linux/brcm2708/patches-4.4/0256-clk-bcm2835-correctly-enable-fractional-clock-suppor.patch
@@ -66,7 +66,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  };
  
  struct bcm2835_pll {
-@@ -1202,7 +1206,7 @@ static u32 bcm2835_clock_choose_div(stru
+@@ -1204,7 +1208,7 @@ static u32 bcm2835_clock_choose_div(stru
  		GENMASK(CM_DIV_FRAC_BITS - data->frac_bits, 0) >> 1;
  	u64 temp = (u64)parent_rate << CM_DIV_FRAC_BITS;
  	u64 rem;
@@ -75,7 +75,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  
  	rem = do_div(temp, rate);
  	div = temp;
-@@ -1212,11 +1216,23 @@ static u32 bcm2835_clock_choose_div(stru
+@@ -1214,11 +1218,23 @@ static u32 bcm2835_clock_choose_div(stru
  		div += unused_frac_mask + 1;
  	div &= ~unused_frac_mask;
  
@@ -104,7 +104,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  
  	return div;
  }
-@@ -1310,9 +1326,26 @@ static int bcm2835_clock_set_rate(struct
+@@ -1312,9 +1328,26 @@ static int bcm2835_clock_set_rate(struct
  	struct bcm2835_cprman *cprman = clock->cprman;
  	const struct bcm2835_clock_data *data = clock->data;
  	u32 div = bcm2835_clock_choose_div(hw, rate, parent_rate, false);
diff --git a/target/linux/brcm2708/patches-4.4/0257-clk-bcm2835-clean-up-coding-style-issues.patch b/target/linux/brcm2708/patches-4.4/0257-clk-bcm2835-clean-up-coding-style-issues.patch
index 62bca15035..71acdadc5e 100644
--- a/target/linux/brcm2708/patches-4.4/0257-clk-bcm2835-clean-up-coding-style-issues.patch
+++ b/target/linux/brcm2708/patches-4.4/0257-clk-bcm2835-clean-up-coding-style-issues.patch
@@ -33,7 +33,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  	const char *osc_name;
  
  	struct clk_onecell_data onecell;
-@@ -1350,7 +1347,7 @@ static int bcm2835_clock_set_rate(struct
+@@ -1352,7 +1349,7 @@ static int bcm2835_clock_set_rate(struct
  }
  
  static int bcm2835_clock_determine_rate(struct clk_hw *hw,
@@ -42,7 +42,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  {
  	struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
  	struct clk_hw *parent, *best_parent = NULL;
-@@ -1408,7 +1405,6 @@ static u8 bcm2835_clock_get_parent(struc
+@@ -1410,7 +1407,6 @@ static u8 bcm2835_clock_get_parent(struc
  	return (src & CM_SRC_MASK) >> CM_SRC_SHIFT;
  }
  
diff --git a/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch b/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch
index 391aab27ec..d7bcca201e 100644
--- a/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch
+++ b/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch
@@ -58,7 +58,7 @@  Acked-by: Eric Anholt <eric@anholt.net>
  /*
   * These are fixed clocks. They're probably not all root clocks and it may
   * be possible to turn them on and off but until this is mapped out better
-@@ -1048,6 +1070,36 @@ static int bcm2835_pll_set_rate(struct c
+@@ -1050,6 +1072,36 @@ static int bcm2835_pll_set_rate(struct c
  	return 0;
  }
  
@@ -95,7 +95,7 @@  Acked-by: Eric Anholt <eric@anholt.net>
  static const struct clk_ops bcm2835_pll_clk_ops = {
  	.is_prepared = bcm2835_pll_is_on,
  	.prepare = bcm2835_pll_on,
-@@ -1055,6 +1107,7 @@ static const struct clk_ops bcm2835_pll_
+@@ -1057,6 +1109,7 @@ static const struct clk_ops bcm2835_pll_
  	.recalc_rate = bcm2835_pll_get_rate,
  	.set_rate = bcm2835_pll_set_rate,
  	.round_rate = bcm2835_pll_round_rate,
@@ -103,7 +103,7 @@  Acked-by: Eric Anholt <eric@anholt.net>
  };
  
  struct bcm2835_pll_divider {
-@@ -1157,6 +1210,26 @@ static int bcm2835_pll_divider_set_rate(
+@@ -1159,6 +1212,26 @@ static int bcm2835_pll_divider_set_rate(
  	return 0;
  }
  
@@ -130,7 +130,7 @@  Acked-by: Eric Anholt <eric@anholt.net>
  static const struct clk_ops bcm2835_pll_divider_clk_ops = {
  	.is_prepared = bcm2835_pll_divider_is_on,
  	.prepare = bcm2835_pll_divider_on,
-@@ -1164,6 +1237,7 @@ static const struct clk_ops bcm2835_pll_
+@@ -1166,6 +1239,7 @@ static const struct clk_ops bcm2835_pll_
  	.recalc_rate = bcm2835_pll_divider_get_rate,
  	.set_rate = bcm2835_pll_divider_set_rate,
  	.round_rate = bcm2835_pll_divider_round_rate,
@@ -138,7 +138,7 @@  Acked-by: Eric Anholt <eric@anholt.net>
  };
  
  /*
-@@ -1405,6 +1479,31 @@ static u8 bcm2835_clock_get_parent(struc
+@@ -1407,6 +1481,31 @@ static u8 bcm2835_clock_get_parent(struc
  	return (src & CM_SRC_MASK) >> CM_SRC_SHIFT;
  }
  
@@ -170,7 +170,7 @@  Acked-by: Eric Anholt <eric@anholt.net>
  static const struct clk_ops bcm2835_clock_clk_ops = {
  	.is_prepared = bcm2835_clock_is_on,
  	.prepare = bcm2835_clock_on,
-@@ -1414,6 +1513,7 @@ static const struct clk_ops bcm2835_cloc
+@@ -1416,6 +1515,7 @@ static const struct clk_ops bcm2835_cloc
  	.determine_rate = bcm2835_clock_determine_rate,
  	.set_parent = bcm2835_clock_set_parent,
  	.get_parent = bcm2835_clock_get_parent,
@@ -178,7 +178,7 @@  Acked-by: Eric Anholt <eric@anholt.net>
  };
  
  static int bcm2835_vpu_clock_is_on(struct clk_hw *hw)
-@@ -1432,6 +1532,7 @@ static const struct clk_ops bcm2835_vpu_
+@@ -1434,6 +1534,7 @@ static const struct clk_ops bcm2835_vpu_
  	.determine_rate = bcm2835_clock_determine_rate,
  	.set_parent = bcm2835_clock_set_parent,
  	.get_parent = bcm2835_clock_get_parent,
diff --git a/target/linux/brcm2708/patches-4.4/0259-clk-bcm2835-remove-use-of-BCM2835_CLOCK_COUNT-in-dri.patch b/target/linux/brcm2708/patches-4.4/0259-clk-bcm2835-remove-use-of-BCM2835_CLOCK_COUNT-in-dri.patch
index 17824b482b..0f2b9398ad 100644
--- a/target/linux/brcm2708/patches-4.4/0259-clk-bcm2835-remove-use-of-BCM2835_CLOCK_COUNT-in-dri.patch
+++ b/target/linux/brcm2708/patches-4.4/0259-clk-bcm2835-remove-use-of-BCM2835_CLOCK_COUNT-in-dri.patch
@@ -56,7 +56,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  struct bcm2835_pll {
  	struct clk_hw hw;
  	struct bcm2835_cprman *cprman;
-@@ -1664,14 +1683,81 @@ static struct clk *bcm2835_register_cloc
+@@ -1666,14 +1685,81 @@ static struct clk *bcm2835_register_cloc
  	return devm_clk_register(cprman->dev, &clock->hw);
  }
  
@@ -139,7 +139,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  	if (!cprman)
  		return -ENOMEM;
  
-@@ -1688,80 +1774,15 @@ static int bcm2835_clk_probe(struct plat
+@@ -1690,80 +1776,15 @@ static int bcm2835_clk_probe(struct plat
  
  	platform_set_drvdata(pdev, cprman);
  
diff --git a/target/linux/brcm2708/patches-4.4/0260-clk-bcm2835-reorganize-bcm2835_clock_array-assignmen.patch b/target/linux/brcm2708/patches-4.4/0260-clk-bcm2835-reorganize-bcm2835_clock_array-assignmen.patch
index daef89bbf6..87f2f8d113 100644
--- a/target/linux/brcm2708/patches-4.4/0260-clk-bcm2835-reorganize-bcm2835_clock_array-assignmen.patch
+++ b/target/linux/brcm2708/patches-4.4/0260-clk-bcm2835-reorganize-bcm2835_clock_array-assignmen.patch
@@ -473,7 +473,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  struct bcm2835_pll {
  	struct clk_hw hw;
  	struct bcm2835_cprman *cprman;
-@@ -1600,7 +1183,7 @@ bcm2835_register_pll_divider(struct bcm2
+@@ -1602,7 +1185,7 @@ bcm2835_register_pll_divider(struct bcm2
  
  	memset(&init, 0, sizeof(init));
  
@@ -482,7 +482,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  	init.num_parents = 1;
  	init.name = divider_name;
  	init.ops = &bcm2835_pll_divider_clk_ops;
-@@ -1699,50 +1282,401 @@ struct bcm2835_clk_desc {
+@@ -1701,50 +1284,401 @@ struct bcm2835_clk_desc {
  	const void *data;
  };
  
diff --git a/target/linux/brcm2708/patches-4.4/0261-clk-bcm2835-enable-management-of-PCM-clock.patch b/target/linux/brcm2708/patches-4.4/0261-clk-bcm2835-enable-management-of-PCM-clock.patch
index a50197c20a..4adfec475b 100644
--- a/target/linux/brcm2708/patches-4.4/0261-clk-bcm2835-enable-management-of-PCM-clock.patch
+++ b/target/linux/brcm2708/patches-4.4/0261-clk-bcm2835-enable-management-of-PCM-clock.patch
@@ -17,7 +17,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1644,6 +1644,13 @@ static const struct bcm2835_clk_desc clk
+@@ -1646,6 +1646,13 @@ static const struct bcm2835_clk_desc clk
  		.div_reg = CM_HSMDIV,
  		.int_bits = 4,
  		.frac_bits = 8),
diff --git a/target/linux/brcm2708/patches-4.4/0262-clk-bcm2835-add-missing-PLL-clock-dividers.patch b/target/linux/brcm2708/patches-4.4/0262-clk-bcm2835-add-missing-PLL-clock-dividers.patch
index d87919f9c8..683cc79cbe 100644
--- a/target/linux/brcm2708/patches-4.4/0262-clk-bcm2835-add-missing-PLL-clock-dividers.patch
+++ b/target/linux/brcm2708/patches-4.4/0262-clk-bcm2835-add-missing-PLL-clock-dividers.patch
@@ -14,7 +14,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1393,6 +1393,22 @@ static const struct bcm2835_clk_desc clk
+@@ -1395,6 +1395,22 @@ static const struct bcm2835_clk_desc clk
  		.load_mask = CM_PLLA_LOADPER,
  		.hold_mask = CM_PLLA_HOLDPER,
  		.fixed_divider = 1),
@@ -37,7 +37,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  
  	/* PLLB is used for the ARM's clock. */
  	[BCM2835_PLLB]		= REGISTER_PLL(
-@@ -1507,6 +1523,22 @@ static const struct bcm2835_clk_desc clk
+@@ -1509,6 +1525,22 @@ static const struct bcm2835_clk_desc clk
  		.load_mask = CM_PLLD_LOADPER,
  		.hold_mask = CM_PLLD_HOLDPER,
  		.fixed_divider = 1),
diff --git a/target/linux/brcm2708/patches-4.4/0263-clk-bcm2835-add-missing-osc-and-per-clocks.patch b/target/linux/brcm2708/patches-4.4/0263-clk-bcm2835-add-missing-osc-and-per-clocks.patch
index 9c9518e4e5..5683b04bd5 100644
--- a/target/linux/brcm2708/patches-4.4/0263-clk-bcm2835-add-missing-osc-and-per-clocks.patch
+++ b/target/linux/brcm2708/patches-4.4/0263-clk-bcm2835-add-missing-osc-and-per-clocks.patch
@@ -26,7 +26,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  #define CM_EMMCCTL		0x1c0
  #define CM_EMMCDIV		0x1c4
  
-@@ -1616,6 +1618,12 @@ static const struct bcm2835_clk_desc clk
+@@ -1618,6 +1620,12 @@ static const struct bcm2835_clk_desc clk
  		.div_reg = CM_TSENSDIV,
  		.int_bits = 5,
  		.frac_bits = 0),
@@ -39,7 +39,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  
  	/* clocks with vpu parent mux */
  	[BCM2835_CLOCK_H264]	= REGISTER_VPU_CLK(
-@@ -1630,6 +1638,7 @@ static const struct bcm2835_clk_desc clk
+@@ -1632,6 +1640,7 @@ static const struct bcm2835_clk_desc clk
  		.div_reg = CM_ISPDIV,
  		.int_bits = 4,
  		.frac_bits = 8),
@@ -47,7 +47,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  	/*
  	 * Secondary SDRAM clock.  Used for low-voltage modes when the PLL
  	 * in the SDRAM controller can't be used.
-@@ -1661,6 +1670,36 @@ static const struct bcm2835_clk_desc clk
+@@ -1663,6 +1672,36 @@ static const struct bcm2835_clk_desc clk
  		.is_vpu_clock = true),
  
  	/* clocks with per parent mux */
@@ -84,7 +84,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  
  	/* Arasan EMMC clock */
  	[BCM2835_CLOCK_EMMC]	= REGISTER_PER_CLK(
-@@ -1669,6 +1708,29 @@ static const struct bcm2835_clk_desc clk
+@@ -1671,6 +1710,29 @@ static const struct bcm2835_clk_desc clk
  		.div_reg = CM_EMMCDIV,
  		.int_bits = 4,
  		.frac_bits = 8),
@@ -114,7 +114,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  	/* HDMI state machine */
  	[BCM2835_CLOCK_HSM]	= REGISTER_PER_CLK(
  		.name = "hsm",
-@@ -1690,12 +1752,26 @@ static const struct bcm2835_clk_desc clk
+@@ -1692,12 +1754,26 @@ static const struct bcm2835_clk_desc clk
  		.int_bits = 12,
  		.frac_bits = 12,
  		.is_mash_clock = true),
@@ -141,7 +141,7 @@  Reviewed-by: Eric Anholt <eric@anholt.net>
  	/* TV encoder clock.  Only operating frequency is 108Mhz.  */
  	[BCM2835_CLOCK_VEC]	= REGISTER_PER_CLK(
  		.name = "vec",
-@@ -1704,6 +1780,20 @@ static const struct bcm2835_clk_desc clk
+@@ -1706,6 +1782,20 @@ static const struct bcm2835_clk_desc clk
  		.int_bits = 4,
  		.frac_bits = 0),
  
diff --git a/target/linux/brcm2708/patches-4.4/0345-clk-bcm2835-Mark-the-VPU-clock-as-critical.patch b/target/linux/brcm2708/patches-4.4/0345-clk-bcm2835-Mark-the-VPU-clock-as-critical.patch
index 83c5accc5d..1395bebe08 100644
--- a/target/linux/brcm2708/patches-4.4/0345-clk-bcm2835-Mark-the-VPU-clock-as-critical.patch
+++ b/target/linux/brcm2708/patches-4.4/0345-clk-bcm2835-Mark-the-VPU-clock-as-critical.patch
@@ -27,7 +27,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  	bool is_vpu_clock;
  	bool is_mash_clock;
  };
-@@ -1248,7 +1250,7 @@ static struct clk *bcm2835_register_cloc
+@@ -1250,7 +1252,7 @@ static struct clk *bcm2835_register_cloc
  	init.parent_names = parents;
  	init.num_parents = data->num_mux_parents;
  	init.name = data->name;
@@ -36,7 +36,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  
  	if (data->is_vpu_clock) {
  		init.ops = &bcm2835_vpu_clock_clk_ops;
-@@ -1667,6 +1669,7 @@ static const struct bcm2835_clk_desc clk
+@@ -1669,6 +1671,7 @@ static const struct bcm2835_clk_desc clk
  		.div_reg = CM_VPUDIV,
  		.int_bits = 12,
  		.frac_bits = 8,
diff --git a/target/linux/brcm2708/patches-4.4/0346-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch b/target/linux/brcm2708/patches-4.4/0346-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
index 6c6a49d93a..d5d60c59a3 100644
--- a/target/linux/brcm2708/patches-4.4/0346-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
+++ b/target/linux/brcm2708/patches-4.4/0346-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
@@ -19,7 +19,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1252,6 +1252,15 @@ static struct clk *bcm2835_register_cloc
+@@ -1254,6 +1254,15 @@ static struct clk *bcm2835_register_cloc
  	init.name = data->name;
  	init.flags = data->flags | CLK_IGNORE_UNUSED;
  
@@ -35,7 +35,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  	if (data->is_vpu_clock) {
  		init.ops = &bcm2835_vpu_clock_clk_ops;
  	} else {
-@@ -1726,13 +1735,15 @@ static const struct bcm2835_clk_desc clk
+@@ -1728,13 +1737,15 @@ static const struct bcm2835_clk_desc clk
  		.div_reg = CM_GP1DIV,
  		.int_bits = 12,
  		.frac_bits = 12,
diff --git a/target/linux/brcm2708/patches-4.4/0347-clk-bcm2835-Skip-PLLC-clocks-when-deciding-on-a-new-.patch b/target/linux/brcm2708/patches-4.4/0347-clk-bcm2835-Skip-PLLC-clocks-when-deciding-on-a-new-.patch
index b8e56940f5..4ba4583592 100644
--- a/target/linux/brcm2708/patches-4.4/0347-clk-bcm2835-Skip-PLLC-clocks-when-deciding-on-a-new-.patch
+++ b/target/linux/brcm2708/patches-4.4/0347-clk-bcm2835-Skip-PLLC-clocks-when-deciding-on-a-new-.patch
@@ -22,7 +22,7 @@  Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1026,16 +1026,28 @@ static int bcm2835_clock_set_rate(struct
+@@ -1028,16 +1028,28 @@ static int bcm2835_clock_set_rate(struct
  	return 0;
  }
  
@@ -51,7 +51,7 @@  Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain
  	/*
  	 * Select parent clock that results in the closest but lower rate
  	 */
-@@ -1043,6 +1055,17 @@ static int bcm2835_clock_determine_rate(
+@@ -1045,6 +1057,17 @@ static int bcm2835_clock_determine_rate(
  		parent = clk_hw_get_parent_by_index(hw, i);
  		if (!parent)
  			continue;
diff --git a/target/linux/brcm2708/patches-4.4/0431-clk-bcm2835-Mark-the-CM-SDRAM-clock-s-parent-as-crit.patch b/target/linux/brcm2708/patches-4.4/0431-clk-bcm2835-Mark-the-CM-SDRAM-clock-s-parent-as-crit.patch
index b456bf5f92..7eaa99f64e 100644
--- a/target/linux/brcm2708/patches-4.4/0431-clk-bcm2835-Mark-the-CM-SDRAM-clock-s-parent-as-crit.patch
+++ b/target/linux/brcm2708/patches-4.4/0431-clk-bcm2835-Mark-the-CM-SDRAM-clock-s-parent-as-crit.patch
@@ -26,7 +26,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  #include <linux/clk/bcm2835.h>
  #include <linux/debugfs.h>
  #include <linux/module.h>
-@@ -1845,6 +1846,25 @@ static const struct bcm2835_clk_desc clk
+@@ -1847,6 +1848,25 @@ static const struct bcm2835_clk_desc clk
  		.ctl_reg = CM_PERIICTL),
  };
  
@@ -52,7 +52,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  static int bcm2835_clk_probe(struct platform_device *pdev)
  {
  	struct device *dev = &pdev->dev;
-@@ -1854,6 +1874,7 @@ static int bcm2835_clk_probe(struct plat
+@@ -1856,6 +1876,7 @@ static int bcm2835_clk_probe(struct plat
  	const struct bcm2835_clk_desc *desc;
  	const size_t asize = ARRAY_SIZE(clk_desc_array);
  	size_t i;
@@ -60,7 +60,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  
  	cprman = devm_kzalloc(dev,
  			      sizeof(*cprman) + asize * sizeof(*clks),
-@@ -1884,6 +1905,10 @@ static int bcm2835_clk_probe(struct plat
+@@ -1886,6 +1907,10 @@ static int bcm2835_clk_probe(struct plat
  			clks[i] = desc->clk_register(cprman, desc->data);
  	}
  
diff --git a/target/linux/brcm2708/patches-4.4/0432-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-divi.patch b/target/linux/brcm2708/patches-4.4/0432-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-divi.patch
index bc92c8adc3..adc7684d71 100644
--- a/target/linux/brcm2708/patches-4.4/0432-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-divi.patch
+++ b/target/linux/brcm2708/patches-4.4/0432-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-divi.patch
@@ -16,7 +16,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1215,7 +1215,7 @@ bcm2835_register_pll_divider(struct bcm2
+@@ -1217,7 +1217,7 @@ bcm2835_register_pll_divider(struct bcm2
  	init.num_parents = 1;
  	init.name = divider_name;
  	init.ops = &bcm2835_pll_divider_clk_ops;
diff --git a/target/linux/brcm2708/patches-4.4/0433-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch b/target/linux/brcm2708/patches-4.4/0433-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch
index c357d97e61..3f3641164a 100644
--- a/target/linux/brcm2708/patches-4.4/0433-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch
+++ b/target/linux/brcm2708/patches-4.4/0433-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch
@@ -64,7 +64,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  
  	struct clk_onecell_data onecell;
  	struct clk *clks[];
-@@ -1174,7 +1192,7 @@ static struct clk *bcm2835_register_pll(
+@@ -1176,7 +1194,7 @@ static struct clk *bcm2835_register_pll(
  	memset(&init, 0, sizeof(init));
  
  	/* All of the PLLs derive from the external oscillator. */
@@ -73,7 +73,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  	init.num_parents = 1;
  	init.name = data->name;
  	init.ops = &bcm2835_pll_clk_ops;
-@@ -1257,17 +1275,21 @@ static struct clk *bcm2835_register_cloc
+@@ -1259,17 +1277,21 @@ static struct clk *bcm2835_register_cloc
  	struct bcm2835_clock *clock;
  	struct clk_init_data init;
  	const char *parents[1 << CM_SRC_BITS];
@@ -102,7 +102,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  	}
  
  	memset(&init, 0, sizeof(init));
-@@ -1889,8 +1911,18 @@ static int bcm2835_clk_probe(struct plat
+@@ -1891,8 +1913,18 @@ static int bcm2835_clk_probe(struct plat
  	if (IS_ERR(cprman->regs))
  		return PTR_ERR(cprman->regs);
  
diff --git a/target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Add-an-enum-for-the-DSI1-pixel-clock.patch b/target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Add-an-enum-for-the-DSI1-pixel-clock.patch
index ad290031d7..e3a4d8c165 100644
--- a/target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Add-an-enum-for-the-DSI1-pixel-clock.patch
+++ b/target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Add-an-enum-for-the-DSI1-pixel-clock.patch
@@ -11,7 +11,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -940,6 +940,9 @@ static long bcm2835_clock_rate_from_divi
+@@ -942,6 +942,9 @@ static long bcm2835_clock_rate_from_divi
  	const struct bcm2835_clock_data *data = clock->data;
  	u64 temp;
  
@@ -21,7 +21,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  	/*
  	 * The divisor is a 12.12 fixed point field, but only some of
  	 * the bits are populated in any given clock.
-@@ -963,7 +966,12 @@ static unsigned long bcm2835_clock_get_r
+@@ -965,7 +968,12 @@ static unsigned long bcm2835_clock_get_r
  	struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
  	struct bcm2835_cprman *cprman = clock->cprman;
  	const struct bcm2835_clock_data *data = clock->data;
@@ -35,7 +35,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  
  	return bcm2835_clock_rate_from_divisor(clock, parent_rate, div);
  }
-@@ -1409,6 +1417,28 @@ static const char *const bcm2835_clock_v
+@@ -1411,6 +1419,28 @@ static const char *const bcm2835_clock_v
  	__VA_ARGS__)
  
  /*
@@ -64,7 +64,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
   * the real definition of all the pll, pll_dividers and clocks
   * these make use of the above REGISTER_* macros
   */
-@@ -1853,7 +1883,12 @@ static const struct bcm2835_clk_desc clk
+@@ -1855,7 +1885,12 @@ static const struct bcm2835_clk_desc clk
  		.div_reg = CM_DSI1EDIV,
  		.int_bits = 4,
  		.frac_bits = 8),
diff --git a/target/linux/brcm2708/patches-4.4/0521-clk-bcm2835-Clamp-the-PLL-s-requested-rate-to-the-ha.patch b/target/linux/brcm2708/patches-4.4/0521-clk-bcm2835-Clamp-the-PLL-s-requested-rate-to-the-ha.patch
index b209bbc523..0cc4136194 100644
--- a/target/linux/brcm2708/patches-4.4/0521-clk-bcm2835-Clamp-the-PLL-s-requested-rate-to-the-ha.patch
+++ b/target/linux/brcm2708/patches-4.4/0521-clk-bcm2835-Clamp-the-PLL-s-requested-rate-to-the-ha.patch
@@ -27,7 +27,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
  	bcm2835_pll_choose_ndiv_and_fdiv(rate, *parent_rate, &ndiv, &fdiv);
  
  	return bcm2835_pll_rate_from_divisors(*parent_rate, ndiv, fdiv, 1);
-@@ -631,13 +635,6 @@ static int bcm2835_pll_set_rate(struct c
+@@ -633,13 +637,6 @@ static int bcm2835_pll_set_rate(struct c
  	u32 ana[4];
  	int i;
  
diff --git a/target/linux/brcm2708/patches-4.4/0580-clk-bcm2835-Fix-fixed_divider-of-pllh_aux.patch b/target/linux/brcm2708/patches-4.4/0580-clk-bcm2835-Fix-fixed_divider-of-pllh_aux.patch
index 72f3ec6515..7b8f55880c 100644
--- a/target/linux/brcm2708/patches-4.4/0580-clk-bcm2835-Fix-fixed_divider-of-pllh_aux.patch
+++ b/target/linux/brcm2708/patches-4.4/0580-clk-bcm2835-Fix-fixed_divider-of-pllh_aux.patch
@@ -16,7 +16,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1661,7 +1661,7 @@ static const struct bcm2835_clk_desc clk
+@@ -1663,7 +1663,7 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLH_AUX,
  		.load_mask = CM_PLLH_LOADAUX,
  		.hold_mask = 0,
diff --git a/target/linux/brcm2708/patches-4.4/0581-clk-bcm-Support-rate-change-propagation-on-bcm2835-c.patch b/target/linux/brcm2708/patches-4.4/0581-clk-bcm-Support-rate-change-propagation-on-bcm2835-c.patch
index fab8fe7164..d04059cd02 100644
--- a/target/linux/brcm2708/patches-4.4/0581-clk-bcm-Support-rate-change-propagation-on-bcm2835-c.patch
+++ b/target/linux/brcm2708/patches-4.4/0581-clk-bcm-Support-rate-change-propagation-on-bcm2835-c.patch
@@ -34,7 +34,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	u32 ctl_reg;
  	u32 div_reg;
  
-@@ -1059,10 +1062,60 @@ bcm2835_clk_is_pllc(struct clk_hw *hw)
+@@ -1061,10 +1064,60 @@ bcm2835_clk_is_pllc(struct clk_hw *hw)
  	return strncmp(clk_hw_get_name(hw), "pllc", 4) == 0;
  }
  
@@ -96,7 +96,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	struct clk_hw *parent, *best_parent = NULL;
  	bool current_parent_is_pllc;
  	unsigned long rate, best_rate = 0;
-@@ -1090,9 +1143,8 @@ static int bcm2835_clock_determine_rate(
+@@ -1092,9 +1145,8 @@ static int bcm2835_clock_determine_rate(
  		if (bcm2835_clk_is_pllc(parent) && !current_parent_is_pllc)
  			continue;
  
@@ -108,7 +108,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  		if (rate > best_rate && rate <= req->rate) {
  			best_parent = parent;
  			best_prate = prate;
-@@ -1312,6 +1364,13 @@ static struct clk *bcm2835_register_cloc
+@@ -1314,6 +1366,13 @@ static struct clk *bcm2835_register_cloc
  	if ((cprman_read(cprman, data->ctl_reg) & CM_ENABLE) == 0)
  		init.flags &= ~CLK_IS_CRITICAL;
  
diff --git a/target/linux/brcm2708/patches-4.4/0582-clk-bcm-Allow-rate-change-propagation-to-PLLH_AUX-on.patch b/target/linux/brcm2708/patches-4.4/0582-clk-bcm-Allow-rate-change-propagation-to-PLLH_AUX-on.patch
index 9bf5ea3033..5d403b2a03 100644
--- a/target/linux/brcm2708/patches-4.4/0582-clk-bcm-Allow-rate-change-propagation-to-PLLH_AUX-on.patch
+++ b/target/linux/brcm2708/patches-4.4/0582-clk-bcm-Allow-rate-change-propagation-to-PLLH_AUX-on.patch
@@ -19,7 +19,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1924,7 +1924,12 @@ static const struct bcm2835_clk_desc clk
+@@ -1926,7 +1926,12 @@ static const struct bcm2835_clk_desc clk
  		.ctl_reg = CM_VECCTL,
  		.div_reg = CM_VECDIV,
  		.int_bits = 4,
diff --git a/target/linux/brcm2708/patches-4.4/0583-clk-bcm-Fix-maybe-uninitialized-warning-in-bcm2835_c.patch b/target/linux/brcm2708/patches-4.4/0583-clk-bcm-Fix-maybe-uninitialized-warning-in-bcm2835_c.patch
index e8e4d24ceb..bc86027eba 100644
--- a/target/linux/brcm2708/patches-4.4/0583-clk-bcm-Fix-maybe-uninitialized-warning-in-bcm2835_c.patch
+++ b/target/linux/brcm2708/patches-4.4/0583-clk-bcm-Fix-maybe-uninitialized-warning-in-bcm2835_c.patch
@@ -18,7 +18,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
 
 --- a/drivers/clk/bcm/clk-bcm2835.c
 +++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1071,7 +1071,7 @@ static unsigned long bcm2835_clock_choos
+@@ -1073,7 +1073,7 @@ static unsigned long bcm2835_clock_choos
  	struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
  	struct bcm2835_cprman *cprman = clock->cprman;
  	const struct bcm2835_clock_data *data = clock->data;
diff --git a/target/linux/brcm2708/patches-4.4/0584-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-DSI-.patch b/target/linux/brcm2708/patches-4.4/0584-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-DSI-.patch
index d91bb5672e..c79ffb5e8e 100644
--- a/target/linux/brcm2708/patches-4.4/0584-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-DSI-.patch
+++ b/target/linux/brcm2708/patches-4.4/0584-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-DSI-.patch
@@ -31,7 +31,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  };
  
  struct bcm2835_clock_data {
-@@ -1290,7 +1291,7 @@ bcm2835_register_pll_divider(struct bcm2
+@@ -1292,7 +1293,7 @@ bcm2835_register_pll_divider(struct bcm2
  	init.num_parents = 1;
  	init.name = divider_name;
  	init.ops = &bcm2835_pll_divider_clk_ops;
@@ -40,7 +40,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  
  	divider = devm_kzalloc(cprman->dev, sizeof(*divider), GFP_KERNEL);
  	if (!divider)
-@@ -1529,7 +1530,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1531,7 +1532,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLA_CORE,
  		.load_mask = CM_PLLA_LOADCORE,
  		.hold_mask = CM_PLLA_HOLDCORE,
@@ -50,7 +50,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	[BCM2835_PLLA_PER]	= REGISTER_PLL_DIV(
  		.name = "plla_per",
  		.source_pll = "plla",
-@@ -1537,7 +1539,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1539,7 +1541,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLA_PER,
  		.load_mask = CM_PLLA_LOADPER,
  		.hold_mask = CM_PLLA_HOLDPER,
@@ -60,7 +60,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	[BCM2835_PLLA_DSI0]	= REGISTER_PLL_DIV(
  		.name = "plla_dsi0",
  		.source_pll = "plla",
-@@ -1553,7 +1556,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1555,7 +1558,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLA_CCP2,
  		.load_mask = CM_PLLA_LOADCCP2,
  		.hold_mask = CM_PLLA_HOLDCCP2,
@@ -70,7 +70,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  
  	/* PLLB is used for the ARM's clock. */
  	[BCM2835_PLLB]		= REGISTER_PLL(
-@@ -1577,7 +1581,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1579,7 +1583,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLB_ARM,
  		.load_mask = CM_PLLB_LOADARM,
  		.hold_mask = CM_PLLB_HOLDARM,
@@ -80,7 +80,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  
  	/*
  	 * PLLC is the core PLL, used to drive the core VPU clock.
-@@ -1606,7 +1611,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1608,7 +1613,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLC_CORE0,
  		.load_mask = CM_PLLC_LOADCORE0,
  		.hold_mask = CM_PLLC_HOLDCORE0,
@@ -90,7 +90,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	[BCM2835_PLLC_CORE1]	= REGISTER_PLL_DIV(
  		.name = "pllc_core1",
  		.source_pll = "pllc",
-@@ -1614,7 +1620,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1616,7 +1622,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLC_CORE1,
  		.load_mask = CM_PLLC_LOADCORE1,
  		.hold_mask = CM_PLLC_HOLDCORE1,
@@ -100,7 +100,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	[BCM2835_PLLC_CORE2]	= REGISTER_PLL_DIV(
  		.name = "pllc_core2",
  		.source_pll = "pllc",
-@@ -1622,7 +1629,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1624,7 +1631,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLC_CORE2,
  		.load_mask = CM_PLLC_LOADCORE2,
  		.hold_mask = CM_PLLC_HOLDCORE2,
@@ -110,7 +110,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	[BCM2835_PLLC_PER]	= REGISTER_PLL_DIV(
  		.name = "pllc_per",
  		.source_pll = "pllc",
-@@ -1630,7 +1638,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1632,7 +1640,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLC_PER,
  		.load_mask = CM_PLLC_LOADPER,
  		.hold_mask = CM_PLLC_HOLDPER,
@@ -120,7 +120,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  
  	/*
  	 * PLLD is the display PLL, used to drive DSI display panels.
-@@ -1659,7 +1668,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1661,7 +1670,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLD_CORE,
  		.load_mask = CM_PLLD_LOADCORE,
  		.hold_mask = CM_PLLD_HOLDCORE,
@@ -130,7 +130,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	[BCM2835_PLLD_PER]	= REGISTER_PLL_DIV(
  		.name = "plld_per",
  		.source_pll = "plld",
-@@ -1667,7 +1677,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1669,7 +1679,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLD_PER,
  		.load_mask = CM_PLLD_LOADPER,
  		.hold_mask = CM_PLLD_HOLDPER,
@@ -140,7 +140,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	[BCM2835_PLLD_DSI0]	= REGISTER_PLL_DIV(
  		.name = "plld_dsi0",
  		.source_pll = "plld",
-@@ -1712,7 +1723,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1714,7 +1725,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLH_RCAL,
  		.load_mask = CM_PLLH_LOADRCAL,
  		.hold_mask = 0,
@@ -150,7 +150,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	[BCM2835_PLLH_AUX]	= REGISTER_PLL_DIV(
  		.name = "pllh_aux",
  		.source_pll = "pllh",
-@@ -1720,7 +1732,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1722,7 +1734,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLH_AUX,
  		.load_mask = CM_PLLH_LOADAUX,
  		.hold_mask = 0,
@@ -160,7 +160,7 @@  Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
  	[BCM2835_PLLH_PIX]	= REGISTER_PLL_DIV(
  		.name = "pllh_pix",
  		.source_pll = "pllh",
-@@ -1728,7 +1741,8 @@ static const struct bcm2835_clk_desc clk
+@@ -1730,7 +1743,8 @@ static const struct bcm2835_clk_desc clk
  		.a2w_reg = A2W_PLLH_PIX,
  		.load_mask = CM_PLLH_LOADPIX,
  		.hold_mask = 0,
diff --git a/target/linux/generic/patches-4.4/046-ubifs-silence-error-output-if-MS_SILENT-is-set.patch b/target/linux/generic/patches-4.4/046-ubifs-silence-error-output-if-MS_SILENT-is-set.patch
index 95de680989..9b1e9fe57d 100644
--- a/target/linux/generic/patches-4.4/046-ubifs-silence-error-output-if-MS_SILENT-is-set.patch
+++ b/target/linux/generic/patches-4.4/046-ubifs-silence-error-output-if-MS_SILENT-is-set.patch
@@ -18,7 +18,7 @@  Signed-off-by: Richard Weinberger <richard@nod.at>
 
 --- a/fs/ubifs/super.c
 +++ b/fs/ubifs/super.c
-@@ -2107,8 +2107,9 @@ static struct dentry *ubifs_mount(struct
+@@ -2113,8 +2113,9 @@ static struct dentry *ubifs_mount(struct
  	 */
  	ubi = open_ubi(name, UBI_READONLY);
  	if (IS_ERR(ubi)) {
diff --git a/target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch b/target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch
index 9ae6a41bff..6b48e8c305 100644
--- a/target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch
+++ b/target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch
@@ -14,7 +14,7 @@  Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
 
 --- a/drivers/usb/dwc2/hcd.c
 +++ b/drivers/usb/dwc2/hcd.c
-@@ -3161,7 +3161,6 @@ error3:
+@@ -3164,7 +3164,6 @@ error3:
  error2:
  	usb_put_hcd(hcd);
  error1:
diff --git a/target/linux/generic/patches-4.4/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch b/target/linux/generic/patches-4.4/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
index f08f9b4a7c..648baa61f1 100644
--- a/target/linux/generic/patches-4.4/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
+++ b/target/linux/generic/patches-4.4/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
@@ -11,7 +11,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/mtd/ubi/build.c
 +++ b/drivers/mtd/ubi/build.c
-@@ -1203,6 +1203,49 @@ static struct mtd_info * __init open_mtd
+@@ -1214,6 +1214,49 @@ static struct mtd_info * __init open_mtd
  	return mtd;
  }
  
@@ -61,7 +61,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  static int __init ubi_init(void)
  {
  	int err, i, k;
-@@ -1286,6 +1329,12 @@ static int __init ubi_init(void)
+@@ -1297,6 +1340,12 @@ static int __init ubi_init(void)
  		}
  	}
  
diff --git a/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch b/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch
index b75dd0f9ff..1a4b043508 100644
--- a/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch
+++ b/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch
@@ -1081,7 +1081,7 @@ 
  ifdef CONFIG_FUNCTION_TRACER
  ORIG_CFLAGS := $(KBUILD_CFLAGS)
  KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS))
-@@ -98,6 +108,8 @@ obj-$(CONFIG_LZ4HC_COMPRESS) += lz4/
+@@ -96,6 +106,8 @@ obj-$(CONFIG_LZ4HC_COMPRESS) += lz4/
  obj-$(CONFIG_LZ4_DECOMPRESS) += lz4/
  obj-$(CONFIG_XZ_DEC) += xz/
  obj-$(CONFIG_RAID6_PQ) += raid6/
diff --git a/target/linux/generic/patches-4.4/653-disable_netlink_trim.patch b/target/linux/generic/patches-4.4/653-disable_netlink_trim.patch
index b11104be9e..66ce4bb51c 100644
--- a/target/linux/generic/patches-4.4/653-disable_netlink_trim.patch
+++ b/target/linux/generic/patches-4.4/653-disable_netlink_trim.patch
@@ -1,6 +1,6 @@ 
 --- a/net/netlink/af_netlink.c
 +++ b/net/netlink/af_netlink.c
-@@ -1231,24 +1231,7 @@ void netlink_detachskb(struct sock *sk,
+@@ -1234,24 +1234,7 @@ void netlink_detachskb(struct sock *sk,
  
  static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
  {
diff --git a/target/linux/generic/patches-4.4/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/patches-4.4/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index fe599798ce..eb7c4d8fd4 100644
--- a/target/linux/generic/patches-4.4/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/patches-4.4/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -147,7 +147,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	}
  	return &ip6n->tnls[prio][h];
  }
-@@ -369,6 +378,12 @@ ip6_tnl_dev_uninit(struct net_device *de
+@@ -372,6 +381,12 @@ ip6_tnl_dev_uninit(struct net_device *de
  	struct net *net = t->net;
  	struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
  
@@ -160,7 +160,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	if (dev == ip6n->fb_tnl_dev)
  		RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
  	else
-@@ -765,6 +780,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
+@@ -768,6 +783,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
  }
  EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
  
@@ -269,7 +269,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  /**
   * ip6_tnl_rcv - decapsulate IPv6 packet and retransmit it locally
   *   @skb: received socket buffer
-@@ -810,6 +927,26 @@ static int ip6_tnl_rcv(struct sk_buff *s
+@@ -813,6 +930,26 @@ static int ip6_tnl_rcv(struct sk_buff *s
  		skb_reset_network_header(skb);
  		skb->protocol = htons(protocol);
  		memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
@@ -296,7 +296,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
  		__skb_tunnel_rx(skb, t->dev, t->net);
  
-@@ -1145,6 +1282,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1148,6 +1285,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  	__u32 mtu;
  	u8 tproto;
  	int err;
@@ -304,7 +304,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
  	tproto = ACCESS_ONCE(t->parms.proto);
  	if ((tproto != IPPROTO_IPV6 && tproto != 0) ||
-@@ -1175,6 +1313,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1178,6 +1316,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  	if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
  		fl6.flowi6_mark = skb->mark;
  
@@ -323,7 +323,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	err = ip6_tnl_xmit2(skb, dev, dsfield, &fl6, encap_limit, &mtu);
  	if (err != 0) {
  		if (err == -EMSGSIZE)
-@@ -1289,6 +1439,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1292,6 +1442,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
  	t->parms.flowinfo = p->flowinfo;
  	t->parms.link = p->link;
  	t->parms.proto = p->proto;
@@ -338,7 +338,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	dst_cache_reset(&t->dst_cache);
  	ip6_tnl_link_config(t);
  	return 0;
-@@ -1327,6 +1485,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1330,6 +1488,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
  	p->flowinfo = u->flowinfo;
  	p->link = u->link;
  	p->proto = u->proto;
@@ -346,7 +346,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1622,6 +1781,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1625,6 +1784,15 @@ static int ip6_tnl_validate(struct nlatt
  	return 0;
  }
  
@@ -362,7 +362,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
  				  struct __ip6_tnl_parm *parms)
  {
-@@ -1653,6 +1821,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1656,6 +1824,46 @@ static void ip6_tnl_netlink_parms(struct
  
  	if (data[IFLA_IPTUN_PROTO])
  		parms->proto = nla_get_u8(data[IFLA_IPTUN_PROTO]);
@@ -409,7 +409,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  }
  
  static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
-@@ -1705,6 +1913,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -1708,6 +1916,12 @@ static void ip6_tnl_dellink(struct net_d
  
  static size_t ip6_tnl_get_size(const struct net_device *dev)
  {
@@ -422,7 +422,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	return
  		/* IFLA_IPTUN_LINK */
  		nla_total_size(4) +
-@@ -1722,6 +1936,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -1725,6 +1939,24 @@ static size_t ip6_tnl_get_size(const str
  		nla_total_size(4) +
  		/* IFLA_IPTUN_PROTO */
  		nla_total_size(1) +
@@ -447,7 +447,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  		0;
  }
  
-@@ -1729,6 +1961,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -1732,6 +1964,9 @@ static int ip6_tnl_fill_info(struct sk_b
  {
  	struct ip6_tnl *tunnel = netdev_priv(dev);
  	struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -457,7 +457,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -1737,8 +1972,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -1740,8 +1975,27 @@ static int ip6_tnl_fill_info(struct sk_b
  	    nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
  	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
  	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
@@ -486,7 +486,7 @@  Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	return 0;
  
  nla_put_failure:
-@@ -1762,6 +2016,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -1765,6 +2019,7 @@ static const struct nla_policy ip6_tnl_p
  	[IFLA_IPTUN_FLOWINFO]		= { .type = NLA_U32 },
  	[IFLA_IPTUN_FLAGS]		= { .type = NLA_U32 },
  	[IFLA_IPTUN_PROTO]		= { .type = NLA_U8 },
diff --git a/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index c921a079ae..2505be10d2 100644
--- a/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -143,7 +143,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  static const struct rt6_info ip6_blk_hole_entry_template = {
  	.dst = {
  		.__refcnt	= ATOMIC_INIT(1),
-@@ -1899,6 +1916,11 @@ static struct rt6_info *ip6_route_info_c
+@@ -1902,6 +1919,11 @@ static struct rt6_info *ip6_route_info_c
  			rt->dst.output = ip6_pkt_prohibit_out;
  			rt->dst.input = ip6_pkt_prohibit;
  			break;
@@ -155,7 +155,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		case RTN_THROW:
  		case RTN_UNREACHABLE:
  		default:
-@@ -2502,6 +2524,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -2505,6 +2527,17 @@ static int ip6_pkt_prohibit_out(struct n
  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
  }
  
@@ -173,7 +173,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /*
   *	Allocate a dst for local (unicast / anycast) address.
   */
-@@ -2744,7 +2777,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -2747,7 +2780,8 @@ static int rtm_to_fib6_config(struct sk_
  	if (rtm->rtm_type == RTN_UNREACHABLE ||
  	    rtm->rtm_type == RTN_BLACKHOLE ||
  	    rtm->rtm_type == RTN_PROHIBIT ||
@@ -183,7 +183,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -3097,6 +3131,9 @@ static int rt6_fill_node(struct net *net
+@@ -3100,6 +3134,9 @@ static int rt6_fill_node(struct net *net
  		case -EACCES:
  			rtm->rtm_type = RTN_PROHIBIT;
  			break;
@@ -193,7 +193,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		case -EAGAIN:
  			rtm->rtm_type = RTN_THROW;
  			break;
-@@ -3376,6 +3413,8 @@ static int ip6_route_dev_notify(struct n
+@@ -3379,6 +3416,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -202,7 +202,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -3602,6 +3641,17 @@ static int __net_init ip6_route_net_init
+@@ -3605,6 +3644,17 @@ static int __net_init ip6_route_net_init
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  			 ip6_template_metrics, true);
@@ -220,7 +220,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  
  	net->ipv6.sysctl.flush_delay = 0;
-@@ -3620,6 +3670,8 @@ out:
+@@ -3623,6 +3673,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -229,7 +229,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -3637,6 +3689,7 @@ static void __net_exit ip6_route_net_exi
+@@ -3640,6 +3692,7 @@ static void __net_exit ip6_route_net_exi
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
  	kfree(net->ipv6.ip6_blk_hole_entry);
@@ -237,7 +237,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
  }
-@@ -3710,6 +3763,9 @@ void __init ip6_route_init_special_entri
+@@ -3713,6 +3766,9 @@ void __init ip6_route_init_special_entri
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
diff --git a/target/linux/generic/patches-4.4/701-phy_extension.patch b/target/linux/generic/patches-4.4/701-phy_extension.patch
index 39b8fd4660..a644fd8bc0 100644
--- a/target/linux/generic/patches-4.4/701-phy_extension.patch
+++ b/target/linux/generic/patches-4.4/701-phy_extension.patch
@@ -1,6 +1,6 @@ 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -385,6 +385,50 @@ int phy_ethtool_gset(struct phy_device *
+@@ -391,6 +391,50 @@ int phy_ethtool_gset(struct phy_device *
  }
  EXPORT_SYMBOL(phy_ethtool_gset);
  
diff --git a/target/linux/lantiq/patches-4.4/0026-NET-multi-phy-support.patch b/target/linux/lantiq/patches-4.4/0026-NET-multi-phy-support.patch
index 0cbd437beb..95a3ae40a1 100644
--- a/target/linux/lantiq/patches-4.4/0026-NET-multi-phy-support.patch
+++ b/target/linux/lantiq/patches-4.4/0026-NET-multi-phy-support.patch
@@ -11,7 +11,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -890,7 +890,8 @@ void phy_state_machine(struct work_struc
+@@ -896,7 +896,8 @@ void phy_state_machine(struct work_struc
  		/* If the link is down, give up on negotiation for now */
  		if (!phydev->link) {
  			phydev->state = PHY_NOLINK;
@@ -21,7 +21,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
  			phydev->adjust_link(phydev->attached_dev);
  			break;
  		}
-@@ -982,7 +983,8 @@ void phy_state_machine(struct work_struc
+@@ -988,7 +989,8 @@ void phy_state_machine(struct work_struc
  			netif_carrier_on(phydev->attached_dev);
  		} else {
  			phydev->state = PHY_NOLINK;
@@ -31,7 +31,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
  		}
  
  		phydev->adjust_link(phydev->attached_dev);
-@@ -994,7 +996,8 @@ void phy_state_machine(struct work_struc
+@@ -1000,7 +1002,8 @@ void phy_state_machine(struct work_struc
  	case PHY_HALTED:
  		if (phydev->link) {
  			phydev->link = 0;
diff --git a/target/linux/mediatek/patches-4.4/0001-NET-multi-phy-support.patch b/target/linux/mediatek/patches-4.4/0001-NET-multi-phy-support.patch
index d10615414e..3ff11a98f6 100644
--- a/target/linux/mediatek/patches-4.4/0001-NET-multi-phy-support.patch
+++ b/target/linux/mediatek/patches-4.4/0001-NET-multi-phy-support.patch
@@ -11,7 +11,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -890,7 +890,8 @@ void phy_state_machine(struct work_struc
+@@ -896,7 +896,8 @@ void phy_state_machine(struct work_struc
  		/* If the link is down, give up on negotiation for now */
  		if (!phydev->link) {
  			phydev->state = PHY_NOLINK;
@@ -21,7 +21,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
  			phydev->adjust_link(phydev->attached_dev);
  			break;
  		}
-@@ -982,7 +983,8 @@ void phy_state_machine(struct work_struc
+@@ -988,7 +989,8 @@ void phy_state_machine(struct work_struc
  			netif_carrier_on(phydev->attached_dev);
  		} else {
  			phydev->state = PHY_NOLINK;
@@ -31,7 +31,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
  		}
  
  		phydev->adjust_link(phydev->attached_dev);
-@@ -994,7 +996,8 @@ void phy_state_machine(struct work_struc
+@@ -1000,7 +1002,8 @@ void phy_state_machine(struct work_struc
  	case PHY_HALTED:
  		if (phydev->link) {
  			phydev->link = 0;
diff --git a/target/linux/mvebu/patches-4.4/125-phy-provide-a-hook-for-link-up-link-down-events.patch b/target/linux/mvebu/patches-4.4/125-phy-provide-a-hook-for-link-up-link-down-events.patch
index 0a0157be9d..b78e3e67d5 100644
--- a/target/linux/mvebu/patches-4.4/125-phy-provide-a-hook-for-link-up-link-down-events.patch
+++ b/target/linux/mvebu/patches-4.4/125-phy-provide-a-hook-for-link-up-link-down-events.patch
@@ -22,7 +22,7 @@  Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -849,6 +849,16 @@ void phy_start(struct phy_device *phydev
+@@ -855,6 +855,16 @@ void phy_start(struct phy_device *phydev
  }
  EXPORT_SYMBOL(phy_start);
  
@@ -39,7 +39,7 @@  Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  /**
   * phy_state_machine - Handle the state machine
   * @work: work_struct that describes the work to be done
-@@ -890,8 +900,7 @@ void phy_state_machine(struct work_struc
+@@ -896,8 +906,7 @@ void phy_state_machine(struct work_struc
  		/* If the link is down, give up on negotiation for now */
  		if (!phydev->link) {
  			phydev->state = PHY_NOLINK;
@@ -49,7 +49,7 @@  Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  			break;
  		}
  
-@@ -903,9 +912,7 @@ void phy_state_machine(struct work_struc
+@@ -909,9 +918,7 @@ void phy_state_machine(struct work_struc
  		/* If AN is done, we're running */
  		if (err > 0) {
  			phydev->state = PHY_RUNNING;
@@ -60,7 +60,7 @@  Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  		} else if (0 == phydev->link_timeout--)
  			needs_aneg = true;
  		break;
-@@ -930,8 +937,7 @@ void phy_state_machine(struct work_struc
+@@ -936,8 +943,7 @@ void phy_state_machine(struct work_struc
  				}
  			}
  			phydev->state = PHY_RUNNING;
@@ -70,7 +70,7 @@  Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  		}
  		break;
  	case PHY_FORCING:
-@@ -941,13 +947,12 @@ void phy_state_machine(struct work_struc
+@@ -947,13 +953,12 @@ void phy_state_machine(struct work_struc
  
  		if (phydev->link) {
  			phydev->state = PHY_RUNNING;
@@ -86,7 +86,7 @@  Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  		break;
  	case PHY_RUNNING:
  		/* Only register a CHANGE if we are polling or ignoring
-@@ -979,14 +984,12 @@ void phy_state_machine(struct work_struc
+@@ -985,14 +990,12 @@ void phy_state_machine(struct work_struc
  
  		if (phydev->link) {
  			phydev->state = PHY_RUNNING;
@@ -103,7 +103,7 @@  Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  		if (phy_interrupt_is_valid(phydev))
  			err = phy_config_interrupt(phydev,
  						   PHY_INTERRUPT_ENABLED);
-@@ -994,8 +997,7 @@ void phy_state_machine(struct work_struc
+@@ -1000,8 +1003,7 @@ void phy_state_machine(struct work_struc
  	case PHY_HALTED:
  		if (phydev->link) {
  			phydev->link = 0;
@@ -113,7 +113,7 @@  Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  			do_suspend = true;
  		}
  		break;
-@@ -1015,11 +1017,11 @@ void phy_state_machine(struct work_struc
+@@ -1021,11 +1023,11 @@ void phy_state_machine(struct work_struc
  
  				if (phydev->link) {
  					phydev->state = PHY_RUNNING;
@@ -127,7 +127,7 @@  Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  			} else {
  				phydev->state = PHY_AN;
  				phydev->link_timeout = PHY_AN_TIMEOUT;
-@@ -1031,11 +1033,11 @@ void phy_state_machine(struct work_struc
+@@ -1037,11 +1039,11 @@ void phy_state_machine(struct work_struc
  
  			if (phydev->link) {
  				phydev->state = PHY_RUNNING;
diff --git a/target/linux/mvebu/patches-4.4/127-phy-export-phy_start_machine-for-phylink.patch b/target/linux/mvebu/patches-4.4/127-phy-export-phy_start_machine-for-phylink.patch
index eb73933f3d..95be7faa14 100644
--- a/target/linux/mvebu/patches-4.4/127-phy-export-phy_start_machine-for-phylink.patch
+++ b/target/linux/mvebu/patches-4.4/127-phy-export-phy_start_machine-for-phylink.patch
@@ -15,7 +15,7 @@  Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -568,6 +568,7 @@ void phy_start_machine(struct phy_device
+@@ -574,6 +574,7 @@ void phy_start_machine(struct phy_device
  {
  	queue_delayed_work(system_power_efficient_wq, &phydev->state_queue, HZ);
  }
diff --git a/target/linux/ramips/patches-4.4/0032-USB-dwc2-add-device_reset.patch b/target/linux/ramips/patches-4.4/0032-USB-dwc2-add-device_reset.patch
index 10ce2451da..4fccaeb7df 100644
--- a/target/linux/ramips/patches-4.4/0032-USB-dwc2-add-device_reset.patch
+++ b/target/linux/ramips/patches-4.4/0032-USB-dwc2-add-device_reset.patch
@@ -18,7 +18,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
  
  #include <linux/usb/hcd.h>
  #include <linux/usb/ch11.h>
-@@ -3003,6 +3004,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
+@@ -3006,6 +3007,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
  
  	retval = -ENOMEM;
  
diff --git a/target/linux/ramips/patches-4.4/0034-NET-multi-phy-support.patch b/target/linux/ramips/patches-4.4/0034-NET-multi-phy-support.patch
index 4a248ae284..21e8644db4 100644
--- a/target/linux/ramips/patches-4.4/0034-NET-multi-phy-support.patch
+++ b/target/linux/ramips/patches-4.4/0034-NET-multi-phy-support.patch
@@ -11,7 +11,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -890,7 +890,8 @@ void phy_state_machine(struct work_struc
+@@ -896,7 +896,8 @@ void phy_state_machine(struct work_struc
  		/* If the link is down, give up on negotiation for now */
  		if (!phydev->link) {
  			phydev->state = PHY_NOLINK;
@@ -21,7 +21,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
  			phydev->adjust_link(phydev->attached_dev);
  			break;
  		}
-@@ -982,7 +983,8 @@ void phy_state_machine(struct work_struc
+@@ -988,7 +989,8 @@ void phy_state_machine(struct work_struc
  			netif_carrier_on(phydev->attached_dev);
  		} else {
  			phydev->state = PHY_NOLINK;
@@ -31,7 +31,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
  		}
  
  		phydev->adjust_link(phydev->attached_dev);
-@@ -994,7 +996,8 @@ void phy_state_machine(struct work_struc
+@@ -1000,7 +1002,8 @@ void phy_state_machine(struct work_struc
  	case PHY_HALTED:
  		if (phydev->link) {
  			phydev->link = 0;