kernel: update kernel 4.1 to version 4.1.11

https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.11

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

SVN-Revision: 47252
v19.07.3_mercusys_ac12_duma
Hauke Mehrtens 9 years ago
parent fa4395db04
commit da94b00df5

@ -4,12 +4,12 @@ LINUX_RELEASE?=1
LINUX_VERSION-3.18 = .21
LINUX_VERSION-4.0 = .9
LINUX_VERSION-4.1 = .10
LINUX_VERSION-4.1 = .11
LINUX_VERSION-4.3 = -rc7
LINUX_KERNEL_MD5SUM-3.18.21 = e4248caaa4cef318c04657e971b37298
LINUX_KERNEL_MD5SUM-4.0.9 = 40fc5f6e2d718e539b45e6601c71985b
LINUX_KERNEL_MD5SUM-4.1.10 = 16953359a8c245d478294af65fd756a8
LINUX_KERNEL_MD5SUM-4.1.11 = 63e5981e38f935772a5309289fe76972
LINUX_KERNEL_MD5SUM-4.3-rc7 = b33f9c9c1a597bb8e0d6f84c074e733f
ifdef KERNEL_PATCHVER

@ -1,7 +1,7 @@
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -339,6 +339,13 @@ configured less than Maximum supported f
UART_FCR7_64BYTE,
@@ -347,6 +347,13 @@ configured less than Maximum supported f
.rxtrig_bytes = {1, 4, 8, 14},
.flags = UART_CAP_FIFO,
},
+ [PORT_AR7] = {
@ -14,7 +14,7 @@
};
/* Uart divisor latch read */
@@ -3340,7 +3347,11 @@ static void serial8250_console_putchar(s
@@ -3348,7 +3355,11 @@ static void serial8250_console_putchar(s
{
struct uart_8250_port *up = up_to_u8250p(port);

@ -1,19 +1,19 @@
--- 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 */
@@ -69,6 +69,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
@@ -556,6 +556,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
@ -27,9 +27,9 @@
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
@@ -80,6 +80,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

@ -1,6 +1,6 @@
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
@@ -904,6 +904,16 @@ config ATH79_MACH_EAP7660D
@@ -914,6 +914,16 @@ config ATH79_MACH_EAP7660D
select ATH79_DEV_LEDS_GPIO
select ATH79_DEV_M25P80

@ -1,6 +1,6 @@
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
@@ -1053,6 +1053,17 @@ config ATH79_MACH_TL_WDR4300
@@ -1063,6 +1063,17 @@ config ATH79_MACH_TL_WDR4300
select ATH79_DEV_USB
select ATH79_DEV_WMAC
@ -20,7 +20,7 @@
select SOC_AR933X
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
@@ -155,6 +155,7 @@ enum ath79_mach_type {
@@ -156,6 +156,7 @@ enum ath79_mach_type {
ATH79_MACH_TL_WA901ND_V3, /* TP-LINK TL-WA901ND v3 */
ATH79_MACH_TL_WDR3500, /* TP-LINK TL-WDR3500 */
ATH79_MACH_TL_WDR4300, /* TP-LINK TL-WDR4300 */
@ -30,7 +30,7 @@
ATH79_MACH_TL_WR1043ND, /* TP-LINK TL-WR1043ND */
--- a/arch/mips/ath79/Makefile
+++ b/arch/mips/ath79/Makefile
@@ -131,6 +131,7 @@ obj-$(CONFIG_ATH79_MACH_TL_WA901ND) += m
@@ -132,6 +132,7 @@ obj-$(CONFIG_ATH79_MACH_TL_WA901ND) += m
obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V2) += mach-tl-wa901nd-v2.o
obj-$(CONFIG_ATH79_MACH_TL_WDR3500) += mach-tl-wdr3500.o
obj-$(CONFIG_ATH79_MACH_TL_WDR4300) += mach-tl-wdr4300.o

@ -1,6 +1,6 @@
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
@@ -900,6 +900,16 @@ config ATH79_MACH_CAP4200AG
@@ -910,6 +910,16 @@ config ATH79_MACH_CAP4200AG
select ATH79_DEV_M25P80
select ATH79_DEV_WMAC
@ -19,7 +19,7 @@
select SOC_QCA955X
--- a/arch/mips/ath79/Makefile
+++ b/arch/mips/ath79/Makefile
@@ -91,6 +91,7 @@ obj-$(CONFIG_ATH79_MACH_HORNET_UB) += ma
@@ -92,6 +92,7 @@ obj-$(CONFIG_ATH79_MACH_HORNET_UB) += ma
obj-$(CONFIG_ATH79_MACH_MC_MAC1200R) += mach-mc-mac1200r.o
obj-$(CONFIG_ATH79_MACH_MR12) += mach-mr12.o
obj-$(CONFIG_ATH79_MACH_MR16) += mach-mr16.o
@ -29,7 +29,7 @@
obj-$(CONFIG_ATH79_MACH_MYNET_N600) += mach-mynet-n600.o
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
@@ -80,6 +80,7 @@ enum ath79_mach_type {
@@ -81,6 +81,7 @@ enum ath79_mach_type {
ATH79_MACH_HORNET_UB, /* ALFA Networks Hornet-UB */
ATH79_MACH_MR12, /* Cisco Meraki MR12 */
ATH79_MACH_MR16, /* Cisco Meraki MR16 */

@ -1,6 +1,6 @@
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
@@ -1055,6 +1055,17 @@ config ATH79_MACH_TL_WA901ND_V2
@@ -1065,6 +1065,17 @@ config ATH79_MACH_TL_WA901ND_V2
select ATH79_DEV_M25P80
select ATH79_DEV_WMAC
@ -20,7 +20,7 @@
select SOC_AR934X
--- a/arch/mips/ath79/machtypes.h
+++ b/arch/mips/ath79/machtypes.h
@@ -155,6 +155,7 @@ enum ath79_mach_type {
@@ -156,6 +156,7 @@ enum ath79_mach_type {
ATH79_MACH_TL_WA901ND, /* TP-LINK TL-WA901ND */
ATH79_MACH_TL_WA901ND_V2, /* TP-LINK TL-WA901ND v2 */
ATH79_MACH_TL_WA901ND_V3, /* TP-LINK TL-WA901ND v3 */
@ -30,7 +30,7 @@
ATH79_MACH_TL_WDR6500_V2, /* TP-LINK TL-WDR6500 v2 */
--- a/arch/mips/ath79/Makefile
+++ b/arch/mips/ath79/Makefile
@@ -131,6 +131,7 @@ obj-$(CONFIG_ATH79_MACH_TL_WA7210N_V2) +
@@ -132,6 +132,7 @@ obj-$(CONFIG_ATH79_MACH_TL_WA7210N_V2) +
obj-$(CONFIG_ATH79_MACH_TL_WA830RE_V2) += mach-tl-wa830re-v2.o
obj-$(CONFIG_ATH79_MACH_TL_WA901ND) += mach-tl-wa901nd.o
obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V2) += mach-tl-wa901nd-v2.o

@ -74,7 +74,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
/*
* Set the run bit and wait for the host to be running.
*/
@@ -556,10 +589,25 @@ int xhci_init(struct usb_hcd *hcd)
@@ -557,10 +590,25 @@ int xhci_init(struct usb_hcd *hcd)
static int xhci_run_finished(struct xhci_hcd *xhci)
{
@ -103,7 +103,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
xhci->shared_hcd->state = HC_STATE_RUNNING;
xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
@@ -569,6 +617,9 @@ static int xhci_run_finished(struct xhci
@@ -570,6 +618,9 @@ static int xhci_run_finished(struct xhci
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
"Finished xhci_run for USB3 roothub");
return 0;

@ -197,7 +197,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
config DEBUG_AT91_UART
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -147,6 +147,8 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x003080
@@ -155,6 +155,8 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x003080
# Machine directory name. This list is sorted alphanumerically
# by CONFIG_* macro name.

@ -197,7 +197,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
--- a/sound/arm/Kconfig
+++ b/sound/arm/Kconfig
@@ -39,5 +39,13 @@ config SND_PXA2XX_AC97
@@ -40,5 +40,13 @@ config SND_PXA2XX_AC97
Say Y or M if you want to support any AC97 codec attached to
the PXA2xx AC97 interface.

@ -9,7 +9,7 @@ Subject: [PATCH 097/171] serial: 8250: Don't crash when nr_uarts is 0
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -3262,6 +3262,8 @@ static void __init serial8250_isa_init_p
@@ -3270,6 +3270,8 @@ static void __init serial8250_isa_init_p
if (nr_uarts > UART_NR)
nr_uarts = UART_NR;

@ -11,7 +11,7 @@ See: https://github.com/raspberrypi/linux/issues/1054
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
@@ -706,6 +706,7 @@ static struct class *spidev_class;
@@ -707,6 +707,7 @@ static struct class *spidev_class;
#ifdef CONFIG_OF
static const struct of_device_id spidev_dt_ids[] = {
{ .compatible = "rohm,dh2228fv" },

@ -113,8 +113,6 @@ Date: Fri Sep 18 00:19:08 2015 +0100
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 {
@ -133,7 +131,7 @@ index d79e33b..686334f 100644
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),
@ -142,7 +140,7 @@ index d79e33b..686334f 100644
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;
@ -151,7 +149,7 @@ index d79e33b..686334f 100644
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));
@ -173,7 +171,7 @@ index d79e33b..686334f 100644
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();
@ -211,7 +209,7 @@ index d79e33b..686334f 100644
/* 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;
@ -228,7 +226,7 @@ index d79e33b..686334f 100644
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;
@ -249,7 +247,7 @@ index d79e33b..686334f 100644
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();
@ -259,7 +257,7 @@ index d79e33b..686334f 100644
}
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();
@ -294,7 +292,7 @@ index d79e33b..686334f 100644
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);
@ -302,7 +300,7 @@ index d79e33b..686334f 100644
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);
@ -311,7 +309,7 @@ index d79e33b..686334f 100644
}
}
@@ -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)
@ -320,7 +318,7 @@ index d79e33b..686334f 100644
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);
@ -328,7 +326,7 @@ index d79e33b..686334f 100644
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;
@ -337,7 +335,7 @@ index d79e33b..686334f 100644
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);

@ -33,8 +33,6 @@ Date: Wed Sep 23 09:46:09 2015 +0100
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 686334f..deae10d 100644
--- a/drivers/net/ethernet/realtek/8139cp.c
+++ b/drivers/net/ethernet/realtek/8139cp.c
@@ -175,7 +175,7 @@ enum {
@ -46,7 +44,7 @@ index 686334f..deae10d 100644
TxError = (1 << 23), /* Tx error summary */
RxError = (1 << 20), /* Rx error summary */
IPCS = (1 << 18), /* Calculate IP checksum */
@@ -754,10 +754,16 @@ static netdev_tx_t cp_start_xmit (struct sk_buff *skb,
@@ -754,10 +754,16 @@ static netdev_tx_t cp_start_xmit (struct
eor = (entry == (CP_TX_RING_SIZE - 1)) ? RingEnd : 0;
mss = skb_shinfo(skb)->gso_size;
@ -64,7 +62,7 @@ index 686334f..deae10d 100644
else if (skb->ip_summed == CHECKSUM_PARTIAL) {
const struct iphdr *ip = ip_hdr(skb);
if (ip->protocol == IPPROTO_TCP)
@@ -1852,6 +1858,15 @@ static void cp_set_d3_state (struct cp_private *cp)
@@ -1852,6 +1858,15 @@ static void cp_set_d3_state (struct cp_p
pci_set_power_state (cp->pdev, PCI_D3hot);
}
@ -80,7 +78,7 @@ index 686334f..deae10d 100644
static const struct net_device_ops cp_netdev_ops = {
.ndo_open = cp_open,
.ndo_stop = cp_close,
@@ -1864,6 +1879,7 @@ static const struct net_device_ops cp_netdev_ops = {
@@ -1864,6 +1879,7 @@ static const struct net_device_ops cp_ne
.ndo_tx_timeout = cp_tx_timeout,
.ndo_set_features = cp_set_features,
.ndo_change_mtu = cp_change_mtu,
@ -88,7 +86,7 @@ index 686334f..deae10d 100644
#ifdef CONFIG_NET_POLL_CONTROLLER
.ndo_poll_controller = cp_poll_controller,
@@ -1983,12 +1999,12 @@ static int cp_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
@@ -1983,12 +1999,12 @@ static int cp_init_one (struct pci_dev *
dev->ethtool_ops = &cp_ethtool_ops;
dev->watchdog_timeo = TX_TIMEOUT;

@ -23,7 +23,7 @@
/* The Mellanox Tavor device gives false positive parity errors
* Mark this device with a broken_parity_status, to allow
* PCI scanning code to "skip" this now blacklisted device.
@@ -2949,6 +2950,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
@@ -2965,6 +2966,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
@ -31,7 +31,7 @@
/*
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. To
@@ -3005,6 +3007,8 @@ static void fixup_debug_report(struct pc
@@ -3021,6 +3023,8 @@ static void fixup_debug_report(struct pc
}
}
@ -40,7 +40,7 @@
/*
* Some BIOS implementations leave the Intel GPU interrupts enabled,
* even though no one is handling them (f.e. i915 driver is never loaded).
@@ -3039,6 +3043,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
@@ -3055,6 +3059,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);

@ -79,17 +79,17 @@
}
--- a/kernel/irq/proc.c
+++ b/kernel/irq/proc.c
@@ -325,6 +325,9 @@ void register_irq_proc(unsigned int irq,
{
@@ -327,6 +327,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;
@@ -361,6 +364,9 @@ void unregister_irq_proc(unsigned int ir
@@ -376,6 +379,9 @@ void unregister_irq_proc(unsigned int ir
{
char name [MAX_NAMELEN];
@ -99,7 +99,7 @@
if (!root_irq_dir || !desc->dir)
return;
#ifdef CONFIG_SMP
@@ -396,6 +402,9 @@ void init_irq_proc(void)
@@ -411,6 +417,9 @@ void init_irq_proc(void)
unsigned int irq;
struct irq_desc *desc;

@ -26,7 +26,7 @@
endif
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2649,6 +2649,7 @@ enum {
@@ -2647,6 +2647,7 @@ enum {
DIO_SKIP_DIO_COUNT = 0x08,
};
@ -34,7 +34,7 @@
void dio_end_io(struct bio *bio, int error);
ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
@@ -2656,6 +2657,18 @@ ssize_t __blockdev_direct_IO(struct kioc
@@ -2654,6 +2655,18 @@ ssize_t __blockdev_direct_IO(struct kioc
loff_t offset, get_block_t get_block,
dio_iodone_t end_io, dio_submit_t submit_io,
int flags);

@ -44,7 +44,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
select GENERIC_CLOCKEVENTS
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -240,9 +240,11 @@ MACHINE := arch/arm/mach-$(word 1,$(mac
@@ -248,9 +248,11 @@ MACHINE := arch/arm/mach-$(word 1,$(mac
else
MACHINE :=
endif

@ -1,6 +1,6 @@
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -438,6 +438,20 @@ static void mem_serial_out(struct uart_p
@@ -446,6 +446,20 @@ static void mem_serial_out(struct uart_p
writeb(value, p->membase + offset);
}
@ -21,7 +21,7 @@
static void mem32_serial_out(struct uart_port *p, int offset, int value)
{
offset = offset << p->regshift;
@@ -505,6 +519,11 @@ static void set_io_from_upio(struct uart
@@ -513,6 +527,11 @@ static void set_io_from_upio(struct uart
p->serial_out = mem32be_serial_out;
break;
@ -33,7 +33,7 @@
#if defined(CONFIG_MIPS_ALCHEMY) || defined(CONFIG_SERIAL_8250_RT288X)
case UPIO_AU:
p->serial_in = au_serial_in;
@@ -531,6 +550,7 @@ serial_port_out_sync(struct uart_port *p
@@ -539,6 +558,7 @@ serial_port_out_sync(struct uart_port *p
case UPIO_MEM:
case UPIO_MEM32:
case UPIO_MEM32BE:
@ -41,7 +41,7 @@
case UPIO_AU:
p->serial_out(p, offset, value);
p->serial_in(p, UART_LCR); /* safe, no side-effects */
@@ -2768,6 +2788,7 @@ static int serial8250_request_std_resour
@@ -2776,6 +2796,7 @@ static int serial8250_request_std_resour
case UPIO_MEM32:
case UPIO_MEM32BE:
case UPIO_MEM:
@ -49,7 +49,7 @@
if (!port->mapbase)
break;
@@ -2805,6 +2826,7 @@ static void serial8250_release_std_resou
@@ -2813,6 +2834,7 @@ static void serial8250_release_std_resou
case UPIO_MEM32:
case UPIO_MEM32BE:
case UPIO_MEM:
@ -57,7 +57,7 @@
if (!port->mapbase)
break;
@@ -3693,6 +3715,7 @@ static int serial8250_probe(struct platf
@@ -3701,6 +3723,7 @@ static int serial8250_probe(struct platf
uart.port.set_termios = p->set_termios;
uart.port.pm = p->pm;
uart.port.dev = &dev->dev;
@ -65,7 +65,7 @@
uart.port.irqflags |= irqflag;
ret = serial8250_register_8250_port(&uart);
if (ret < 0) {
@@ -3849,6 +3872,7 @@ int serial8250_register_8250_port(struct
@@ -3857,6 +3880,7 @@ int serial8250_register_8250_port(struct
uart->bugs = up->bugs;
uart->port.mapbase = up->port.mapbase;
uart->port.mapsize = up->port.mapsize;

@ -18,7 +18,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -626,6 +626,14 @@
@@ -626,6 +626,14 @@ config SPI_NUC900
help
SPI driver for Nuvoton NUC900 series ARM SoCs
@ -35,7 +35,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
#
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
@@ -90,3 +90,4 @@
@@ -90,3 +90,4 @@ obj-$(CONFIG_SPI_TXX9) += spi-txx9.o
obj-$(CONFIG_SPI_XCOMM) += spi-xcomm.o
obj-$(CONFIG_SPI_XILINX) += spi-xilinx.o
obj-$(CONFIG_SPI_XTENSA_XTFPGA) += spi-xtensa-xtfpga.o

@ -30,7 +30,7 @@
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

@ -24,7 +24,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
--- a/drivers/mtd/nand/sunxi_nand.c
+++ b/drivers/mtd/nand/sunxi_nand.c
@@ -202,6 +202,23 @@ struct sunxi_nand_hw_ecc {
@@ -206,6 +206,23 @@ struct sunxi_nand_hw_ecc {
};
/*
@ -48,7 +48,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* NAND chip structure: stores NAND chip device related information
*
* @node: used to store NAND chips into a list
@@ -521,7 +538,7 @@ static int sunxi_nfc_hw_ecc_read_page(st
@@ -525,7 +542,7 @@ static int sunxi_nfc_hw_ecc_read_page(st
int oob_required, int page)
{
struct sunxi_nfc *nfc = to_sunxi_nfc(chip->controller);
@ -57,7 +57,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
struct nand_ecclayout *layout = ecc->layout;
struct sunxi_nand_hw_ecc *data = ecc->priv;
unsigned int max_bitflips = 0;
@@ -607,7 +624,7 @@ static int sunxi_nfc_hw_ecc_write_page(s
@@ -611,7 +628,7 @@ static int sunxi_nfc_hw_ecc_write_page(s
const uint8_t *buf, int oob_required)
{
struct sunxi_nfc *nfc = to_sunxi_nfc(chip->controller);
@ -66,7 +66,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
struct nand_ecclayout *layout = ecc->layout;
struct sunxi_nand_hw_ecc *data = ecc->priv;
int offset;
@@ -681,7 +698,7 @@ static int sunxi_nfc_hw_syndrome_ecc_rea
@@ -679,7 +696,7 @@ static int sunxi_nfc_hw_syndrome_ecc_rea
int page)
{
struct sunxi_nfc *nfc = to_sunxi_nfc(chip->controller);
@ -75,7 +75,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
struct sunxi_nand_hw_ecc *data = ecc->priv;
unsigned int max_bitflips = 0;
uint8_t *oob = chip->oob_poi;
@@ -749,7 +766,7 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
@@ -747,7 +764,7 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
int oob_required)
{
struct sunxi_nfc *nfc = to_sunxi_nfc(chip->controller);
@ -84,7 +84,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
struct sunxi_nand_hw_ecc *data = ecc->priv;
uint8_t *oob = chip->oob_poi;
int offset = 0;
@@ -1099,8 +1116,13 @@ static int sunxi_nand_ecc_init(struct mt
@@ -1091,8 +1108,13 @@ static int sunxi_nand_ecc_init(struct mt
ecc->strength = nand->ecc_strength_ds;
}
@ -100,7 +100,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
ecc->mode = NAND_ECC_HW;
@@ -1135,12 +1157,39 @@ static int sunxi_nand_ecc_init(struct mt
@@ -1127,12 +1149,39 @@ static int sunxi_nand_ecc_init(struct mt
return 0;
}
@ -141,7 +141,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
struct mtd_info *mtd;
struct nand_chip *nand;
int nsels;
@@ -1269,8 +1318,14 @@ static int sunxi_nand_chip_init(struct d
@@ -1261,8 +1310,14 @@ static int sunxi_nand_chip_init(struct d
return ret;
}

@ -13,7 +13,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
--- a/drivers/mtd/nand/sunxi_nand.c
+++ b/drivers/mtd/nand/sunxi_nand.c
@@ -206,10 +206,12 @@ struct sunxi_nand_hw_ecc {
@@ -210,10 +210,12 @@ struct sunxi_nand_hw_ecc {
*
* @part: base paritition structure
* @ecc: per-partition ECC info
@ -26,7 +26,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
};
static inline struct sunxi_nand_part *
@@ -219,6 +221,29 @@ to_sunxi_nand_part(struct nand_part *par
@@ -223,6 +225,29 @@ to_sunxi_nand_part(struct nand_part *par
}
/*
@ -56,7 +56,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* NAND chip structure: stores NAND chip device related information
*
* @node: used to store NAND chips into a list
@@ -233,6 +258,7 @@ struct sunxi_nand_chip {
@@ -237,6 +262,7 @@ struct sunxi_nand_chip {
struct list_head node;
struct nand_chip nand;
struct mtd_info mtd;
@ -64,7 +64,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
unsigned long clk_rate;
int selected;
int nsels;
@@ -489,6 +515,185 @@ static void sunxi_nfc_write_buf(struct m
@@ -493,6 +519,185 @@ static void sunxi_nfc_write_buf(struct m
}
}
@ -250,7 +250,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
static uint8_t sunxi_nfc_read_byte(struct mtd_info *mtd)
{
uint8_t ret;
@@ -538,16 +743,43 @@ static int sunxi_nfc_hw_ecc_read_page(st
@@ -542,16 +747,43 @@ static int sunxi_nfc_hw_ecc_read_page(st
int oob_required, int page)
{
struct sunxi_nfc *nfc = to_sunxi_nfc(chip->controller);
@ -294,7 +294,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
tmp = readl(nfc->regs + NFC_REG_ECC_CTL);
tmp &= ~(NFC_ECC_MODE | NFC_ECC_PIPELINE | NFC_ECC_BLOCK_SIZE);
tmp |= NFC_ECC_EN | (data->mode << NFC_ECC_MODE_SHIFT) |
@@ -556,12 +788,15 @@ static int sunxi_nfc_hw_ecc_read_page(st
@@ -560,12 +792,15 @@ static int sunxi_nfc_hw_ecc_read_page(st
writel(tmp, nfc->regs + NFC_REG_ECC_CTL);
for (i = 0; i < ecc->steps; i++) {
@ -311,7 +311,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, offset, -1);
@@ -569,6 +804,25 @@ static int sunxi_nfc_hw_ecc_read_page(st
@@ -573,6 +808,25 @@ static int sunxi_nfc_hw_ecc_read_page(st
if (ret)
return ret;
@ -337,7 +337,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
tmp = NFC_DATA_TRANS | NFC_DATA_SWAP_METHOD | (1 << 30);
writel(tmp, nfc->regs + NFC_REG_CMD);
@@ -579,6 +833,9 @@ static int sunxi_nfc_hw_ecc_read_page(st
@@ -583,6 +837,9 @@ static int sunxi_nfc_hw_ecc_read_page(st
memcpy_fromio(buf + (i * ecc->size),
nfc->regs + NFC_RAM0_BASE, ecc->size);
@ -347,7 +347,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
if (readl(nfc->regs + NFC_REG_ECC_ST) & 0x1) {
mtd->ecc_stats.failed++;
} else {
@@ -594,9 +851,10 @@ static int sunxi_nfc_hw_ecc_read_page(st
@@ -598,9 +855,10 @@ static int sunxi_nfc_hw_ecc_read_page(st
if (ret)
return ret;
@ -360,7 +360,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
}
}
@@ -606,11 +864,14 @@ static int sunxi_nfc_hw_ecc_read_page(st
@@ -610,11 +868,14 @@ static int sunxi_nfc_hw_ecc_read_page(st
offset = mtd->writesize +
ecc->layout->oobfree[ecc->steps].offset;
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, offset, -1);
@ -376,7 +376,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
tmp = readl(nfc->regs + NFC_REG_ECC_CTL);
tmp &= ~NFC_ECC_EN;
@@ -627,6 +888,7 @@ static int sunxi_nfc_hw_ecc_write_page(s
@@ -631,6 +892,7 @@ static int sunxi_nfc_hw_ecc_write_page(s
struct nand_ecc_ctrl *ecc = chip->cur_ecc;
struct nand_ecclayout *layout = ecc->layout;
struct sunxi_nand_hw_ecc *data = ecc->priv;
@ -384,7 +384,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
int offset;
int ret;
u32 tmp;
@@ -641,22 +903,56 @@ static int sunxi_nfc_hw_ecc_write_page(s
@@ -645,17 +907,57 @@ static int sunxi_nfc_hw_ecc_write_page(s
writel(tmp, nfc->regs + NFC_REG_ECC_CTL);
for (i = 0; i < ecc->steps; i++) {
@ -401,10 +401,9 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
offset = layout->eccpos[i * ecc->bytes] - 4 + mtd->writesize;
/* Fill OOB data in */
- if (oob_required) {
- tmp = 0xffffffff;
- memcpy_toio(nfc->regs + NFC_REG_USER_DATA_BASE, &tmp,
- 4);
- writel(NFC_BUF_TO_USER_DATA(chip->oob_poi +
- layout->oobfree[i].offset),
- nfc->regs + NFC_REG_USER_DATA_BASE);
+ if (!oob_required)
+ memset(oob_buf, 0xff, 4);
+ else
@ -421,10 +420,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+ nand_rnd_is_activ(mtd, -1, offset, &cnt) > 0 &&
+ cnt == ecc->bytes + 4)
+ rndactiv = true;
} else {
- memcpy_toio(nfc->regs + NFC_REG_USER_DATA_BASE,
- chip->oob_poi + offset - mtd->writesize,
- 4);
+ } else {
+ cnt = ecc->bytes + 2;
+ if (rnd &&
+ nand_rnd_is_activ(mtd, -1, offset + 2, &cnt) > 0 &&
@ -446,10 +442,11 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+ tmp &= ~(NFC_RANDOM_DIRECTION | NFC_ECC_EXCEPTION);
+ tmp |= NFC_RANDOM_EN;
+ writel(tmp, nfc->regs + NFC_REG_ECC_CTL);
}
+ }
chip->cmdfunc(mtd, NAND_CMD_RNDIN, offset, -1);
@@ -671,6 +967,9 @@ static int sunxi_nfc_hw_ecc_write_page(s
@@ -669,6 +971,9 @@ static int sunxi_nfc_hw_ecc_write_page(s
ret = sunxi_nfc_wait_int(nfc, NFC_CMD_INT_FLAG, 0);
if (ret)
return ret;
@ -459,7 +456,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
}
if (oob_required) {
@@ -679,11 +978,14 @@ static int sunxi_nfc_hw_ecc_write_page(s
@@ -677,11 +982,14 @@ static int sunxi_nfc_hw_ecc_write_page(s
offset = mtd->writesize +
ecc->layout->oobfree[i].offset;
chip->cmdfunc(mtd, NAND_CMD_RNDIN, offset, -1);
@ -475,7 +472,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
tmp = readl(nfc->regs + NFC_REG_ECC_CTL);
tmp &= ~NFC_ECC_EN;
@@ -692,22 +994,76 @@ static int sunxi_nfc_hw_ecc_write_page(s
@@ -690,22 +998,76 @@ static int sunxi_nfc_hw_ecc_write_page(s
return 0;
}
@ -552,7 +549,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
tmp = readl(nfc->regs + NFC_REG_ECC_CTL);
tmp &= ~(NFC_ECC_MODE | NFC_ECC_PIPELINE | NFC_ECC_BLOCK_SIZE);
tmp |= NFC_ECC_EN | (data->mode << NFC_ECC_MODE_SHIFT) |
@@ -716,7 +1072,17 @@ static int sunxi_nfc_hw_syndrome_ecc_rea
@@ -714,7 +1076,17 @@ static int sunxi_nfc_hw_syndrome_ecc_rea
writel(tmp, nfc->regs + NFC_REG_ECC_CTL);
for (i = 0; i < ecc->steps; i++) {
@ -571,7 +568,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
tmp = NFC_DATA_TRANS | NFC_DATA_SWAP_METHOD | (1 << 30);
writel(tmp, nfc->regs + NFC_REG_CMD);
@@ -729,6 +1095,9 @@ static int sunxi_nfc_hw_syndrome_ecc_rea
@@ -727,6 +1099,9 @@ static int sunxi_nfc_hw_syndrome_ecc_rea
buf += ecc->size;
offset += ecc->size;
@ -581,7 +578,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
if (readl(nfc->regs + NFC_REG_ECC_ST) & 0x1) {
mtd->ecc_stats.failed++;
} else {
@@ -739,7 +1108,8 @@ static int sunxi_nfc_hw_syndrome_ecc_rea
@@ -737,7 +1112,8 @@ static int sunxi_nfc_hw_syndrome_ecc_rea
if (oob_required) {
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, offset, -1);
@ -591,7 +588,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
oob += ecc->bytes + ecc->prepad;
}
@@ -750,10 +1120,13 @@ static int sunxi_nfc_hw_syndrome_ecc_rea
@@ -748,10 +1124,13 @@ static int sunxi_nfc_hw_syndrome_ecc_rea
cnt = mtd->oobsize - (oob - chip->oob_poi);
if (cnt > 0) {
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, offset, -1);
@ -606,7 +603,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
writel(readl(nfc->regs + NFC_REG_ECC_CTL) & ~NFC_ECC_EN,
nfc->regs + NFC_REG_ECC_CTL);
@@ -768,6 +1141,7 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
@@ -766,6 +1145,7 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
struct sunxi_nfc *nfc = to_sunxi_nfc(chip->controller);
struct nand_ecc_ctrl *ecc = chip->cur_ecc;
struct sunxi_nand_hw_ecc *data = ecc->priv;
@ -614,7 +611,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
uint8_t *oob = chip->oob_poi;
int offset = 0;
int ret;
@@ -783,7 +1157,8 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
@@ -781,13 +1161,24 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
writel(tmp, nfc->regs + NFC_REG_ECC_CTL);
for (i = 0; i < ecc->steps; i++) {
@ -624,9 +621,8 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
offset += ecc->size;
/* Fill OOB data in */
@@ -796,6 +1171,16 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
4);
}
writel(NFC_BUF_TO_USER_DATA(oob),
nfc->regs + NFC_REG_USER_DATA_BASE);
+ cnt = ecc->bytes + 4;
+ if (rnd &&
@ -641,7 +637,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
tmp = NFC_DATA_TRANS | NFC_DATA_SWAP_METHOD | NFC_ACCESS_DIR |
(1 << 30);
writel(tmp, nfc->regs + NFC_REG_CMD);
@@ -804,6 +1189,9 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
@@ -796,6 +1187,9 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
if (ret)
return ret;
@ -651,7 +647,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
offset += ecc->bytes + ecc->prepad;
oob += ecc->bytes + ecc->prepad;
}
@@ -812,9 +1200,11 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
@@ -804,9 +1198,11 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
cnt = mtd->oobsize - (oob - chip->oob_poi);
if (cnt > 0) {
chip->cmdfunc(mtd, NAND_CMD_RNDIN, offset, -1);
@ -664,7 +660,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
tmp = readl(nfc->regs + NFC_REG_ECC_CTL);
tmp &= ~NFC_ECC_EN;
@@ -824,6 +1214,128 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
@@ -816,6 +1212,128 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
return 0;
}
@ -793,7 +789,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
static int sunxi_nand_chip_set_timings(struct sunxi_nand_chip *chip,
const struct nand_sdr_timings *timings)
{
@@ -1084,6 +1596,40 @@ static int sunxi_nand_hw_syndrome_ecc_ct
@@ -1076,6 +1594,40 @@ static int sunxi_nand_hw_syndrome_ecc_ct
return 0;
}
@ -834,7 +830,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
static void sunxi_nand_ecc_cleanup(struct nand_ecc_ctrl *ecc)
{
switch (ecc->mode) {
@@ -1175,7 +1721,14 @@ struct nand_part *sunxi_ofnandpart_parse
@@ -1167,7 +1719,14 @@ struct nand_part *sunxi_ofnandpart_parse
if (ret)
goto err;
@ -849,7 +845,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
return &part->part;
@@ -1300,18 +1853,30 @@ static int sunxi_nand_chip_init(struct d
@@ -1292,18 +1851,30 @@ static int sunxi_nand_chip_init(struct d
if (ret)
return ret;
@ -880,10 +876,10 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
ret = nand_scan_tail(mtd);
if (ret) {
dev_err(dev, "nand_scan_tail failed: %d\n", ret);
@@ -1367,6 +1932,8 @@ static void sunxi_nand_chips_cleanup(str
node);
@@ -1360,6 +1931,8 @@ static void sunxi_nand_chips_cleanup(str
nand_release(&chip->mtd);
sunxi_nand_ecc_cleanup(&chip->nand.ecc);
list_del(&chip->node);
+ sunxi_nand_rnd_cleanup(&chip->nand.rnd);
+ kfree(chip->buffer);
}

@ -15,7 +15,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
--- a/drivers/mtd/nand/sunxi_nand.c
+++ b/drivers/mtd/nand/sunxi_nand.c
@@ -1711,28 +1711,37 @@ static void sunxi_nand_part_release(stru
@@ -1709,28 +1709,37 @@ static void sunxi_nand_part_release(stru
struct nand_part *sunxi_ofnandpart_parse(void *priv, struct mtd_info *master,
struct device_node *pp)
{

@ -16,7 +16,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
--- a/drivers/mtd/nand/sunxi_nand.c
+++ b/drivers/mtd/nand/sunxi_nand.c
@@ -1853,6 +1853,15 @@ static int sunxi_nand_chip_init(struct d
@@ -1851,6 +1851,15 @@ static int sunxi_nand_chip_init(struct d
if (of_get_nand_on_flash_bbt(np))
nand->bbt_options |= NAND_BBT_USE_FLASH | NAND_BBT_NO_OOB;

@ -23,7 +23,7 @@
--- a/drivers/mtd/nand/sunxi_nand.c
+++ b/drivers/mtd/nand/sunxi_nand.c
@@ -1427,7 +1427,7 @@ static int sunxi_nand_chip_init_timings(
@@ -1425,7 +1425,7 @@ static int sunxi_nand_chip_init_timings(
mode = onfi_get_async_timing_mode(&chip->nand);
if (mode == ONFI_TIMING_MODE_UNKNOWN) {
@ -32,7 +32,7 @@
} else {
uint8_t feature[ONFI_SUBFEATURE_PARAM_LEN] = {};
@@ -1441,9 +1441,10 @@ static int sunxi_nand_chip_init_timings(
@@ -1439,9 +1439,10 @@ static int sunxi_nand_chip_init_timings(
feature);
if (ret)
return ret;

@ -15,7 +15,7 @@ Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
--- a/drivers/mtd/nand/sunxi_nand.c
+++ b/drivers/mtd/nand/sunxi_nand.c
@@ -904,7 +904,7 @@ static int sunxi_nfc_hw_ecc_write_page(s
@@ -908,7 +908,7 @@ static int sunxi_nfc_hw_ecc_write_page(s
for (i = 0; i < ecc->steps; i++) {
bool rndactiv = false;
@ -24,7 +24,7 @@ Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
if (i)
chip->cmdfunc(mtd, NAND_CMD_RNDIN, i * ecc->size, -1);
@@ -915,15 +915,13 @@ static int sunxi_nfc_hw_ecc_write_page(s
@@ -919,15 +919,13 @@ static int sunxi_nfc_hw_ecc_write_page(s
offset = layout->eccpos[i * ecc->bytes] - 4 + mtd->writesize;
/* Fill OOB data in */
@ -47,7 +47,7 @@ Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
if (i) {
cnt = ecc->bytes + 4;
@@ -942,12 +940,16 @@ static int sunxi_nfc_hw_ecc_write_page(s
@@ -946,12 +944,16 @@ static int sunxi_nfc_hw_ecc_write_page(s
if (rndactiv) {
/* pre randomize to generate FF patterns on the NAND */
if (!i) {
@ -67,7 +67,7 @@ Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
}
tmp = readl(nfc->regs + NFC_REG_ECC_CTL);
tmp &= ~(NFC_RANDOM_DIRECTION | NFC_ECC_EXCEPTION);
@@ -955,6 +957,8 @@ static int sunxi_nfc_hw_ecc_write_page(s
@@ -959,6 +961,8 @@ static int sunxi_nfc_hw_ecc_write_page(s
writel(tmp, nfc->regs + NFC_REG_ECC_CTL);
}
@ -76,21 +76,3 @@ Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
chip->cmdfunc(mtd, NAND_CMD_RNDIN, offset, -1);
ret = sunxi_nfc_wait_cmd_fifo_empty(nfc);
@@ -1164,13 +1168,13 @@ static int sunxi_nfc_hw_syndrome_ecc_wri
/* Fill OOB data in */
if (oob_required) {
tmp = 0xffffffff;
- memcpy_toio(nfc->regs + NFC_REG_USER_DATA_BASE, &tmp,
- 4);
} else {
- memcpy_toio(nfc->regs + NFC_REG_USER_DATA_BASE, oob,
- 4);
+ memcpy(&tmp, oob, sizeof(tmp));
+ tmp = le32_to_cpu(tmp);
}
+ writel(tmp, nfc->regs + NFC_REG_USER_DATA_BASE);
+
cnt = ecc->bytes + 4;
if (rnd &&
nand_rnd_is_activ(mtd, rnd->page, offset, &cnt) > 0 &&

Loading…
Cancel
Save