kernel: update 4.1 to 4.1.4
authorjogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 5 Aug 2015 13:55:14 +0000 (13:55 +0000)
committerjogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73>
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>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@46560 3c298f89-4303-0410-b956-a3cf2f4a3e73

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-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 24ce7d8..23425dc 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 2ca9a1e..ed0d984 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 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
  }
 --- 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 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
 
 --- 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 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
 +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 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
  /**
   *    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 8063860..143e079 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 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;
        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 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
  {
 --- 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 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
  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 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
 --- 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
 --- 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 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
 --- 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 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 @@
 --- 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 2aa7250..79c162a 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 {