kernel: update kernel 3.18 to version 3.18.23
authorHauke Mehrtens <hauke@hauke-m.de>
Sun, 1 Nov 2015 13:45:57 +0000 (13:45 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 1 Nov 2015 13:45:57 +0000 (13:45 +0000)
Changelog:
 * https://cdn.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.22
 * https://cdn.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.23

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
SVN-Revision: 47334

34 files changed:
include/kernel-version.mk
target/linux/cns3xxx/patches-3.18/075-spi_support.patch
target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch
target/linux/generic/patches-3.18/092-02-spi-Pump-transfers-inside-calling-context-for-spi_sy.patch
target/linux/generic/patches-3.18/092-03-spi-Only-idle-the-message-pump-in-the-worker-kthread.patch
target/linux/generic/patches-3.18/630-packet_socket_type.patch
target/linux/generic/patches-3.18/653-disable_netlink_trim.patch
target/linux/generic/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
target/linux/generic/patches-3.18/721-phy_packets.patch
target/linux/generic/patches-3.18/810-pci_disable_common_quirks.patch
target/linux/generic/patches-3.18/834-ledtrig-libata.patch
target/linux/generic/patches-3.18/902-debloat_proc.patch
target/linux/generic/patches-3.18/903-debloat_direct_io.patch
target/linux/imx6/patches-3.18/204-net-igb-register-mii_bus-for-SerDes-w-external-phy.patch
target/linux/ipq806x/patches-3.18/300-arch-arm-force-ZRELADDR-on-arch-qcom.patch
target/linux/kirkwood/patches-3.18/190-nsa310s.patch
target/linux/mcs814x/patches-3.18/001-platform.patch
target/linux/ramips/patches-3.18/0015-MIPS-ralink-cleanup-early_printk.patch
target/linux/ramips/patches-3.18/0030-pinctrl-ralink-add-pinctrl-driver.patch
target/linux/ramips/patches-3.18/0048-GPIO-ralink-add-mt7621-gpio-controller.patch
target/linux/ramips/patches-3.18/0053-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch
target/linux/ramips/patches-3.18/0061-SPI-ralink-add-mt7621-SoC-spi-driver.patch
target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch
target/linux/ramips/patches-3.18/0065-mt7628-pww.patch
target/linux/ramips/patches-3.18/0066-cevt.patch
target/linux/ramips/patches-3.18/0200-linkit_bootstrap.patch
target/linux/ramips/patches-3.18/0300-mt7628_fixes.patch
target/linux/ramips/patches-3.18/0301-mt7688-detect.patch
target/linux/ramips/patches-3.18/0302-mt762x-vendor-id.patch
target/linux/ramips/patches-3.18/0303-alsa.patch
target/linux/ramips/patches-3.18/0304-baud_250000.patch
target/linux/sunxi/patches-3.18/200-mmc-add-sdio-function-subnode.patch
target/linux/x86/patches-3.18/001-x86-platform-Fix-Geode-LX-timekeeping-in-the-generic.patch [deleted file]
target/linux/xburst/patches-3.18/001-ubi-Read-only-the-vid-header-instead-of-the-whole-pa.patch

index a99add36aa672a5605201bb7a0ec5aa1839f2867..1ecb37c69672728d04b080e57dd26ee23896b594 100644 (file)
@@ -2,12 +2,12 @@
 
 LINUX_RELEASE?=1
 
-LINUX_VERSION-3.18 = .21
+LINUX_VERSION-3.18 = .23
 LINUX_VERSION-4.0 = .9
 LINUX_VERSION-4.1 = .11
 LINUX_VERSION-4.3 = -rc7
 
-LINUX_KERNEL_MD5SUM-3.18.21 = e4248caaa4cef318c04657e971b37298
+LINUX_KERNEL_MD5SUM-3.18.23 = dc6d265ab38716be3676ac294b481ad8
 LINUX_KERNEL_MD5SUM-4.0.9 = 40fc5f6e2d718e539b45e6601c71985b
 LINUX_KERNEL_MD5SUM-4.1.11 = 63e5981e38f935772a5309289fe76972
 LINUX_KERNEL_MD5SUM-4.3-rc7 = b33f9c9c1a597bb8e0d6f84c074e733f
index 87494b043c6e9af874e17d22862bba1729c73c5d..da6dcd490e9d98d4e573328f0c9159edb57318ae 100644 (file)
@@ -39,7 +39,7 @@
                if (status > 0)
 --- a/include/linux/spi/spi.h
 +++ b/include/linux/spi/spi.h
-@@ -628,6 +628,13 @@ struct spi_transfer {
+@@ -630,6 +630,13 @@ struct spi_transfer {
        u32             speed_hz;
  
        struct list_head transfer_list;
index 340a4126b810d8115c213e5c480e9bbb30ca0bd8..6fbbc25ae052febc6964827273c6deadcf12ff11 100644 (file)
@@ -88,7 +88,7 @@ Miklos
                err = PTR_ERR(opaquedir);
 --- a/fs/overlayfs/super.c
 +++ b/fs/overlayfs/super.c
-@@ -740,9 +740,15 @@ static int ovl_fill_super(struct super_b
+@@ -741,9 +741,15 @@ static int ovl_fill_super(struct super_b
        ufs->workdir = ovl_workdir_create(ufs->upper_mnt, workpath.dentry);
        err = PTR_ERR(ufs->workdir);
        if (IS_ERR(ufs->workdir)) {
index ddfb0606293c7c2ecc710b3e89769807ff1af588..b74b4cb93b6460650e24fbeb271fa3de8b25799b 100644 (file)
@@ -116,7 +116,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
  static int spi_master_initialize_queue(struct spi_master *master)
  {
        int ret;
-@@ -2105,19 +2128,46 @@ static int __spi_sync(struct spi_device
+@@ -2104,19 +2127,46 @@ static int __spi_sync(struct spi_device
        DECLARE_COMPLETION_ONSTACK(done);
        int status;
        struct spi_master *master = spi->master;
index e8cbe6151ebc936d81b779202c20a88985ee34b3..a5d85be2b42cd11746479044c77a47a4937b7b18 100644 (file)
@@ -72,7 +72,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
  static int spi_init_queue(struct spi_master *master)
  {
        struct sched_param param = { .sched_priority = MAX_RT_PRIO - 1 };
-@@ -2166,7 +2186,7 @@ static int __spi_sync(struct spi_device
+@@ -2165,7 +2185,7 @@ static int __spi_sync(struct spi_device
                 * can.
                 */
                if (master->transfer == spi_queued_transfer)
index fa057b264d26d86bd69c62df91a3adc47d874248..31f4bca2a023069c60edcaef0f069cc9e89132ce 100644 (file)
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        if (!net_eq(dev_net(dev), sock_net(sk)))
                goto drop;
  
-@@ -2809,6 +2811,7 @@ static int packet_create(struct net *net
+@@ -2807,6 +2809,7 @@ static int packet_create(struct net *net
        spin_lock_init(&po->bind_lock);
        mutex_init(&po->pg_vec_lock);
        po->prot_hook.func = packet_rcv;
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  
        if (sock->type == SOCK_PACKET)
                po->prot_hook.func = packet_rcv_spkt;
-@@ -3389,6 +3392,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3387,6 +3390,16 @@ packet_setsockopt(struct socket *sock, i
                po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
                return 0;
        }
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        default:
                return -ENOPROTOOPT;
        }
-@@ -3440,6 +3453,13 @@ static int packet_getsockopt(struct sock
+@@ -3438,6 +3451,13 @@ static int packet_getsockopt(struct sock
        case PACKET_VNET_HDR:
                val = po->has_vnet_hdr;
                break;
index b8fbe92378393d2f7fb11ea4e9bc364441bf604a..b38b87b48f8a893dcb28a2899fc2605771a3e4e8 100644 (file)
@@ -1,6 +1,6 @@
 --- a/net/netlink/af_netlink.c
 +++ b/net/netlink/af_netlink.c
-@@ -1690,27 +1690,7 @@ void netlink_detachskb(struct sock *sk,
+@@ -1721,27 +1721,7 @@ void netlink_detachskb(struct sock *sk,
  
  static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
  {
index 4a2f36bc0ab27797ab575e04938a9b7a580060db..21199fe6c741944b0af1aa4c3dfd465eb2707b9a 100644 (file)
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4001,6 +4001,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4002,6 +4002,9 @@ static enum gro_result dev_gro_receive(s
        enum gro_result ret;
        int grow;
  
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        if (!(skb->dev->features & NETIF_F_GRO))
                goto normal;
  
-@@ -5064,6 +5067,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5067,6 +5070,48 @@ static void __netdev_adjacent_dev_unlink
                                           &upper_dev->adj_list.lower);
  }
  
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  static int __netdev_upper_dev_link(struct net_device *dev,
                                   struct net_device *upper_dev, bool master,
                                   void *private)
-@@ -5124,6 +5169,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5127,6 +5172,7 @@ static int __netdev_upper_dev_link(struc
                        goto rollback_lower_mesh;
        }
  
@@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
        return 0;
  
-@@ -5241,6 +5287,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -5244,6 +5290,7 @@ void netdev_upper_dev_unlink(struct net_
        list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
                __netdev_adjacent_dev_unlink(dev, i->dev);
  
@@ -92,7 +92,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
  }
  EXPORT_SYMBOL(netdev_upper_dev_unlink);
-@@ -5760,6 +5807,7 @@ int dev_set_mac_address(struct net_devic
+@@ -5763,6 +5810,7 @@ int dev_set_mac_address(struct net_devic
        if (err)
                return err;
        dev->addr_assign_type = NET_ADDR_SET;
@@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        return 0;
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -1548,6 +1548,8 @@ struct net_device {
+@@ -1556,6 +1556,8 @@ struct net_device {
        struct netdev_hw_addr_list      mc;
        struct netdev_hw_addr_list      dev_addrs;
  
index 7616817f9b3021d1013406a12ea4b96322f8ce94..99811c62428e3a1bbc1fe35c37359ee4b75156da 100644 (file)
@@ -1,6 +1,6 @@
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -1220,6 +1220,7 @@ enum netdev_priv_flags {
+@@ -1228,6 +1228,7 @@ enum netdev_priv_flags {
        IFF_LIVE_ADDR_CHANGE            = 1<<20,
        IFF_MACVLAN                     = 1<<21,
        IFF_XMIT_DST_RELEASE_PERM       = 1<<22,
@@ -8,7 +8,7 @@
  };
  
  #define IFF_802_1Q_VLAN                       IFF_802_1Q_VLAN
-@@ -1245,6 +1246,7 @@ enum netdev_priv_flags {
+@@ -1253,6 +1254,7 @@ enum netdev_priv_flags {
  #define IFF_LIVE_ADDR_CHANGE          IFF_LIVE_ADDR_CHANGE
  #define IFF_MACVLAN                   IFF_MACVLAN
  #define IFF_XMIT_DST_RELEASE_PERM     IFF_XMIT_DST_RELEASE_PERM
@@ -16,7 +16,7 @@
  
  /**
   *    struct net_device - The DEVICE structure.
-@@ -1515,6 +1517,11 @@ struct net_device {
+@@ -1523,6 +1525,11 @@ struct net_device {
        const struct ethtool_ops *ethtool_ops;
        const struct forwarding_accel_ops *fwd_ops;
  
@@ -28,7 +28,7 @@
        const struct header_ops *header_ops;
  
        unsigned int            flags;
-@@ -1579,6 +1586,10 @@ struct net_device {
+@@ -1587,6 +1594,10 @@ struct net_device {
        void                    *ax25_ptr;
        struct wireless_dev     *ieee80211_ptr;
  
index b6c0b38e72517c4ba04541fecf47954f89c628ba..b9b3e0aba8e398ee926830721d05c8a99ad722e1 100644 (file)
@@ -23,7 +23,7 @@
  /* The Mellanox Tavor device gives false positive parity errors
   * Mark this device with a broken_parity_status, to allow
   * PCI scanning code to "skip" this now blacklisted device.
-@@ -2905,6 +2906,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -2908,6 +2909,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
  
@@ -31,7 +31,7 @@
  
  /*
   * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.  To
-@@ -2961,6 +2963,8 @@ static void fixup_debug_report(struct pc
+@@ -2964,6 +2966,8 @@ static void fixup_debug_report(struct pc
        }
  }
  
@@ -40,7 +40,7 @@
  /*
   * Some BIOS implementations leave the Intel GPU interrupts enabled,
   * even though no one is handling them (f.e. i915 driver is never loaded).
-@@ -2995,6 +2999,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -2998,6 +3002,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
  
index 4c0ffcac91b6eb9605629e12eef41ec4014c61cc..d0aee1c2d061e2225ed3b5ecbacfa064bdab2c93 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
-@@ -4798,6 +4811,9 @@ static struct ata_queued_cmd *ata_qc_new
+@@ -4800,6 +4813,9 @@ static struct ata_queued_cmd *ata_qc_new
                        break;
                }
        }
@@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  
        return qc;
  }
-@@ -5708,6 +5724,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5710,6 +5726,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;
-@@ -5729,6 +5748,12 @@ static void ata_host_release(struct devi
+@@ -5731,6 +5750,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;
        }
-@@ -6175,7 +6200,23 @@ int ata_host_register(struct ata_host *h
+@@ -6177,7 +6202,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;
        }
index 52beed2128c4eba724b42ec107d6c20ec8c8e35d..5cecd1e6770573d76a334ee767654c7dfb140351 100644 (file)
  }
 --- a/kernel/irq/proc.c
 +++ b/kernel/irq/proc.c
-@@ -328,6 +328,9 @@ void register_irq_proc(unsigned int irq,
- {
+@@ -330,6 +330,9 @@ void register_irq_proc(unsigned int irq,
+       static DEFINE_MUTEX(register_lock);
        char name [MAX_NAMELEN];
  
 +      if (IS_ENABLED(CONFIG_PROC_STRIPPED) && !IS_ENABLED(CONFIG_SMP))
 +              return;
 +
-       if (!root_irq_dir || (desc->irq_data.chip == &no_irq_chip) || desc->dir)
+       if (!root_irq_dir || (desc->irq_data.chip == &no_irq_chip))
                return;
  
-@@ -364,6 +367,9 @@ void unregister_irq_proc(unsigned int ir
+@@ -379,6 +382,9 @@ void unregister_irq_proc(unsigned int ir
  {
        char name [MAX_NAMELEN];
  
@@ -99,7 +99,7 @@
        if (!root_irq_dir || !desc->dir)
                return;
  #ifdef CONFIG_SMP
-@@ -399,6 +405,9 @@ void init_irq_proc(void)
+@@ -414,6 +420,9 @@ void init_irq_proc(void)
        unsigned int irq;
        struct irq_desc *desc;
  
index c633ed1e0930cfe059849e151ad04e5cf7ee5f89..92190e47a9b65a6e04aa2a81802da8f80de06f10 100644 (file)
@@ -26,7 +26,7 @@
  endif
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -2530,12 +2530,25 @@ enum {
+@@ -2528,12 +2528,25 @@ enum {
        DIO_ASYNC_EXTEND = 0x04,
  };
  
index d503e911c57d41538a97f5277d60740ed5a4dfb5..129a0bcbae8729cef935052a7ecc5bf980fd74b0 100644 (file)
@@ -94,7 +94,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
  #include <linux/delay.h>
  #include <linux/interrupt.h>
  #include <linux/ip.h>
-@@ -2231,6 +2232,126 @@ static s32 igb_init_i2c(struct igb_adapt
+@@ -2237,6 +2238,126 @@ static s32 igb_init_i2c(struct igb_adapt
        return status;
  }
  
@@ -221,7 +221,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
  /**
   *  igb_probe - Device Initialization Routine
   *  @pdev: PCI device information struct
-@@ -2653,6 +2774,13 @@ static int igb_probe(struct pci_dev *pde
+@@ -2659,6 +2780,13 @@ static int igb_probe(struct pci_dev *pde
                }
        }
        pm_runtime_put_noidle(&pdev->dev);
@@ -235,7 +235,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
        return 0;
  
  err_register:
-@@ -2796,6 +2924,10 @@ static void igb_remove(struct pci_dev *p
+@@ -2802,6 +2930,10 @@ static void igb_remove(struct pci_dev *p
        struct e1000_hw *hw = &adapter->hw;
  
        pm_runtime_get_noresume(&pdev->dev);
@@ -246,7 +246,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
  #ifdef CONFIG_IGB_HWMON
        igb_sysfs_exit(adapter);
  #endif
-@@ -3101,6 +3233,12 @@ static int __igb_open(struct net_device
+@@ -3115,6 +3247,12 @@ static int __igb_open(struct net_device
        if (!resuming)
                pm_runtime_put(&pdev->dev);
  
@@ -259,7 +259,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
        /* start the watchdog. */
        hw->mac.get_link_status = 1;
        schedule_work(&adapter->watchdog_task);
-@@ -7097,21 +7235,41 @@ void igb_alloc_rx_buffers(struct igb_rin
+@@ -7111,21 +7249,41 @@ void igb_alloc_rx_buffers(struct igb_rin
  static int igb_mii_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
  {
        struct igb_adapter *adapter = netdev_priv(netdev);
index cb740dedcc404a2b9b244da6923aae087d63de30..8669b0257ca6e3053a2a5cba245458cebae415ea 100644 (file)
@@ -44,7 +44,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
        select GENERIC_CLOCKEVENTS
 --- a/arch/arm/Makefile
 +++ b/arch/arm/Makefile
-@@ -240,9 +240,11 @@ MACHINE  := arch/arm/mach-$(word 1,$(mac
+@@ -248,9 +248,11 @@ MACHINE  := arch/arm/mach-$(word 1,$(mac
  else
  MACHINE  :=
  endif
index b646693763fe307bcf76446f68d407edf872404c..9766455cf9238b1362492e2080e758bb3bd3e912 100644 (file)
 +};
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -145,6 +145,7 @@
+@@ -145,6 +145,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += kirkwood-
        kirkwood-ns2mini.dtb \
        kirkwood-nsa310.dtb \
        kirkwood-nsa310a.dtb \
index 221209f286575782a61ee14511e736aea202c907..83f1683b05ee0b0acb0aa8868ade7d198f47f9a5 100644 (file)
@@ -43,7 +43,7 @@
  source "arch/arm/mach-qcom/Kconfig"
 --- a/arch/arm/Makefile
 +++ b/arch/arm/Makefile
-@@ -172,6 +172,7 @@ machine-$(CONFIG_ARCH_IXP4XX)              += ixp4xx
+@@ -180,6 +180,7 @@ machine-$(CONFIG_ARCH_IXP4XX)              += ixp4xx
  machine-$(CONFIG_ARCH_KEYSTONE)               += keystone
  machine-$(CONFIG_ARCH_KS8695)         += ks8695
  machine-$(CONFIG_ARCH_LPC32XX)                += lpc32xx
index 3fffa804cfb330700327ff3f43eeb215fab10ea2..1e5c90b6c87abd653bfce0aaa6e5ba5d8f5e7efd 100644 (file)
@@ -50,7 +50,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  
  static inline void uart_w32(u32 val, unsigned reg)
  {
-@@ -38,11 +43,46 @@
+@@ -38,11 +43,46 @@ static inline u32 uart_r32(unsigned reg)
        return __raw_readl(uart_membase + reg);
  }
  
index 0387a8ee102c5fe68a2e79fc64eeefc00bfc06c0..63e84019d9ed2be4225da02c80e4a623ce715100 100644 (file)
@@ -24,7 +24,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -453,6 +453,8 @@
+@@ -453,6 +453,8 @@ config RALINK
        select CLKDEV_LOOKUP
        select ARCH_HAS_RESET_CONTROLLER
        select RESET_CONTROLLER
@@ -35,7 +35,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
        bool "SGI IP22 (Indy/Indigo2)"
 --- a/arch/mips/include/asm/mach-ralink/mt7620.h
 +++ b/arch/mips/include/asm/mach-ralink/mt7620.h
-@@ -90,7 +90,6 @@
+@@ -90,7 +90,6 @@ enum mt762x_soc_type {
  #define MT7620_DDR2_SIZE_MIN          32
  #define MT7620_DDR2_SIZE_MAX          256
  
@@ -43,7 +43,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  #define MT7620_GPIO_MODE_UART0_SHIFT  2
  #define MT7620_GPIO_MODE_UART0_MASK   0x7
  #define MT7620_GPIO_MODE_UART0(x)     ((x) << MT7620_GPIO_MODE_UART0_SHIFT)
-@@ -102,16 +101,36 @@
+@@ -102,16 +101,36 @@ enum mt762x_soc_type {
  #define MT7620_GPIO_MODE_GPIO_UARTF   0x5
  #define MT7620_GPIO_MODE_GPIO_I2S     0x6
  #define MT7620_GPIO_MODE_GPIO         0x7
@@ -148,7 +148,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +#endif
 --- a/arch/mips/include/asm/mach-ralink/rt305x.h
 +++ b/arch/mips/include/asm/mach-ralink/rt305x.h
-@@ -125,24 +125,29 @@
+@@ -125,24 +125,29 @@ static inline int soc_is_rt5350(void)
  #define RT305X_GPIO_GE0_TXD0          40
  #define RT305X_GPIO_GE0_RXCLK         51
  
@@ -263,7 +263,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  
  #include "common.h"
  
-@@ -47,118 +48,58 @@
+@@ -47,118 +48,58 @@ enum mt762x_soc_type mt762x_soc;
  /* does the board have sdram or ddram */
  static int dram_type;
  
@@ -498,7 +498,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  };
  
  static void rt288x_wdt_reset(void)
-@@ -69,11 +50,6 @@
+@@ -69,11 +50,6 @@ static void rt288x_wdt_reset(void)
        rt_sysc_w32(t, SYSC_REG_CLKCFG);
  }
  
@@ -510,7 +510,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  void __init ralink_clk_init(void)
  {
        unsigned long cpu_rate, wmac_rate = 40000000;
-@@ -141,4 +117,6 @@
+@@ -141,4 +117,6 @@ void prom_soc_init(struct ralink_soc_inf
        soc_info->mem_base = RT2880_SDRAM_BASE;
        soc_info->mem_size_min = RT2880_MEM_SIZE_MIN;
        soc_info->mem_size_max = RT2880_MEM_SIZE_MAX;
@@ -673,7 +673,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  };
  
  static void rt305x_wdt_reset(void)
-@@ -114,14 +100,6 @@
+@@ -114,14 +100,6 @@ static void rt305x_wdt_reset(void)
        rt_sysc_w32(t, SYSC_REG_SYSTEM_CONFIG);
  }
  
@@ -688,7 +688,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  static unsigned long rt5350_get_mem_size(void)
  {
        void __iomem *sysc = (void __iomem *) KSEG1ADDR(RT305X_SYSC_BASE);
-@@ -290,11 +268,14 @@
+@@ -290,11 +268,14 @@ void prom_soc_init(struct ralink_soc_inf
        soc_info->mem_base = RT305X_SDRAM_BASE;
        if (soc_is_rt5350()) {
                soc_info->mem_size = rt5350_get_mem_size();
@@ -876,7 +876,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  };
  
  static void rt3883_wdt_reset(void)
-@@ -155,17 +73,6 @@
+@@ -155,17 +73,6 @@ static void rt3883_wdt_reset(void)
        rt_sysc_w32(t, RT3883_SYSC_REG_SYSCFG1);
  }
  
@@ -894,7 +894,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  void __init ralink_clk_init(void)
  {
        unsigned long cpu_rate, sys_rate;
-@@ -244,4 +151,6 @@
+@@ -244,4 +151,6 @@ void prom_soc_init(struct ralink_soc_inf
        soc_info->mem_base = RT3883_SDRAM_BASE;
        soc_info->mem_size_min = RT3883_MEM_SIZE_MIN;
        soc_info->mem_size_max = RT3883_MEM_SIZE_MAX;
@@ -903,7 +903,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  }
 --- a/drivers/pinctrl/Kconfig
 +++ b/drivers/pinctrl/Kconfig
-@@ -103,6 +103,11 @@
+@@ -103,6 +103,11 @@ config PINCTRL_LANTIQ
        select PINMUX
        select PINCONF
  
@@ -917,7 +917,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
        depends on SOC_FALCON
 --- a/drivers/pinctrl/Makefile
 +++ b/drivers/pinctrl/Makefile
-@@ -20,6 +20,7 @@
+@@ -20,6 +20,7 @@ obj-$(CONFIG_PINCTRL_BCM281XX)       += pinctr
  obj-$(CONFIG_PINCTRL_FALCON)  += pinctrl-falcon.o
  obj-$(CONFIG_PINCTRL_PALMAS)  += pinctrl-palmas.o
  obj-$(CONFIG_PINCTRL_ROCKCHIP)        += pinctrl-rockchip.o
index cb58e16a06f651161fe8aa3900102b15bf300b19..429af73b39786dbb64442f96be9d7b6de4e3b494 100644 (file)
@@ -14,7 +14,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -455,6 +455,9 @@
+@@ -455,6 +455,9 @@ config RALINK
        select RESET_CONTROLLER
        select PINCTRL
        select PINCTRL_RT2880
@@ -26,7 +26,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
        bool "SGI IP22 (Indy/Indigo2)"
 --- a/drivers/gpio/Kconfig
 +++ b/drivers/gpio/Kconfig
-@@ -898,6 +898,12 @@
+@@ -898,6 +898,12 @@ config GPIO_BCM_KONA
        help
          Turn on GPIO support for Broadcom "Kona" chips.
  
@@ -41,7 +41,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  config GPIO_VIPERBOARD
 --- a/drivers/gpio/Makefile
 +++ b/drivers/gpio/Makefile
-@@ -107,3 +107,5 @@
+@@ -107,3 +107,5 @@ obj-$(CONFIG_GPIO_XILINX)  += gpio-xilinx
  obj-$(CONFIG_GPIO_XTENSA)     += gpio-xtensa.o
  obj-$(CONFIG_GPIO_ZEVIO)      += gpio-zevio.o
  obj-$(CONFIG_GPIO_ZYNQ)               += gpio-zynq.o
index a3688138f8f755e186e2aa971d370b952de0dca6..2932eb6b0784bb9b58043e727b39c494644a6998 100644 (file)
@@ -25,7 +25,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- a/drivers/mmc/host/Kconfig
 +++ b/drivers/mmc/host/Kconfig
-@@ -773,3 +773,5 @@
+@@ -773,3 +773,5 @@ config MMC_SUNXI
        help
          This selects support for the SD/MMC Host Controller on
          Allwinner sunxi SoCs.
index 589c67e707a8fb777835eb322f81483fd93a9da1..5aa119e1df08ba9e34d5ea78ad605c789d68d70d 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/spi/Kconfig
 +++ b/drivers/spi/Kconfig
-@@ -439,6 +439,12 @@
+@@ -439,6 +439,12 @@ config SPI_RT2880
        help
          This selects a driver for the Ralink RT288x/RT305x SPI Controller.
  
@@ -15,7 +15,7 @@
        depends on ARCH_S3C24XX
 --- a/drivers/spi/Makefile
 +++ b/drivers/spi/Makefile
-@@ -46,6 +46,7 @@
+@@ -46,6 +46,7 @@ obj-$(CONFIG_SPI_LM70_LLP)           += spi-lm70l
  obj-$(CONFIG_SPI_MPC512x_PSC)         += spi-mpc512x-psc.o
  obj-$(CONFIG_SPI_MPC52xx_PSC)         += spi-mpc52xx-psc.o
  obj-$(CONFIG_SPI_MPC52xx)             += spi-mpc52xx.o
index 98e8ca5a499cae3b2815423569ca87f2eb0fa6ed..f407578762b911b4ef24e3c0cbb96fbec4aa8b5d 100644 (file)
  /*
   * For xHCI 1.0 host controllers, TD size is the number of max packet sized
   * packets remaining in the TD (*not* including this TRB).
-@@ -3141,6 +3175,7 @@ static int queue_bulk_sg_tx(struct xhci_
+@@ -3161,6 +3195,7 @@ static int queue_bulk_sg_tx(struct xhci_
                }
  
                /* Set the TRB length, TD size, and interrupter fields. */
                if (xhci->hci_version < 0x100) {
                        remainder = xhci_td_remainder(
                                        urb->transfer_buffer_length -
-@@ -3150,6 +3185,12 @@ static int queue_bulk_sg_tx(struct xhci_
+@@ -3170,6 +3205,12 @@ static int queue_bulk_sg_tx(struct xhci_
                                        trb_buff_len, total_packet_count, urb,
                                        num_trbs - 1);
                }
                length_field = TRB_LEN(trb_buff_len) |
                        remainder |
                        TRB_INTR_TARGET(0);
-@@ -3212,6 +3253,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3234,6 +3275,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
        int running_total, trb_buff_len, ret;
        unsigned int total_packet_count;
        u64 addr;
  
        if (urb->num_sgs)
                return queue_bulk_sg_tx(xhci, mem_flags, urb, slot_id, ep_index);
-@@ -3237,6 +3281,25 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3258,6 +3302,25 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+               num_trbs++;
                running_total += TRB_MAX_BUFF_SIZE;
        }
-       /* FIXME: this doesn't deal with URB_ZERO_PACKET - need one more */
 +#if defined (CONFIG_USB_MT7621_XHCI_PLATFORM)
 +      switch(urb->dev->speed){
 +              case USB_SPEED_SUPER:
  
        ret = prepare_transfer(xhci, xhci->devs[slot_id],
                        ep_index, urb->stream_id,
-@@ -3296,6 +3359,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3334,6 +3397,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
                        field |= TRB_ISP;
  
                /* Set the TRB length, TD size, and interrupter fields. */
                if (xhci->hci_version < 0x100) {
                        remainder = xhci_td_remainder(
                                        urb->transfer_buffer_length -
-@@ -3305,6 +3369,10 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3343,6 +3407,10 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
                                        trb_buff_len, total_packet_count, urb,
                                        num_trbs - 1);
                }
                length_field = TRB_LEN(trb_buff_len) |
                        remainder |
                        TRB_INTR_TARGET(0);
-@@ -3394,7 +3462,11 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
+@@ -3432,7 +3500,11 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
                field |= 0x1;
  
-       /* xHCI 1.0 6.4.1.2.1: Transfer Type field */
+       /* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
 +#if defined (CONFIG_USB_MT7621_XHCI_PLATFORM)
 +      if (1) {
 +#else
-       if (xhci->hci_version == 0x100) {
+       if (xhci->hci_version >= 0x100) {
 +#endif
                if (urb->transfer_buffer_length > 0) {
                        if (setup->bRequestType & USB_DIR_IN)
                                field |= TRB_TX_TYPE(TRB_DATA_IN);
-@@ -3418,7 +3490,12 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
+@@ -3456,7 +3528,12 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
                field = TRB_TYPE(TRB_DATA);
  
        length_field = TRB_LEN(urb->transfer_buffer_length) |
                TRB_INTR_TARGET(0);
        if (urb->transfer_buffer_length > 0) {
                if (setup->bRequestType & USB_DIR_IN)
-@@ -3541,6 +3618,9 @@ static int xhci_queue_isoc_tx(struct xhc
+@@ -3579,6 +3656,9 @@ static int xhci_queue_isoc_tx(struct xhc
        u64 start_addr, addr;
        int i, j;
        bool more_trbs_coming;
  
        ep_ring = xhci->devs[slot_id]->eps[ep_index].ring;
  
-@@ -3554,6 +3634,21 @@ static int xhci_queue_isoc_tx(struct xhc
+@@ -3592,6 +3672,21 @@ static int xhci_queue_isoc_tx(struct xhc
        start_trb = &ep_ring->enqueue->generic;
        start_cycle = ep_ring->cycle_state;
  
        urb_priv = urb->hcpriv;
        /* Queue the first TRB, even if it's zero-length */
        for (i = 0; i < num_tds; i++) {
-@@ -3625,9 +3720,13 @@ static int xhci_queue_isoc_tx(struct xhc
+@@ -3663,9 +3758,13 @@ static int xhci_queue_isoc_tx(struct xhc
                        } else {
                                td->last_trb = ep_ring->enqueue;
                                field |= TRB_IOC;
                                        /* Set BEI bit except for the last td */
                                        if (i < num_tds - 1)
                                                field |= TRB_BEI;
-@@ -3642,6 +3741,7 @@ static int xhci_queue_isoc_tx(struct xhc
+@@ -3680,6 +3779,7 @@ static int xhci_queue_isoc_tx(struct xhc
                                trb_buff_len = td_remain_len;
  
                        /* Set the TRB length, TD size, & interrupter fields. */
                        if (xhci->hci_version < 0x100) {
                                remainder = xhci_td_remainder(
                                                td_len - running_total);
-@@ -3651,6 +3751,10 @@ static int xhci_queue_isoc_tx(struct xhc
+@@ -3689,6 +3789,10 @@ static int xhci_queue_isoc_tx(struct xhc
                                                total_packet_count, urb,
                                                (trbs_per_td - j - 1));
                        }
  /* TODO: copied from ehci-hcd.c - can this be refactored? */
  /*
   * xhci_handshake - spin reading hc until handshake completes or fails
-@@ -198,7 +220,7 @@ int xhci_reset(struct xhci_hcd *xhci)
+@@ -199,7 +221,7 @@ int xhci_reset(struct xhci_hcd *xhci)
        return ret;
  }
  
  static int xhci_free_msi(struct xhci_hcd *xhci)
  {
        int i;
-@@ -448,6 +470,11 @@ static void compliance_mode_recovery(uns
+@@ -449,6 +471,11 @@ static void compliance_mode_recovery(uns
                                        "Attempting compliance mode recovery");
                        hcd = xhci->shared_hcd;
  
                        if (hcd->state == HC_STATE_SUSPENDED)
                                usb_hcd_resume_root_hub(hcd);
  
-@@ -497,6 +524,9 @@ static bool xhci_compliance_mode_recover
+@@ -498,6 +525,9 @@ static bool xhci_compliance_mode_recover
  {
        const char *dmi_product_name, *dmi_sys_vendor;
  
        dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME);
        dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR);
        if (!dmi_product_name || !dmi_sys_vendor)
-@@ -542,6 +572,10 @@ int xhci_init(struct usb_hcd *hcd)
+@@ -543,6 +573,10 @@ int xhci_init(struct usb_hcd *hcd)
                xhci_dbg_trace(xhci, trace_xhci_dbg_init,
                                "xHCI doesn't need link TRB QUIRK");
        }
        retval = xhci_mem_init(xhci, GFP_KERNEL);
        xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Finished xhci_init");
  
-@@ -626,7 +660,11 @@ int xhci_run(struct usb_hcd *hcd)
+@@ -627,7 +661,11 @@ int xhci_run(struct usb_hcd *hcd)
                        "// Set the interrupt modulation register");
        temp = readl(&xhci->ir_set->irq_control);
        temp &= ~ER_IRQ_INTERVAL_MASK;
        writel(temp, &xhci->ir_set->irq_control);
  
        /* Set the HCD state before we enable the irqs */
-@@ -651,6 +689,9 @@ int xhci_run(struct usb_hcd *hcd)
+@@ -652,6 +690,9 @@ int xhci_run(struct usb_hcd *hcd)
                xhci_queue_vendor_command(xhci, command, 0, 0, 0,
                                TRB_TYPE(TRB_NEC_GET_FW));
        }
        xhci_dbg_trace(xhci, trace_xhci_dbg_init,
                        "Finished xhci_run for USB2 roothub");
        return 0;
-@@ -1642,6 +1683,14 @@ int xhci_drop_endpoint(struct usb_hcd *h
+@@ -1648,6 +1689,14 @@ int xhci_drop_endpoint(struct usb_hcd *h
        u32 drop_flag;
        u32 new_add_flags, new_drop_flags;
        int ret;
  
        ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
        if (ret <= 0)
-@@ -1689,6 +1738,40 @@ int xhci_drop_endpoint(struct usb_hcd *h
+@@ -1695,6 +1744,40 @@ int xhci_drop_endpoint(struct usb_hcd *h
  
        xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
  
        xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
                        (unsigned int) ep->desc.bEndpointAddress,
                        udev->slot_id,
-@@ -1721,6 +1804,19 @@ int xhci_add_endpoint(struct usb_hcd *hc
+@@ -1727,6 +1810,19 @@ int xhci_add_endpoint(struct usb_hcd *hc
        u32 new_add_flags, new_drop_flags;
        struct xhci_virt_device *virt_dev;
        int ret = 0;
  
        ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
        if (ret <= 0) {
-@@ -1787,6 +1883,56 @@ int xhci_add_endpoint(struct usb_hcd *hc
+@@ -1793,6 +1889,56 @@ int xhci_add_endpoint(struct usb_hcd *hc
                return -ENOMEM;
        }
  
        ctrl_ctx->add_flags |= cpu_to_le32(added_ctxs);
        new_add_flags = le32_to_cpu(ctrl_ctx->add_flags);
  
-@@ -4454,8 +4600,14 @@ static u16 xhci_call_host_update_timeout
+@@ -4463,8 +4609,14 @@ static u16 xhci_call_host_update_timeout
                u16 *timeout)
  {
        if (state == USB3_LPM_U1)
                return xhci_calculate_u2_timeout(xhci, udev, desc);
  
        return USB3_LPM_DISABLED;
-@@ -4840,7 +4992,9 @@ int xhci_gen_setup(struct usb_hcd *hcd,
+@@ -4849,7 +5001,9 @@ int xhci_gen_setup(struct usb_hcd *hcd,
        hcd->self.no_sg_constraint = 1;
  
        /* XHCI controllers don't stop the ep queue on short packets :| */
  
        if (usb_hcd_is_primary_hcd(hcd)) {
                xhci = kzalloc(sizeof(struct xhci_hcd), GFP_KERNEL);
-@@ -4903,6 +5057,10 @@ int xhci_gen_setup(struct usb_hcd *hcd,
+@@ -4912,6 +5066,10 @@ int xhci_gen_setup(struct usb_hcd *hcd,
                goto error;
        xhci_dbg(xhci, "Reset complete\n");
  
        /* Set dma_mask and coherent_dma_mask to 64-bits,
         * if xHC supports 64-bit addressing */
        if (HCC_64BIT_ADDR(xhci->hcc_params) &&
-@@ -4997,8 +5155,57 @@ MODULE_DESCRIPTION(DRIVER_DESC);
+@@ -5006,8 +5164,57 @@ MODULE_DESCRIPTION(DRIVER_DESC);
  MODULE_AUTHOR(DRIVER_AUTHOR);
  MODULE_LICENSE("GPL");
  
index 4b82a7ef9edec87b18a553d3301d7e0f3ea0e01b..dc2ca95e4d32c69af93570de6f09292aa69129b1 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/pwm/Kconfig
 +++ b/drivers/pwm/Kconfig
-@@ -177,6 +177,15 @@
+@@ -177,6 +177,15 @@ config PWM_LPSS_PLATFORM
          To compile this driver as a module, choose M here: the module
          will be called pwm-lpss-platform.
  
@@ -18,7 +18,7 @@
        depends on ARCH_MXS && OF
 --- a/drivers/pwm/Makefile
 +++ b/drivers/pwm/Makefile
-@@ -15,6 +15,7 @@
+@@ -15,6 +15,7 @@ obj-$(CONFIG_PWM_LPC32XX)    += pwm-lpc32xx
  obj-$(CONFIG_PWM_LPSS)                += pwm-lpss.o
  obj-$(CONFIG_PWM_LPSS_PCI)    += pwm-lpss-pci.o
  obj-$(CONFIG_PWM_LPSS_PLATFORM)       += pwm-lpss-platform.o
index 01cb588cd99cf0db94cfb0fb2e682e1383b5bb81..9eb6cb612ba2e3990208041a1516c3889864feda 100644 (file)
@@ -3,7 +3,7 @@
 @@ -45,18 +45,33 @@ static void (*systick_freq_scaling)(stru
  static void systick_set_clock_mode(enum clock_event_mode mode,
                                struct clock_event_device *evt);
-
 +static inline unsigned int read_count(struct systick_device *sdev)
 +{
 +      return ioread32(sdev->membase + SYSTICK_COUNT);
@@ -25,7 +25,7 @@
        struct systick_device *sdev;
 -      u32 count;
 +      int res;
-
        sdev = container_of(evt, struct systick_device, dev);
 -      count = ioread32(sdev->membase + SYSTICK_COUNT);
 -      count = (count + delta) % SYSTICK_FREQ;
 +      delta += read_count(sdev);
 +      write_compare(sdev, delta);
 +      res = ((int)(read_count(sdev) - delta) >= 0) ? -ETIME : 0;
-
 -      return 0;
 +      return res;
  }
-
  static void systick_event_handler(struct clock_event_device *dev)
 @@ -66,20 +81,25 @@ static void systick_event_handler(struct
-
  static irqreturn_t systick_interrupt(int irq, void *dev_id)
  {
 -      struct clock_event_device *dev = (struct clock_event_device *) dev_id;
 +      int ret = 0;
 +      struct clock_event_device *cdev;
 +      struct systick_device *sdev;
-
 -      dev->event_handler(dev);
 +      if (read_c0_cause() & STATUSF_IP7) {
 +              cdev = (struct clock_event_device *) dev_id;
 +              cdev->event_handler(cdev);
 +              ret = 1;
 +      }
-
 -      return IRQ_HANDLED;
 +      return IRQ_RETVAL(ret);
  }
-
  static struct systick_device systick = {
        .dev = {
 -              /*
@@ -76,7 +76,7 @@
 @@ -126,13 +146,14 @@ static void systick_set_clock_mode(enum
                        systick_freq_scaling(sdev, 1);
                break;
-
 +      case CLOCK_EVT_MODE_UNUSED:
        case CLOCK_EVT_MODE_SHUTDOWN:
                if (systick_freq_scaling)
 -              iowrite32(0, systick.membase + SYSTICK_CONFIG);
 +              iowrite32(CFG_CNT_EN, systick.membase + SYSTICK_CONFIG);
                break;
-
        default:
 @@ -142,38 +163,45 @@ static void systick_set_clock_mode(enum
  }
-
  static const struct of_device_id systick_match[] = {
 -      { .compatible = "ralink,mt7620-systick", .data = mt7620_freq_scaling},
 +      { .compatible = "ralink,mt7620a-systick", .data = mt7620_freq_scaling},
        {},
  };
-
  static void __init ralink_systick_init(struct device_node *np)
  {
        const struct of_device_id *match;
 +      int rating = 200;
-
        systick.membase = of_iomap(np, 0);
        if (!systick.membase)
                return;
-
        match = of_match_node(systick_match, np);
 -      if (match)
 +      if (match) {
 +               */
 +              rating = 310;
 +      }
-
 -      systick_irqaction.name = np->name;
 -      systick.dev.name = np->name;
 -      clockevents_calc_mult_shift(&systick.dev, SYSTICK_FREQ, 60);
index 1471c7d3297b56d444ffe7adaf3f73f304f35136..70e8170c448b1959d539ab8f78fc48631eb7558f 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/misc/Makefile
 +++ b/drivers/misc/Makefile
-@@ -56,3 +56,4 @@
+@@ -56,3 +56,4 @@ obj-$(CONFIG_GENWQE)         += genwqe/
  obj-$(CONFIG_ECHO)            += echo/
  obj-$(CONFIG_VEXPRESS_SYSCFG) += vexpress-syscfg.o
  obj-$(CONFIG_CXL_BASE)                += cxl/
index 1a5a0ba1a24819953f0ccc585d6e4cd4f0c015ad..443e07afed65deaef81c5f815786360b01f0cd65 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ralink/mt7620.c
 +++ b/arch/mips/ralink/mt7620.c
-@@ -101,28 +101,28 @@
+@@ -101,28 +101,28 @@ static struct rt2880_pmx_group mt7620a_p
  };
  
  static struct rt2880_pmx_func pwm1_grp_mt7628[] = {
@@ -35,7 +35,7 @@
        FUNC("pwm", 2, 45, 2),
        FUNC("gpio", 1, 45, 2),
        FUNC("uart1", 0, 45, 2),
-@@ -165,7 +165,7 @@
+@@ -165,7 +165,7 @@ static struct rt2880_pmx_func spi_cs1_gr
        FUNC("-", 3, 6, 1),
        FUNC("refclk", 2, 6, 1),
        FUNC("gpio", 1, 6, 1),
@@ -44,7 +44,7 @@
  };
  
  static struct rt2880_pmx_func spis_grp_mt7628[] = {
-@@ -182,27 +182,43 @@
+@@ -182,27 +182,43 @@ static struct rt2880_pmx_func gpio_grp_m
        FUNC("gpio", 0, 11, 1),
  };
  
        GRP_G("uart2", uart2_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_UART2),
        GRP_G("uart1", uart1_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_UART1),
        GRP_G("i2c", i2c_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_I2C),
-@@ -216,6 +232,8 @@
+@@ -216,6 +232,8 @@ static struct rt2880_pmx_group mt7628an_
        GRP_G("spi cs1", spi_cs1_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_CS1),
        GRP_G("spis", spis_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_SPIS),
        GRP_G("gpio", gpio_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_GPIO),
        { 0 }
  };
  
-@@ -529,7 +547,11 @@
+@@ -529,7 +547,11 @@ void prom_soc_init(struct ralink_soc_inf
                (rev & CHIP_REV_ECO_MASK));
  
        cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);
index fc05a981a15ef0fa45add6e9763cc1da60a617f7..1fddf11dc3bdc202a511b1ff8e25660c1a2636a5 100644 (file)
@@ -20,7 +20,7 @@
  /* does the board have sdram or ddram */
  static int dram_type;
  
-@@ -391,7 +394,7 @@
+@@ -391,7 +394,7 @@ void __init ralink_clk_init(void)
  #define RINT(x)               ((x) / 1000000)
  #define RFRAC(x)      (((x) / 1000) % 1000)
  
@@ -29,7 +29,7 @@
                if (xtal_rate == MHZ(40))
                        cpu_rate = MHZ(580);
                else
-@@ -436,7 +439,8 @@
+@@ -436,7 +439,8 @@ void __init ralink_clk_init(void)
        ralink_clk_add("10000e00.uart2", periph_rate);
        ralink_clk_add("10180000.wmac", xtal_rate);
  
@@ -39,8 +39,8 @@
                /*
                 * When the CPU goes into sleep mode, the BUS clock will be too low for
                 * USB to function properly
-@@ -536,8 +540,15 @@
- #endif
+@@ -533,8 +537,15 @@ void prom_soc_init(struct ralink_soc_inf
+                       soc_info->compatible = "ralink,mt7620n-soc";
                }
        } else if (n0 == MT7620_CHIP_NAME0 && n1 == MT7628_CHIP_NAME1) {
 -              ralink_soc = MT762X_SOC_MT7628AN;
@@ -57,7 +57,7 @@
                soc_info->compatible = "ralink,mt7628an-soc";
        } else {
                panic("mt762x: unknown SoC, n0:%08x n1:%08x\n", n0, n1);
-@@ -551,13 +562,13 @@
+@@ -548,13 +559,13 @@ void prom_soc_init(struct ralink_soc_inf
  
        cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);
  
@@ -73,7 +73,7 @@
                mt7628_dram_init(soc_info);
        else
                mt7620_dram_init(soc_info);
-@@ -570,7 +581,7 @@
+@@ -567,7 +578,7 @@ void prom_soc_init(struct ralink_soc_inf
        pr_info("Digital PMU set to %s control\n",
                (pmu1 & DIG_SW_SEL) ? ("sw") : ("hw"));
  
@@ -84,7 +84,7 @@
                rt2880_pinmux_data = mt7620a_pinmux_data;
 --- a/arch/mips/include/asm/mach-ralink/ralink_regs.h
 +++ b/arch/mips/include/asm/mach-ralink/ralink_regs.h
-@@ -24,6 +24,7 @@
+@@ -24,6 +24,7 @@ enum ralink_soc_type {
        MT762X_SOC_MT7620N,
        MT762X_SOC_MT7621AT,
        MT762X_SOC_MT7628AN,
@@ -94,7 +94,7 @@
  
 --- a/drivers/net/ethernet/ralink/esw_rt3052.c
 +++ b/drivers/net/ethernet/ralink/esw_rt3052.c
-@@ -611,7 +611,7 @@
+@@ -611,7 +611,7 @@ static void esw_hw_init(struct rt305x_es
                rt305x_mii_write(esw, 0, 29, 0x598b);
                /* select local register */
                rt305x_mii_write(esw, 0, 31, 0x8000);
                int i;
  //            u32 phy_val;
                u32 val;
-@@ -1042,7 +1042,7 @@
+@@ -1042,7 +1042,7 @@ esw_get_port_tr_badgood(struct switch_de
        int shift = attr->id == RT5350_ESW_ATTR_PORT_TR_GOOD ? 0 : 16;
        u32 reg;
  
index 6b05a13abd377d10e17c46aa1487404fb4cf2a29..ca56f5cb49ad04c0d93a3ca692db80c18f1df4d1 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ralink/mt7620.c
 +++ b/arch/mips/ralink/mt7620.c
-@@ -555,7 +555,7 @@
+@@ -552,7 +552,7 @@ void prom_soc_init(struct ralink_soc_inf
        }
  
        snprintf(soc_info->sys_type, RAMIPS_SYS_TYPE_LEN,
@@ -11,7 +11,7 @@
                (rev & CHIP_REV_ECO_MASK));
 --- a/arch/mips/ralink/mt7621.c
 +++ b/arch/mips/ralink/mt7621.c
-@@ -168,7 +168,7 @@
+@@ -185,7 +185,7 @@ void prom_soc_init(struct ralink_soc_inf
        rev = __raw_readl(sysc + SYSC_REG_CHIP_REV);
  
        snprintf(soc_info->sys_type, RAMIPS_SYS_TYPE_LEN,
index a35d7a948040dc4a84f6f4292b91d545c0053e06..d6d489249fd6fef034bede03083d7c5bd4895e42 100644 (file)
@@ -1,6 +1,6 @@
 --- a/sound/soc/Kconfig
 +++ b/sound/soc/Kconfig
-@@ -56,6 +56,7 @@
+@@ -56,6 +56,7 @@ source "sound/soc/spear/Kconfig"
  source "sound/soc/tegra/Kconfig"
  source "sound/soc/txx9/Kconfig"
  source "sound/soc/ux500/Kconfig"
  source "sound/soc/codecs/Kconfig"
 --- a/sound/soc/Makefile
 +++ b/sound/soc/Makefile
-@@ -33,3 +33,4 @@
+@@ -33,3 +33,4 @@ obj-$(CONFIG_SND_SOC)        += spear/
  obj-$(CONFIG_SND_SOC) += tegra/
  obj-$(CONFIG_SND_SOC) += txx9/
  obj-$(CONFIG_SND_SOC) += ux500/
 +obj-$(CONFIG_SND_SOC)   += mtk/
 --- a/sound/soc/codecs/Kconfig
 +++ b/sound/soc/codecs/Kconfig
-@@ -725,7 +725,7 @@
+@@ -725,7 +725,7 @@ config SND_SOC_WM8955
        tristate
  
  config SND_SOC_WM8960
 +#endif
 --- a/sound/soc/soc-core.c
 +++ b/sound/soc/soc-core.c
-@@ -1851,7 +1851,8 @@
+@@ -1851,7 +1851,8 @@ static int soc_probe(struct platform_dev
        /* Bodge while we unpick instantiation */
        card->dev = &pdev->dev;
  
        {  0x4, 0x0000 },
        {  0x5, 0x0008 },
        {  0x6, 0x0000 },
-@@ -88,8 +89,8 @@
+@@ -88,8 +89,8 @@ static const struct reg_default wm8960_r
        { 0x25, 0x0050 },
        { 0x26, 0x0000 },
        { 0x27, 0x0000 },
        { 0x2a, 0x0040 },
        { 0x2b, 0x0000 },
        { 0x2c, 0x0000 },
-@@ -127,8 +128,15 @@
+@@ -127,8 +128,15 @@ struct wm8960_priv {
        int playback_fs;
  };
  
  /* enumerated controls */
  static const char *wm8960_polarity[] = {"No Inversion", "Left Inverted",
        "Right Inverted", "Stereo Inversion"};
-@@ -181,8 +189,8 @@
+@@ -181,8 +189,8 @@ static int wm8960_get_deemph(struct snd_
        struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
        struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
  
  }
  
  static int wm8960_put_deemph(struct snd_kcontrol *kcontrol,
-@@ -200,6 +208,70 @@
+@@ -200,6 +208,70 @@ static int wm8960_put_deemph(struct snd_
        return wm8960_set_deemph(codec);
  }
  
  static const DECLARE_TLV_DB_SCALE(adc_tlv, -9700, 50, 0);
  static const DECLARE_TLV_DB_SCALE(dac_tlv, -12700, 50, 1);
  static const DECLARE_TLV_DB_SCALE(bypass_tlv, -2100, 300, 0);
-@@ -542,6 +614,7 @@
+@@ -542,6 +614,7 @@ static int wm8960_set_dai_fmt(struct snd
  
        /* set iface */
        snd_soc_write(codec, WM8960_IFACE1, iface);
        return 0;
  }
  
-@@ -623,11 +696,16 @@
+@@ -623,11 +696,16 @@ static int wm8960_set_bias_level_out3(st
                break;
  
        case SND_SOC_BIAS_PREPARE:
                if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
                        regcache_sync(wm8960->regmap);
  
-@@ -650,9 +728,13 @@
+@@ -650,9 +728,13 @@ static int wm8960_set_bias_level_out3(st
  
                /* Set VMID to 2x250k */
                snd_soc_update_bits(codec, WM8960_POWER1, 0x180, 0x100);
                /* Enable anti-pop features */
                snd_soc_write(codec, WM8960_APOP1,
                             WM8960_POBCTRL | WM8960_SOFT_ST |
-@@ -661,6 +743,7 @@
+@@ -661,6 +743,7 @@ static int wm8960_set_bias_level_out3(st
                /* Disable VMID and VREF, let them discharge */
                snd_soc_write(codec, WM8960_POWER1, 0);
                msleep(600);
                break;
        }
  
-@@ -853,10 +936,15 @@
+@@ -853,10 +936,15 @@ static int wm8960_set_dai_pll(struct snd
  
        if (pll_div.k) {
                reg |= 0x20;
        }
        snd_soc_write(codec, WM8960_PLL1, reg);
  
-@@ -888,7 +976,11 @@
+@@ -888,7 +976,11 @@ static int wm8960_set_dai_clkdiv(struct
                snd_soc_write(codec, WM8960_PLL1, reg | div);
                break;
        case WM8960_DCLKDIV:
                snd_soc_write(codec, WM8960_CLOCK2, reg | div);
                break;
        case WM8960_TOCLKSEL:
-@@ -962,7 +1054,7 @@
+@@ -962,7 +1054,7 @@ static int wm8960_probe(struct snd_soc_c
  {
        struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
        struct wm8960_data *pdata = dev_get_platdata(codec->dev);
  
        wm8960->set_bias_level = wm8960_set_bias_level_out3;
  
-@@ -973,11 +1065,7 @@
+@@ -973,11 +1065,7 @@ static int wm8960_probe(struct snd_soc_c
                        wm8960->set_bias_level = wm8960_set_bias_level_capless;
        }
  
index eebe31c918b89efaba09101abd78311ee98164c2..6a364c06c6f2085dc0ca17b0daa13d42a2ec833a 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/tty/serial/serial_core.c
 +++ b/drivers/tty/serial/serial_core.c
-@@ -356,6 +356,9 @@
+@@ -356,6 +356,9 @@ uart_get_baud_rate(struct uart_port *por
        else if (flags == UPF_SPD_WARP)
                altbaud = 460800;
  
index d2a15047287c81ba6f32b7e47a771ccac7a1e656..96662d81d0778df573ebe07f16bd5ce29c1bf7cf 100644 (file)
@@ -49,7 +49,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
        put_device(&card->dev);
 --- a/drivers/mmc/core/core.c
 +++ b/drivers/mmc/core/core.c
-@@ -1205,6 +1205,34 @@ EXPORT_SYMBOL(mmc_of_parse_voltage);
+@@ -1207,6 +1207,34 @@ EXPORT_SYMBOL(mmc_of_parse_voltage);
  
  #endif /* CONFIG_OF */
  
diff --git a/target/linux/x86/patches-3.18/001-x86-platform-Fix-Geode-LX-timekeeping-in-the-generic.patch b/target/linux/x86/patches-3.18/001-x86-platform-Fix-Geode-LX-timekeeping-in-the-generic.patch
deleted file mode 100644 (file)
index 8bd1699..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-From: David Woodhouse <dwmw2@infradead.org>
-Date: Thu, 17 Sep 2015 10:16:54 +0100
-Subject: [PATCH] x86/platform: Fix Geode LX timekeeping in the generic x86
- build
-
-In 2007, commit 07190a08eef36 ("Mark TSC on GeodeLX reliable")
-bypassed verification of the TSC on Geode LX. However, this code
-(now in the check_system_tsc_reliable() function in
-arch/x86/kernel/tsc.c) was only present if CONFIG_MGEODE_LX was
-set.
-
-OpenWRT has recently started building its generic Geode target
-for Geode GX, not LX, to include support for additional
-platforms. This broke the timekeeping on LX-based devices,
-because the TSC wasn't marked as reliable:
-https://dev.openwrt.org/ticket/20531
-
-By adding a runtime check on is_geode_lx(), we can also include
-the fix if CONFIG_MGEODEGX1 or CONFIG_X86_GENERIC are set, thus
-fixing the problem.
-
-Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-Signed-off-by: Ingo Molnar <mingo@kernel.org>
-Closes #20531
----
-
---- a/arch/x86/kernel/tsc.c
-+++ b/arch/x86/kernel/tsc.c
-@@ -21,6 +21,7 @@
- #include <asm/hypervisor.h>
- #include <asm/nmi.h>
- #include <asm/x86_init.h>
-+#include <asm/geode.h>
- unsigned int __read_mostly cpu_khz;   /* TSC clocks / usec, not used here */
- EXPORT_SYMBOL(cpu_khz);
-@@ -1004,15 +1005,17 @@ EXPORT_SYMBOL_GPL(mark_tsc_unstable);
- static void __init check_system_tsc_reliable(void)
- {
--#ifdef CONFIG_MGEODE_LX
--      /* RTSC counts during suspend */
-+#if defined(CONFIG_MGEODEGX1) || defined(CONFIG_MGEODE_LX) || defined(CONFIG_X86_GENERIC)
-+      if (is_geode_lx()) {
-+              /* RTSC counts during suspend */
- #define RTSC_SUSP 0x100
--      unsigned long res_low, res_high;
-+              unsigned long res_low, res_high;
--      rdmsr_safe(MSR_GEODE_BUSCONT_CONF0, &res_low, &res_high);
--      /* Geode_LX - the OLPC CPU has a very reliable TSC */
--      if (res_low & RTSC_SUSP)
--              tsc_clocksource_reliable = 1;
-+              rdmsr_safe(MSR_GEODE_BUSCONT_CONF0, &res_low, &res_high);
-+              /* Geode_LX - the OLPC CPU has a very reliable TSC */
-+              if (res_low & RTSC_SUSP)
-+                      tsc_clocksource_reliable = 1;
-+      }
- #endif
-       if (boot_cpu_has(X86_FEATURE_TSC_RELIABLE))
-               tsc_clocksource_reliable = 1;
index 19eaf3af3e93480d13b178b2741d581f77272080..93851d72838ec5dcf28032d9fcae2588edb91f83 100644 (file)
@@ -9,7 +9,7 @@ Subject: [PATCH 1/7] ubi: Read only the vid header instead of the whole page
 
 --- a/drivers/mtd/ubi/io.c
 +++ b/drivers/mtd/ubi/io.c
-@@ -1009,7 +1009,7 @@ int ubi_io_read_vid_hdr(struct ubi_devic
+@@ -1014,7 +1014,7 @@ int ubi_io_read_vid_hdr(struct ubi_devic
  
        p = (char *)vid_hdr - ubi->vid_hdr_shift;
        read_err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,