Bump 4.4 to 4.4.107 and refreshed all patches.
Made the following patch for Mediatek and Oxnas compatible with kernel 4.4.107:
0072-mtd-backport-v4.7-0day-patches-from-Boris.patch
Compile-tested: ar71xx
Run-tested: ar71xx
Signed-off-by: Etienne Haarsma <bladeoner112@gmail.com>
Reviewed-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Tested-by: Rosen Penev <rosenp@gmail.com>
LINUX_RELEASE?=1
LINUX_VERSION-3.18 = .43
-LINUX_VERSION-4.4 = .103
+LINUX_VERSION-4.4 = .107
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
-LINUX_KERNEL_HASH-4.4.103 = 1d01d0785fdf52b3f3b9f7ad05b6cff6be034869935962478e19f265b022f904
+LINUX_KERNEL_HASH-4.4.107 = d25dc23c8b05d34518ede68f03668cd344f805049a16bc4f189da90533881a17
ifdef KERNEL_PATCHVER
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
-@@ -478,6 +478,12 @@ config SPI_QUP
+@@ -477,6 +477,12 @@ config SPI_QUP
This driver can also be built as a module. If so, the module
will be called spi_qup.
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
-@@ -714,6 +714,13 @@ config SPI_TLE62X0
+@@ -713,6 +713,13 @@ config SPI_TLE62X0
sysfs interface, with each line presented as a kind of GPIO
exposing both switch control and diagnostic feedback.
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
-@@ -721,6 +721,11 @@ config SPI_RB4XX_CPLD
+@@ -720,6 +720,11 @@ config SPI_RB4XX_CPLD
SPI driver for the Xilinx CPLD chip present on the
MikroTik RB4xx boards.
}
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -4978,7 +4978,7 @@ static void port_event(struct usb_hub *h
+@@ -4987,7 +4987,7 @@ static void port_event(struct usb_hub *h
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
u16 status = 0, unused;
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
-@@ -639,6 +639,7 @@ struct drm_driver {
+@@ -653,6 +653,7 @@ struct drm_driver {
u32 driver_features;
int dev_priv_size;
}
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
-@@ -585,6 +585,13 @@ struct drm_driver {
+@@ -599,6 +599,13 @@ struct drm_driver {
int (*gem_open_object) (struct drm_gem_object *, struct drm_file *);
void (*gem_close_object) (struct drm_gem_object *, struct drm_file *);
/* prime: */
/* export handle -> fd (see drm_gem_prime_handle_to_fd() helper) */
int (*prime_handle_to_fd)(struct drm_device *dev, struct drm_file *file_priv,
-@@ -639,7 +646,6 @@ struct drm_driver {
+@@ -653,7 +660,6 @@ struct drm_driver {
u32 driver_features;
int dev_priv_size;
+in simple-panel.txt in this directory.
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
-@@ -1003,6 +1003,40 @@ static const struct panel_desc okaya_rs8
+@@ -1005,6 +1005,40 @@ static const struct panel_desc okaya_rs8
.bus_format = MEDIA_BUS_FMT_RGB666_1X18,
};
static const struct drm_display_mode ortustech_com43h4m85ulc_mode = {
.clock = 25000,
.hdisplay = 480,
-@@ -1179,6 +1213,9 @@ static const struct of_device_id platfor
+@@ -1181,6 +1215,9 @@ static const struct of_device_id platfor
.compatible = "okaya,rs800480t-7x0gp",
.data = &okaya_rs800480t_7x0gp,
}, {
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -1784,6 +1784,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1777,6 +1777,7 @@ static int packet_rcv_spkt(struct sk_buf
{
struct sock *sk;
struct sockaddr_pkt *spkt;
/*
* When we registered the protocol we saved the socket in the data
-@@ -1791,6 +1792,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1784,6 +1785,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
/*
* Yank back the headers [hope the device set this
-@@ -1803,7 +1805,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1796,7 +1798,7 @@ static int packet_rcv_spkt(struct sk_buf
* so that this procedure is noop.
*/
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2006,12 +2008,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -1999,12 +2001,12 @@ static int packet_rcv(struct sk_buff *sk
int skb_len = skb->len;
unsigned int snaplen, res;
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -2131,12 +2133,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2124,12 +2126,12 @@ static int tpacket_rcv(struct sk_buff *s
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3127,6 +3129,7 @@ static int packet_create(struct net *net
+@@ -3126,6 +3128,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3756,6 +3759,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3755,6 +3758,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -3809,6 +3822,13 @@ static int packet_getsockopt(struct sock
+@@ -3807,6 +3820,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
break;
--- a/net/packet/internal.h
+++ b/net/packet/internal.h
-@@ -129,6 +129,7 @@ struct packet_sock {
+@@ -128,6 +128,7 @@ struct packet_sock {
struct net_device __rcu *cached_dev;
int (*xmit)(struct sk_buff *skb);
struct packet_type prot_hook ____cacheline_aligned_in_smp;
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4259,6 +4259,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4260,6 +4260,9 @@ static enum gro_result dev_gro_receive(s
enum gro_result ret;
int grow;
if (!(skb->dev->features & NETIF_F_GRO))
goto normal;
-@@ -5425,6 +5428,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5426,6 +5429,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)
-@@ -5496,6 +5541,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5497,6 +5542,7 @@ static int __netdev_upper_dev_link(struc
goto rollback_lower_mesh;
}
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
return 0;
-@@ -5622,6 +5668,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -5623,6 +5669,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, i->ref_nr);
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
}
-@@ -6162,6 +6209,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6163,6 +6210,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -2746,10 +2746,20 @@ static int xmit_one(struct sk_buff *skb,
+@@ -2747,10 +2747,20 @@ static int xmit_one(struct sk_buff *skb,
if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
dev_queue_xmit_nit(skb, dev);
}
--- a/fs/proc/proc_tty.c
+++ b/fs/proc/proc_tty.c
-@@ -143,7 +143,10 @@ static const struct file_operations proc
+@@ -144,7 +144,10 @@ static const struct file_operations proc
void proc_tty_register_driver(struct tty_driver *driver)
{
struct proc_dir_entry *ent;
if (!driver->driver_name || driver->proc_entry ||
!driver->ops->proc_fops)
return;
-@@ -160,6 +163,9 @@ void proc_tty_unregister_driver(struct t
+@@ -161,6 +164,9 @@ void proc_tty_unregister_driver(struct t
{
struct proc_dir_entry *ent;
ent = driver->proc_entry;
if (!ent)
return;
-@@ -174,6 +180,9 @@ void proc_tty_unregister_driver(struct t
+@@ -175,6 +181,9 @@ void proc_tty_unregister_driver(struct t
*/
void __init proc_tty_init(void)
{
case UPIO_AU:
p->serial_out(p, offset, value);
p->serial_in(p, UART_LCR); /* safe, no side-effects */
-@@ -2457,6 +2477,7 @@ static int serial8250_request_std_resour
+@@ -2460,6 +2480,7 @@ static int serial8250_request_std_resour
case UPIO_MEM32:
case UPIO_MEM32BE:
case UPIO_MEM:
if (!port->mapbase)
break;
-@@ -2494,6 +2515,7 @@ static void serial8250_release_std_resou
+@@ -2497,6 +2518,7 @@ static void serial8250_release_std_resou
case UPIO_MEM32:
case UPIO_MEM32BE:
case UPIO_MEM:
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
-@@ -356,6 +356,13 @@ config SPI_MT65XX
+@@ -355,6 +355,13 @@ config SPI_MT65XX
say Y or M here.If you are not sure, say N.
SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
{
- struct nand_chip *chip = mtd->priv;
+ struct nand_chip *chip = mtd_to_nand(mtd);
+ int chipnr = (int)(to >> chip->chip_shift);
struct mtd_oob_ops ops;
int ret;
-
-@@ -2722,15 +2757,12 @@ static int nand_do_write_oob(struct mtd_
+@@ -2725,15 +2760,12 @@ static int nand_do_write_oob(struct mtd_
struct mtd_oob_ops *ops)
{
int chipnr, page, status, len;
/* Do not allow write past end of page */
if ((ops->ooboffs + ops->ooblen) > len) {
-@@ -2847,7 +2879,7 @@ out:
+@@ -2850,7 +2882,7 @@ out:
*/
static int single_erase(struct mtd_info *mtd, int page)
{
/* Send commands to erase a block */
chip->cmdfunc(mtd, NAND_CMD_ERASE1, -1, page);
chip->cmdfunc(mtd, NAND_CMD_ERASE2, -1, -1);
-@@ -2879,7 +2911,7 @@ int nand_erase_nand(struct mtd_info *mtd
+@@ -2882,7 +2914,7 @@ int nand_erase_nand(struct mtd_info *mtd
int allowbbt)
{
int page, status, pages_per_block, ret, chipnr;
loff_t len;
pr_debug("%s: start = 0x%012llx, len = %llu\n",
-@@ -2918,7 +2950,7 @@ int nand_erase_nand(struct mtd_info *mtd
+@@ -2921,7 +2953,7 @@ int nand_erase_nand(struct mtd_info *mtd
while (len) {
/* Check if we have a bad block, we do not erase bad blocks! */
if (nand_block_checkbad(mtd, ((loff_t) page) <<
pr_warn("%s: attempt to erase a bad block at page 0x%08x\n",
__func__, page);
instr->state = MTD_ERASE_FAILED;
-@@ -3005,7 +3037,20 @@ static void nand_sync(struct mtd_info *m
+@@ -3008,7 +3040,20 @@ static void nand_sync(struct mtd_info *m
*/
static int nand_block_isbad(struct mtd_info *mtd, loff_t offs)
{
}
/**
-@@ -3094,7 +3139,7 @@ static int nand_suspend(struct mtd_info
+@@ -3097,7 +3142,7 @@ static int nand_suspend(struct mtd_info
*/
static void nand_resume(struct mtd_info *mtd)
{
if (chip->state == FL_PM_SUSPENDED)
nand_release_device(mtd);
-@@ -3266,7 +3311,7 @@ ext_out:
+@@ -3269,7 +3314,7 @@ ext_out:
static int nand_setup_read_retry_micron(struct mtd_info *mtd, int retry_mode)
{
uint8_t feature[ONFI_SUBFEATURE_PARAM_LEN] = {retry_mode};
return chip->onfi_set_features(mtd, chip, ONFI_FEATURE_ADDR_READ_RETRY,
-@@ -3937,10 +3982,13 @@ ident_done:
+@@ -3940,10 +3985,13 @@ ident_done:
return type;
}
if (of_get_nand_bus_width(dn) == 16)
chip->options |= NAND_BUSWIDTH_16;
-@@ -3949,6 +3997,7 @@ static int nand_dt_init(struct mtd_info
+@@ -3952,6 +4000,7 @@ static int nand_dt_init(struct mtd_info
chip->bbt_options |= NAND_BBT_USE_FLASH;
ecc_mode = of_get_nand_ecc_mode(dn);
ecc_strength = of_get_nand_ecc_strength(dn);
ecc_step = of_get_nand_ecc_step_size(dn);
-@@ -3961,6 +4010,9 @@ static int nand_dt_init(struct mtd_info
+@@ -3964,6 +4013,9 @@ static int nand_dt_init(struct mtd_info
if (ecc_mode >= 0)
chip->ecc.mode = ecc_mode;
if (ecc_strength >= 0)
chip->ecc.strength = ecc_strength;
-@@ -3984,15 +4036,16 @@ int nand_scan_ident(struct mtd_info *mtd
+@@ -3987,15 +4039,16 @@ int nand_scan_ident(struct mtd_info *mtd
struct nand_flash_dev *table)
{
int i, nand_maf_id, nand_dev_id;
if (!mtd->name && mtd->dev.parent)
mtd->name = dev_name(mtd->dev.parent);
-@@ -4055,7 +4108,7 @@ EXPORT_SYMBOL(nand_scan_ident);
+@@ -4058,7 +4111,7 @@ EXPORT_SYMBOL(nand_scan_ident);
*/
static bool nand_ecc_strength_good(struct mtd_info *mtd)
{
struct nand_ecc_ctrl *ecc = &chip->ecc;
int corr, ds_corr;
-@@ -4083,10 +4136,10 @@ static bool nand_ecc_strength_good(struc
+@@ -4086,10 +4139,10 @@ static bool nand_ecc_strength_good(struc
*/
int nand_scan_tail(struct mtd_info *mtd)
{
/* New bad blocks should be marked in OOB, flash-based BBT, or both */
BUG_ON((chip->bbt_options & NAND_BBT_NO_OOB_BBM) &&
-@@ -4113,19 +4166,15 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4116,19 +4169,15 @@ int nand_scan_tail(struct mtd_info *mtd)
/*
* If no default placement scheme is given, select an appropriate one.
*/
break;
default:
pr_warn("No oob scheme defined for oobsize %d\n",
-@@ -4168,7 +4217,7 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4171,7 +4220,7 @@ int nand_scan_tail(struct mtd_info *mtd)
ecc->write_oob = nand_write_oob_std;
if (!ecc->read_subpage)
ecc->read_subpage = nand_read_subpage;
ecc->write_subpage = nand_write_subpage_hwecc;
case NAND_ECC_HW_SYNDROME:
-@@ -4246,10 +4295,8 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4249,10 +4298,8 @@ int nand_scan_tail(struct mtd_info *mtd)
}
/* See nand_bch_init() for details. */
if (!ecc->priv) {
pr_warn("BCH ECC initialization failed!\n");
BUG();
-@@ -4280,20 +4327,9 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4283,20 +4330,9 @@ int nand_scan_tail(struct mtd_info *mtd)
if (!ecc->write_oob_raw)
ecc->write_oob_raw = ecc->write_oob;
/*
* Set the number of read / write steps for one page depending on ECC
-@@ -4306,6 +4342,21 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4309,6 +4345,21 @@ int nand_scan_tail(struct mtd_info *mtd)
}
ecc->total = ecc->steps * ecc->bytes;
/* Allow subpage writes up to ecc.steps. Not possible for MLC flash */
if (!(chip->options & NAND_NO_SUBPAGE_WRITE) && nand_is_slc(chip)) {
switch (ecc->steps) {
-@@ -4362,10 +4413,6 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4365,10 +4416,6 @@ int nand_scan_tail(struct mtd_info *mtd)
mtd->_block_markbad = nand_block_markbad;
mtd->writebufsize = mtd->writesize;
/*
* Initialize bitflip_threshold to its default prior scan_bbt() call.
* scan_bbt() might invoke mtd_read(), thus bitflip_threshold must be
-@@ -4421,7 +4468,7 @@ EXPORT_SYMBOL(nand_scan);
+@@ -4424,7 +4471,7 @@ EXPORT_SYMBOL(nand_scan);
*/
void nand_release(struct mtd_info *mtd)
{
{
- struct nand_chip *chip = mtd->priv;
+ struct nand_chip *chip = mtd_to_nand(mtd);
+ int chipnr = (int)(to >> chip->chip_shift);
struct mtd_oob_ops ops;
int ret;
-
-@@ -2722,15 +2757,12 @@ static int nand_do_write_oob(struct mtd_
+@@ -2725,15 +2760,12 @@ static int nand_do_write_oob(struct mtd_
struct mtd_oob_ops *ops)
{
int chipnr, page, status, len;
/* Do not allow write past end of page */
if ((ops->ooboffs + ops->ooblen) > len) {
-@@ -2847,7 +2879,7 @@ out:
+@@ -2850,7 +2882,7 @@ out:
*/
static int single_erase(struct mtd_info *mtd, int page)
{
/* Send commands to erase a block */
chip->cmdfunc(mtd, NAND_CMD_ERASE1, -1, page);
chip->cmdfunc(mtd, NAND_CMD_ERASE2, -1, -1);
-@@ -2879,7 +2911,7 @@ int nand_erase_nand(struct mtd_info *mtd
+@@ -2882,7 +2914,7 @@ int nand_erase_nand(struct mtd_info *mtd
int allowbbt)
{
int page, status, pages_per_block, ret, chipnr;
loff_t len;
pr_debug("%s: start = 0x%012llx, len = %llu\n",
-@@ -2918,7 +2950,7 @@ int nand_erase_nand(struct mtd_info *mtd
+@@ -2921,7 +2953,7 @@ int nand_erase_nand(struct mtd_info *mtd
while (len) {
/* Check if we have a bad block, we do not erase bad blocks! */
if (nand_block_checkbad(mtd, ((loff_t) page) <<
pr_warn("%s: attempt to erase a bad block at page 0x%08x\n",
__func__, page);
instr->state = MTD_ERASE_FAILED;
-@@ -3005,7 +3037,20 @@ static void nand_sync(struct mtd_info *m
+@@ -3008,7 +3040,20 @@ static void nand_sync(struct mtd_info *m
*/
static int nand_block_isbad(struct mtd_info *mtd, loff_t offs)
{
}
/**
-@@ -3094,7 +3139,7 @@ static int nand_suspend(struct mtd_info
+@@ -3097,7 +3142,7 @@ static int nand_suspend(struct mtd_info
*/
static void nand_resume(struct mtd_info *mtd)
{
if (chip->state == FL_PM_SUSPENDED)
nand_release_device(mtd);
-@@ -3266,7 +3311,7 @@ ext_out:
+@@ -3269,7 +3314,7 @@ ext_out:
static int nand_setup_read_retry_micron(struct mtd_info *mtd, int retry_mode)
{
uint8_t feature[ONFI_SUBFEATURE_PARAM_LEN] = {retry_mode};
return chip->onfi_set_features(mtd, chip, ONFI_FEATURE_ADDR_READ_RETRY,
-@@ -3937,10 +3982,13 @@ ident_done:
+@@ -3940,10 +3985,13 @@ ident_done:
return type;
}
if (of_get_nand_bus_width(dn) == 16)
chip->options |= NAND_BUSWIDTH_16;
-@@ -3949,6 +3997,7 @@ static int nand_dt_init(struct mtd_info
+@@ -3952,6 +4000,7 @@ static int nand_dt_init(struct mtd_info
chip->bbt_options |= NAND_BBT_USE_FLASH;
ecc_mode = of_get_nand_ecc_mode(dn);
ecc_strength = of_get_nand_ecc_strength(dn);
ecc_step = of_get_nand_ecc_step_size(dn);
-@@ -3961,6 +4010,9 @@ static int nand_dt_init(struct mtd_info
+@@ -3964,6 +4013,9 @@ static int nand_dt_init(struct mtd_info
if (ecc_mode >= 0)
chip->ecc.mode = ecc_mode;
if (ecc_strength >= 0)
chip->ecc.strength = ecc_strength;
-@@ -3984,15 +4036,16 @@ int nand_scan_ident(struct mtd_info *mtd
+@@ -3987,15 +4039,16 @@ int nand_scan_ident(struct mtd_info *mtd
struct nand_flash_dev *table)
{
int i, nand_maf_id, nand_dev_id;
if (!mtd->name && mtd->dev.parent)
mtd->name = dev_name(mtd->dev.parent);
-@@ -4055,7 +4108,7 @@ EXPORT_SYMBOL(nand_scan_ident);
+@@ -4058,7 +4111,7 @@ EXPORT_SYMBOL(nand_scan_ident);
*/
static bool nand_ecc_strength_good(struct mtd_info *mtd)
{
struct nand_ecc_ctrl *ecc = &chip->ecc;
int corr, ds_corr;
-@@ -4083,10 +4136,10 @@ static bool nand_ecc_strength_good(struc
+@@ -4086,10 +4139,10 @@ static bool nand_ecc_strength_good(struc
*/
int nand_scan_tail(struct mtd_info *mtd)
{
/* New bad blocks should be marked in OOB, flash-based BBT, or both */
BUG_ON((chip->bbt_options & NAND_BBT_NO_OOB_BBM) &&
-@@ -4113,19 +4166,15 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4116,19 +4169,15 @@ int nand_scan_tail(struct mtd_info *mtd)
/*
* If no default placement scheme is given, select an appropriate one.
*/
break;
default:
pr_warn("No oob scheme defined for oobsize %d\n",
-@@ -4168,7 +4217,7 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4171,7 +4220,7 @@ int nand_scan_tail(struct mtd_info *mtd)
ecc->write_oob = nand_write_oob_std;
if (!ecc->read_subpage)
ecc->read_subpage = nand_read_subpage;
ecc->write_subpage = nand_write_subpage_hwecc;
case NAND_ECC_HW_SYNDROME:
-@@ -4246,10 +4295,8 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4249,10 +4298,8 @@ int nand_scan_tail(struct mtd_info *mtd)
}
/* See nand_bch_init() for details. */
if (!ecc->priv) {
pr_warn("BCH ECC initialization failed!\n");
BUG();
-@@ -4280,20 +4327,9 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4283,20 +4330,9 @@ int nand_scan_tail(struct mtd_info *mtd)
if (!ecc->write_oob_raw)
ecc->write_oob_raw = ecc->write_oob;
/*
* Set the number of read / write steps for one page depending on ECC
-@@ -4306,6 +4342,21 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4309,6 +4345,21 @@ int nand_scan_tail(struct mtd_info *mtd)
}
ecc->total = ecc->steps * ecc->bytes;
/* Allow subpage writes up to ecc.steps. Not possible for MLC flash */
if (!(chip->options & NAND_NO_SUBPAGE_WRITE) && nand_is_slc(chip)) {
switch (ecc->steps) {
-@@ -4362,10 +4413,6 @@ int nand_scan_tail(struct mtd_info *mtd)
+@@ -4365,10 +4416,6 @@ int nand_scan_tail(struct mtd_info *mtd)
mtd->_block_markbad = nand_block_markbad;
mtd->writebufsize = mtd->writesize;
/*
* Initialize bitflip_threshold to its default prior scan_bbt() call.
* scan_bbt() might invoke mtd_read(), thus bitflip_threshold must be
-@@ -4421,7 +4468,7 @@ EXPORT_SYMBOL(nand_scan);
+@@ -4424,7 +4471,7 @@ EXPORT_SYMBOL(nand_scan);
*/
void nand_release(struct mtd_info *mtd)
{
}
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
-@@ -3202,8 +3202,7 @@ static void nand_set_defaults(struct nan
+@@ -3205,8 +3205,7 @@ static void nand_set_defaults(struct nan
if (!chip->controller) {
chip->controller = &chip->hwcontrol;
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
-@@ -227,6 +227,15 @@ config PINCTRL_COH901
+@@ -228,6 +228,15 @@ config PINCTRL_COH901
COH 901 335 and COH 901 571/3. They contain 3, 5 or 7
ports of 8 GPIO pins each.
bool "SGI IP22 (Indy/Indigo2)"
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
-@@ -114,6 +114,11 @@ config PINCTRL_LPC18XX
+@@ -115,6 +115,11 @@ config PINCTRL_LPC18XX
help
Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
if (ret < 0) {
if (use_bufpoi)
/* Invalidate page cache */
-@@ -2932,8 +2936,11 @@ int nand_erase_nand(struct mtd_info *mtd
+@@ -2935,8 +2939,11 @@ int nand_erase_nand(struct mtd_info *mtd
if (page <= chip->pagebuf && chip->pagebuf <
(page + pages_per_block))
chip->pagebuf = -1;
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
-@@ -478,6 +478,12 @@ config SPI_QUP
+@@ -477,6 +477,12 @@ config SPI_QUP
This driver can also be built as a module. If so, the module
will be called spi_qup.
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
-@@ -484,6 +484,12 @@ config SPI_RT2880
+@@ -483,6 +483,12 @@ config SPI_RT2880
help
This selects a driver for the Ralink RT288x/RT305x SPI Controller.
return IRQ_HANDLED;
--- a/drivers/net/ethernet/mediatek/gsw_mt7620.h
+++ b/drivers/net/ethernet/mediatek/gsw_mt7620.h
-@@ -113,5 +113,6 @@ u32 mt7530_mdio_r32(struct mt7620_gsw *g
+@@ -119,5 +119,6 @@ u32 mt7530_mdio_r32(struct mt7620_gsw *g
u32 _mt7620_mii_write(struct mt7620_gsw *gsw, u32 phy_addr,
u32 phy_register, u32 write_data);
u32 _mt7620_mii_read(struct mt7620_gsw *gsw, int phy_addr, int phy_reg);
#define GSW_REG_PORT_PMCR(x) (0x3000 + (x * 0x100))
#define GSW_REG_PORT_STATUS(x) (0x3008 + (x * 0x100))
#define GSW_REG_SMACCR0 0x3fE4
-@@ -76,6 +78,7 @@
+@@ -82,6 +84,7 @@
#define PHY_PRE_EN BIT(30)
#define PMY_MDC_CONF(_x) ((_x & 0x3f) << 24)
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
-@@ -3568,6 +3568,7 @@ static void nand_decode_ext_id(struct mt
+@@ -3571,6 +3571,7 @@ static void nand_decode_ext_id(struct mt
/*
* Field definitions are in the following datasheets:
* Old style (4,5 byte ID): Samsung K9GAG08U0M (p.32)
* New Samsung (6 byte ID): Samsung K9GAG08U0F (p.44)
* Hynix MLC (6 byte ID): Hynix H27UBG8T2B (p.22)
*
-@@ -3665,6 +3666,19 @@ static void nand_decode_ext_id(struct mt
+@@ -3668,6 +3669,19 @@ static void nand_decode_ext_id(struct mt
*busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0;
/*