LINUX_RELEASE?=1
-LINUX_VERSION-3.18 = .21
+LINUX_VERSION-3.18 = .23
-LINUX_KERNEL_MD5SUM-3.18.21 = e4248caaa4cef318c04657e971b37298
+LINUX_KERNEL_MD5SUM-3.18.23 = dc6d265ab38716be3676ac294b481ad8
ifdef KERNEL_PATCHVER
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
--- a/include/linux/spi/spi.h
+++ b/include/linux/spi/spi.h
-@@ -620,6 +620,8 @@ struct spi_transfer {
+@@ -622,6 +622,8 @@ struct spi_transfer {
unsigned cs_change:1;
unsigned tx_nbits:3;
unsigned rx_nbits:3;
#define SPI_NBITS_SINGLE 0x01 /* 1bit transfer */
#define SPI_NBITS_DUAL 0x02 /* 2bits transfer */
#define SPI_NBITS_QUAD 0x04 /* 4bits transfer */
-@@ -665,6 +667,7 @@ struct spi_message {
+@@ -667,6 +669,7 @@ struct spi_message {
struct spi_device *spi;
unsigned is_dma_mapped:1;
--- a/include/linux/spi/spi.h
+++ b/include/linux/spi/spi.h
-@@ -508,6 +508,12 @@ extern struct spi_master *spi_busnum_to_
+@@ -510,6 +510,12 @@ extern struct spi_master *spi_busnum_to_
/*---------------------------------------------------------------------------*/
/*
* I/O INTERFACE between SPI controller and protocol drivers
*
-@@ -628,6 +634,7 @@ struct spi_transfer {
+@@ -630,6 +636,7 @@ struct spi_transfer {
u8 bits_per_word;
u16 delay_usecs;
u32 speed_hz;
while (len--) {
--- a/include/linux/spi/spi.h
+++ b/include/linux/spi/spi.h
-@@ -635,6 +635,7 @@ struct spi_transfer {
+@@ -637,6 +637,7 @@ struct spi_transfer {
u16 delay_usecs;
u32 speed_hz;
enum spi_transfer_type type;
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
-@@ -1228,6 +1228,10 @@ config SOC_AR934X
+@@ -1248,6 +1248,10 @@ config SOC_AR934X
select PCI_AR724X if PCI
def_bool n
config SOC_QCA955X
select HW_HAS_PCI
select PCI_AR724X if PCI
-@@ -1270,7 +1274,7 @@ config ATH79_DEV_USB
+@@ -1290,7 +1294,7 @@ config ATH79_DEV_USB
def_bool n
config ATH79_DEV_WMAC
select SOC_QCA955X
--- a/arch/mips/ath79/Makefile
+++ b/arch/mips/ath79/Makefile
-@@ -71,6 +71,7 @@ obj-$(CONFIG_ATH79_MACH_EAP300V2) += mac
+@@ -72,6 +72,7 @@ obj-$(CONFIG_ATH79_MACH_EAP300V2) += mac
obj-$(CONFIG_ATH79_MACH_EAP7660D) += mach-eap7660d.o
obj-$(CONFIG_ATH79_MACH_EL_M150) += mach-el-m150.o
obj-$(CONFIG_ATH79_MACH_EL_MINI) += mach-el-mini.o
obj-$(CONFIG_ATH79_MACH_GL_INET) += mach-gl-inet.o
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
-@@ -61,6 +61,7 @@ enum ath79_mach_type {
+@@ -62,6 +62,7 @@ enum ath79_mach_type {
ATH79_MACH_EL_M150, /* EasyLink EL-M150 */
ATH79_MACH_EL_MINI, /* EasyLink EL-MINI */
ATH79_MACH_ESR1750, /* EnGenius ESR1750 */
}
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
-@@ -1248,6 +1248,12 @@ config SOC_QCA955X
+@@ -1268,6 +1268,12 @@ config SOC_QCA955X
select PCI_AR724X if PCI
def_bool n
config ATH79_DEV_M25P80
select ATH79_DEV_SPI
def_bool n
-@@ -1285,7 +1291,7 @@ config ATH79_DEV_USB
+@@ -1305,7 +1311,7 @@ config ATH79_DEV_USB
def_bool n
config ATH79_DEV_WMAC
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
-@@ -579,6 +579,16 @@ config ATH79_MACH_R6100
+@@ -590,6 +590,16 @@ config ATH79_MACH_R6100
select ATH79_DEV_USB
select ATH79_DEV_WMAC
select SOC_AR71XX
--- a/arch/mips/ath79/Makefile
+++ b/arch/mips/ath79/Makefile
-@@ -80,6 +80,7 @@ obj-$(CONFIG_ATH79_MACH_HIWIFI_HC6361) +
+@@ -81,6 +81,7 @@ obj-$(CONFIG_ATH79_MACH_HIWIFI_HC6361) +
obj-$(CONFIG_ATH79_MACH_JA76PF) += mach-ja76pf.o
obj-$(CONFIG_ATH79_MACH_JWAP003) += mach-jwap003.o
obj-$(CONFIG_ATH79_MACH_HORNET_UB) += mach-hornet-ub.o
obj-$(CONFIG_ATH79_MACH_MYNET_N600) += mach-mynet-n600.o
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
-@@ -120,6 +120,7 @@ enum ath79_mach_type {
+@@ -121,6 +121,7 @@ enum ath79_mach_type {
ATH79_MACH_TEW_673GRU, /* TRENDnet TEW-673GRU */
ATH79_MACH_TEW_712BR, /* TRENDnet TEW-712BR */
ATH79_MACH_TEW_732BR, /* TRENDnet TEW-732BR */
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
-@@ -86,6 +86,7 @@ enum ath79_mach_type {
+@@ -87,6 +87,7 @@ enum ath79_mach_type {
ATH79_MACH_OM2P_LC, /* OpenMesh OM2P-LC */
ATH79_MACH_OM2Pv2, /* OpenMesh OM2Pv2 */
ATH79_MACH_OM2P, /* OpenMesh OM2P */
ATH79_MACH_PB42, /* Atheros PB42 */
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
-@@ -732,6 +732,7 @@ config ATH79_MACH_OM2P
+@@ -743,6 +743,7 @@ config ATH79_MACH_OM2P
config ATH79_MACH_OM5P
bool "OpenMesh OM5P board support"
select SOC_AR934X
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
-@@ -749,6 +749,26 @@ config ATH79_MACH_ONION_OMEGA
+@@ -760,6 +760,26 @@ config ATH79_MACH_ONION_OMEGA
select ATH79_DEV_USB
select ATH79_DEV_WMAC
select SOC_AR934X
--- a/arch/mips/ath79/Makefile
+++ b/arch/mips/ath79/Makefile
-@@ -81,6 +81,8 @@ obj-$(CONFIG_ATH79_MACH_JA76PF) += mach
+@@ -82,6 +82,8 @@ obj-$(CONFIG_ATH79_MACH_JA76PF) += mach
obj-$(CONFIG_ATH79_MACH_JWAP003) += mach-jwap003.o
obj-$(CONFIG_ATH79_MACH_HORNET_UB) += mach-hornet-ub.o
obj-$(CONFIG_ATH79_MACH_MC_MAC1200R) += mach-mc-mac1200r.o
obj-$(CONFIG_ATH79_MACH_MYNET_N600) += mach-mynet-n600.o
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
-@@ -70,6 +70,8 @@ enum ath79_mach_type {
+@@ -71,6 +71,8 @@ enum ath79_mach_type {
ATH79_MACH_JA76PF2, /* jjPlus JA76PF2 */
ATH79_MACH_JWAP003, /* jjPlus JWAP003 */
ATH79_MACH_HORNET_UB, /* ALFA Networks Hornet-UB */
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
-@@ -64,6 +64,7 @@ enum ath79_mach_type {
- ATH79_MACH_EPG5000, /* EnGenius EPG5000 */
- ATH79_MACH_F9K1115V2, /* Belkin AC1750DB */
- ATH79_MACH_GL_INET, /* GL-CONNECT GL-INET */
+@@ -65,6 +65,7 @@ enum ath79_mach_type {
+ ATH79_MACH_EPG5000, /* EnGenius EPG5000 */
+ ATH79_MACH_F9K1115V2, /* Belkin AC1750DB */
+ ATH79_MACH_GL_INET, /* GL-CONNECT GL-INET */
+ ATH79_MACH_GS_MINIBOX_V1, /* Gainstrong MiniBox V1.0 */
- ATH79_MACH_GS_OOLITE, /* GS OOLITE V1.0 */
- ATH79_MACH_HIWIFI_HC6361, /* HiWiFi HC6361 */
- ATH79_MACH_JA76PF, /* jjPlus JA76PF */
+ ATH79_MACH_GS_OOLITE, /* GS OOLITE V1.0 */
+ ATH79_MACH_HIWIFI_HC6361, /* HiWiFi HC6361 */
+ ATH79_MACH_JA76PF, /* jjPlus JA76PF */
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
-@@ -511,6 +511,16 @@
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
-
+@@ -522,6 +522,16 @@ config ATH79_MACH_EAP300V2
+ select ATH79_DEV_M25P80
+ select ATH79_DEV_WMAC
+
+config ATH79_MACH_GS_MINIBOX_V1
+ bool "Gainstrong MiniBox V1.0 support"
+ select SOC_AR933X
config ATH79_MACH_GS_OOLITE
bool "GS Oolite V1 support"
select SOC_AR933X
---- a/arch/mips/ath79/Makefile 2015-08-10 23:27:44.599500173 +0200
-+++ b/arch/mips/ath79/Makefile 2015-08-10 23:29:25.090929262 +0200
-@@ -75,6 +75,7 @@
+--- a/arch/mips/ath79/Makefile
++++ b/arch/mips/ath79/Makefile
+@@ -76,6 +76,7 @@ obj-$(CONFIG_ATH79_MACH_EPG5000) += mach
obj-$(CONFIG_ATH79_MACH_ESR1750) += mach-esr1750.o
obj-$(CONFIG_ATH79_MACH_F9K1115V2) += mach-f9k1115v2.o
obj-$(CONFIG_ATH79_MACH_GL_INET) += mach-gl-inet.o
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
-@@ -614,6 +614,16 @@ config ATH79_MACH_RB91X
+@@ -635,6 +635,16 @@ config ATH79_MACH_RB91X
select ATH79_DEV_USB
select ATH79_ROUTERBOOT
select SOC_AR934X
--- a/arch/mips/ath79/Makefile
+++ b/arch/mips/ath79/Makefile
-@@ -102,6 +102,7 @@ obj-$(CONFIG_ATH79_MACH_R6100) += mach-
+@@ -104,6 +104,7 @@ obj-$(CONFIG_ATH79_MACH_R6100) += mach-
obj-$(CONFIG_ATH79_MACH_RB4XX) += mach-rb4xx.o
obj-$(CONFIG_ATH79_MACH_RB750) += mach-rb750.o
obj-$(CONFIG_ATH79_MACH_RB91X) += mach-rb91x.o
obj-$(CONFIG_ATH79_MACH_RBSXTLITE) += mach-rbsxtlite.o
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
-@@ -109,6 +109,7 @@ enum ath79_mach_type {
+@@ -111,6 +111,7 @@ enum ath79_mach_type {
ATH79_MACH_RB_750G_R3, /* MikroTik RouterBOARD 750GL */
ATH79_MACH_RB_751, /* MikroTik RouterBOARD 751 */
ATH79_MACH_RB_751G, /* Mikrotik RouterBOARD 751G */
*/
--- a/net/ipv6/datagram.c
+++ b/net/ipv6/datagram.c
-@@ -374,7 +374,7 @@ int ipv6_recv_error(struct sock *sk, str
+@@ -384,7 +384,7 @@ int ipv6_recv_error(struct sock *sk, str
ipv6_iface_scope_id(&sin->sin6_addr,
IP6CB(skb)->iif);
} else {
&sin->sin6_addr);
sin->sin6_scope_id = 0;
}
-@@ -708,12 +708,12 @@ int ip6_datagram_send_ctl(struct net *ne
+@@ -718,12 +718,12 @@ int ip6_datagram_send_ctl(struct net *ne
}
if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
-@@ -175,6 +175,7 @@ enum ath79_mach_type {
+@@ -177,6 +177,7 @@ enum ath79_mach_type {
ATH79_MACH_UBNT_NANO_M, /* Ubiquiti NanoStation M */
ATH79_MACH_UBNT_NANO_M_XW, /* Ubiquiti NanoStation M XW */
ATH79_MACH_UBNT_ROCKET_M, /* Ubiquiti Rocket M */
@@ -22,6 +22,7 @@ enum ath79_mach_type {
ATH79_MACH_ALL0305, /* Allnet ALL0305 */
ATH79_MACH_ALL0315N, /* Allnet ALL0315N */
- ATH79_MACH_ANTMINER_S1, /* Antminer-S1 */
+ ATH79_MACH_ANTMINER_S1, /* Antminer-S1 */
+ ATH79_MACH_ANTMINER_S3, /* Antminer-S3 */
ATH79_MACH_AP113, /* Atheros AP113 reference board */
ATH79_MACH_AP121, /* Atheros AP121 reference board */
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
-@@ -866,6 +866,16 @@ config ATH79_MACH_EAP7660D
+@@ -887,6 +887,16 @@ config ATH79_MACH_EAP7660D
select ATH79_DEV_LEDS_GPIO
select ATH79_DEV_M25P80
arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts | 1 +
1 file changed, 1 insertion(+)
-diff --git a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
-index aedf3c4..8ade7de 100644
--- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
+++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
@@ -10,6 +10,7 @@
+#endif /* CONFIG_ARCH_BCM_5301X */
+
if (!ret)
- xhci->xhc_state &= ~XHCI_STATE_HALTED;
- return ret;
+ xhci->xhc_state &= ~(XHCI_STATE_HALTED | XHCI_STATE_DYING);
+
config DEBUG_EXYNOS_UART
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
-@@ -151,6 +151,7 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x003080
+@@ -159,6 +159,7 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x003080
machine-$(CONFIG_ARCH_AT91) += at91
machine-$(CONFIG_ARCH_AXXIA) += axxia
machine-$(CONFIG_ARCH_BCM) += bcm
EXPORT_SYMBOL(vchi_service_create);
--- a/sound/arm/Kconfig
+++ b/sound/arm/Kconfig
-@@ -39,5 +39,12 @@ config SND_PXA2XX_AC97
+@@ -40,5 +40,12 @@ config SND_PXA2XX_AC97
Say Y or M if you want to support any AC97 codec attached to
the PXA2xx AC97 interface.
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
-@@ -152,6 +152,7 @@ machine-$(CONFIG_ARCH_AT91) += at91
+@@ -160,6 +160,7 @@ machine-$(CONFIG_ARCH_AT91) += at91
machine-$(CONFIG_ARCH_AXXIA) += axxia
machine-$(CONFIG_ARCH_BCM) += bcm
machine-$(CONFIG_ARCH_BCM2708) += bcm2708
--- a/sound/arm/Kconfig
+++ b/sound/arm/Kconfig
-@@ -41,7 +41,7 @@ config SND_PXA2XX_AC97
+@@ -42,7 +42,7 @@ config SND_PXA2XX_AC97
config SND_BCM2835
tristate "BCM2835 ALSA driver"
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;
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)) {
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;
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)
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;
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;
}
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;
--- 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)
{
--- 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;
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);
}
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;
}
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);
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;
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;
--- 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,
};
#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
/**
* 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;
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;
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
-index d79e33b..686334f 100644
--- a/drivers/net/ethernet/realtek/8139cp.c
+++ b/drivers/net/ethernet/realtek/8139cp.c
@@ -157,6 +157,7 @@ enum {
unsigned rx_buf_sz;
unsigned wol_enabled : 1; /* Is Wake-on-LAN enabled? */
-@@ -665,7 +667,7 @@ static void cp_tx (struct cp_private *cp)
+@@ -665,7 +667,7 @@ static void cp_tx (struct cp_private *cp
BUG_ON(!skb);
dma_unmap_single(&cp->pdev->dev, le64_to_cpu(txd->addr),
PCI_DMA_TODEVICE);
if (status & LastFrag) {
-@@ -733,7 +735,7 @@ static netdev_tx_t cp_start_xmit (struct sk_buff *skb,
+@@ -733,7 +735,7 @@ static netdev_tx_t cp_start_xmit (struct
{
struct cp_private *cp = netdev_priv(dev);
unsigned entry;
unsigned long intr_flags;
__le32 opts2;
int mss = 0;
-@@ -753,6 +755,21 @@ static netdev_tx_t cp_start_xmit (struct sk_buff *skb,
+@@ -753,6 +755,21 @@ static netdev_tx_t cp_start_xmit (struct
mss = skb_shinfo(skb)->gso_size;
opts2 = cpu_to_le32(cp_tx_vlan_tag(skb));
if (skb_shinfo(skb)->nr_frags == 0) {
struct cp_desc *txd = &cp->tx_ring[entry];
-@@ -768,31 +785,20 @@ static netdev_tx_t cp_start_xmit (struct sk_buff *skb,
+@@ -768,31 +785,20 @@ static netdev_tx_t cp_start_xmit (struct
txd->addr = cpu_to_le64(mapping);
wmb();
/* We must give this initial chunk to the device last.
* Otherwise we could race with the device.
-@@ -805,14 +811,14 @@ static netdev_tx_t cp_start_xmit (struct sk_buff *skb,
+@@ -805,14 +811,14 @@ static netdev_tx_t cp_start_xmit (struct
goto out_dma_error;
cp->tx_skb[entry] = skb;
len = skb_frag_size(this_frag);
mapping = dma_map_single(&cp->pdev->dev,
skb_frag_address(this_frag),
-@@ -824,19 +830,7 @@ static netdev_tx_t cp_start_xmit (struct sk_buff *skb,
+@@ -824,19 +830,7 @@ static netdev_tx_t cp_start_xmit (struct
eor = (entry == (CP_TX_RING_SIZE - 1)) ? RingEnd : 0;
if (frag == skb_shinfo(skb)->nr_frags - 1)
ctrl |= LastFrag;
-@@ -849,8 +843,8 @@ static netdev_tx_t cp_start_xmit (struct sk_buff *skb,
+@@ -849,8 +843,8 @@ static netdev_tx_t cp_start_xmit (struct
txd->opts1 = cpu_to_le32(ctrl);
wmb();
}
txd = &cp->tx_ring[first_entry];
-@@ -858,27 +852,17 @@ static netdev_tx_t cp_start_xmit (struct sk_buff *skb,
+@@ -858,27 +852,17 @@ static netdev_tx_t cp_start_xmit (struct
txd->addr = cpu_to_le64(first_mapping);
wmb();
if (TX_BUFFS_AVAIL(cp) <= (MAX_SKB_FRAGS + 1))
netif_stop_queue(dev);
-@@ -1115,6 +1099,7 @@ static int cp_init_rings (struct cp_private *cp)
+@@ -1115,6 +1099,7 @@ static int cp_init_rings (struct cp_priv
{
memset(cp->tx_ring, 0, sizeof(struct cp_desc) * CP_TX_RING_SIZE);
cp->tx_ring[CP_TX_RING_SIZE - 1].opts1 = cpu_to_le32(RingEnd);
cp_init_rings_index(cp);
-@@ -1151,7 +1136,7 @@ static void cp_clean_rings (struct cp_private *cp)
+@@ -1151,7 +1136,7 @@ static void cp_clean_rings (struct cp_pr
desc = cp->rx_ring + i;
dma_unmap_single(&cp->pdev->dev,le64_to_cpu(desc->addr),
cp->rx_buf_sz, PCI_DMA_FROMDEVICE);
}
}
-@@ -1164,7 +1149,7 @@ static void cp_clean_rings (struct cp_private *cp)
+@@ -1164,7 +1149,7 @@ static void cp_clean_rings (struct cp_pr
le32_to_cpu(desc->opts1) & 0xffff,
PCI_DMA_TODEVICE);
if (le32_to_cpu(desc->opts1) & LastFrag)
cp->dev->stats.tx_dropped++;
}
}
-@@ -1172,6 +1157,7 @@ static void cp_clean_rings (struct cp_private *cp)
+@@ -1172,6 +1157,7 @@ static void cp_clean_rings (struct cp_pr
memset(cp->rx_ring, 0, sizeof(struct cp_desc) * CP_RX_RING_SIZE);
memset(cp->tx_ring, 0, sizeof(struct cp_desc) * CP_TX_RING_SIZE);
memset(cp->rx_skb, 0, sizeof(struct sk_buff *) * CP_RX_RING_SIZE);
memset(cp->tx_skb, 0, sizeof(struct sk_buff *) * CP_TX_RING_SIZE);
-@@ -1249,7 +1235,7 @@ static void cp_tx_timeout(struct net_device *dev)
+@@ -1249,7 +1235,7 @@ static void cp_tx_timeout(struct net_dev
{
struct cp_private *cp = netdev_priv(dev);
unsigned long flags;
netdev_warn(dev, "Transmit timeout, status %2x %4x %4x %4x\n",
cpr8(Cmd), cpr16(CpCmd),
-@@ -1257,13 +1243,26 @@ static void cp_tx_timeout(struct net_device *dev)
+@@ -1257,13 +1243,26 @@ static void cp_tx_timeout(struct net_dev
spin_lock_irqsave(&cp->lock, flags);
/* 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);
/*
* 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
}
}
/*
* 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);
/**
* 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;
}
}
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
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);
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;
}
}
--- 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];
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;
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,
};
#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;
}
/**
* 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);
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);
#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);
/* 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);
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
source "arch/arm/mach-pxa/Kconfig"
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
-@@ -187,6 +187,7 @@ machine-$(CONFIG_ARCH_NSPIRE) += nspire
+@@ -195,6 +195,7 @@ machine-$(CONFIG_ARCH_NSPIRE) += nspire
machine-$(CONFIG_ARCH_OMAP1) += omap1
machine-$(CONFIG_ARCH_OMAP2PLUS) += omap2
machine-$(CONFIG_ARCH_ORION5X) += orion5x
/* initialize internal qc */
/* XXX: Tag 0 is used for drivers with legacy EH as some
-@@ -4794,6 +4802,9 @@ static struct ata_queued_cmd *ata_qc_new
+@@ -4796,6 +4804,9 @@ static struct ata_queued_cmd *ata_qc_new
if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
return NULL;
for (i = 0, tag = ap->last_tag + 1; i < max_queue; i++, tag++) {
if (ap->flags & ATA_FLAG_LOWTAG)
tag = i;
-@@ -4866,6 +4877,8 @@ void ata_qc_free(struct ata_queued_cmd *
+@@ -4868,6 +4879,8 @@ void ata_qc_free(struct ata_queued_cmd *
if (likely(ata_tag_valid(tag))) {
qc->tag = ATA_TAG_POISON;
clear_bit(tag, &ap->qc_allocated);
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);
}
/*
* When the CPU goes into sleep mode, the BUS clock will be too low for
* USB to function properly
-@@ -367,6 +500,52 @@ void __init ralink_of_remap(void)
+@@ -367,6 +502,52 @@ void __init ralink_of_remap(void)
panic("Failed to remap core resources");
}
void prom_soc_init(struct ralink_soc_info *soc_info)
{
void __iomem *sysc = (void __iomem *) KSEG1ADDR(MT7620_SYSC_BASE);
-@@ -384,18 +563,25 @@ void prom_soc_init(struct ralink_soc_inf
+@@ -384,18 +565,25 @@ void prom_soc_init(struct ralink_soc_inf
rev = __raw_readl(sysc + SYSC_REG_CHIP_REV);
bga = (rev >> CHIP_REV_PKG_SHIFT) & CHIP_REV_PKG_MASK;
}
snprintf(soc_info->sys_type, RAMIPS_SYS_TYPE_LEN,
-@@ -407,28 +593,11 @@ void prom_soc_init(struct ralink_soc_inf
+@@ -407,28 +595,11 @@ void prom_soc_init(struct ralink_soc_inf
cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);
dram_type = (cfg0 >> SYSCFG0_DRAM_TYPE_SHIFT) & SYSCFG0_DRAM_TYPE_MASK;
pmu0 = __raw_readl(sysc + PMU0_CFG);
pmu1 = __raw_readl(sysc + PMU1_CFG);
-@@ -437,4 +606,9 @@ void prom_soc_init(struct ralink_soc_inf
+@@ -437,4 +608,9 @@ void prom_soc_init(struct ralink_soc_inf
(pmu0 & PMU_SW_SET) ? ("sw") : ("hw"));
pr_info("Digital PMU set to %s control\n",
(pmu1 & DIG_SW_SEL) ? ("sw") : ("hw"));
--- 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
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
#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
+#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
#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;
};
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);
}
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;
};
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);
}
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();
};
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);
}
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;
}
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
-@@ -103,6 +103,11 @@
+@@ -103,6 +103,11 @@ config PINCTRL_LANTIQ
select PINMUX
select PINCONF
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
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
-@@ -239,6 +239,11 @@
+@@ -239,6 +239,11 @@ config PHY_XGENE
help
This option enables support for APM X-Gene SoC multi-purpose PHY.
depends on RESET_CONTROLLER
--- a/drivers/phy/Makefile
+++ b/drivers/phy/Makefile
-@@ -31,3 +31,4 @@
+@@ -31,3 +31,4 @@ obj-$(CONFIG_PHY_ST_SPEAR1340_MIPHY) +=
obj-$(CONFIG_PHY_XGENE) += phy-xgene.o
obj-$(CONFIG_PHY_STIH407_USB) += phy-stih407-usb.o
obj-$(CONFIG_PHY_STIH41X_USB) += phy-stih41x-usb.o
--- 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
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.
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
--- 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.
if (xtal_rate == MHZ(40))
cpu_rate = MHZ(580);
else
-@@ -418,7 +416,7 @@ void __init ralink_clk_init(void)
- ralink_clk_add("10000c00.uartlite", periph_rate);
+@@ -420,7 +418,7 @@ void __init ralink_clk_init(void)
+ ralink_clk_add("10000e00.uart2", periph_rate);
ralink_clk_add("10180000.wmac", xtal_rate);
- if (IS_ENABLED(CONFIG_USB) && mt762x_soc != MT762X_SOC_MT7628AN) {
/*
* When the CPU goes into sleep mode, the BUS clock will be too low for
* USB to function properly
-@@ -506,11 +504,11 @@ void prom_soc_init(struct ralink_soc_inf
+@@ -508,11 +506,11 @@ void prom_soc_init(struct ralink_soc_inf
if (n0 == MT7620_CHIP_NAME0 && n1 == MT7620_CHIP_NAME1) {
if (bga) {
name = "MT7620N";
soc_info->compatible = "ralink,mt7620n-soc";
#ifdef CONFIG_PCI
-@@ -518,7 +516,7 @@ void prom_soc_init(struct ralink_soc_inf
+@@ -520,7 +518,7 @@ void prom_soc_init(struct ralink_soc_inf
#endif
}
} else if (n0 == MT7620_CHIP_NAME0 && n1 == MT7628_CHIP_NAME1) {
name = "MT7628AN";
soc_info->compatible = "ralink,mt7628an-soc";
} else {
-@@ -535,7 +533,7 @@ void prom_soc_init(struct ralink_soc_inf
+@@ -537,7 +535,7 @@ void prom_soc_init(struct ralink_soc_inf
dram_type = (cfg0 >> SYSCFG0_DRAM_TYPE_SHIFT) & SYSCFG0_DRAM_TYPE_MASK;
soc_info->mem_base = MT7620_DRAM_BASE;
mt7628_dram_init(soc_info);
else
mt7620_dram_init(soc_info);
-@@ -548,7 +546,7 @@ void prom_soc_init(struct ralink_soc_inf
+@@ -550,7 +548,7 @@ void prom_soc_init(struct ralink_soc_inf
pr_info("Digital PMU set to %s control\n",
(pmu1 & DIG_SW_SEL) ? ("sw") : ("hw"));
--- 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.
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
/*
* 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");
--- 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.
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
--- 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/
--- 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[] = {
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),
};
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 @@
+@@ -532,7 +550,11 @@ void prom_soc_init(struct ralink_soc_inf
(rev & CHIP_REV_ECO_MASK));
cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);
/* 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)
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);
/*
* When the CPU goes into sleep mode, the BUS clock will be too low for
* USB to function properly
-@@ -536,8 +540,15 @@
+@@ -536,8 +540,15 @@ void prom_soc_init(struct ralink_soc_inf
#endif
}
} else if (n0 == MT7620_CHIP_NAME0 && n1 == MT7628_CHIP_NAME1) {
soc_info->compatible = "ralink,mt7628an-soc";
} else {
panic("mt762x: unknown SoC, n0:%08x n1:%08x\n", n0, n1);
-@@ -551,13 +562,13 @@
+@@ -551,13 +562,13 @@ void prom_soc_init(struct ralink_soc_inf
cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);
mt7628_dram_init(soc_info);
else
mt7620_dram_init(soc_info);
-@@ -570,7 +581,7 @@
+@@ -570,7 +581,7 @@ void prom_soc_init(struct ralink_soc_inf
pr_info("Digital PMU set to %s control\n",
(pmu1 & DIG_SW_SEL) ? ("sw") : ("hw"));
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,
--- 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;
--- a/arch/mips/ralink/mt7620.c
+++ b/arch/mips/ralink/mt7620.c
-@@ -555,7 +555,7 @@
+@@ -555,7 +555,7 @@ void prom_soc_init(struct ralink_soc_inf
}
snprintf(soc_info->sys_type, RAMIPS_SYS_TYPE_LEN,
(rev & CHIP_REV_ECO_MASK));
--- a/arch/mips/ralink/mt7621.c
+++ b/arch/mips/ralink/mt7621.c
-@@ -168,7 +168,7 @@
+@@ -168,7 +168,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,
--- 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;
}
--- 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;
--- a/arch/mips/ralink/mt7620.c
+++ b/arch/mips/ralink/mt7620.c
-@@ -511,9 +511,6 @@ void prom_soc_init(struct ralink_soc_inf
+@@ -535,9 +535,6 @@ void prom_soc_init(struct ralink_soc_inf
ralink_soc = MT762X_SOC_MT7620N;
name = "MT7620N";
soc_info->compatible = "ralink,mt7620n-soc";
-#endif
}
} else if (n0 == MT7620_CHIP_NAME0 && n1 == MT7628_CHIP_NAME1) {
- ralink_soc = MT762X_SOC_MT7628AN;
+ u32 efuse = __raw_readl(sysc + SYSC_REG_EFUSE_CFG);
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 */
+++ /dev/null
-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;
--- 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,