kernel: update 4.1 to 4.1.4
authorJonas Gorski <jogo@openwrt.org>
Wed, 5 Aug 2015 13:55:14 +0000 (13:55 +0000)
committerJonas Gorski <jogo@openwrt.org>
Wed, 5 Aug 2015 13:55:14 +0000 (13:55 +0000)
Changelog:
 * https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.4

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
[jogo: fix brcm2708 patches, refresh target patches]
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 46560

17 files changed:
include/kernel-version.mk
target/linux/ar71xx/patches-4.1/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch
target/linux/ar71xx/patches-4.1/813-MIPS-ath79-add-ap147-support.patch
target/linux/brcm2708/patches-4.1/0004-Add-dwc_otg-driver.patch
target/linux/brcm2708/patches-4.1/0066-Add-blk_pos-parameter-to-mmc-multi_io_quirk-callback.patch
target/linux/brcm2708/patches-4.1/0119-Merge-pull-request-1059-from-pelwell-rpi-4.0.y.patch
target/linux/generic/patches-4.1/140-overlayfs_readdir_locking_fix.patch [deleted file]
target/linux/generic/patches-4.1/834-ledtrig-libata.patch
target/linux/ipq806x/patches-4.1/135-clk-Avoid-sending-high-rates-to-downstream-clocks-during-set_rate.patch
target/linux/ipq806x/patches-4.1/136-clk-Add-safe-switch-hook.patch
target/linux/lantiq/patches-4.1/0030-GPIO-add-named-gpio-exports.patch
target/linux/lantiq/patches-4.1/0032-USB-fix-roothub-for-IFXHCD.patch
target/linux/mxs/patches-4.1/100-mxs-select-syscon.patch
target/linux/mxs/patches-4.1/101-mxs-add-mxs_power.patch
target/linux/mxs/patches-4.1/102-mxs-add-regulator-driver.patch
target/linux/mxs/patches-4.1/103-dt-enable-regulator.patch
target/linux/mxs/patches-4.1/120-dt-add-i2c.patch

index e03590f..9f68716 100644 (file)
@@ -4,11 +4,11 @@ LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .19
 LINUX_VERSION-4.0 = .9
-LINUX_VERSION-4.1 = .3
+LINUX_VERSION-4.1 = .4
 
 LINUX_KERNEL_MD5SUM-3.18.19 = a143f9421bd8413752609d0d771c2955
 LINUX_KERNEL_MD5SUM-4.0.9 = 40fc5f6e2d718e539b45e6601c71985b
-LINUX_KERNEL_MD5SUM-4.1.3 = 96c2c77b1c54ba01cfd8fc2d13fbf828
+LINUX_KERNEL_MD5SUM-4.1.4 = 32cb4dd9f14d37bf71bafa6ed368f769
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
index 24ce7d8..23425dc 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/gpio.c
 +++ b/arch/mips/ath79/gpio.c
