Refreshed all patches.
Altered patches:
- 403-mtd_fix_cfi_cmdset_0002_status_check.patch (ar71xx)
- 403-mtd_fix_cfi_cmdset_0002_status_check.patch (ath79)
Compile-tested on: ar71xx, cns3xxx, imx6, x86_64
Compile-tested on: ar71xx, cns3xxx, imx6
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-4.14 = .146
+LINUX_VERSION-4.14 = .147
-LINUX_KERNEL_HASH-4.14.146 = a3c54b887ea3e679382bd4c0536e6a281b071dab2258bd3ee8af75baef2023f5
+LINUX_KERNEL_HASH-4.14.147 = 8fd793688c9d9d4e26fdc175be92b6e638b6a86f4150dd66edecebab0bb85b12
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1635,8 +1635,8 @@ static int __xipram do_write_oneword(str
- break;
+@@ -1641,7 +1641,7 @@ static int __xipram do_write_oneword(str
}
-- if (chip_ready(map, adr))
+ if (chip_good(map, adr, datum))
- break;
-+ if (chip_good(map, adr, datum))
+ goto enable_xip;
/* Latency issues. Drop the lock, wait a while and retry */
UDELAY(map, chip, adr, 1);
-@@ -1652,6 +1652,8 @@ static int __xipram do_write_oneword(str
-
- ret = -EIO;
+@@ -1658,6 +1658,8 @@ static int __xipram do_write_oneword(str
+ goto retry;
+ }
}
+
+ enable_xip:
xip_enable(map, chip, adr);
op_done:
if (mode == FL_OTP_WRITE)
-@@ -2230,7 +2232,6 @@ static int cfi_amdstd_panic_write(struct
+@@ -2236,7 +2238,6 @@ static int cfi_amdstd_panic_write(struct
return 0;
}
/*
* Handle devices with one erase region, that only implement
* the chip erase command.
-@@ -2298,7 +2299,7 @@ static int __xipram do_erase_chip(struct
+@@ -2304,7 +2305,7 @@ static int __xipram do_erase_chip(struct
}
if (chip_good(map, adr, map_word_ff(map)))
if (time_after(jiffies, timeo)) {
printk(KERN_WARNING "MTD %s(): software timeout\n",
-@@ -2322,6 +2323,7 @@ static int __xipram do_erase_chip(struct
+@@ -2328,6 +2329,7 @@ static int __xipram do_erase_chip(struct
}
}
chip->state = FL_READY;
xip_enable(map, chip, adr);
DISABLE_VPP(map);
-@@ -2395,7 +2397,7 @@ static int __xipram do_erase_oneblock(st
+@@ -2401,7 +2403,7 @@ static int __xipram do_erase_oneblock(st
if (chip_good(map, adr, map_word_ff(map))) {
xip_enable(map, chip, adr);
}
if (time_after(jiffies, timeo)) {
-@@ -2421,6 +2423,7 @@ static int __xipram do_erase_oneblock(st
+@@ -2427,6 +2429,7 @@ static int __xipram do_erase_oneblock(st
}
}
/* Atmel chips don't use the same PRI format as AMD chips */
static void fixup_convert_atmel_pri(struct mtd_info *mtd)
-@@ -1794,6 +1798,7 @@ static int cfi_amdstd_write_words(struct
+@@ -1800,6 +1804,7 @@ static int cfi_amdstd_write_words(struct
/*
* FIXME: interleaved mode not tested, and probably not supported!
*/
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
unsigned long adr, const u_char *buf,
int len)
-@@ -1922,7 +1927,6 @@ static int __xipram do_write_buffer(stru
+@@ -1928,7 +1933,6 @@ static int __xipram do_write_buffer(stru
return ret;
}
static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf)
{
-@@ -1997,6 +2001,7 @@ static int cfi_amdstd_write_buffers(stru
+@@ -2003,6 +2007,7 @@ static int cfi_amdstd_write_buffers(stru
return 0;
}
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1635,8 +1635,8 @@ static int __xipram do_write_oneword(str
- break;
+@@ -1641,7 +1641,7 @@ static int __xipram do_write_oneword(str
}
-- if (chip_ready(map, adr))
+ if (chip_good(map, adr, datum))
- break;
-+ if (chip_good(map, adr, datum))
+ goto enable_xip;
/* Latency issues. Drop the lock, wait a while and retry */
UDELAY(map, chip, adr, 1);
-@@ -1652,6 +1652,8 @@ static int __xipram do_write_oneword(str
-
- ret = -EIO;
+@@ -1658,6 +1658,8 @@ static int __xipram do_write_oneword(str
+ goto retry;
+ }
}
+
+ enable_xip:
xip_enable(map, chip, adr);
op_done:
if (mode == FL_OTP_WRITE)
-@@ -2230,7 +2232,6 @@ static int cfi_amdstd_panic_write(struct
+@@ -2236,7 +2238,6 @@ static int cfi_amdstd_panic_write(struct
return 0;
}
/*
* Handle devices with one erase region, that only implement
* the chip erase command.
-@@ -2298,7 +2299,7 @@ static int __xipram do_erase_chip(struct
+@@ -2304,7 +2305,7 @@ static int __xipram do_erase_chip(struct
}
if (chip_good(map, adr, map_word_ff(map)))
if (time_after(jiffies, timeo)) {
printk(KERN_WARNING "MTD %s(): software timeout\n",
-@@ -2322,6 +2323,7 @@ static int __xipram do_erase_chip(struct
+@@ -2328,6 +2329,7 @@ static int __xipram do_erase_chip(struct
}
}
chip->state = FL_READY;
xip_enable(map, chip, adr);
DISABLE_VPP(map);
-@@ -2395,7 +2397,7 @@ static int __xipram do_erase_oneblock(st
+@@ -2401,7 +2403,7 @@ static int __xipram do_erase_oneblock(st
if (chip_good(map, adr, map_word_ff(map))) {
xip_enable(map, chip, adr);
}
if (time_after(jiffies, timeo)) {
-@@ -2421,6 +2423,7 @@ static int __xipram do_erase_oneblock(st
+@@ -2427,6 +2429,7 @@ static int __xipram do_erase_oneblock(st
}
}
struct bcm2835_dmadev {
struct dma_device ddev;
-@@ -905,6 +907,9 @@ static int bcm2835_dma_probe(struct plat
+@@ -907,6 +909,9 @@ static int bcm2835_dma_probe(struct plat
base = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(base))
return PTR_ERR(base);
od->base = base;
-@@ -942,6 +947,9 @@ static int bcm2835_dma_probe(struct plat
+@@ -944,6 +949,9 @@ static int bcm2835_dma_probe(struct plat
goto err_no_dma;
}
/* get irqs for each channel that we support */
for (i = 0; i <= BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED; i++) {
/* skip masked out channels */
-@@ -1016,6 +1024,7 @@ static int bcm2835_dma_remove(struct pla
+@@ -1018,6 +1026,7 @@ static int bcm2835_dma_remove(struct pla
{
struct bcm2835_dmadev *od = platform_get_drvdata(pdev);
dma_async_device_unregister(&od->ddev);
bcm2835_dma_free(od);
-@@ -1031,7 +1040,22 @@ static struct platform_driver bcm2835_dm
+@@ -1033,7 +1042,22 @@ static struct platform_driver bcm2835_dm
},
};
--- a/Makefile
+++ b/Makefile
-@@ -1241,7 +1241,6 @@ all: modules
+@@ -1243,7 +1243,6 @@ all: modules
PHONY += modules
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
@$(kecho) ' Building modules, stage 2.';
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
-@@ -1270,7 +1269,6 @@ _modinst_:
+@@ -1272,7 +1271,6 @@ _modinst_:
rm -f $(MODLIB)/build ; \
ln -s $(CURDIR) $(MODLIB)/build ; \
fi
device, it has to decide which ones to send first, which ones to
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
-@@ -2028,7 +2028,7 @@ static int __init pktsched_init(void)
+@@ -2029,7 +2029,7 @@ static int __init pktsched_init(void)
return err;
}
1 file changed, 1 insertion(+)
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1833,6 +1833,7 @@ static int __xipram do_write_buffer(stru
+@@ -1839,6 +1839,7 @@ static int __xipram do_write_buffer(stru
/* Write Buffer Load */
map_write(map, CMD(0x25), cmd_adr);
.name = "sdhci-esdhc",
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
-@@ -2148,7 +2148,7 @@ static void sdhci_send_tuning(struct sdh
+@@ -2150,7 +2150,7 @@ static void sdhci_send_tuning(struct sdh
}
{
int i;
-@@ -2165,13 +2165,13 @@ static void __sdhci_execute_tuning(struc
+@@ -2167,13 +2167,13 @@ static void __sdhci_execute_tuning(struc
pr_info("%s: Tuning timeout, falling back to fixed sampling clock\n",
mmc_hostname(host->mmc));
sdhci_abort_tuning(host, opcode);
break;
}
-@@ -2183,6 +2183,7 @@ static void __sdhci_execute_tuning(struc
+@@ -2185,6 +2185,7 @@ static void __sdhci_execute_tuning(struc
pr_info("%s: Tuning failed, falling back to fixed sampling clock\n",
mmc_hostname(host->mmc));
sdhci_reset_tuning(host);
}
int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
-@@ -2244,7 +2245,7 @@ int sdhci_execute_tuning(struct mmc_host
+@@ -2246,7 +2247,7 @@ int sdhci_execute_tuning(struct mmc_host
sdhci_start_tuning(host);
/* Atmel chips don't use the same PRI format as AMD chips */
static void fixup_convert_atmel_pri(struct mtd_info *mtd)
-@@ -1792,6 +1796,7 @@ static int cfi_amdstd_write_words(struct
+@@ -1798,6 +1802,7 @@ static int cfi_amdstd_write_words(struct
/*
* FIXME: interleaved mode not tested, and probably not supported!
*/
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
unsigned long adr, const u_char *buf,
int len)
-@@ -1920,7 +1925,6 @@ static int __xipram do_write_buffer(stru
+@@ -1926,7 +1931,6 @@ static int __xipram do_write_buffer(stru
return ret;
}
static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf)
{
-@@ -1995,6 +1999,7 @@ static int cfi_amdstd_write_buffers(stru
+@@ -2001,6 +2005,7 @@ static int cfi_amdstd_write_buffers(stru
return 0;
}