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 e03590f03ab19267a84827dfbf3a5a2b6416b871..9f68716a1147c6e64802e5cae4d248f5e9d92c4a 100644 (file)
@@ -4,11 +4,11 @@ LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .19
 LINUX_VERSION-4.0 = .9
 
 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-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)))
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
index 24ce7d83c56dba9f8102a648b24bee335a5c180f..23425dca65eb6f44230afb9d4e310a16f204f2f7 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/gpio.c
 +++ b/arch/mips/ath79/gpio.c
 --- 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;
  {
        void __iomem *base = ath79_gpio_base;
        unsigned long flags;
index 2ca9a1ecea53ca1fcd5c4c73e4fd14effaa4a38f..ed0d9847bde8a17a351c33841f8ecfc373821bde 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/Kconfig
 +++ b/arch/mips/ath79/Kconfig
 --- 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.
  
          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
        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
  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
  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 */
        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 378d33b945a196e9785b21bb611a08ee9663460b..8af34f2239b0379e4bc6be75103238bdff016364 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
  }
 --- 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;
  
        if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
                u16 status = 0, unused;
  
index 6d6aa92c55a0387d62d9ed0930680d2711991311..8ac90ce4bb5f56a1c273b1933e4d6754977cb3f0 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
 
 --- 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,
                        brq->data.blocks = card->host->ops->multi_io_quirk(card,
                                                (rq_data_dir(req) == READ) ?
                                                MMC_DATA_READ : MMC_DATA_WRITE,
index 6280f75a48482cd8dad82e324f21147e1a3ef381..ddb70dfa0e68f9c0db824dea0c311bfe75191602 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
 +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);
  
  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,
  
  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,
  };
  
        .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,
  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,
  
  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 = {
  };
  
  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
 +#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);
 +      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;
 +error:
 +      mutex_unlock(&sl->master->bus_mutex);
 +      return -EIO;
- }
++}
++
  static int __init w1_therm_init(void)
  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 2a0fb073f0eaeee215371855f3a73607d7ff7a5a..b794c46663200dadf5cff8d69508d2ff7125302e 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
  /**
   *    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;
        }
                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;
  
        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
        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;
        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);
  
                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;
        }
                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;
        }
                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
  
  /*
   * 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
  #ifdef CONFIG_ATA_ACPI
        struct ata_acpi_gtm     __acpi_init_gtm; /* use ata_acpi_init_gtm() */
  #endif
index 8063860985d67a3eb8ab5c1b82e4273325b46563..143e0795f05697e255c47901c6da87f9a40ee0fe 100644 (file)
@@ -47,7 +47,7 @@ drivers/clk/clk.c | 34 ++++++++++++++++++++++------------
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
 
 --- 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
   */
   * 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);
  
        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);
  
  
        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);
  
        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;
                /* 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,
  }
  
  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;
        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;
  
        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;
        }
  
                return -EBUSY;
        }
  
index 0cf4eb331ed14f647442d476d9a65dbc6d0d18c3..b0d89a9681d1d9788c2819b059614e7fe32bdcda 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;
        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)
  {
  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;
  
        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;
  
        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);
        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;
                                                  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;
        }
  
                        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;
  
  
        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);
  
                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;
  
  
        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.
        /*
         * 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;
  
  
        clk->req_rate = req_rate;
  
index a72a6dad6895471203b3dfaba47a1e93d6e99e15..6badfe30fa4ca28ce4ca8c30665bc3084dde6602 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
  {
 --- 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)
  
  
  #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);
  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 */
  
  
  #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
  
index c32e2bb597f1388c0fdcc59ec69a856285c6d958..79c811705e0c7b7c7acec92d4e5ee718b3454b86 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
  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) {
                udev->ttport = hdev->ttport;
        } else if (udev->speed != USB_SPEED_HIGH
                        && hdev->speed == USB_SPEED_HIGH) {
index 96173c12fbb764b749c7bcb174b5cf7e88320daf..81ebec4774274ba5dfd83f47bce1c713b7f90f5a 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
 --- a/arch/arm/mach-mxs/Kconfig
 +++ b/arch/arm/mach-mxs/Kconfig
 @@ -17,6 +17,7 @@ config ARCH_MXS
index 8c087dcb98fa42b867137ab9aab0065add1a9f4e..104736c7c0992df0dd920a685f90a58720d8aca5 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
 --- 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
  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
 --- 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
  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
  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 @@
 --- /dev/null
 +++ b/drivers/power/mxs_power.c
 @@ -0,0 +1,136 @@
index 7ca14f114c8dfdcd0b01dbefde5c7b3482374701..4690b3c6d450d4dab176d29bf700baa7e6328be9 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
 --- 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
  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
 --- 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
  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
  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 @@
 --- /dev/null
 +++ b/drivers/regulator/mxs-regulator.c
 @@ -0,0 +1,540 @@
index 3fed18257d3ba85ef321232754d917984e37c080..bfcf247f851286f10e176d8451e6ee29791279d9 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 @@
 --- 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 {
                        };
  
                        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 @@
 --- a/arch/arm/boot/dts/imx28.dtsi
 +++ b/arch/arm/boot/dts/imx28.dtsi
 @@ -1035,8 +1035,46 @@
index 2aa72505840317993aa2ab345abd4c3f7b6ece81..79c162aece75ced21d8ad870e5ee9e03d059defc 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/arm/boot/dts/imx23.dtsi
 +++ b/arch/arm/boot/dts/imx23.dtsi
 --- 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>;
                                };
  
                                        fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
  
@@ -40,7 +40,7 @@
                                auart0_pins_a: auart0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
                                auart0_pins_a: auart0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-@@ -444,7 +477,12 @@
+@@ -484,7 +517,12 @@
                        };
  
                        i2c@80058000 {
                        };
  
                        i2c@80058000 {