-@@ -185,15 +185,27 @@ void __init ath79_gpio_output_select(uns
+@@ -221,15 +221,27 @@ void __init ath79_gpio_output_select(uns
  {
        void __iomem *base = ath79_gpio_base;
        unsigned long flags;
index 2ca9a1e..ed0d984 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/Kconfig
 +++ b/arch/mips/ath79/Kconfig
-@@ -118,6 +118,19 @@ config ATH79_MACH_AP143
+@@ -138,6 +138,19 @@ config ATH79_MACH_AP143
          Say 'Y' here if you want your kernel to support the
          Atheros AP143 reference board.
  
@@ -22,7 +22,7 @@
        select SOC_AR913X
 --- a/arch/mips/ath79/Makefile
 +++ b/arch/mips/ath79/Makefile
-@@ -47,6 +47,7 @@ obj-$(CONFIG_ATH79_MACH_AP121)               += mach-
+@@ -49,6 +49,7 @@ obj-$(CONFIG_ATH79_MACH_AP121)               += mach-
  obj-$(CONFIG_ATH79_MACH_AP132)                += mach-ap132.o
  obj-$(CONFIG_ATH79_MACH_AP136)                += mach-ap136.o
  obj-$(CONFIG_ATH79_MACH_AP143)                += mach-ap143.o
@@ -32,7 +32,7 @@
  obj-$(CONFIG_ATH79_MACH_AP96)         += mach-ap96.o
 --- a/arch/mips/ath79/machtypes.h
 +++ b/arch/mips/ath79/machtypes.h
-@@ -29,6 +29,7 @@ enum ath79_mach_type {
+@@ -31,6 +31,7 @@ enum ath79_mach_type {
        ATH79_MACH_AP136_010,           /* Atheros AP136-010 reference board */
        ATH79_MACH_AP136_020,           /* Atheros AP136-020 reference board */
        ATH79_MACH_AP143,               /* Atheros AP143 reference board */
index 378d33b..8af34f2 100644 (file)
@@ -894,7 +894,7 @@ dwc_otg: Fix crash when fiq_enable=0
  }
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -4922,7 +4922,7 @@ static void port_event(struct usb_hub *h
+@@ -4906,7 +4906,7 @@ static void port_event(struct usb_hub *h
        if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
                u16 status = 0, unused;
  
index 6d6aa92..8ac90ce 100644 (file)
@@ -13,7 +13,7 @@ Subject: [PATCH 066/121] Add blk_pos parameter to mmc multi_io_quirk callback
 
 --- a/drivers/mmc/card/block.c
 +++ b/drivers/mmc/card/block.c
-@@ -1413,6 +1413,7 @@ static void mmc_blk_rw_rq_prep(struct mm
+@@ -1415,6 +1415,7 @@ static void mmc_blk_rw_rq_prep(struct mm
                        brq->data.blocks = card->host->ops->multi_io_quirk(card,
                                                (rq_data_dir(req) == READ) ?
                                                MMC_DATA_READ : MMC_DATA_WRITE,
index 6280f75..ddb70df 100644 (file)
@@ -51,41 +51,7 @@ w1_therm: Back-port locking improvements from 4.2-rc1
 +representing the device index in the bus starting at 0.
 --- a/drivers/w1/slaves/w1_therm.c
 +++ b/drivers/w1/slaves/w1_therm.c
-@@ -59,16 +59,32 @@ MODULE_ALIAS("w1-family-" __stringify(W1
- static int w1_strong_pullup = 1;
- module_param_named(strong_pullup, w1_strong_pullup, int, 0);
-+struct w1_therm_family_data {
-+      uint8_t rom[9];
-+      atomic_t refcnt;
-+};
-+
-+/* return the address of the refcnt in the family data */
-+#define THERM_REFCNT(family_data) \
-+      (&((struct w1_therm_family_data*)family_data)->refcnt)
-+
- static int w1_therm_add_slave(struct w1_slave *sl)
- {
--      sl->family_data = kzalloc(9, GFP_KERNEL);
-+      sl->family_data = kzalloc(sizeof(struct w1_therm_family_data),
-+              GFP_KERNEL);
-       if (!sl->family_data)
-               return -ENOMEM;
-+      atomic_set(THERM_REFCNT(sl->family_data), 1);
-       return 0;
- }
- static void w1_therm_remove_slave(struct w1_slave *sl)
- {
-+      int refcnt = atomic_sub_return(1, THERM_REFCNT(sl->family_data));
-+      while(refcnt) {
-+              msleep(1000);
-+              refcnt = atomic_read(THERM_REFCNT(sl->family_data));
-+      }
-       kfree(sl->family_data);
-       sl->family_data = NULL;
- }
-@@ -76,13 +92,24 @@ static void w1_therm_remove_slave(struct
+@@ -92,13 +92,24 @@ static void w1_therm_remove_slave(struct
  static ssize_t w1_slave_show(struct device *device,
        struct device_attribute *attr, char *buf);
  
@@ -110,7 +76,7 @@ w1_therm: Back-port locking improvements from 4.2-rc1
  
  static struct w1_family_ops w1_therm_fops = {
        .add_slave      = w1_therm_add_slave,
-@@ -90,6 +117,12 @@ static struct w1_family_ops w1_therm_fop
+@@ -106,6 +117,12 @@ static struct w1_family_ops w1_therm_fop
        .groups         = w1_therm_groups,
  };
  
@@ -123,7 +89,7 @@ w1_therm: Back-port locking improvements from 4.2-rc1
  static struct w1_family w1_therm_family_DS18S20 = {
        .fid = W1_THERM_DS18S20,
        .fops = &w1_therm_fops,
-@@ -107,7 +140,7 @@ static struct w1_family w1_therm_family_
+@@ -123,7 +140,7 @@ static struct w1_family w1_therm_family_
  
  static struct w1_family w1_therm_family_DS28EA00 = {
        .fid = W1_THERM_DS28EA00,
@@ -132,86 +98,10 @@ w1_therm: Back-port locking improvements from 4.2-rc1
  };
  
  static struct w1_family w1_therm_family_DS1825 = {
-@@ -194,13 +227,22 @@ static ssize_t w1_slave_show(struct devi
-       struct w1_slave *sl = dev_to_w1_slave(device);
-       struct w1_master *dev = sl->master;
-       u8 rom[9], crc, verdict, external_power;
--      int i, max_trying = 10;
-+      int i, ret, max_trying = 10;
-       ssize_t c = PAGE_SIZE;
-+      u8 *family_data = sl->family_data;
--      i = mutex_lock_interruptible(&dev->bus_mutex);
--      if (i != 0)
--              return i;
-+      ret = mutex_lock_interruptible(&dev->bus_mutex);
-+      if (ret != 0)
-+              goto post_unlock;
-+
-+      if(!sl->family_data)
-+      {
-+              ret = -ENODEV;
-+              goto pre_unlock;
-+      }
-+      /* prevent the slave from going away in sleep */
-+      atomic_inc(THERM_REFCNT(family_data));
-       memset(rom, 0, sizeof(rom));
-       while (max_trying--) {
-@@ -230,17 +272,19 @@ static ssize_t w1_slave_show(struct devi
-                               mutex_unlock(&dev->bus_mutex);
-                               sleep_rem = msleep_interruptible(tm);
--                              if (sleep_rem != 0)
--                                      return -EINTR;
-+                              if (sleep_rem != 0) {
-+                                      ret = -EINTR;
-+                                      goto post_unlock;
-+                              }
--                              i = mutex_lock_interruptible(&dev->bus_mutex);
--                              if (i != 0)
--                                      return i;
-+                              ret = mutex_lock_interruptible(&dev->bus_mutex);
-+                              if (ret != 0)
-+                                      goto post_unlock;
-                       } else if (!w1_strong_pullup) {
-                               sleep_rem = msleep_interruptible(tm);
-                               if (sleep_rem != 0) {
--                                      mutex_unlock(&dev->bus_mutex);
--                                      return -EINTR;
-+                                      ret = -EINTR;
-+                                      goto pre_unlock;
-                               }
-                       }
-@@ -269,19 +313,107 @@ static ssize_t w1_slave_show(struct devi
-       c -= snprintf(buf + PAGE_SIZE - c, c, ": crc=%02x %s\n",
-                          crc, (verdict) ? "YES" : "NO");
-       if (verdict)
--              memcpy(sl->family_data, rom, sizeof(rom));
-+              memcpy(family_data, rom, sizeof(rom));
-       else
-               dev_warn(device, "Read failed CRC check\n");
-       for (i = 0; i < 9; ++i)
-               c -= snprintf(buf + PAGE_SIZE - c, c, "%02x ",
--                            ((u8 *)sl->family_data)[i]);
-+                            ((u8 *)family_data)[i]);
-       c -= snprintf(buf + PAGE_SIZE - c, c, "t=%d\n",
-               w1_convert_temp(rom, sl->family->fid));
-+      ret = PAGE_SIZE - c;
-+
-+pre_unlock:
-       mutex_unlock(&dev->bus_mutex);
+@@ -316,6 +333,89 @@ post_unlock:
+       return ret;
+ }
  
-+post_unlock:
-+      atomic_dec(THERM_REFCNT(family_data));
-+      return ret;
-+}
-+
 +#define W1_42_CHAIN   0x99
 +#define W1_42_CHAIN_OFF       0x3C
 +#define W1_42_CHAIN_OFF_INV   0xC3
@@ -289,10 +179,12 @@ w1_therm: Back-port locking improvements from 4.2-rc1
 +      mutex_unlock(&sl->master->bus_mutex);
 +
 +      c -= snprintf(buf + PAGE_SIZE - c, c, "%d\n", seq);
-       return PAGE_SIZE - c;
++      return PAGE_SIZE - c;
 +error:
 +      mutex_unlock(&sl->master->bus_mutex);
 +      return -EIO;
- }
++}
++
  static int __init w1_therm_init(void)
+ {
+       int err, i;
diff --git a/target/linux/generic/patches-4.1/140-overlayfs_readdir_locking_fix.patch b/target/linux/generic/patches-4.1/140-overlayfs_readdir_locking_fix.patch
deleted file mode 100644 (file)
index 67dff98..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-Patch by: Miklos Szeredi <miklos@szeredi.hu>
-
-Some filesystems (e.g. jffs2) lock the same resources for both readdir
-and lookup, leading to a deadlock in ovl_cache_entry_new, which is called
-from the filldir, and calls lookup itself.
-
---- a/fs/overlayfs/readdir.c
-+++ b/fs/overlayfs/readdir.c
-@@ -23,6 +23,7 @@ struct ovl_cache_entry {
-       u64 ino;
-       struct list_head l_node;
-       struct rb_node node;
-+      struct ovl_cache_entry *next_maybe_whiteout;
-       bool is_whiteout;
-       char name[];
- };
-@@ -39,7 +40,7 @@ struct ovl_readdir_data {
-       struct rb_root root;
-       struct list_head *list;
-       struct list_head middle;
--      struct dentry *dir;
-+      struct ovl_cache_entry *first_maybe_whiteout;
-       int count;
-       int err;
- };
-@@ -79,7 +80,7 @@ static struct ovl_cache_entry *ovl_cache
-       return NULL;
- }
--static struct ovl_cache_entry *ovl_cache_entry_new(struct dentry *dir,
-+static struct ovl_cache_entry *ovl_cache_entry_new(struct ovl_readdir_data *rdd,
-                                                  const char *name, int len,
-                                                  u64 ino, unsigned int d_type)
- {
-@@ -98,29 +99,8 @@ static struct ovl_cache_entry *ovl_cache
-       p->is_whiteout = false;
-       if (d_type == DT_CHR) {
--              struct dentry *dentry;
--              const struct cred *old_cred;
--              struct cred *override_cred;
--
--              override_cred = prepare_creds();
--              if (!override_cred) {
--                      kfree(p);
--                      return NULL;
--              }
--
--              /*
--               * CAP_DAC_OVERRIDE for lookup
--               */
--              cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
--              old_cred = override_creds(override_cred);
--
--              dentry = lookup_one_len(name, dir, len);
--              if (!IS_ERR(dentry)) {
--                      p->is_whiteout = ovl_is_whiteout(dentry);
--                      dput(dentry);
--              }
--              revert_creds(old_cred);
--              put_cred(override_cred);
-+              p->next_maybe_whiteout = rdd->first_maybe_whiteout;
-+              rdd->first_maybe_whiteout = p;
-       }
-       return p;
- }
-@@ -148,7 +128,7 @@ static int ovl_cache_entry_add_rb(struct
-                       return 0;
-       }
--      p = ovl_cache_entry_new(rdd->dir, name, len, ino, d_type);
-+      p = ovl_cache_entry_new(rdd, name, len, ino, d_type);
-       if (p == NULL)
-               return -ENOMEM;
-@@ -169,7 +149,7 @@ static int ovl_fill_lower(struct ovl_rea
-       if (p) {
-               list_move_tail(&p->l_node, &rdd->middle);
-       } else {
--              p = ovl_cache_entry_new(rdd->dir, name, namelen, ino, d_type);
-+              p = ovl_cache_entry_new(rdd, name, namelen, ino, d_type);
-               if (p == NULL)
-                       rdd->err = -ENOMEM;
-               else
-@@ -219,6 +199,43 @@ static int ovl_fill_merge(struct dir_con
-               return ovl_fill_lower(rdd, name, namelen, offset, ino, d_type);
- }
-+static int ovl_check_whiteouts(struct dentry *dir, struct ovl_readdir_data *rdd)
-+{
-+      int err = 0;
-+
-+      mutex_lock(&dir->d_inode->i_mutex);
-+      while (rdd->first_maybe_whiteout) {
-+              struct dentry *dentry;
-+              const struct cred *old_cred;
-+              struct cred *override_cred;
-+              struct ovl_cache_entry *p = rdd->first_maybe_whiteout;
-+
-+              rdd->first_maybe_whiteout = p->next_maybe_whiteout;
-+
-+              override_cred = prepare_creds();
-+              if (!override_cred) {
-+                      err = -ENOMEM;
-+                      break;
-+              }
-+              /*
-+               * CAP_DAC_OVERRIDE for lookup
-+               */
-+              cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
-+              old_cred = override_creds(override_cred);
-+
-+              dentry = lookup_one_len(p->name, dir, p->len);
-+              if (!IS_ERR(dentry)) {
-+                      p->is_whiteout = ovl_is_whiteout(dentry);
-+                      dput(dentry);
-+              }
-+              revert_creds(old_cred);
-+              put_cred(override_cred);
-+      }
-+      mutex_unlock(&dir->d_inode->i_mutex);
-+
-+      return err;
-+}
-+
- static inline int ovl_dir_read(struct path *realpath,
-                              struct ovl_readdir_data *rdd)
- {
-@@ -229,7 +246,7 @@ static inline int ovl_dir_read(struct pa
-       if (IS_ERR(realfile))
-               return PTR_ERR(realfile);
--      rdd->dir = realpath->dentry;
-+      rdd->first_maybe_whiteout = NULL;
-       rdd->ctx.pos = 0;
-       do {
-               rdd->count = 0;
-@@ -238,6 +255,10 @@ static inline int ovl_dir_read(struct pa
-               if (err >= 0)
-                       err = rdd->err;
-       } while (!err && rdd->count);
-+
-+      if (!err && rdd->first_maybe_whiteout)
-+              err = ovl_check_whiteouts(realpath->dentry, rdd);
-+
-       fput(realfile);
-       return err;
index 2a0fb07..b794c46 100644 (file)
@@ -69,7 +69,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  /**
   *    ata_build_rw_tf - Build ATA taskfile for given read/write request
   *    @tf: Target ATA taskfile
-@@ -4774,6 +4787,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
+@@ -4789,6 +4802,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
                if (tag < 0)
                        return NULL;
        }
@@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  
        qc = __ata_qc_from_tag(ap, tag);
        qc->tag = tag;
-@@ -5671,6 +5687,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5686,6 +5702,9 @@ struct ata_port *ata_port_alloc(struct a
        ap->stats.unhandled_irq = 1;
        ap->stats.idle_irq = 1;
  #endif
@@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
        ata_sff_port_init(ap);
  
        return ap;
-@@ -5692,6 +5711,12 @@ static void ata_host_release(struct devi
+@@ -5707,6 +5726,12 @@ static void ata_host_release(struct devi
  
                kfree(ap->pmp_link);
                kfree(ap->slave_link);
@@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                kfree(ap);
                host->ports[i] = NULL;
        }
-@@ -6138,7 +6163,23 @@ int ata_host_register(struct ata_host *h
+@@ -6153,7 +6178,23 @@ int ata_host_register(struct ata_host *h
                host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
                host->ports[i]->local_port_no = i + 1;
        }
@@ -138,7 +138,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  
  /*
   * Define if arch has non-standard setup.  This is a _PCI_ standard
-@@ -873,6 +876,12 @@ struct ata_port {
+@@ -876,6 +879,12 @@ struct ata_port {
  #ifdef CONFIG_ATA_ACPI
        struct ata_acpi_gtm     __acpi_init_gtm; /* use ata_acpi_init_gtm() */
  #endif
index 8063860..143e079 100644 (file)
@@ -47,7 +47,7 @@ drivers/clk/clk.c | 34 ++++++++++++++++++++++------------
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -1743,21 +1743,24 @@ static struct clk_core *clk_propagate_ra
+@@ -1744,21 +1744,24 @@ static struct clk_core *clk_propagate_ra
   * walk down a subtree and set the new rates notifying the rate
   * change on the way
   */
@@ -79,7 +79,7 @@ drivers/clk/clk.c | 34 ++++++++++++++++++++++------------
  
        if (clk->new_parent && clk->new_parent != clk->parent) {
                old_parent = __clk_set_parent_before(clk, clk->new_parent);
-@@ -1783,7 +1786,7 @@ static void clk_change_rate(struct clk_c
+@@ -1784,7 +1787,7 @@ static void clk_change_rate(struct clk_c
  
        trace_clk_set_rate_complete(clk, clk->new_rate);
  
@@ -88,7 +88,7 @@ drivers/clk/clk.c | 34 ++++++++++++++++++++++------------
  
        if (clk->notifier_count && old_rate != clk->rate)
                __clk_notify(clk, POST_RATE_CHANGE, old_rate, clk->rate);
-@@ -1796,12 +1799,13 @@ static void clk_change_rate(struct clk_c
+@@ -1797,12 +1800,13 @@ static void clk_change_rate(struct clk_c
                /* Skip children who will be reparented to another clock */
                if (child->new_parent && child->new_parent != clk)
                        continue;
@@ -105,7 +105,7 @@ drivers/clk/clk.c | 34 ++++++++++++++++++++++------------
  }
  
  static int clk_core_set_rate_nolock(struct clk_core *clk,
-@@ -1810,6 +1814,7 @@ static int clk_core_set_rate_nolock(stru
+@@ -1811,6 +1815,7 @@ static int clk_core_set_rate_nolock(stru
        struct clk_core *top, *fail_clk;
        unsigned long rate = req_rate;
        int ret = 0;
@@ -113,7 +113,7 @@ drivers/clk/clk.c | 34 ++++++++++++++++++++++------------
  
        if (!clk)
                return 0;
-@@ -1835,8 +1840,13 @@ static int clk_core_set_rate_nolock(stru
+@@ -1836,8 +1841,13 @@ static int clk_core_set_rate_nolock(stru
                return -EBUSY;
        }
  
index 0cf4eb3..b0d89a9 100644 (file)
@@ -47,7 +47,7 @@ handles that problem on Krait, but on other platforms it won't work.
        struct clk_core         *new_parent;
        struct clk_core         *new_child;
        unsigned long           flags;
-@@ -1595,7 +1598,8 @@ out:
+@@ -1596,7 +1599,8 @@ out:
  static void clk_calc_subtree(struct clk_core *clk, unsigned long new_rate,
                             struct clk_core *new_parent, u8 p_index)
  {
@@ -57,7 +57,7 @@ handles that problem on Krait, but on other platforms it won't work.
  
        clk->new_rate = new_rate;
        clk->new_parent = new_parent;
-@@ -1605,6 +1609,18 @@ static void clk_calc_subtree(struct clk_
+@@ -1606,6 +1610,18 @@ static void clk_calc_subtree(struct clk_
        if (new_parent && new_parent != clk->parent)
                new_parent->new_child = clk;
  
@@ -76,7 +76,7 @@ handles that problem on Krait, but on other platforms it won't work.
        hlist_for_each_entry(child, &clk->children, child_node) {
                child->new_rate = clk_recalc(child, new_rate);
                clk_calc_subtree(child, child->new_rate, NULL, 0);
-@@ -1709,14 +1725,43 @@ static struct clk_core *clk_propagate_ra
+@@ -1710,14 +1726,43 @@ static struct clk_core *clk_propagate_ra
                                                  unsigned long event)
  {
        struct clk_core *child, *tmp_clk, *fail_clk = NULL;
@@ -123,7 +123,7 @@ handles that problem on Krait, but on other platforms it won't work.
                        fail_clk = clk;
        }
  
-@@ -1762,7 +1807,8 @@ clk_change_rate(struct clk_core *clk, un
+@@ -1763,7 +1808,8 @@ clk_change_rate(struct clk_core *clk, un
  
        old_rate = clk->rate;
  
@@ -133,7 +133,7 @@ handles that problem on Krait, but on other platforms it won't work.
                old_parent = __clk_set_parent_before(clk, clk->new_parent);
                trace_clk_set_parent(clk, clk->new_parent);
  
-@@ -1788,9 +1834,6 @@ clk_change_rate(struct clk_core *clk, un
+@@ -1789,9 +1835,6 @@ clk_change_rate(struct clk_core *clk, un
  
        clk->rate = clk->new_rate;
  
@@ -143,7 +143,7 @@ handles that problem on Krait, but on other platforms it won't work.
        /*
         * Use safe iteration, as change_rate can actually swap parents
         * for certain clock types.
-@@ -1850,6 +1893,8 @@ static int clk_core_set_rate_nolock(stru
+@@ -1851,6 +1894,8 @@ static int clk_core_set_rate_nolock(stru
  
        clk->req_rate = req_rate;
  
index a72a6da..6badfe3 100644 (file)
@@ -109,7 +109,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  {
 --- a/include/linux/gpio/consumer.h
 +++ b/include/linux/gpio/consumer.h
-@@ -446,6 +446,7 @@ static inline int desc_to_gpio(const str
+@@ -461,6 +461,7 @@ static inline struct gpio_desc *devm_get
  
  #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
  
@@ -117,7 +117,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
  int gpiod_export_link(struct device *dev, const char *name,
                      struct gpio_desc *desc);
-@@ -454,6 +455,13 @@ void gpiod_unexport(struct gpio_desc *de
+@@ -469,6 +470,13 @@ void gpiod_unexport(struct gpio_desc *de
  
  #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
  
index c32e2bb..79c8117 100644 (file)
@@ -20,7 +20,7 @@ Subject: [PATCH 32/36] USB: fix roothub for IFXHCD
  choice
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -4314,7 +4314,7 @@ hub_port_init (struct usb_hub *hub, stru
+@@ -4298,7 +4298,7 @@ hub_port_init (struct usb_hub *hub, stru
                udev->ttport = hdev->ttport;
        } else if (udev->speed != USB_SPEED_HIGH
                        && hdev->speed == USB_SPEED_HIGH) {
index 96173c1..81ebec4 100644 (file)
@@ -1,5 +1,3 @@
-diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig
-index 8479413..bf04d38 100644
 --- a/arch/arm/mach-mxs/Kconfig
 +++ b/arch/arm/mach-mxs/Kconfig
 @@ -17,6 +17,7 @@ config ARCH_MXS
index 8c087dc..104736c 100644 (file)
@@ -1,5 +1,3 @@
-diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
-index 4091fb0..0fcc158 100644
 --- a/drivers/power/Kconfig
 +++ b/drivers/power/Kconfig
 @@ -43,6 +43,14 @@ config MAX8925_POWER
@@ -17,11 +15,9 @@ index 4091fb0..0fcc158 100644
  config WM831X_BACKUP
        tristate "WM831X backup battery charger support"
        depends on MFD_WM831X
-diff --git a/drivers/power/Makefile b/drivers/power/Makefile
-index b7b0181..8edcad7 100644
 --- a/drivers/power/Makefile
 +++ b/drivers/power/Makefile
-@@ -10,6 +10,7 @@ obj-$(CONFIG_GENERIC_ADC_BATTERY)    += generic-adc-battery.o
+@@ -10,6 +10,7 @@ obj-$(CONFIG_GENERIC_ADC_BATTERY)    += gen
  obj-$(CONFIG_PDA_POWER)               += pda_power.o
  obj-$(CONFIG_APM_POWER)               += apm_power.o
  obj-$(CONFIG_MAX8925_POWER)   += max8925_power.o
@@ -29,9 +25,6 @@ index b7b0181..8edcad7 100644
  obj-$(CONFIG_WM831X_BACKUP)   += wm831x_backup.o
  obj-$(CONFIG_WM831X_POWER)    += wm831x_power.o
  obj-$(CONFIG_WM8350_POWER)    += wm8350_power.o
-diff --git a/drivers/power/mxs_power.c b/drivers/power/mxs_power.c
-new file mode 100644
-index 0000000..669bfb1
 --- /dev/null
 +++ b/drivers/power/mxs_power.c
 @@ -0,0 +1,136 @@
index 7ca14f1..4690b3c 100644 (file)
@@ -1,5 +1,3 @@
-diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
-index a6f116a..7b525f5 100644
 --- a/drivers/regulator/Kconfig
 +++ b/drivers/regulator/Kconfig
 @@ -450,6 +450,14 @@ config REGULATOR_MT6397
@@ -17,11 +15,9 @@ index a6f116a..7b525f5 100644
  config REGULATOR_PALMAS
        tristate "TI Palmas PMIC Regulators"
        depends on MFD_PALMAS
-diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
-index 2c4da15..a3ebf23 100644
 --- a/drivers/regulator/Makefile
 +++ b/drivers/regulator/Makefile
-@@ -60,6 +60,7 @@ obj-$(CONFIG_REGULATOR_MC13783) += mc13783-regulator.o
+@@ -60,6 +60,7 @@ obj-$(CONFIG_REGULATOR_MC13783) += mc137
  obj-$(CONFIG_REGULATOR_MC13892) += mc13892-regulator.o
  obj-$(CONFIG_REGULATOR_MC13XXX_CORE) +=  mc13xxx-regulator-core.o
  obj-$(CONFIG_REGULATOR_MT6397)        += mt6397-regulator.o
@@ -29,9 +25,6 @@ index 2c4da15..a3ebf23 100644
  obj-$(CONFIG_REGULATOR_QCOM_RPM) += qcom_rpm-regulator.o
  obj-$(CONFIG_REGULATOR_PALMAS) += palmas-regulator.o
  obj-$(CONFIG_REGULATOR_PFUZE100) += pfuze100-regulator.o
-diff --git a/drivers/regulator/mxs-regulator.c b/drivers/regulator/mxs-regulator.c
-new file mode 100644
-index 0000000..e53707b
 --- /dev/null
 +++ b/drivers/regulator/mxs-regulator.c
 @@ -0,0 +1,540 @@
index 3fed182..bfcf247 100644 (file)
@@ -1,5 +1,3 @@
-diff --git a/arch/arm/boot/dts/imx23.dtsi b/arch/arm/boot/dts/imx23.dtsi
-index bbcfb5a..efdd702 100644
 --- a/arch/arm/boot/dts/imx23.dtsi
 +++ b/arch/arm/boot/dts/imx23.dtsi
 @@ -404,8 +404,46 @@
@@ -50,8 +48,6 @@ index bbcfb5a..efdd702 100644
                        };
  
                        saif1: saif@80046000 {
-diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi
-index 25e25f8..378b1f2 100644
 --- a/arch/arm/boot/dts/imx28.dtsi
 +++ b/arch/arm/boot/dts/imx28.dtsi
 @@ -1035,8 +1035,46 @@
index 2aa7250..79c162a 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/arm/boot/dts/imx23.dtsi
 +++ b/arch/arm/boot/dts/imx23.dtsi
-@@ -146,6 +146,39 @@
+@@ -147,6 +147,39 @@
                                        fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
  
@@ -40,7 +40,7 @@
                                auart0_pins_a: auart0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-@@ -444,7 +477,12 @@
+@@ -484,7 +517,12 @@
                        };
  
                        i2c@80058000 {