kernel: update kernel 3.18 to version 3.18.23
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
This commit is contained in:
parent
9130e4dc32
commit
55a912f43e
34 changed files with 144 additions and 205 deletions
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
LINUX_RELEASE?=1
|
LINUX_RELEASE?=1
|
||||||
|
|
||||||
LINUX_VERSION-3.18 = .21
|
LINUX_VERSION-3.18 = .23
|
||||||
LINUX_VERSION-4.0 = .9
|
LINUX_VERSION-4.0 = .9
|
||||||
LINUX_VERSION-4.1 = .11
|
LINUX_VERSION-4.1 = .11
|
||||||
LINUX_VERSION-4.3 = -rc7
|
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.0.9 = 40fc5f6e2d718e539b45e6601c71985b
|
||||||
LINUX_KERNEL_MD5SUM-4.1.11 = 63e5981e38f935772a5309289fe76972
|
LINUX_KERNEL_MD5SUM-4.1.11 = 63e5981e38f935772a5309289fe76972
|
||||||
LINUX_KERNEL_MD5SUM-4.3-rc7 = b33f9c9c1a597bb8e0d6f84c074e733f
|
LINUX_KERNEL_MD5SUM-4.3-rc7 = b33f9c9c1a597bb8e0d6f84c074e733f
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
if (status > 0)
|
if (status > 0)
|
||||||
--- a/include/linux/spi/spi.h
|
--- a/include/linux/spi/spi.h
|
||||||
+++ b/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;
|
u32 speed_hz;
|
||||||
|
|
||||||
struct list_head transfer_list;
|
struct list_head transfer_list;
|
||||||
|
|
|
@ -88,7 +88,7 @@ Miklos
|
||||||
err = PTR_ERR(opaquedir);
|
err = PTR_ERR(opaquedir);
|
||||||
--- a/fs/overlayfs/super.c
|
--- a/fs/overlayfs/super.c
|
||||||
+++ b/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);
|
ufs->workdir = ovl_workdir_create(ufs->upper_mnt, workpath.dentry);
|
||||||
err = PTR_ERR(ufs->workdir);
|
err = PTR_ERR(ufs->workdir);
|
||||||
if (IS_ERR(ufs->workdir)) {
|
if (IS_ERR(ufs->workdir)) {
|
||||||
|
|
|
@ -116,7 +116,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||||
static int spi_master_initialize_queue(struct spi_master *master)
|
static int spi_master_initialize_queue(struct spi_master *master)
|
||||||
{
|
{
|
||||||
int ret;
|
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);
|
DECLARE_COMPLETION_ONSTACK(done);
|
||||||
int status;
|
int status;
|
||||||
struct spi_master *master = spi->master;
|
struct spi_master *master = spi->master;
|
||||||
|
|
|
@ -72,7 +72,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||||
static int spi_init_queue(struct spi_master *master)
|
static int spi_init_queue(struct spi_master *master)
|
||||||
{
|
{
|
||||||
struct sched_param param = { .sched_priority = MAX_RT_PRIO - 1 };
|
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.
|
* can.
|
||||||
*/
|
*/
|
||||||
if (master->transfer == spi_queued_transfer)
|
if (master->transfer == spi_queued_transfer)
|
||||||
|
|
|
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
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);
|
spin_lock_init(&po->bind_lock);
|
||||||
mutex_init(&po->pg_vec_lock);
|
mutex_init(&po->pg_vec_lock);
|
||||||
po->prot_hook.func = packet_rcv;
|
po->prot_hook.func = packet_rcv;
|
||||||
|
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
|
||||||
if (sock->type == SOCK_PACKET)
|
if (sock->type == SOCK_PACKET)
|
||||||
po->prot_hook.func = packet_rcv_spkt;
|
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;
|
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
default:
|
default:
|
||||||
return -ENOPROTOOPT;
|
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:
|
case PACKET_VNET_HDR:
|
||||||
val = po->has_vnet_hdr;
|
val = po->has_vnet_hdr;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/net/netlink/af_netlink.c
|
--- a/net/netlink/af_netlink.c
|
||||||
+++ b/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)
|
static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/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;
|
enum gro_result ret;
|
||||||
int grow;
|
int grow;
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
if (!(skb->dev->features & NETIF_F_GRO))
|
if (!(skb->dev->features & NETIF_F_GRO))
|
||||||
goto normal;
|
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);
|
&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,
|
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||||
struct net_device *upper_dev, bool master,
|
struct net_device *upper_dev, bool master,
|
||||||
void *private)
|
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;
|
goto rollback_lower_mesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
|
call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
|
||||||
return 0;
|
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)
|
list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
|
||||||
__netdev_adjacent_dev_unlink(dev, i->dev);
|
__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);
|
call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(netdev_upper_dev_unlink);
|
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)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
dev->addr_assign_type = NET_ADDR_SET;
|
dev->addr_assign_type = NET_ADDR_SET;
|
||||||
|
@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
return 0;
|
return 0;
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/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 mc;
|
||||||
struct netdev_hw_addr_list dev_addrs;
|
struct netdev_hw_addr_list dev_addrs;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/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_LIVE_ADDR_CHANGE = 1<<20,
|
||||||
IFF_MACVLAN = 1<<21,
|
IFF_MACVLAN = 1<<21,
|
||||||
IFF_XMIT_DST_RELEASE_PERM = 1<<22,
|
IFF_XMIT_DST_RELEASE_PERM = 1<<22,
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
#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_LIVE_ADDR_CHANGE IFF_LIVE_ADDR_CHANGE
|
||||||
#define IFF_MACVLAN IFF_MACVLAN
|
#define IFF_MACVLAN IFF_MACVLAN
|
||||||
#define IFF_XMIT_DST_RELEASE_PERM IFF_XMIT_DST_RELEASE_PERM
|
#define IFF_XMIT_DST_RELEASE_PERM IFF_XMIT_DST_RELEASE_PERM
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct net_device - The DEVICE structure.
|
* 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 ethtool_ops *ethtool_ops;
|
||||||
const struct forwarding_accel_ops *fwd_ops;
|
const struct forwarding_accel_ops *fwd_ops;
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
const struct header_ops *header_ops;
|
const struct header_ops *header_ops;
|
||||||
|
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
@@ -1579,6 +1586,10 @@ struct net_device {
|
@@ -1587,6 +1594,10 @@ struct net_device {
|
||||||
void *ax25_ptr;
|
void *ax25_ptr;
|
||||||
struct wireless_dev *ieee80211_ptr;
|
struct wireless_dev *ieee80211_ptr;
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
/* The Mellanox Tavor device gives false positive parity errors
|
/* The Mellanox Tavor device gives false positive parity errors
|
||||||
* Mark this device with a broken_parity_status, to allow
|
* Mark this device with a broken_parity_status, to allow
|
||||||
* PCI scanning code to "skip" this now blacklisted device.
|
* 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, 0x65f9, quirk_intel_mc_errata);
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, 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
|
* 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,
|
* Some BIOS implementations leave the Intel GPU interrupts enabled,
|
||||||
* even though no one is handling them (f.e. i915 driver is never loaded).
|
* 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, 0x010a, disable_igfx_irq);
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
/**
|
/**
|
||||||
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
||||||
* @tf: Target ATA taskfile
|
* @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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
|
||||||
return qc;
|
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.unhandled_irq = 1;
|
||||||
ap->stats.idle_irq = 1;
|
ap->stats.idle_irq = 1;
|
||||||
#endif
|
#endif
|
||||||
|
@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
ata_sff_port_init(ap);
|
ata_sff_port_init(ap);
|
||||||
|
|
||||||
return 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->pmp_link);
|
||||||
kfree(ap->slave_link);
|
kfree(ap->slave_link);
|
||||||
|
@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
kfree(ap);
|
kfree(ap);
|
||||||
host->ports[i] = NULL;
|
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]->print_id = atomic_inc_return(&ata_print_id);
|
||||||
host->ports[i]->local_port_no = i + 1;
|
host->ports[i]->local_port_no = i + 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,17 +79,17 @@
|
||||||
}
|
}
|
||||||
--- a/kernel/irq/proc.c
|
--- a/kernel/irq/proc.c
|
||||||
+++ b/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];
|
char name [MAX_NAMELEN];
|
||||||
|
|
||||||
+ if (IS_ENABLED(CONFIG_PROC_STRIPPED) && !IS_ENABLED(CONFIG_SMP))
|
+ if (IS_ENABLED(CONFIG_PROC_STRIPPED) && !IS_ENABLED(CONFIG_SMP))
|
||||||
+ return;
|
+ 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;
|
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];
|
char name [MAX_NAMELEN];
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
if (!root_irq_dir || !desc->dir)
|
if (!root_irq_dir || !desc->dir)
|
||||||
return;
|
return;
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
@@ -399,6 +405,9 @@ void init_irq_proc(void)
|
@@ -414,6 +420,9 @@ void init_irq_proc(void)
|
||||||
unsigned int irq;
|
unsigned int irq;
|
||||||
struct irq_desc *desc;
|
struct irq_desc *desc;
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
endif
|
endif
|
||||||
--- a/include/linux/fs.h
|
--- a/include/linux/fs.h
|
||||||
+++ b/include/linux/fs.h
|
+++ b/include/linux/fs.h
|
||||||
@@ -2530,12 +2530,25 @@ enum {
|
@@ -2528,12 +2528,25 @@ enum {
|
||||||
DIO_ASYNC_EXTEND = 0x04,
|
DIO_ASYNC_EXTEND = 0x04,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -94,7 +94,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/ip.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;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,7 +221,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||||
/**
|
/**
|
||||||
* igb_probe - Device Initialization Routine
|
* igb_probe - Device Initialization Routine
|
||||||
* @pdev: PCI device information struct
|
* @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);
|
pm_runtime_put_noidle(&pdev->dev);
|
||||||
|
@ -235,7 +235,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_register:
|
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;
|
struct e1000_hw *hw = &adapter->hw;
|
||||||
|
|
||||||
pm_runtime_get_noresume(&pdev->dev);
|
pm_runtime_get_noresume(&pdev->dev);
|
||||||
|
@ -246,7 +246,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||||
#ifdef CONFIG_IGB_HWMON
|
#ifdef CONFIG_IGB_HWMON
|
||||||
igb_sysfs_exit(adapter);
|
igb_sysfs_exit(adapter);
|
||||||
#endif
|
#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)
|
if (!resuming)
|
||||||
pm_runtime_put(&pdev->dev);
|
pm_runtime_put(&pdev->dev);
|
||||||
|
|
||||||
|
@ -259,7 +259,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||||
/* start the watchdog. */
|
/* start the watchdog. */
|
||||||
hw->mac.get_link_status = 1;
|
hw->mac.get_link_status = 1;
|
||||||
schedule_work(&adapter->watchdog_task);
|
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)
|
static int igb_mii_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
|
||||||
{
|
{
|
||||||
struct igb_adapter *adapter = netdev_priv(netdev);
|
struct igb_adapter *adapter = netdev_priv(netdev);
|
||||||
|
|
|
@ -44,7 +44,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
|
||||||
select GENERIC_CLOCKEVENTS
|
select GENERIC_CLOCKEVENTS
|
||||||
--- a/arch/arm/Makefile
|
--- a/arch/arm/Makefile
|
||||||
+++ b/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
|
else
|
||||||
MACHINE :=
|
MACHINE :=
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -290,7 +290,7 @@
|
||||||
+};
|
+};
|
||||||
--- a/arch/arm/boot/dts/Makefile
|
--- a/arch/arm/boot/dts/Makefile
|
||||||
+++ b/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-ns2mini.dtb \
|
||||||
kirkwood-nsa310.dtb \
|
kirkwood-nsa310.dtb \
|
||||||
kirkwood-nsa310a.dtb \
|
kirkwood-nsa310a.dtb \
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
source "arch/arm/mach-qcom/Kconfig"
|
source "arch/arm/mach-qcom/Kconfig"
|
||||||
--- a/arch/arm/Makefile
|
--- a/arch/arm/Makefile
|
||||||
+++ b/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_KEYSTONE) += keystone
|
||||||
machine-$(CONFIG_ARCH_KS8695) += ks8695
|
machine-$(CONFIG_ARCH_KS8695) += ks8695
|
||||||
machine-$(CONFIG_ARCH_LPC32XX) += lpc32xx
|
machine-$(CONFIG_ARCH_LPC32XX) += lpc32xx
|
||||||
|
|
|
@ -50,7 +50,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
static inline void uart_w32(u32 val, unsigned reg)
|
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);
|
return __raw_readl(uart_membase + reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -453,6 +453,8 @@
|
@@ -453,6 +453,8 @@ config RALINK
|
||||||
select CLKDEV_LOOKUP
|
select CLKDEV_LOOKUP
|
||||||
select ARCH_HAS_RESET_CONTROLLER
|
select ARCH_HAS_RESET_CONTROLLER
|
||||||
select RESET_CONTROLLER
|
select RESET_CONTROLLER
|
||||||
|
@ -35,7 +35,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
bool "SGI IP22 (Indy/Indigo2)"
|
bool "SGI IP22 (Indy/Indigo2)"
|
||||||
--- a/arch/mips/include/asm/mach-ralink/mt7620.h
|
--- a/arch/mips/include/asm/mach-ralink/mt7620.h
|
||||||
+++ b/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_MIN 32
|
||||||
#define MT7620_DDR2_SIZE_MAX 256
|
#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_SHIFT 2
|
||||||
#define MT7620_GPIO_MODE_UART0_MASK 0x7
|
#define MT7620_GPIO_MODE_UART0_MASK 0x7
|
||||||
#define MT7620_GPIO_MODE_UART0(x) ((x) << MT7620_GPIO_MODE_UART0_SHIFT)
|
#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_UARTF 0x5
|
||||||
#define MT7620_GPIO_MODE_GPIO_I2S 0x6
|
#define MT7620_GPIO_MODE_GPIO_I2S 0x6
|
||||||
#define MT7620_GPIO_MODE_GPIO 0x7
|
#define MT7620_GPIO_MODE_GPIO 0x7
|
||||||
|
@ -148,7 +148,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
+#endif
|
+#endif
|
||||||
--- a/arch/mips/include/asm/mach-ralink/rt305x.h
|
--- a/arch/mips/include/asm/mach-ralink/rt305x.h
|
||||||
+++ b/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_TXD0 40
|
||||||
#define RT305X_GPIO_GE0_RXCLK 51
|
#define RT305X_GPIO_GE0_RXCLK 51
|
||||||
|
|
||||||
|
@ -263,7 +263,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
@@ -47,118 +48,58 @@
|
@@ -47,118 +48,58 @@ enum mt762x_soc_type mt762x_soc;
|
||||||
/* does the board have sdram or ddram */
|
/* does the board have sdram or ddram */
|
||||||
static int dram_type;
|
static int dram_type;
|
||||||
|
|
||||||
|
@ -498,7 +498,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
};
|
};
|
||||||
|
|
||||||
static void rt288x_wdt_reset(void)
|
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);
|
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)
|
void __init ralink_clk_init(void)
|
||||||
{
|
{
|
||||||
unsigned long cpu_rate, wmac_rate = 40000000;
|
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_base = RT2880_SDRAM_BASE;
|
||||||
soc_info->mem_size_min = RT2880_MEM_SIZE_MIN;
|
soc_info->mem_size_min = RT2880_MEM_SIZE_MIN;
|
||||||
soc_info->mem_size_max = RT2880_MEM_SIZE_MAX;
|
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)
|
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);
|
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)
|
static unsigned long rt5350_get_mem_size(void)
|
||||||
{
|
{
|
||||||
void __iomem *sysc = (void __iomem *) KSEG1ADDR(RT305X_SYSC_BASE);
|
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;
|
soc_info->mem_base = RT305X_SDRAM_BASE;
|
||||||
if (soc_is_rt5350()) {
|
if (soc_is_rt5350()) {
|
||||||
soc_info->mem_size = rt5350_get_mem_size();
|
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)
|
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);
|
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)
|
void __init ralink_clk_init(void)
|
||||||
{
|
{
|
||||||
unsigned long cpu_rate, sys_rate;
|
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_base = RT3883_SDRAM_BASE;
|
||||||
soc_info->mem_size_min = RT3883_MEM_SIZE_MIN;
|
soc_info->mem_size_min = RT3883_MEM_SIZE_MIN;
|
||||||
soc_info->mem_size_max = RT3883_MEM_SIZE_MAX;
|
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
|
--- a/drivers/pinctrl/Kconfig
|
||||||
+++ b/drivers/pinctrl/Kconfig
|
+++ b/drivers/pinctrl/Kconfig
|
||||||
@@ -103,6 +103,11 @@
|
@@ -103,6 +103,11 @@ config PINCTRL_LANTIQ
|
||||||
select PINMUX
|
select PINMUX
|
||||||
select PINCONF
|
select PINCONF
|
||||||
|
|
||||||
|
@ -917,7 +917,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
depends on SOC_FALCON
|
depends on SOC_FALCON
|
||||||
--- a/drivers/pinctrl/Makefile
|
--- a/drivers/pinctrl/Makefile
|
||||||
+++ b/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_FALCON) += pinctrl-falcon.o
|
||||||
obj-$(CONFIG_PINCTRL_PALMAS) += pinctrl-palmas.o
|
obj-$(CONFIG_PINCTRL_PALMAS) += pinctrl-palmas.o
|
||||||
obj-$(CONFIG_PINCTRL_ROCKCHIP) += pinctrl-rockchip.o
|
obj-$(CONFIG_PINCTRL_ROCKCHIP) += pinctrl-rockchip.o
|
||||||
|
|
|
@ -14,7 +14,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -455,6 +455,9 @@
|
@@ -455,6 +455,9 @@ config RALINK
|
||||||
select RESET_CONTROLLER
|
select RESET_CONTROLLER
|
||||||
select PINCTRL
|
select PINCTRL
|
||||||
select PINCTRL_RT2880
|
select PINCTRL_RT2880
|
||||||
|
@ -26,7 +26,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
bool "SGI IP22 (Indy/Indigo2)"
|
bool "SGI IP22 (Indy/Indigo2)"
|
||||||
--- a/drivers/gpio/Kconfig
|
--- a/drivers/gpio/Kconfig
|
||||||
+++ b/drivers/gpio/Kconfig
|
+++ b/drivers/gpio/Kconfig
|
||||||
@@ -898,6 +898,12 @@
|
@@ -898,6 +898,12 @@ config GPIO_BCM_KONA
|
||||||
help
|
help
|
||||||
Turn on GPIO support for Broadcom "Kona" chips.
|
Turn on GPIO support for Broadcom "Kona" chips.
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
config GPIO_VIPERBOARD
|
config GPIO_VIPERBOARD
|
||||||
--- a/drivers/gpio/Makefile
|
--- a/drivers/gpio/Makefile
|
||||||
+++ b/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_XTENSA) += gpio-xtensa.o
|
||||||
obj-$(CONFIG_GPIO_ZEVIO) += gpio-zevio.o
|
obj-$(CONFIG_GPIO_ZEVIO) += gpio-zevio.o
|
||||||
obj-$(CONFIG_GPIO_ZYNQ) += gpio-zynq.o
|
obj-$(CONFIG_GPIO_ZYNQ) += gpio-zynq.o
|
||||||
|
|
|
@ -25,7 +25,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
--- a/drivers/mmc/host/Kconfig
|
--- a/drivers/mmc/host/Kconfig
|
||||||
+++ b/drivers/mmc/host/Kconfig
|
+++ b/drivers/mmc/host/Kconfig
|
||||||
@@ -773,3 +773,5 @@
|
@@ -773,3 +773,5 @@ config MMC_SUNXI
|
||||||
help
|
help
|
||||||
This selects support for the SD/MMC Host Controller on
|
This selects support for the SD/MMC Host Controller on
|
||||||
Allwinner sunxi SoCs.
|
Allwinner sunxi SoCs.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/spi/Kconfig
|
--- a/drivers/spi/Kconfig
|
||||||
+++ b/drivers/spi/Kconfig
|
+++ b/drivers/spi/Kconfig
|
||||||
@@ -439,6 +439,12 @@
|
@@ -439,6 +439,12 @@ config SPI_RT2880
|
||||||
help
|
help
|
||||||
This selects a driver for the Ralink RT288x/RT305x SPI Controller.
|
This selects a driver for the Ralink RT288x/RT305x SPI Controller.
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
depends on ARCH_S3C24XX
|
depends on ARCH_S3C24XX
|
||||||
--- a/drivers/spi/Makefile
|
--- a/drivers/spi/Makefile
|
||||||
+++ b/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_MPC512x_PSC) += spi-mpc512x-psc.o
|
||||||
obj-$(CONFIG_SPI_MPC52xx_PSC) += spi-mpc52xx-psc.o
|
obj-$(CONFIG_SPI_MPC52xx_PSC) += spi-mpc52xx-psc.o
|
||||||
obj-$(CONFIG_SPI_MPC52xx) += spi-mpc52xx.o
|
obj-$(CONFIG_SPI_MPC52xx) += spi-mpc52xx.o
|
||||||
|
|
|
@ -5145,7 +5145,7 @@
|
||||||
/*
|
/*
|
||||||
* For xHCI 1.0 host controllers, TD size is the number of max packet sized
|
* For xHCI 1.0 host controllers, TD size is the number of max packet sized
|
||||||
* packets remaining in the TD (*not* including this TRB).
|
* 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. */
|
/* Set the TRB length, TD size, and interrupter fields. */
|
||||||
|
@ -5153,7 +5153,7 @@
|
||||||
if (xhci->hci_version < 0x100) {
|
if (xhci->hci_version < 0x100) {
|
||||||
remainder = xhci_td_remainder(
|
remainder = xhci_td_remainder(
|
||||||
urb->transfer_buffer_length -
|
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,
|
trb_buff_len, total_packet_count, urb,
|
||||||
num_trbs - 1);
|
num_trbs - 1);
|
||||||
}
|
}
|
||||||
|
@ -5166,7 +5166,7 @@
|
||||||
length_field = TRB_LEN(trb_buff_len) |
|
length_field = TRB_LEN(trb_buff_len) |
|
||||||
remainder |
|
remainder |
|
||||||
TRB_INTR_TARGET(0);
|
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;
|
int running_total, trb_buff_len, ret;
|
||||||
unsigned int total_packet_count;
|
unsigned int total_packet_count;
|
||||||
u64 addr;
|
u64 addr;
|
||||||
|
@ -5176,10 +5176,10 @@
|
||||||
|
|
||||||
if (urb->num_sgs)
|
if (urb->num_sgs)
|
||||||
return queue_bulk_sg_tx(xhci, mem_flags, urb, slot_id, ep_index);
|
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;
|
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)
|
+#if defined (CONFIG_USB_MT7621_XHCI_PLATFORM)
|
||||||
+ switch(urb->dev->speed){
|
+ switch(urb->dev->speed){
|
||||||
+ case USB_SPEED_SUPER:
|
+ case USB_SPEED_SUPER:
|
||||||
|
@ -5202,7 +5202,7 @@
|
||||||
|
|
||||||
ret = prepare_transfer(xhci, xhci->devs[slot_id],
|
ret = prepare_transfer(xhci, xhci->devs[slot_id],
|
||||||
ep_index, urb->stream_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;
|
field |= TRB_ISP;
|
||||||
|
|
||||||
/* Set the TRB length, TD size, and interrupter fields. */
|
/* Set the TRB length, TD size, and interrupter fields. */
|
||||||
|
@ -5210,7 +5210,7 @@
|
||||||
if (xhci->hci_version < 0x100) {
|
if (xhci->hci_version < 0x100) {
|
||||||
remainder = xhci_td_remainder(
|
remainder = xhci_td_remainder(
|
||||||
urb->transfer_buffer_length -
|
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,
|
trb_buff_len, total_packet_count, urb,
|
||||||
num_trbs - 1);
|
num_trbs - 1);
|
||||||
}
|
}
|
||||||
|
@ -5221,19 +5221,19 @@
|
||||||
length_field = TRB_LEN(trb_buff_len) |
|
length_field = TRB_LEN(trb_buff_len) |
|
||||||
remainder |
|
remainder |
|
||||||
TRB_INTR_TARGET(0);
|
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;
|
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 defined (CONFIG_USB_MT7621_XHCI_PLATFORM)
|
||||||
+ if (1) {
|
+ if (1) {
|
||||||
+#else
|
+#else
|
||||||
if (xhci->hci_version == 0x100) {
|
if (xhci->hci_version >= 0x100) {
|
||||||
+#endif
|
+#endif
|
||||||
if (urb->transfer_buffer_length > 0) {
|
if (urb->transfer_buffer_length > 0) {
|
||||||
if (setup->bRequestType & USB_DIR_IN)
|
if (setup->bRequestType & USB_DIR_IN)
|
||||||
field |= TRB_TX_TYPE(TRB_DATA_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);
|
field = TRB_TYPE(TRB_DATA);
|
||||||
|
|
||||||
length_field = TRB_LEN(urb->transfer_buffer_length) |
|
length_field = TRB_LEN(urb->transfer_buffer_length) |
|
||||||
|
@ -5246,7 +5246,7 @@
|
||||||
TRB_INTR_TARGET(0);
|
TRB_INTR_TARGET(0);
|
||||||
if (urb->transfer_buffer_length > 0) {
|
if (urb->transfer_buffer_length > 0) {
|
||||||
if (setup->bRequestType & USB_DIR_IN)
|
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;
|
u64 start_addr, addr;
|
||||||
int i, j;
|
int i, j;
|
||||||
bool more_trbs_coming;
|
bool more_trbs_coming;
|
||||||
|
@ -5256,7 +5256,7 @@
|
||||||
|
|
||||||
ep_ring = xhci->devs[slot_id]->eps[ep_index].ring;
|
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_trb = &ep_ring->enqueue->generic;
|
||||||
start_cycle = ep_ring->cycle_state;
|
start_cycle = ep_ring->cycle_state;
|
||||||
|
|
||||||
|
@ -5278,7 +5278,7 @@
|
||||||
urb_priv = urb->hcpriv;
|
urb_priv = urb->hcpriv;
|
||||||
/* Queue the first TRB, even if it's zero-length */
|
/* Queue the first TRB, even if it's zero-length */
|
||||||
for (i = 0; i < num_tds; i++) {
|
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 {
|
} else {
|
||||||
td->last_trb = ep_ring->enqueue;
|
td->last_trb = ep_ring->enqueue;
|
||||||
field |= TRB_IOC;
|
field |= TRB_IOC;
|
||||||
|
@ -5292,7 +5292,7 @@
|
||||||
/* Set BEI bit except for the last td */
|
/* Set BEI bit except for the last td */
|
||||||
if (i < num_tds - 1)
|
if (i < num_tds - 1)
|
||||||
field |= TRB_BEI;
|
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;
|
trb_buff_len = td_remain_len;
|
||||||
|
|
||||||
/* Set the TRB length, TD size, & interrupter fields. */
|
/* Set the TRB length, TD size, & interrupter fields. */
|
||||||
|
@ -5300,7 +5300,7 @@
|
||||||
if (xhci->hci_version < 0x100) {
|
if (xhci->hci_version < 0x100) {
|
||||||
remainder = xhci_td_remainder(
|
remainder = xhci_td_remainder(
|
||||||
td_len - running_total);
|
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,
|
total_packet_count, urb,
|
||||||
(trbs_per_td - j - 1));
|
(trbs_per_td - j - 1));
|
||||||
}
|
}
|
||||||
|
@ -5349,7 +5349,7 @@
|
||||||
/* TODO: copied from ehci-hcd.c - can this be refactored? */
|
/* TODO: copied from ehci-hcd.c - can this be refactored? */
|
||||||
/*
|
/*
|
||||||
* xhci_handshake - spin reading hc until handshake completes or fails
|
* 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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5358,7 +5358,7 @@
|
||||||
static int xhci_free_msi(struct xhci_hcd *xhci)
|
static int xhci_free_msi(struct xhci_hcd *xhci)
|
||||||
{
|
{
|
||||||
int i;
|
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");
|
"Attempting compliance mode recovery");
|
||||||
hcd = xhci->shared_hcd;
|
hcd = xhci->shared_hcd;
|
||||||
|
|
||||||
|
@ -5370,7 +5370,7 @@
|
||||||
if (hcd->state == HC_STATE_SUSPENDED)
|
if (hcd->state == HC_STATE_SUSPENDED)
|
||||||
usb_hcd_resume_root_hub(hcd);
|
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;
|
const char *dmi_product_name, *dmi_sys_vendor;
|
||||||
|
|
||||||
|
@ -5380,7 +5380,7 @@
|
||||||
dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME);
|
dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME);
|
||||||
dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR);
|
dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR);
|
||||||
if (!dmi_product_name || !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_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||||
"xHCI doesn't need link TRB QUIRK");
|
"xHCI doesn't need link TRB QUIRK");
|
||||||
}
|
}
|
||||||
|
@ -5391,7 +5391,7 @@
|
||||||
retval = xhci_mem_init(xhci, GFP_KERNEL);
|
retval = xhci_mem_init(xhci, GFP_KERNEL);
|
||||||
xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Finished xhci_init");
|
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");
|
"// Set the interrupt modulation register");
|
||||||
temp = readl(&xhci->ir_set->irq_control);
|
temp = readl(&xhci->ir_set->irq_control);
|
||||||
temp &= ~ER_IRQ_INTERVAL_MASK;
|
temp &= ~ER_IRQ_INTERVAL_MASK;
|
||||||
|
@ -5403,7 +5403,7 @@
|
||||||
writel(temp, &xhci->ir_set->irq_control);
|
writel(temp, &xhci->ir_set->irq_control);
|
||||||
|
|
||||||
/* Set the HCD state before we enable the irqs */
|
/* 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,
|
xhci_queue_vendor_command(xhci, command, 0, 0, 0,
|
||||||
TRB_TYPE(TRB_NEC_GET_FW));
|
TRB_TYPE(TRB_NEC_GET_FW));
|
||||||
}
|
}
|
||||||
|
@ -5413,7 +5413,7 @@
|
||||||
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||||
"Finished xhci_run for USB2 roothub");
|
"Finished xhci_run for USB2 roothub");
|
||||||
return 0;
|
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 drop_flag;
|
||||||
u32 new_add_flags, new_drop_flags;
|
u32 new_add_flags, new_drop_flags;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -5428,7 +5428,7 @@
|
||||||
|
|
||||||
ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
|
ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
|
||||||
if (ret <= 0)
|
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_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
|
||||||
|
|
||||||
|
@ -5469,7 +5469,7 @@
|
||||||
xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
|
xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
|
||||||
(unsigned int) ep->desc.bEndpointAddress,
|
(unsigned int) ep->desc.bEndpointAddress,
|
||||||
udev->slot_id,
|
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;
|
u32 new_add_flags, new_drop_flags;
|
||||||
struct xhci_virt_device *virt_dev;
|
struct xhci_virt_device *virt_dev;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -5489,7 +5489,7 @@
|
||||||
|
|
||||||
ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
|
ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
|
||||||
if (ret <= 0) {
|
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;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5546,7 +5546,7 @@
|
||||||
ctrl_ctx->add_flags |= cpu_to_le32(added_ctxs);
|
ctrl_ctx->add_flags |= cpu_to_le32(added_ctxs);
|
||||||
new_add_flags = le32_to_cpu(ctrl_ctx->add_flags);
|
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)
|
u16 *timeout)
|
||||||
{
|
{
|
||||||
if (state == USB3_LPM_U1)
|
if (state == USB3_LPM_U1)
|
||||||
|
@ -5561,7 +5561,7 @@
|
||||||
return xhci_calculate_u2_timeout(xhci, udev, desc);
|
return xhci_calculate_u2_timeout(xhci, udev, desc);
|
||||||
|
|
||||||
return USB3_LPM_DISABLED;
|
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;
|
hcd->self.no_sg_constraint = 1;
|
||||||
|
|
||||||
/* XHCI controllers don't stop the ep queue on short packets :| */
|
/* XHCI controllers don't stop the ep queue on short packets :| */
|
||||||
|
@ -5571,7 +5571,7 @@
|
||||||
|
|
||||||
if (usb_hcd_is_primary_hcd(hcd)) {
|
if (usb_hcd_is_primary_hcd(hcd)) {
|
||||||
xhci = kzalloc(sizeof(struct xhci_hcd), GFP_KERNEL);
|
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;
|
goto error;
|
||||||
xhci_dbg(xhci, "Reset complete\n");
|
xhci_dbg(xhci, "Reset complete\n");
|
||||||
|
|
||||||
|
@ -5582,7 +5582,7 @@
|
||||||
/* Set dma_mask and coherent_dma_mask to 64-bits,
|
/* Set dma_mask and coherent_dma_mask to 64-bits,
|
||||||
* if xHC supports 64-bit addressing */
|
* if xHC supports 64-bit addressing */
|
||||||
if (HCC_64BIT_ADDR(xhci->hcc_params) &&
|
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_AUTHOR(DRIVER_AUTHOR);
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/pwm/Kconfig
|
--- a/drivers/pwm/Kconfig
|
||||||
+++ b/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
|
To compile this driver as a module, choose M here: the module
|
||||||
will be called pwm-lpss-platform.
|
will be called pwm-lpss-platform.
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
depends on ARCH_MXS && OF
|
depends on ARCH_MXS && OF
|
||||||
--- a/drivers/pwm/Makefile
|
--- a/drivers/pwm/Makefile
|
||||||
+++ b/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) += pwm-lpss.o
|
||||||
obj-$(CONFIG_PWM_LPSS_PCI) += pwm-lpss-pci.o
|
obj-$(CONFIG_PWM_LPSS_PCI) += pwm-lpss-pci.o
|
||||||
obj-$(CONFIG_PWM_LPSS_PLATFORM) += pwm-lpss-platform.o
|
obj-$(CONFIG_PWM_LPSS_PLATFORM) += pwm-lpss-platform.o
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/misc/Makefile
|
--- a/drivers/misc/Makefile
|
||||||
+++ b/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_ECHO) += echo/
|
||||||
obj-$(CONFIG_VEXPRESS_SYSCFG) += vexpress-syscfg.o
|
obj-$(CONFIG_VEXPRESS_SYSCFG) += vexpress-syscfg.o
|
||||||
obj-$(CONFIG_CXL_BASE) += cxl/
|
obj-$(CONFIG_CXL_BASE) += cxl/
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/arch/mips/ralink/mt7620.c
|
--- a/arch/mips/ralink/mt7620.c
|
||||||
+++ b/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[] = {
|
static struct rt2880_pmx_func pwm1_grp_mt7628[] = {
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
FUNC("pwm", 2, 45, 2),
|
FUNC("pwm", 2, 45, 2),
|
||||||
FUNC("gpio", 1, 45, 2),
|
FUNC("gpio", 1, 45, 2),
|
||||||
FUNC("uart1", 0, 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("-", 3, 6, 1),
|
||||||
FUNC("refclk", 2, 6, 1),
|
FUNC("refclk", 2, 6, 1),
|
||||||
FUNC("gpio", 1, 6, 1),
|
FUNC("gpio", 1, 6, 1),
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct rt2880_pmx_func spis_grp_mt7628[] = {
|
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),
|
FUNC("gpio", 0, 11, 1),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@
|
||||||
GRP_G("uart2", uart2_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_UART2),
|
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("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),
|
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("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("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),
|
GRP_G("gpio", gpio_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_GPIO),
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -529,7 +547,11 @@
|
@@ -529,7 +547,11 @@ void prom_soc_init(struct ralink_soc_inf
|
||||||
(rev & CHIP_REV_ECO_MASK));
|
(rev & CHIP_REV_ECO_MASK));
|
||||||
|
|
||||||
cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);
|
cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
/* does the board have sdram or ddram */
|
/* does the board have sdram or ddram */
|
||||||
static int dram_type;
|
static int dram_type;
|
||||||
|
|
||||||
@@ -391,7 +394,7 @@
|
@@ -391,7 +394,7 @@ void __init ralink_clk_init(void)
|
||||||
#define RINT(x) ((x) / 1000000)
|
#define RINT(x) ((x) / 1000000)
|
||||||
#define RFRAC(x) (((x) / 1000) % 1000)
|
#define RFRAC(x) (((x) / 1000) % 1000)
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
if (xtal_rate == MHZ(40))
|
if (xtal_rate == MHZ(40))
|
||||||
cpu_rate = MHZ(580);
|
cpu_rate = MHZ(580);
|
||||||
else
|
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("10000e00.uart2", periph_rate);
|
||||||
ralink_clk_add("10180000.wmac", xtal_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
|
* When the CPU goes into sleep mode, the BUS clock will be too low for
|
||||||
* USB to function properly
|
* USB to function properly
|
||||||
@@ -536,8 +540,15 @@
|
@@ -533,8 +537,15 @@ void prom_soc_init(struct ralink_soc_inf
|
||||||
#endif
|
soc_info->compatible = "ralink,mt7620n-soc";
|
||||||
}
|
}
|
||||||
} else if (n0 == MT7620_CHIP_NAME0 && n1 == MT7628_CHIP_NAME1) {
|
} else if (n0 == MT7620_CHIP_NAME0 && n1 == MT7628_CHIP_NAME1) {
|
||||||
- ralink_soc = MT762X_SOC_MT7628AN;
|
- ralink_soc = MT762X_SOC_MT7628AN;
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
soc_info->compatible = "ralink,mt7628an-soc";
|
soc_info->compatible = "ralink,mt7628an-soc";
|
||||||
} else {
|
} else {
|
||||||
panic("mt762x: unknown SoC, n0:%08x n1:%08x\n", n0, n1);
|
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);
|
cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
mt7628_dram_init(soc_info);
|
mt7628_dram_init(soc_info);
|
||||||
else
|
else
|
||||||
mt7620_dram_init(soc_info);
|
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",
|
pr_info("Digital PMU set to %s control\n",
|
||||||
(pmu1 & DIG_SW_SEL) ? ("sw") : ("hw"));
|
(pmu1 & DIG_SW_SEL) ? ("sw") : ("hw"));
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
rt2880_pinmux_data = mt7620a_pinmux_data;
|
rt2880_pinmux_data = mt7620a_pinmux_data;
|
||||||
--- a/arch/mips/include/asm/mach-ralink/ralink_regs.h
|
--- a/arch/mips/include/asm/mach-ralink/ralink_regs.h
|
||||||
+++ b/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_MT7620N,
|
||||||
MT762X_SOC_MT7621AT,
|
MT762X_SOC_MT7621AT,
|
||||||
MT762X_SOC_MT7628AN,
|
MT762X_SOC_MT7628AN,
|
||||||
|
@ -94,7 +94,7 @@
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/ralink/esw_rt3052.c
|
--- a/drivers/net/ethernet/ralink/esw_rt3052.c
|
||||||
+++ b/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);
|
rt305x_mii_write(esw, 0, 29, 0x598b);
|
||||||
/* select local register */
|
/* select local register */
|
||||||
rt305x_mii_write(esw, 0, 31, 0x8000);
|
rt305x_mii_write(esw, 0, 31, 0x8000);
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
int i;
|
int i;
|
||||||
// u32 phy_val;
|
// u32 phy_val;
|
||||||
u32 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;
|
int shift = attr->id == RT5350_ESW_ATTR_PORT_TR_GOOD ? 0 : 16;
|
||||||
u32 reg;
|
u32 reg;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/arch/mips/ralink/mt7620.c
|
--- a/arch/mips/ralink/mt7620.c
|
||||||
+++ b/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,
|
snprintf(soc_info->sys_type, RAMIPS_SYS_TYPE_LEN,
|
||||||
|
@ -11,7 +11,7 @@
|
||||||
(rev & CHIP_REV_ECO_MASK));
|
(rev & CHIP_REV_ECO_MASK));
|
||||||
--- a/arch/mips/ralink/mt7621.c
|
--- a/arch/mips/ralink/mt7621.c
|
||||||
+++ b/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);
|
rev = __raw_readl(sysc + SYSC_REG_CHIP_REV);
|
||||||
|
|
||||||
snprintf(soc_info->sys_type, RAMIPS_SYS_TYPE_LEN,
|
snprintf(soc_info->sys_type, RAMIPS_SYS_TYPE_LEN,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/sound/soc/Kconfig
|
--- a/sound/soc/Kconfig
|
||||||
+++ b/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/tegra/Kconfig"
|
||||||
source "sound/soc/txx9/Kconfig"
|
source "sound/soc/txx9/Kconfig"
|
||||||
source "sound/soc/ux500/Kconfig"
|
source "sound/soc/ux500/Kconfig"
|
||||||
|
@ -10,14 +10,14 @@
|
||||||
source "sound/soc/codecs/Kconfig"
|
source "sound/soc/codecs/Kconfig"
|
||||||
--- a/sound/soc/Makefile
|
--- a/sound/soc/Makefile
|
||||||
+++ b/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) += tegra/
|
||||||
obj-$(CONFIG_SND_SOC) += txx9/
|
obj-$(CONFIG_SND_SOC) += txx9/
|
||||||
obj-$(CONFIG_SND_SOC) += ux500/
|
obj-$(CONFIG_SND_SOC) += ux500/
|
||||||
+obj-$(CONFIG_SND_SOC) += mtk/
|
+obj-$(CONFIG_SND_SOC) += mtk/
|
||||||
--- a/sound/soc/codecs/Kconfig
|
--- a/sound/soc/codecs/Kconfig
|
||||||
+++ b/sound/soc/codecs/Kconfig
|
+++ b/sound/soc/codecs/Kconfig
|
||||||
@@ -725,7 +725,7 @@
|
@@ -725,7 +725,7 @@ config SND_SOC_WM8955
|
||||||
tristate
|
tristate
|
||||||
|
|
||||||
config SND_SOC_WM8960
|
config SND_SOC_WM8960
|
||||||
|
@ -7371,7 +7371,7 @@
|
||||||
+#endif
|
+#endif
|
||||||
--- a/sound/soc/soc-core.c
|
--- a/sound/soc/soc-core.c
|
||||||
+++ b/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 */
|
/* Bodge while we unpick instantiation */
|
||||||
card->dev = &pdev->dev;
|
card->dev = &pdev->dev;
|
||||||
|
|
||||||
|
@ -8107,7 +8107,7 @@
|
||||||
{ 0x4, 0x0000 },
|
{ 0x4, 0x0000 },
|
||||||
{ 0x5, 0x0008 },
|
{ 0x5, 0x0008 },
|
||||||
{ 0x6, 0x0000 },
|
{ 0x6, 0x0000 },
|
||||||
@@ -88,8 +89,8 @@
|
@@ -88,8 +89,8 @@ static const struct reg_default wm8960_r
|
||||||
{ 0x25, 0x0050 },
|
{ 0x25, 0x0050 },
|
||||||
{ 0x26, 0x0000 },
|
{ 0x26, 0x0000 },
|
||||||
{ 0x27, 0x0000 },
|
{ 0x27, 0x0000 },
|
||||||
|
@ -8118,7 +8118,7 @@
|
||||||
{ 0x2a, 0x0040 },
|
{ 0x2a, 0x0040 },
|
||||||
{ 0x2b, 0x0000 },
|
{ 0x2b, 0x0000 },
|
||||||
{ 0x2c, 0x0000 },
|
{ 0x2c, 0x0000 },
|
||||||
@@ -127,8 +128,15 @@
|
@@ -127,8 +128,15 @@ struct wm8960_priv {
|
||||||
int playback_fs;
|
int playback_fs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -8135,7 +8135,7 @@
|
||||||
/* enumerated controls */
|
/* enumerated controls */
|
||||||
static const char *wm8960_polarity[] = {"No Inversion", "Left Inverted",
|
static const char *wm8960_polarity[] = {"No Inversion", "Left Inverted",
|
||||||
"Right Inverted", "Stereo Inversion"};
|
"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 snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||||
struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
|
struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
|
||||||
|
|
||||||
|
@ -8146,7 +8146,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wm8960_put_deemph(struct snd_kcontrol *kcontrol,
|
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);
|
return wm8960_set_deemph(codec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8217,7 +8217,7 @@
|
||||||
static const DECLARE_TLV_DB_SCALE(adc_tlv, -9700, 50, 0);
|
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(dac_tlv, -12700, 50, 1);
|
||||||
static const DECLARE_TLV_DB_SCALE(bypass_tlv, -2100, 300, 0);
|
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 */
|
/* set iface */
|
||||||
snd_soc_write(codec, WM8960_IFACE1, iface);
|
snd_soc_write(codec, WM8960_IFACE1, iface);
|
||||||
|
@ -8225,7 +8225,7 @@
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -623,11 +696,16 @@
|
@@ -623,11 +696,16 @@ static int wm8960_set_bias_level_out3(st
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SND_SOC_BIAS_PREPARE:
|
case SND_SOC_BIAS_PREPARE:
|
||||||
|
@ -8242,7 +8242,7 @@
|
||||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||||
regcache_sync(wm8960->regmap);
|
regcache_sync(wm8960->regmap);
|
||||||
|
|
||||||
@@ -650,9 +728,13 @@
|
@@ -650,9 +728,13 @@ static int wm8960_set_bias_level_out3(st
|
||||||
|
|
||||||
/* Set VMID to 2x250k */
|
/* Set VMID to 2x250k */
|
||||||
snd_soc_update_bits(codec, WM8960_POWER1, 0x180, 0x100);
|
snd_soc_update_bits(codec, WM8960_POWER1, 0x180, 0x100);
|
||||||
|
@ -8256,7 +8256,7 @@
|
||||||
/* Enable anti-pop features */
|
/* Enable anti-pop features */
|
||||||
snd_soc_write(codec, WM8960_APOP1,
|
snd_soc_write(codec, WM8960_APOP1,
|
||||||
WM8960_POBCTRL | WM8960_SOFT_ST |
|
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 */
|
/* Disable VMID and VREF, let them discharge */
|
||||||
snd_soc_write(codec, WM8960_POWER1, 0);
|
snd_soc_write(codec, WM8960_POWER1, 0);
|
||||||
msleep(600);
|
msleep(600);
|
||||||
|
@ -8264,7 +8264,7 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -853,10 +936,15 @@
|
@@ -853,10 +936,15 @@ static int wm8960_set_dai_pll(struct snd
|
||||||
|
|
||||||
if (pll_div.k) {
|
if (pll_div.k) {
|
||||||
reg |= 0x20;
|
reg |= 0x20;
|
||||||
|
@ -8281,7 +8281,7 @@
|
||||||
}
|
}
|
||||||
snd_soc_write(codec, WM8960_PLL1, reg);
|
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);
|
snd_soc_write(codec, WM8960_PLL1, reg | div);
|
||||||
break;
|
break;
|
||||||
case WM8960_DCLKDIV:
|
case WM8960_DCLKDIV:
|
||||||
|
@ -8293,7 +8293,7 @@
|
||||||
snd_soc_write(codec, WM8960_CLOCK2, reg | div);
|
snd_soc_write(codec, WM8960_CLOCK2, reg | div);
|
||||||
break;
|
break;
|
||||||
case WM8960_TOCLKSEL:
|
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_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
|
||||||
struct wm8960_data *pdata = dev_get_platdata(codec->dev);
|
struct wm8960_data *pdata = dev_get_platdata(codec->dev);
|
||||||
|
@ -8302,7 +8302,7 @@
|
||||||
|
|
||||||
wm8960->set_bias_level = wm8960_set_bias_level_out3;
|
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;
|
wm8960->set_bias_level = wm8960_set_bias_level_capless;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/tty/serial/serial_core.c
|
--- a/drivers/tty/serial/serial_core.c
|
||||||
+++ b/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)
|
else if (flags == UPF_SPD_WARP)
|
||||||
altbaud = 460800;
|
altbaud = 460800;
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
put_device(&card->dev);
|
put_device(&card->dev);
|
||||||
--- a/drivers/mmc/core/core.c
|
--- a/drivers/mmc/core/core.c
|
||||||
+++ b/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 */
|
#endif /* CONFIG_OF */
|
||||||
|
|
||||||
|
|
|
@ -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;
|
|
|
@ -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
|
--- a/drivers/mtd/ubi/io.c
|
||||||
+++ b/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;
|
p = (char *)vid_hdr - ubi->vid_hdr_shift;
|
||||||
read_err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,
|
read_err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,
|
||||||
|
|
Loading…
Reference in a new issue