kernel: bump to kernel 4.9.247, 4.14.210, 4.19.161
Resolve conflicted: - generic/pending-4.14/607-tcp_bbr-adapt-cwnd-based-on-ack-aggregation-estimation.patch - layerscape/patches-4.14/804-i2c-support-layerscape.patch - ramips/patches-4.14/0053-mtd-spi-nor-add-w25q256-3b-mode-switch.patch Refreshed all patches. Signed-off-by: CN_SZTL <cnsztl@project-openwrt.eu.org>
This commit is contained in:
parent
01483ac70a
commit
6c69b7539e
@ -6,13 +6,13 @@ ifdef CONFIG_TESTING_KERNEL
|
||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||
endif
|
||||
|
||||
LINUX_VERSION-4.9 = .244
|
||||
LINUX_VERSION-4.14 = .207
|
||||
LINUX_VERSION-4.19 = .158
|
||||
LINUX_VERSION-4.9 = .247
|
||||
LINUX_VERSION-4.14 = .210
|
||||
LINUX_VERSION-4.19 = .161
|
||||
|
||||
LINUX_KERNEL_HASH-4.9.244 = 997af5a1558dd72ce49b87bf710359ad1fca5af777616a8baa98000f6edff109
|
||||
LINUX_KERNEL_HASH-4.14.207 = 78a753970d98584da0821147d4ee7d469325464cb664fb446b8bb30339240029
|
||||
LINUX_KERNEL_HASH-4.19.158 = d658e4b13f796a370da27c868c69c2d6f6edf7eab4cda0c2b44cb31f538db75c
|
||||
LINUX_KERNEL_HASH-4.9.247 = f73aeb0046a94c6cedcc3edc07d5609f1fc64a38c445983a68bf5d84f56acfd6
|
||||
LINUX_KERNEL_HASH-4.14.210 = f91851d0b43c39732f9ee3afa1850145aee21e3bc71b3bf4b9a0b8a74dc4fd18
|
||||
LINUX_KERNEL_HASH-4.19.161 = 07412995966899dda7842b808937b55884106465545a162d6f31f3f4ebd43c41
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -8012,8 +8012,6 @@ int alloc_contig_range(unsigned long sta
|
||||
@@ -8017,8 +8017,6 @@ int alloc_contig_range(unsigned long sta
|
||||
|
||||
/* Make sure the range is really isolated. */
|
||||
if (test_pages_isolated(outer_start, end, false)) {
|
||||
|
||||
@ -19,7 +19,7 @@ Signed-off-by: Gerhard de Clercq <gerharddeclercq@outlook.com>
|
||||
|
||||
--- a/drivers/input/touchscreen/Kconfig
|
||||
+++ b/drivers/input/touchscreen/Kconfig
|
||||
@@ -696,6 +696,13 @@ config TOUCHSCREEN_EDT_FT5X06
|
||||
@@ -697,6 +697,13 @@ config TOUCHSCREEN_EDT_FT5X06
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called edt-ft5x06.
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20181206142439.10441-2-boris
|
||||
|
||||
--- a/drivers/gpu/drm/drm_connector.c
|
||||
+++ b/drivers/gpu/drm/drm_connector.c
|
||||
@@ -1110,7 +1110,7 @@ void drm_hdmi_avi_infoframe_content_type
|
||||
@@ -1111,7 +1111,7 @@ void drm_hdmi_avi_infoframe_content_type
|
||||
EXPORT_SYMBOL(drm_hdmi_avi_infoframe_content_type);
|
||||
|
||||
/**
|
||||
|
||||
@ -18,7 +18,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20181206142439.10441-3-boris
|
||||
|
||||
--- a/include/drm/drm_connector.h
|
||||
+++ b/include/drm/drm_connector.h
|
||||
@@ -346,7 +346,7 @@ int drm_display_info_set_bus_formats(str
|
||||
@@ -393,7 +393,7 @@ int drm_display_info_set_bus_formats(str
|
||||
/**
|
||||
* struct drm_tv_connector_state - TV connector related states
|
||||
* @subconnector: selected subconnector
|
||||
|
||||
@ -23,7 +23,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20181206142439.10441-4-boris
|
||||
|
||||
--- a/drivers/gpu/drm/drm_connector.c
|
||||
+++ b/drivers/gpu/drm/drm_connector.c
|
||||
@@ -1110,6 +1110,70 @@ void drm_hdmi_avi_infoframe_content_type
|
||||
@@ -1111,6 +1111,70 @@ void drm_hdmi_avi_infoframe_content_type
|
||||
EXPORT_SYMBOL(drm_hdmi_avi_infoframe_content_type);
|
||||
|
||||
/**
|
||||
@ -94,7 +94,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20181206142439.10441-4-boris
|
||||
* drm_mode_create_tv_properties - create TV specific connector properties
|
||||
* @dev: DRM device
|
||||
* @num_modes: number of different TV formats (modes) supported
|
||||
@@ -1155,24 +1219,7 @@ int drm_mode_create_tv_properties(struct
|
||||
@@ -1156,24 +1220,7 @@ int drm_mode_create_tv_properties(struct
|
||||
/*
|
||||
* Other, TV specific properties: margins & TV modes.
|
||||
*/
|
||||
@ -122,7 +122,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20181206142439.10441-4-boris
|
||||
dev->mode_config.tv_mode_property =
|
||||
--- a/include/drm/drm_connector.h
|
||||
+++ b/include/drm/drm_connector.h
|
||||
@@ -1175,9 +1175,11 @@ const char *drm_get_tv_select_name(int v
|
||||
@@ -1242,9 +1242,11 @@ const char *drm_get_tv_select_name(int v
|
||||
const char *drm_get_content_protection_name(int val);
|
||||
|
||||
int drm_mode_create_dvi_i_properties(struct drm_device *dev);
|
||||
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
#define USB_VENDOR_ID_BELKIN 0x050d
|
||||
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
||||
|
||||
@@ -1211,6 +1214,9 @@
|
||||
@@ -1219,6 +1222,9 @@
|
||||
#define USB_VENDOR_ID_XAT 0x2505
|
||||
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
||||
|
||||
@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
|
||||
@@ -180,6 +181,7 @@ static const struct hid_device_id hid_qu
|
||||
@@ -185,6 +186,7 @@ static const struct hid_device_id hid_qu
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET), HID_QUIRK_MULTI_INPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
||||
|
||||
@ -20,7 +20,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/963c893c16c6a25fc469b53c726f
|
||||
|
||||
--- a/include/drm/drm_connector.h
|
||||
+++ b/include/drm/drm_connector.h
|
||||
@@ -755,18 +755,100 @@ struct drm_connector_funcs {
|
||||
@@ -802,18 +802,100 @@ struct drm_connector_funcs {
|
||||
const struct drm_connector_state *state);
|
||||
};
|
||||
|
||||
|
||||
@ -158,7 +158,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/18443e0c3bdbbd16cea4ec63bc7f
|
||||
return true;
|
||||
--- a/include/drm/drm_connector.h
|
||||
+++ b/include/drm/drm_connector.h
|
||||
@@ -765,6 +765,13 @@ struct drm_connector_funcs {
|
||||
@@ -812,6 +812,13 @@ struct drm_connector_funcs {
|
||||
*/
|
||||
struct drm_cmdline_mode {
|
||||
/**
|
||||
|
||||
@ -258,7 +258,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/777da16e42db757c1f5b414b5ca3
|
||||
return true;
|
||||
--- a/include/drm/drm_connector.h
|
||||
+++ b/include/drm/drm_connector.h
|
||||
@@ -857,6 +857,16 @@ struct drm_cmdline_mode {
|
||||
@@ -904,6 +904,16 @@ struct drm_cmdline_mode {
|
||||
* state to one of the DRM_FORCE_* values.
|
||||
*/
|
||||
enum drm_connector_force force;
|
||||
|
||||
@ -22,7 +22,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/38b773b03f15ec7a135cdf8f7db6
|
||||
|
||||
--- a/include/drm/drm_connector.h
|
||||
+++ b/include/drm/drm_connector.h
|
||||
@@ -344,13 +344,37 @@ int drm_display_info_set_bus_formats(str
|
||||
@@ -391,13 +391,37 @@ int drm_display_info_set_bus_formats(str
|
||||
unsigned int num_formats);
|
||||
|
||||
/**
|
||||
@ -65,7 +65,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/38b773b03f15ec7a135cdf8f7db6
|
||||
* @mode: TV mode
|
||||
* @brightness: brightness in percent
|
||||
* @contrast: contrast in percent
|
||||
@@ -361,12 +385,7 @@ int drm_display_info_set_bus_formats(str
|
||||
@@ -408,12 +432,7 @@ int drm_display_info_set_bus_formats(str
|
||||
*/
|
||||
struct drm_tv_connector_state {
|
||||
enum drm_mode_subconnector subconnector;
|
||||
|
||||
@ -88,7 +88,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/e481f1628e3768ca49226ec2115c
|
||||
}
|
||||
--- a/include/drm/drm_connector.h
|
||||
+++ b/include/drm/drm_connector.h
|
||||
@@ -886,6 +886,11 @@ struct drm_cmdline_mode {
|
||||
@@ -933,6 +933,11 @@ struct drm_cmdline_mode {
|
||||
* DRM_MODE_ROTATE_0 and DRM_MODE_ROTATE_180.
|
||||
*/
|
||||
unsigned int rotation_reflection;
|
||||
|
||||
@ -26,7 +26,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/84a7b657f09303a2850e1cc79e68
|
||||
|
||||
--- a/drivers/gpu/drm/drm_atomic_helper.c
|
||||
+++ b/drivers/gpu/drm/drm_atomic_helper.c
|
||||
@@ -3737,6 +3737,24 @@ void drm_atomic_helper_connector_reset(s
|
||||
@@ -3756,6 +3756,24 @@ void drm_atomic_helper_connector_reset(s
|
||||
EXPORT_SYMBOL(drm_atomic_helper_connector_reset);
|
||||
|
||||
/**
|
||||
|
||||
@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -1230,6 +1230,18 @@ static const struct flash_info *spi_nor_
|
||||
@@ -1240,6 +1240,18 @@ static const struct flash_info *spi_nor_
|
||||
}
|
||||
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
|
||||
id[0], id[1], id[2]);
|
||||
|
||||
@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch
|
||||
dev_info(sdev->dev,
|
||||
"could not find PHY at %i, use fixed one\n",
|
||||
bp->phy_addr);
|
||||
@@ -2480,6 +2548,7 @@ static void b44_remove_one(struct ssb_de
|
||||
@@ -2481,6 +2549,7 @@ static void b44_remove_one(struct ssb_de
|
||||
unregister_netdev(dev);
|
||||
if (bp->flags & B44_FLAG_EXTERNAL_PHY)
|
||||
b44_unregister_phy_one(bp);
|
||||
|
||||
@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch
|
||||
dev_info(sdev->dev,
|
||||
"could not find PHY at %i, use fixed one\n",
|
||||
bp->phy_addr);
|
||||
@@ -2478,6 +2546,7 @@ static void b44_remove_one(struct ssb_de
|
||||
@@ -2479,6 +2547,7 @@ static void b44_remove_one(struct ssb_de
|
||||
unregister_netdev(dev);
|
||||
if (bp->flags & B44_FLAG_EXTERNAL_PHY)
|
||||
b44_unregister_phy_one(bp);
|
||||
|
||||
@ -33,7 +33,7 @@ Cc: stable@vger.kernel.org
|
||||
|
||||
--- a/drivers/net/usb/ipheth.c
|
||||
+++ b/drivers/net/usb/ipheth.c
|
||||
@@ -59,7 +59,7 @@
|
||||
@@ -70,7 +70,7 @@
|
||||
#define IPHETH_USBINTF_SUBCLASS 253
|
||||
#define IPHETH_USBINTF_PROTO 1
|
||||
|
||||
|
||||
@ -52,28 +52,28 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
|
||||
@@ -16,7 +16,7 @@ struct ip_rt_info {
|
||||
u_int32_t mark;
|
||||
};
|
||||
|
||||
|
||||
-int ip_route_me_harder(struct net *net, struct sk_buff *skb, unsigned addr_type);
|
||||
+int ip_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb, unsigned addr_type);
|
||||
|
||||
|
||||
struct nf_queue_entry;
|
||||
|
||||
|
||||
--- a/include/linux/netfilter_ipv6.h
|
||||
+++ b/include/linux/netfilter_ipv6.h
|
||||
@@ -41,7 +41,7 @@ struct nf_ipv6_ops {
|
||||
};
|
||||
|
||||
|
||||
#ifdef CONFIG_NETFILTER
|
||||
-int ip6_route_me_harder(struct net *net, struct sk_buff *skb);
|
||||
+int ip6_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb);
|
||||
__sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook,
|
||||
unsigned int dataoff, u_int8_t protocol);
|
||||
|
||||
|
||||
--- a/net/ipv4/netfilter.c
|
||||
+++ b/net/ipv4/netfilter.c
|
||||
@@ -17,17 +17,19 @@
|
||||
#include <net/netfilter/nf_queue.h>
|
||||
|
||||
|
||||
/* route_me_harder function, used by iptable_nat, iptable_mangle + ip_queue */
|
||||
-int ip_route_me_harder(struct net *net, struct sk_buff *skb, unsigned int addr_type)
|
||||
+int ip_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb, unsigned int addr_type)
|
||||
@ -87,7 +87,7 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
|
||||
+ __u8 flags;
|
||||
struct net_device *dev = skb_dst(skb)->dev;
|
||||
unsigned int hh_len;
|
||||
|
||||
|
||||
+ sk = sk_to_full_sk(sk);
|
||||
+ flags = sk ? inet_sk_flowi_flags(sk) : 0;
|
||||
+
|
||||
@ -106,13 +106,13 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
|
||||
--- a/net/ipv4/netfilter/ipt_SYNPROXY.c
|
||||
+++ b/net/ipv4/netfilter/ipt_SYNPROXY.c
|
||||
@@ -53,7 +53,7 @@ synproxy_send_tcp(struct net *net,
|
||||
|
||||
|
||||
skb_dst_set_noref(nskb, skb_dst(skb));
|
||||
nskb->protocol = htons(ETH_P_IP);
|
||||
- if (ip_route_me_harder(net, nskb, RTN_UNSPEC))
|
||||
+ if (ip_route_me_harder(net, nskb->sk, nskb, RTN_UNSPEC))
|
||||
goto free_nskb;
|
||||
|
||||
|
||||
if (nfct) {
|
||||
--- a/net/ipv4/netfilter/iptable_mangle.c
|
||||
+++ b/net/ipv4/netfilter/iptable_mangle.c
|
||||
@ -128,7 +128,7 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
|
||||
--- a/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c
|
||||
+++ b/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c
|
||||
@@ -397,7 +397,7 @@ nf_nat_ipv4_local_fn(void *priv, struct
|
||||
|
||||
|
||||
if (ct->tuplehash[dir].tuple.dst.u3.ip !=
|
||||
ct->tuplehash[!dir].tuple.src.u3.ip) {
|
||||
- err = ip_route_me_harder(state->net, skb, RTN_UNSPEC);
|
||||
@ -141,11 +141,11 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
|
||||
@@ -129,7 +129,7 @@ void nf_send_reset(struct net *net, stru
|
||||
ip4_dst_hoplimit(skb_dst(nskb)));
|
||||
nf_reject_ip_tcphdr_put(nskb, oldskb, oth);
|
||||
|
||||
|
||||
- if (ip_route_me_harder(net, nskb, RTN_UNSPEC))
|
||||
+ if (ip_route_me_harder(net, nskb->sk, nskb, RTN_UNSPEC))
|
||||
goto free_nskb;
|
||||
|
||||
|
||||
niph = ip_hdr(nskb);
|
||||
--- a/net/ipv4/netfilter/nft_chain_route_ipv4.c
|
||||
+++ b/net/ipv4/netfilter/nft_chain_route_ipv4.c
|
||||
@ -163,7 +163,7 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
|
||||
@@ -18,10 +18,10 @@
|
||||
#include <net/ip6_checksum.h>
|
||||
#include <net/netfilter/nf_queue.h>
|
||||
|
||||
|
||||
-int ip6_route_me_harder(struct net *net, struct sk_buff *skb)
|
||||
+int ip6_route_me_harder(struct net *net, struct sock *sk_partial, struct sk_buff *skb)
|
||||
{
|
||||
@ -196,7 +196,7 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
|
||||
--- a/net/ipv6/netfilter/nf_nat_l3proto_ipv6.c
|
||||
+++ b/net/ipv6/netfilter/nf_nat_l3proto_ipv6.c
|
||||
@@ -414,7 +414,7 @@ nf_nat_ipv6_local_fn(void *priv, struct
|
||||
|
||||
|
||||
if (!nf_inet_addr_cmp(&ct->tuplehash[dir].tuple.dst.u3,
|
||||
&ct->tuplehash[!dir].tuple.src.u3)) {
|
||||
- err = ip6_route_me_harder(state->net, skb);
|
||||
@ -219,7 +219,7 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
|
||||
+++ b/net/netfilter/ipvs/ip_vs_core.c
|
||||
@@ -713,12 +713,12 @@ static int ip_vs_route_me_harder(struct
|
||||
struct dst_entry *dst = skb_dst(skb);
|
||||
|
||||
|
||||
if (dst->dev && !(dst->dev->flags & IFF_LOOPBACK) &&
|
||||
- ip6_route_me_harder(ipvs->net, skb) != 0)
|
||||
+ ip6_route_me_harder(ipvs->net, skb->sk, skb) != 0)
|
||||
@ -230,5 +230,5 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
|
||||
- ip_route_me_harder(ipvs->net, skb, RTN_LOCAL) != 0)
|
||||
+ ip_route_me_harder(ipvs->net, skb->sk, skb, RTN_LOCAL) != 0)
|
||||
return 1;
|
||||
|
||||
|
||||
return 0;
|
||||
|
||||
@ -33,7 +33,7 @@ Cc: stable@vger.kernel.org
|
||||
|
||||
--- a/drivers/net/usb/ipheth.c
|
||||
+++ b/drivers/net/usb/ipheth.c
|
||||
@@ -59,7 +59,7 @@
|
||||
@@ -70,7 +70,7 @@
|
||||
#define IPHETH_USBINTF_SUBCLASS 253
|
||||
#define IPHETH_USBINTF_PROTO 1
|
||||
|
||||
|
||||
@ -33,7 +33,7 @@ Cc: stable@vger.kernel.org
|
||||
|
||||
--- a/drivers/net/usb/ipheth.c
|
||||
+++ b/drivers/net/usb/ipheth.c
|
||||
@@ -59,7 +59,7 @@
|
||||
@@ -70,7 +70,7 @@
|
||||
#define IPHETH_USBINTF_SUBCLASS 253
|
||||
#define IPHETH_USBINTF_PROTO 1
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -1198,6 +1198,9 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1208,6 +1208,9 @@ static const struct flash_info spi_nor_i
|
||||
/* XMC (Wuhan Xinxin Semiconductor Manufacturing Corp.) */
|
||||
{ "XM25QH64A", INFO(0x207017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{ "XM25QH128A", INFO(0x207018, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
|
||||
@ -23,11 +23,9 @@ Forwarded: https://patchwork.ozlabs.org/project/linux-mtd/patch/20201122001533.9
|
||||
Fixes: eb13fa022741 ("mtd: parser: cmdline: Support MTD names containing one or more colons")
|
||||
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
|
||||
diff --git a/drivers/mtd/cmdlinepart.c b/drivers/mtd/cmdlinepart.c
|
||||
index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf1cd023af 100644
|
||||
--- a/drivers/mtd/cmdlinepart.c
|
||||
+++ b/drivers/mtd/cmdlinepart.c
|
||||
@@ -218,7 +218,7 @@ static int mtdpart_setup_real(char *s)
|
||||
@@ -228,7 +228,7 @@ static int mtdpart_setup_real(char *s)
|
||||
struct cmdline_mtd_partition *this_mtd;
|
||||
struct mtd_partition *parts;
|
||||
int mtd_id_len, num_parts;
|
||||
@ -36,7 +34,7 @@ index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf
|
||||
|
||||
/*
|
||||
* Replace the first ';' by a NULL char so strrchr can work
|
||||
@@ -228,6 +228,13 @@ static int mtdpart_setup_real(char *s)
|
||||
@@ -238,6 +238,13 @@ static int mtdpart_setup_real(char *s)
|
||||
if (semicol)
|
||||
*semicol = '\0';
|
||||
|
||||
@ -50,7 +48,7 @@ index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf
|
||||
mtd_id = s;
|
||||
|
||||
/*
|
||||
@@ -237,6 +244,10 @@ static int mtdpart_setup_real(char *s)
|
||||
@@ -247,6 +254,10 @@ static int mtdpart_setup_real(char *s)
|
||||
*/
|
||||
p = strrchr(s, ':');
|
||||
|
||||
|
||||
@ -458,8 +458,8 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
filter_expired = after(tcp_jiffies32,
|
||||
bbr->min_rtt_stamp + bbr_min_rtt_win_sec * HZ);
|
||||
if (rs->rtt_us >= 0 &&
|
||||
- (rs->rtt_us <= bbr->min_rtt_us || filter_expired)) {
|
||||
+ (rs->rtt_us <= bbr->min_rtt_us ||
|
||||
- (rs->rtt_us < bbr->min_rtt_us || filter_expired)) {
|
||||
+ (rs->rtt_us < bbr->min_rtt_us ||
|
||||
+ (filter_expired && !rs->is_ack_delayed))) {
|
||||
bbr->min_rtt_us = rs->rtt_us;
|
||||
bbr->min_rtt_stamp = tcp_jiffies32;
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
#include "br_private.h"
|
||||
@@ -346,6 +350,28 @@ static const struct ethtool_ops br_ethto
|
||||
@@ -347,6 +351,28 @@ static const struct ethtool_ops br_ethto
|
||||
.get_link = ethtool_op_get_link,
|
||||
};
|
||||
|
||||
@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static const struct net_device_ops br_netdev_ops = {
|
||||
.ndo_open = br_dev_open,
|
||||
.ndo_stop = br_dev_stop,
|
||||
@@ -373,6 +399,9 @@ static const struct net_device_ops br_ne
|
||||
@@ -374,6 +400,9 @@ static const struct net_device_ops br_ne
|
||||
.ndo_bridge_setlink = br_setlink,
|
||||
.ndo_bridge_dellink = br_dellink,
|
||||
.ndo_features_check = passthru_features_check,
|
||||
|
||||
@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
|
||||
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -6403,7 +6403,7 @@ static void __ref alloc_node_mem_map(str
|
||||
@@ -6408,7 +6408,7 @@ static void __ref alloc_node_mem_map(str
|
||||
mem_map = NODE_DATA(0)->node_mem_map;
|
||||
#if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
|
||||
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
#include "br_private.h"
|
||||
@@ -376,6 +380,28 @@ static const struct ethtool_ops br_ethto
|
||||
@@ -377,6 +381,28 @@ static const struct ethtool_ops br_ethto
|
||||
.get_link = ethtool_op_get_link,
|
||||
};
|
||||
|
||||
@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static const struct net_device_ops br_netdev_ops = {
|
||||
.ndo_open = br_dev_open,
|
||||
.ndo_stop = br_dev_stop,
|
||||
@@ -403,6 +429,9 @@ static const struct net_device_ops br_ne
|
||||
@@ -404,6 +430,9 @@ static const struct net_device_ops br_ne
|
||||
.ndo_bridge_setlink = br_setlink,
|
||||
.ndo_bridge_dellink = br_dellink,
|
||||
.ndo_features_check = passthru_features_check,
|
||||
|
||||
@ -23,11 +23,9 @@ Forwarded: https://patchwork.ozlabs.org/project/linux-mtd/patch/20201122001533.9
|
||||
Fixes: eb13fa022741 ("mtd: parser: cmdline: Support MTD names containing one or more colons")
|
||||
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
|
||||
diff --git a/drivers/mtd/cmdlinepart.c b/drivers/mtd/cmdlinepart.c
|
||||
index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf1cd023af 100644
|
||||
--- a/drivers/mtd/cmdlinepart.c
|
||||
+++ b/drivers/mtd/cmdlinepart.c
|
||||
@@ -218,7 +218,7 @@ static int mtdpart_setup_real(char *s)
|
||||
@@ -228,7 +228,7 @@ static int mtdpart_setup_real(char *s)
|
||||
struct cmdline_mtd_partition *this_mtd;
|
||||
struct mtd_partition *parts;
|
||||
int mtd_id_len, num_parts;
|
||||
@ -36,7 +34,7 @@ index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf
|
||||
|
||||
/*
|
||||
* Replace the first ';' by a NULL char so strrchr can work
|
||||
@@ -228,6 +228,13 @@ static int mtdpart_setup_real(char *s)
|
||||
@@ -238,6 +238,13 @@ static int mtdpart_setup_real(char *s)
|
||||
if (semicol)
|
||||
*semicol = '\0';
|
||||
|
||||
@ -50,7 +48,7 @@ index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf
|
||||
mtd_id = s;
|
||||
|
||||
/*
|
||||
@@ -237,6 +244,10 @@ static int mtdpart_setup_real(char *s)
|
||||
@@ -247,6 +254,10 @@ static int mtdpart_setup_real(char *s)
|
||||
*/
|
||||
p = strrchr(s, ':');
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -1037,6 +1037,7 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1047,6 +1047,7 @@ static const struct flash_info spi_nor_i
|
||||
{ "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) },
|
||||
{ "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) },
|
||||
{ "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
@ -8,7 +8,7 @@
|
||||
{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) },
|
||||
{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
|
||||
{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
|
||||
@@ -1209,11 +1210,12 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1219,11 +1220,12 @@ static const struct flash_info spi_nor_i
|
||||
{ },
|
||||
};
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN);
|
||||
if (tmp < 0) {
|
||||
@@ -1224,10 +1226,16 @@ static const struct flash_info *spi_nor_
|
||||
@@ -1234,10 +1236,16 @@ static const struct flash_info *spi_nor_
|
||||
for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) {
|
||||
info = &spi_nor_ids[tmp];
|
||||
if (info->id_len) {
|
||||
@ -42,7 +42,7 @@
|
||||
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
|
||||
id[0], id[1], id[2]);
|
||||
return ERR_PTR(-ENODEV);
|
||||
@@ -2687,7 +2695,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2706,7 +2714,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
info = spi_nor_match_id(name);
|
||||
/* Try to auto-detect if chip name wasn't specified or not found */
|
||||
if (!info)
|
||||
@ -51,7 +51,7 @@
|
||||
if (IS_ERR_OR_NULL(info))
|
||||
return -ENOENT;
|
||||
|
||||
@@ -2698,7 +2706,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2717,7 +2725,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
if (name && info->id_len) {
|
||||
const struct flash_info *jinfo;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -955,6 +955,7 @@ static const struct flash_info spi_nor_i
|
||||
@@ -959,6 +959,7 @@ static const struct flash_info spi_nor_i
|
||||
{ "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128, 0) },
|
||||
{ "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) },
|
||||
{ "en25q128", INFO(0x1c3018, 0, 64 * 1024, 256, SECT_4K) },
|
||||
|
||||
@ -285,7 +285,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
#define PAGE_NONE __pgprot(((_PAGE_DEFAULT) & ~PTE_VALID) | PTE_PROT_NONE | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN)
|
||||
--- a/arch/arm64/include/asm/pgtable.h
|
||||
+++ b/arch/arm64/include/asm/pgtable.h
|
||||
@@ -357,6 +357,11 @@ static inline int pmd_protnone(pmd_t pmd
|
||||
@@ -365,6 +365,11 @@ static inline int pmd_protnone(pmd_t pmd
|
||||
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE) | PTE_PXN | PTE_UXN)
|
||||
#define pgprot_writecombine(prot) \
|
||||
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN)
|
||||
|
||||
@ -84,7 +84,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
/*
|
||||
* sorted list of clock divider, register value pairs
|
||||
* taken from table 26-5, p.26-9, Freescale i.MX
|
||||
@@ -210,6 +263,12 @@ struct imx_i2c_struct {
|
||||
@@ -211,6 +264,12 @@ struct imx_i2c_struct {
|
||||
struct pinctrl_state *pinctrl_pins_gpio;
|
||||
|
||||
struct imx_i2c_dma *dma;
|
||||
@ -97,7 +97,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
};
|
||||
|
||||
static const struct imx_i2c_hwdata imx1_i2c_hwdata = {
|
||||
@@ -281,8 +340,8 @@ static inline unsigned char imx_i2c_read
|
||||
@@ -282,8 +341,8 @@ static inline unsigned char imx_i2c_read
|
||||
}
|
||||
|
||||
/* Functions for DMA support */
|
||||
@ -108,7 +108,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
{
|
||||
struct imx_i2c_dma *dma;
|
||||
struct dma_slave_config dma_sconfig;
|
||||
@@ -291,11 +350,13 @@ static void i2c_imx_dma_request(struct i
|
||||
@@ -292,11 +351,13 @@ static void i2c_imx_dma_request(struct i
|
||||
|
||||
dma = devm_kzalloc(dev, sizeof(*dma), GFP_KERNEL);
|
||||
if (!dma)
|
||||
@ -126,7 +126,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
goto fail_al;
|
||||
}
|
||||
|
||||
@@ -306,13 +367,15 @@ static void i2c_imx_dma_request(struct i
|
||||
@@ -307,13 +368,15 @@ static void i2c_imx_dma_request(struct i
|
||||
dma_sconfig.direction = DMA_MEM_TO_DEV;
|
||||
ret = dmaengine_slave_config(dma->chan_tx, &dma_sconfig);
|
||||
if (ret < 0) {
|
||||
@ -146,7 +146,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
goto fail_tx;
|
||||
}
|
||||
|
||||
@@ -323,7 +386,7 @@ static void i2c_imx_dma_request(struct i
|
||||
@@ -324,7 +387,7 @@ static void i2c_imx_dma_request(struct i
|
||||
dma_sconfig.direction = DMA_DEV_TO_MEM;
|
||||
ret = dmaengine_slave_config(dma->chan_rx, &dma_sconfig);
|
||||
if (ret < 0) {
|
||||
@ -155,7 +155,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
goto fail_rx;
|
||||
}
|
||||
|
||||
@@ -332,7 +395,7 @@ static void i2c_imx_dma_request(struct i
|
||||
@@ -333,7 +396,7 @@ static void i2c_imx_dma_request(struct i
|
||||
dev_info(dev, "using %s (tx) and %s (rx) for DMA transfers\n",
|
||||
dma_chan_name(dma->chan_tx), dma_chan_name(dma->chan_rx));
|
||||
|
||||
@ -164,7 +164,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
|
||||
fail_rx:
|
||||
dma_release_channel(dma->chan_rx);
|
||||
@@ -340,7 +403,8 @@ fail_tx:
|
||||
@@ -341,7 +404,8 @@ fail_tx:
|
||||
dma_release_channel(dma->chan_tx);
|
||||
fail_al:
|
||||
devm_kfree(dev, dma);
|
||||
@ -174,7 +174,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
}
|
||||
|
||||
static void i2c_imx_dma_callback(void *arg)
|
||||
@@ -878,6 +942,78 @@ static int i2c_imx_read(struct imx_i2c_s
|
||||
@@ -890,6 +954,78 @@ static int i2c_imx_read(struct imx_i2c_s
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -253,7 +253,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
static int i2c_imx_xfer(struct i2c_adapter *adapter,
|
||||
struct i2c_msg *msgs, int num)
|
||||
{
|
||||
@@ -888,6 +1024,19 @@ static int i2c_imx_xfer(struct i2c_adapt
|
||||
@@ -900,6 +1036,19 @@ static int i2c_imx_xfer(struct i2c_adapt
|
||||
|
||||
dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
|
||||
|
||||
@ -273,7 +273,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent);
|
||||
if (result < 0)
|
||||
goto out;
|
||||
@@ -1030,6 +1179,50 @@ static int i2c_imx_init_recovery_info(st
|
||||
@@ -1042,6 +1191,50 @@ static int i2c_imx_init_recovery_info(st
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -324,7 +324,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
static u32 i2c_imx_func(struct i2c_adapter *adapter)
|
||||
{
|
||||
return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL
|
||||
@@ -1085,6 +1278,11 @@ static int i2c_imx_probe(struct platform
|
||||
@@ -1097,6 +1290,11 @@ static int i2c_imx_probe(struct platform
|
||||
i2c_imx->adapter.dev.of_node = pdev->dev.of_node;
|
||||
i2c_imx->base = base;
|
||||
|
||||
@ -336,17 +336,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
/* Get I2C clock */
|
||||
i2c_imx->clk = devm_clk_get(&pdev->dev, NULL);
|
||||
if (IS_ERR(i2c_imx->clk)) {
|
||||
@@ -1104,7 +1302,8 @@ static int i2c_imx_probe(struct platform
|
||||
pdev->name, i2c_imx);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "can't claim irq %d\n", irq);
|
||||
- goto clk_disable;
|
||||
+ clk_disable_unprepare(i2c_imx->clk);
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
/* Init queue */
|
||||
@@ -1151,25 +1350,31 @@ static int i2c_imx_probe(struct platform
|
||||
@@ -1166,17 +1364,25 @@ static int i2c_imx_probe(struct platform
|
||||
pm_runtime_mark_last_busy(&pdev->dev);
|
||||
pm_runtime_put_autosuspend(&pdev->dev);
|
||||
|
||||
@ -373,17 +363,9 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
|
||||
|
||||
+del_adapter:
|
||||
+ i2c_del_adapter(&i2c_imx->adapter);
|
||||
rpm_disable:
|
||||
pm_runtime_put_noidle(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
pm_runtime_set_suspended(&pdev->dev);
|
||||
pm_runtime_dont_use_autosuspend(&pdev->dev);
|
||||
|
||||
-clk_disable:
|
||||
- clk_disable_unprepare(i2c_imx->clk);
|
||||
return ret;
|
||||
}
|
||||
|
||||
clk_notifier_unregister:
|
||||
clk_notifier_unregister(i2c_imx->clk, &i2c_imx->clk_change_nb);
|
||||
free_irq(irq, i2c_imx);
|
||||
--- a/drivers/i2c/muxes/i2c-mux-pca954x.c
|
||||
+++ b/drivers/i2c/muxes/i2c-mux-pca954x.c
|
||||
@@ -85,6 +85,7 @@ struct pca954x {
|
||||
|
||||
@ -1504,7 +1504,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -269,6 +269,7 @@ static inline int set_4byte(struct spi_n
|
||||
@@ -271,6 +271,7 @@ static inline int set_4byte(struct spi_n
|
||||
u8 cmd;
|
||||
|
||||
switch (JEDEC_MFR(info)) {
|
||||
@ -1512,7 +1512,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
case SNOR_MFR_MICRON:
|
||||
/* Some Micron need WREN command; all will accept it */
|
||||
need_wren = true;
|
||||
@@ -1044,7 +1045,7 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1054,7 +1055,7 @@ static const struct flash_info spi_nor_i
|
||||
{ "mx66l1g45g", INFO(0xc2201b, 0, 64 * 1024, 2048, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{ "mx66l1g55g", INFO(0xc2261b, 0, 64 * 1024, 2048, SPI_NOR_QUAD_READ) },
|
||||
|
||||
@ -1521,7 +1521,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
{ "n25q016a", INFO(0x20bb15, 0, 64 * 1024, 32, SECT_4K | SPI_NOR_QUAD_READ) },
|
||||
{ "n25q032", INFO(0x20ba16, 0, 64 * 1024, 64, SPI_NOR_QUAD_READ) },
|
||||
{ "n25q032a", INFO(0x20bb16, 0, 64 * 1024, 64, SPI_NOR_QUAD_READ) },
|
||||
@@ -1059,6 +1060,12 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1069,6 +1070,12 @@ static const struct flash_info spi_nor_i
|
||||
{ "n25q00", INFO(0x20ba21, 0, 64 * 1024, 2048, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE) },
|
||||
{ "n25q00a", INFO(0x20bb21, 0, 64 * 1024, 2048, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE) },
|
||||
|
||||
@ -1534,7 +1534,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
/* PMC */
|
||||
{ "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) },
|
||||
{ "pm25lv010", INFO(0, 0, 32 * 1024, 4, SECT_4K_PMC) },
|
||||
@@ -2439,6 +2446,7 @@ static int spi_nor_init_params(struct sp
|
||||
@@ -2449,6 +2456,7 @@ static int spi_nor_init_params(struct sp
|
||||
params->quad_enable = macronix_quad_enable;
|
||||
break;
|
||||
|
||||
@ -1542,7 +1542,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
case SNOR_MFR_MICRON:
|
||||
break;
|
||||
|
||||
@@ -2757,7 +2765,8 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2776,7 +2784,8 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
mtd->_read = spi_nor_read;
|
||||
|
||||
/* NOR protection support for STmicro/Micron chips and similar */
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -2671,6 +2671,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2690,6 +2690,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
struct device *dev = nor->dev;
|
||||
struct mtd_info *mtd = &nor->mtd;
|
||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
@@ -2746,7 +2747,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2765,7 +2766,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
spi_nor_wait_till_ready(nor);
|
||||
}
|
||||
|
||||
|
||||
@ -13,18 +13,19 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -89,6 +89,10 @@ struct flash_info {
|
||||
@@ -89,7 +89,10 @@ struct flash_info {
|
||||
#define NO_CHIP_ERASE BIT(12) /* Chip does not support chip erase */
|
||||
#define SPI_NOR_SKIP_SFDP BIT(13) /* Skip parsing of SFDP tables */
|
||||
#define USE_CLSR BIT(14) /* use CLSR command */
|
||||
-
|
||||
+#define SPI_NOR_4B_READ_OP BIT(15) /*
|
||||
+ * Like SPI_NOR_4B_OPCODES, but for read
|
||||
+ * op code only.
|
||||
+ */
|
||||
int (*quad_enable)(struct spi_nor *nor);
|
||||
};
|
||||
|
||||
#define JEDEC_MFR(info) ((info)->id[0])
|
||||
@@ -240,6 +244,15 @@ static inline u8 spi_nor_convert_3to4_er
|
||||
@@ -242,6 +245,15 @@ static inline u8 spi_nor_convert_3to4_er
|
||||
ARRAY_SIZE(spi_nor_3to4_erase));
|
||||
}
|
||||
|
||||
@ -40,7 +41,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static void spi_nor_set_4byte_opcodes(struct spi_nor *nor,
|
||||
const struct flash_info *info)
|
||||
{
|
||||
@@ -467,6 +480,36 @@ static int spi_nor_erase_sector(struct s
|
||||
@@ -469,6 +481,36 @@ static int spi_nor_erase_sector(struct s
|
||||
return nor->write_reg(nor, nor->erase_opcode, buf, nor->addr_width);
|
||||
}
|
||||
|
||||
@ -77,7 +78,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/*
|
||||
* Erase an address range on the nor chip. The address range may extend
|
||||
* one or more erase sectors. Return an error is there is a problem erasing.
|
||||
@@ -492,6 +535,10 @@ static int spi_nor_erase(struct mtd_info
|
||||
@@ -494,6 +536,10 @@ static int spi_nor_erase(struct mtd_info
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -88,7 +89,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/* whole-chip erase? */
|
||||
if (len == mtd->size && !(nor->flags & SNOR_F_NO_OP_CHIP_ERASE)) {
|
||||
unsigned long timeout;
|
||||
@@ -542,6 +589,7 @@ static int spi_nor_erase(struct mtd_info
|
||||
@@ -544,6 +590,7 @@ static int spi_nor_erase(struct mtd_info
|
||||
write_disable(nor);
|
||||
|
||||
erase_err:
|
||||
@ -96,7 +97,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_ERASE);
|
||||
|
||||
instr->state = ret ? MTD_ERASE_FAILED : MTD_ERASE_DONE;
|
||||
@@ -834,7 +882,9 @@ static int spi_nor_lock(struct mtd_info
|
||||
@@ -836,7 +883,9 @@ static int spi_nor_lock(struct mtd_info
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -106,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_UNLOCK);
|
||||
return ret;
|
||||
@@ -849,7 +899,9 @@ static int spi_nor_unlock(struct mtd_inf
|
||||
@@ -851,7 +900,9 @@ static int spi_nor_unlock(struct mtd_inf
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -116,7 +117,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_LOCK);
|
||||
return ret;
|
||||
@@ -1182,7 +1234,7 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1192,7 +1243,7 @@ static const struct flash_info spi_nor_i
|
||||
{ "w25q80", INFO(0xef5014, 0, 64 * 1024, 16, SECT_4K) },
|
||||
{ "w25q80bl", INFO(0xef4014, 0, 64 * 1024, 16, SECT_4K) },
|
||||
{ "w25q128", INFO(0xef4018, 0, 64 * 1024, 256, SECT_4K) },
|
||||
@ -125,7 +126,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
{ "w25m512jv", INFO(0xef7119, 0, 64 * 1024, 1024,
|
||||
SECT_4K | SPI_NOR_QUAD_READ | SPI_NOR_DUAL_READ) },
|
||||
|
||||
@@ -1245,6 +1297,9 @@ static int spi_nor_read(struct mtd_info
|
||||
@@ -1255,6 +1306,9 @@ static int spi_nor_read(struct mtd_info
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -135,7 +136,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
while (len) {
|
||||
loff_t addr = from;
|
||||
|
||||
@@ -1269,6 +1324,18 @@ static int spi_nor_read(struct mtd_info
|
||||
@@ -1279,6 +1333,18 @@ static int spi_nor_read(struct mtd_info
|
||||
ret = 0;
|
||||
|
||||
read_err:
|
||||
@ -154,7 +155,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_READ);
|
||||
return ret;
|
||||
}
|
||||
@@ -1370,6 +1437,10 @@ static int spi_nor_write(struct mtd_info
|
||||
@@ -1380,6 +1446,10 @@ static int spi_nor_write(struct mtd_info
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -165,7 +166,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
for (i = 0; i < len; ) {
|
||||
ssize_t written;
|
||||
loff_t addr = to + i;
|
||||
@@ -1410,6 +1481,7 @@ static int spi_nor_write(struct mtd_info
|
||||
@@ -1420,6 +1490,7 @@ static int spi_nor_write(struct mtd_info
|
||||
}
|
||||
|
||||
write_err:
|
||||
@ -173,7 +174,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_WRITE);
|
||||
return ret;
|
||||
}
|
||||
@@ -2826,8 +2898,10 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2845,8 +2916,10 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
} else if (mtd->size > 0x1000000) {
|
||||
/* enable 4-byte addressing if the device exceeds 16MiB */
|
||||
nor->addr_width = 4;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -142,20 +142,29 @@ static int read_fsr(struct spi_nor *nor)
|
||||
@@ -143,20 +143,29 @@ static int read_fsr(struct spi_nor *nor)
|
||||
* location. Return the configuration register value.
|
||||
* Returns negative if error occurred.
|
||||
*/
|
||||
@ -33,7 +33,7 @@
|
||||
/*
|
||||
* Write status register 1 byte
|
||||
* Returns negative if error occurred.
|
||||
@@ -2898,9 +2907,16 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2916,9 +2925,16 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
} else if (mtd->size > 0x1000000) {
|
||||
/* enable 4-byte addressing if the device exceeds 16MiB */
|
||||
nor->addr_width = 4;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -1076,6 +1076,11 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1075,6 +1075,11 @@ static const struct flash_info spi_nor_i
|
||||
SPI_NOR_4B_OPCODES | SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
.quad_enable = macronix_quad_enable,
|
||||
},
|
||||
|
||||
@ -10,7 +10,7 @@ For reference see:
|
||||
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -1103,6 +1103,7 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1112,6 +1112,7 @@ static const struct flash_info spi_nor_i
|
||||
{ "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) },
|
||||
{ "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) },
|
||||
{ "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
@ -18,7 +18,7 @@ For reference see:
|
||||
{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) },
|
||||
{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
|
||||
{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
|
||||
@@ -1275,11 +1276,12 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1284,11 +1285,12 @@ static const struct flash_info spi_nor_i
|
||||
{ },
|
||||
};
|
||||
|
||||
@ -33,7 +33,7 @@ For reference see:
|
||||
|
||||
tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN);
|
||||
if (tmp < 0) {
|
||||
@@ -1290,10 +1292,16 @@ static const struct flash_info *spi_nor_
|
||||
@@ -1299,10 +1301,16 @@ static const struct flash_info *spi_nor_
|
||||
for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) {
|
||||
info = &spi_nor_ids[tmp];
|
||||
if (info->id_len) {
|
||||
@ -52,7 +52,7 @@ For reference see:
|
||||
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
|
||||
id[0], id[1], id[2]);
|
||||
return ERR_PTR(-ENODEV);
|
||||
@@ -2773,7 +2781,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2791,7 +2799,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
info = spi_nor_match_id(name);
|
||||
/* Try to auto-detect if chip name wasn't specified or not found */
|
||||
if (!info)
|
||||
@ -61,7 +61,7 @@ For reference see:
|
||||
if (IS_ERR_OR_NULL(info))
|
||||
return -ENOENT;
|
||||
|
||||
@@ -2784,7 +2792,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2802,7 +2810,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
if (name && info->id_len) {
|
||||
const struct flash_info *jinfo;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user