EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -4413,14 +4413,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -4419,14 +4419,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1235,6 +1235,7 @@ static const struct nand_ops spinand_ops
+@@ -1226,6 +1226,7 @@ static const struct nand_ops spinand_ops
static const struct spinand_manufacturer *spinand_manufacturers[] = {
&alliancememory_spinand_manufacturer,
&ato_spinand_manufacturer,
.name = "ESMT",
--- a/include/linux/mtd/spinand.h
+++ b/include/linux/mtd/spinand.h
-@@ -354,6 +354,7 @@ struct spinand_manufacturer {
+@@ -360,6 +360,7 @@ struct spinand_manufacturer {
/* SPI NAND manufacturers */
extern const struct spinand_manufacturer alliancememory_spinand_manufacturer;
extern const struct spinand_manufacturer ato_spinand_manufacturer;
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
-@@ -1641,6 +1641,8 @@ static void ppp_setup(struct net_device
+@@ -1644,6 +1644,8 @@ static void ppp_setup(struct net_device
dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
dev->priv_destructor = ppp_dev_priv_destructor;
dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
netif_keep_dst(dev);
}
-@@ -1710,6 +1712,10 @@ pad_compress_skb(struct ppp *ppp, struct
+@@ -1713,6 +1715,10 @@ pad_compress_skb(struct ppp *ppp, struct
ppp->xcomp->comp_extra + ppp->dev->hard_header_len;
int compressor_skb_size = ppp->dev->mtu +
ppp->xcomp->comp_extra + PPP_HDRLEN;
new_skb = alloc_skb(new_skb_size, GFP_ATOMIC);
if (!new_skb) {
if (net_ratelimit())
-@@ -1797,6 +1803,10 @@ ppp_send_frame(struct ppp *ppp, struct s
+@@ -1800,6 +1806,10 @@ ppp_send_frame(struct ppp *ppp, struct s
case PPP_IP:
if (!ppp->vj || (ppp->flags & SC_COMP_TCP) == 0)
break;
/* try to do VJ TCP header compression */
new_skb = alloc_skb(skb->len + ppp->dev->hard_header_len - 2,
GFP_ATOMIC);
-@@ -1894,19 +1904,26 @@ ppp_push(struct ppp *ppp)
+@@ -1897,19 +1907,26 @@ ppp_push(struct ppp *ppp)
}
if ((ppp->flags & SC_MULTILINK) == 0) {
spin_unlock(&pch->downl);
return;
}
-@@ -1991,6 +2008,8 @@ static int ppp_mp_explode(struct ppp *pp
+@@ -1994,6 +2011,8 @@ static int ppp_mp_explode(struct ppp *pp
return 0; /* can't take now, leave it in xmit_pending */
/* Do protocol field compression */
p = skb->data;
len = skb->len;
if (*p == 0 && mp_protocol_compress) {
-@@ -2149,6 +2168,7 @@ static int ppp_mp_explode(struct ppp *pp
+@@ -2152,6 +2171,7 @@ static int ppp_mp_explode(struct ppp *pp
noskb:
spin_unlock(&pch->downl);
#include <linux/uaccess.h>
-@@ -434,7 +435,7 @@ static int pppoe_rcv(struct sk_buff *skb
- if (skb->len < len)
+@@ -440,7 +441,7 @@ static int pppoe_rcv(struct sk_buff *skb
+ if (ppp_skb_is_compressed_proto(skb))
goto drop;
- if (pskb_trim_rcsum(skb, len))
goto drop;
ph = pppoe_hdr(skb);
-@@ -1176,6 +1177,160 @@ static struct pernet_operations pppoe_ne
+@@ -1182,6 +1183,160 @@ static struct pernet_operations pppoe_ne
.size = sizeof(struct pppoe_net),
};
static int __init pppoe_init(void)
{
int err;
-@@ -1192,6 +1347,8 @@ static int __init pppoe_init(void)
+@@ -1198,6 +1353,8 @@ static int __init pppoe_init(void)
if (err)
goto out_unregister_pppoe_proto;
dev_add_pack(&pppoes_ptype);
dev_add_pack(&pppoed_ptype);
register_netdevice_notifier(&pppoe_notifier);
-@@ -1211,6 +1368,8 @@ static void __exit pppoe_exit(void)
+@@ -1217,6 +1374,8 @@ static void __exit pppoe_exit(void)
unregister_netdevice_notifier(&pppoe_notifier);
dev_remove_pack(&pppoed_ptype);
dev_remove_pack(&pppoes_ptype);
}
@@ -1592,7 +1596,7 @@ static unsigned int cake_drop(struct Qdi
flow->dropped++;
- b->tin_dropped++;
+ WRITE_ONCE(b->tin_dropped, b->tin_dropped + 1);
- if (q->rate_flags & CAKE_FLAG_INGRESS)
+ if (q->config->rate_flags & CAKE_FLAG_INGRESS)
goto retry;
}
-@@ -2317,7 +2322,7 @@ static int cake_config_besteffort(struct
+@@ -2320,7 +2325,7 @@ static int cake_config_besteffort(struct
struct cake_sched_data *q = qdisc_priv(sch);
struct cake_tin_data *b = &q->tins[0];
u32 mtu = psched_mtu(qdisc_dev(sch));
q->tin_cnt = 1;
-@@ -2325,7 +2330,7 @@ static int cake_config_besteffort(struct
+@@ -2328,7 +2333,7 @@ static int cake_config_besteffort(struct
q->tin_order = normal_order;
cake_set_rate(b, rate, mtu,
b->tin_quantum = 65535;
return 0;
-@@ -2336,7 +2341,7 @@ static int cake_config_precedence(struct
+@@ -2339,7 +2344,7 @@ static int cake_config_precedence(struct
/* convert high-level (user visible) parameters into internal format */
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u32 quantum = 256;
u32 i;
-@@ -2347,8 +2352,8 @@ static int cake_config_precedence(struct
+@@ -2350,8 +2355,8 @@ static int cake_config_precedence(struct
for (i = 0; i < q->tin_cnt; i++) {
struct cake_tin_data *b = &q->tins[i];
b->tin_quantum = max_t(u16, 1U, quantum);
-@@ -2425,7 +2430,7 @@ static int cake_config_diffserv8(struct
+@@ -2428,7 +2433,7 @@ static int cake_config_diffserv8(struct
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u32 quantum = 256;
u32 i;
-@@ -2439,8 +2444,8 @@ static int cake_config_diffserv8(struct
+@@ -2442,8 +2447,8 @@ static int cake_config_diffserv8(struct
for (i = 0; i < q->tin_cnt; i++) {
struct cake_tin_data *b = &q->tins[i];
b->tin_quantum = max_t(u16, 1U, quantum);
-@@ -2469,7 +2474,7 @@ static int cake_config_diffserv4(struct
+@@ -2472,7 +2477,7 @@ static int cake_config_diffserv4(struct
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u32 quantum = 1024;
q->tin_cnt = 4;
-@@ -2480,13 +2485,13 @@ static int cake_config_diffserv4(struct
+@@ -2483,13 +2488,13 @@ static int cake_config_diffserv4(struct
/* class characteristics */
cake_set_rate(&q->tins[0], rate, mtu,
/* bandwidth-sharing weights */
q->tins[0].tin_quantum = quantum;
-@@ -2506,7 +2511,7 @@ static int cake_config_diffserv3(struct
+@@ -2509,7 +2514,7 @@ static int cake_config_diffserv3(struct
*/
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u32 quantum = 1024;
q->tin_cnt = 3;
-@@ -2517,11 +2522,11 @@ static int cake_config_diffserv3(struct
+@@ -2520,11 +2525,11 @@ static int cake_config_diffserv3(struct
/* class characteristics */
cake_set_rate(&q->tins[0], rate, mtu,
/* bandwidth-sharing weights */
q->tins[0].tin_quantum = quantum;
-@@ -2533,7 +2538,8 @@ static int cake_config_diffserv3(struct
+@@ -2536,7 +2541,8 @@ static int cake_config_diffserv3(struct
static void cake_reconfigure(struct Qdisc *sch)
{
int c, ft;
switch (q->tin_mode) {
-@@ -2559,36 +2565,37 @@ static void cake_reconfigure(struct Qdis
+@@ -2562,36 +2568,37 @@ static void cake_reconfigure(struct Qdis
break;
}
struct nlattr *tb[TCA_CAKE_MAX + 1];
u16 rate_flags;
u8 flow_mode;
-@@ -2642,19 +2649,19 @@ static int cake_change(struct Qdisc *sch
+@@ -2645,19 +2652,19 @@ static int cake_change(struct Qdisc *sch
nla_get_s32(tb[TCA_CAKE_OVERHEAD]));
rate_flags |= CAKE_FLAG_OVERHEAD;
}
if (tb[TCA_CAKE_MPU])
-@@ -2710,7 +2717,7 @@ static int cake_change(struct Qdisc *sch
+@@ -2713,7 +2720,7 @@ static int cake_change(struct Qdisc *sch
WRITE_ONCE(q->rate_flags, rate_flags);
WRITE_ONCE(q->flow_mode, flow_mode);
sch_tree_lock(sch);
cake_reconfigure(sch);
sch_tree_unlock(sch);
-@@ -2726,14 +2733,20 @@ static void cake_destroy(struct Qdisc *s
+@@ -2729,14 +2736,20 @@ static void cake_destroy(struct Qdisc *s
qdisc_watchdog_cancel(&q->watchdog);
tcf_block_put(q->block);
kvfree(q->tins);
sch->limit = 10240;
q->tin_mode = CAKE_DIFFSERV_DIFFSERV3;
q->flow_mode = CAKE_FLOW_TRIPLE;
-@@ -2745,33 +2758,36 @@ static int cake_init(struct Qdisc *sch,
+@@ -2748,33 +2761,36 @@ static int cake_init(struct Qdisc *sch,
* for 5 to 10% of interval
*/
q->rate_flags |= CAKE_FLAG_SPLIT_GSO;
INIT_LIST_HEAD(&b->new_flows);
INIT_LIST_HEAD(&b->old_flows);
-@@ -2787,22 +2803,27 @@ static int cake_init(struct Qdisc *sch,
+@@ -2790,22 +2806,27 @@ static int cake_init(struct Qdisc *sch,
INIT_LIST_HEAD(&flow->flowchain);
cobalt_vars_init(&flow->cvars);
#include <net/pkt_cls.h>
#include <net/tcp.h>
#include <net/flow_dissector.h>
-@@ -3160,14 +3161,89 @@ static struct Qdisc_ops cake_qdisc_ops _
+@@ -3163,14 +3164,89 @@ static struct Qdisc_ops cake_qdisc_ops _
};
MODULE_ALIAS_NET_SCH("cake");
}
module_init(cake_module_init)
-@@ -3175,3 +3251,4 @@ module_exit(cake_module_exit)
+@@ -3178,3 +3254,4 @@ module_exit(cake_module_exit)
MODULE_AUTHOR("Jonathan Morton");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("The CAKE shaper.");
};
struct cake_sched_data {
-@@ -2592,14 +2593,12 @@ static void cake_reconfigure(struct Qdis
+@@ -2595,14 +2596,12 @@ static void cake_reconfigure(struct Qdis
q->buffer_config_limit));
}
int err;
err = nla_parse_nested_deprecated(tb, TCA_CAKE_MAX, opt, cake_policy,
-@@ -2607,7 +2606,6 @@ static int cake_change(struct Qdisc *sch
+@@ -2610,7 +2609,6 @@ static int cake_change(struct Qdisc *sch
if (err < 0)
return err;
if (tb[TCA_CAKE_NAT]) {
#if IS_ENABLED(CONFIG_NF_CONNTRACK)
flow_mode &= ~CAKE_FLOW_NAT_FLAG;
-@@ -2620,6 +2618,19 @@ static int cake_change(struct Qdisc *sch
+@@ -2623,6 +2621,19 @@ static int cake_change(struct Qdisc *sch
#endif
}
if (tb[TCA_CAKE_BASE_RATE64])
WRITE_ONCE(q->rate_bps,
nla_get_u64(tb[TCA_CAKE_BASE_RATE64]));
-@@ -2628,7 +2639,6 @@ static int cake_change(struct Qdisc *sch
+@@ -2631,7 +2642,6 @@ static int cake_change(struct Qdisc *sch
WRITE_ONCE(q->tin_mode,
nla_get_u32(tb[TCA_CAKE_DIFFSERV_MODE]));
if (tb[TCA_CAKE_WASH]) {
if (!!nla_get_u32(tb[TCA_CAKE_WASH]))
rate_flags |= CAKE_FLAG_WASH;
-@@ -2649,20 +2659,12 @@ static int cake_change(struct Qdisc *sch
+@@ -2652,20 +2662,12 @@ static int cake_change(struct Qdisc *sch
WRITE_ONCE(q->rate_overhead,
nla_get_s32(tb[TCA_CAKE_OVERHEAD]));
rate_flags |= CAKE_FLAG_OVERHEAD;
}
if (tb[TCA_CAKE_MPU])
-@@ -2681,13 +2683,6 @@ static int cake_change(struct Qdisc *sch
+@@ -2684,13 +2686,6 @@ static int cake_change(struct Qdisc *sch
WRITE_ONCE(q->target, max(target, 1U));
}
if (tb[TCA_CAKE_INGRESS]) {
if (!!nla_get_u32(tb[TCA_CAKE_INGRESS]))
rate_flags |= CAKE_FLAG_INGRESS;
-@@ -2718,6 +2713,34 @@ static int cake_change(struct Qdisc *sch
+@@ -2721,6 +2716,34 @@ static int cake_change(struct Qdisc *sch
WRITE_ONCE(q->rate_flags, rate_flags);
WRITE_ONCE(q->flow_mode, flow_mode);
if (qd->tins) {
sch_tree_lock(sch);
cake_reconfigure(sch);
-@@ -2734,7 +2757,23 @@ static void cake_destroy(struct Qdisc *s
+@@ -2737,7 +2760,23 @@ static void cake_destroy(struct Qdisc *s
qdisc_watchdog_cancel(&q->watchdog);
tcf_block_put(q->block);
kvfree(q->tins);
}
static int cake_init(struct Qdisc *sch, struct nlattr *opt,
-@@ -2748,17 +2787,9 @@ static int cake_init(struct Qdisc *sch,
+@@ -2751,17 +2790,9 @@ static int cake_init(struct Qdisc *sch,
if (!q)
return -ENOMEM;
qd->cur_tin = 0;
qd->cur_flow = 0;
qd->config = q;
-@@ -2821,10 +2852,21 @@ err:
+@@ -2824,10 +2855,21 @@ err:
return err;
}
struct nlattr *opts;
u16 rate_flags;
u8 flow_mode;
-@@ -2900,6 +2942,13 @@ nla_put_failure:
+@@ -2903,6 +2945,13 @@ nla_put_failure:
return -1;
}
static int cake_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
{
struct nlattr *stats = nla_nest_start_noflag(d->skb, TCA_STATS_APP);
-@@ -3163,6 +3212,7 @@ MODULE_ALIAS_NET_SCH("cake");
+@@ -3166,6 +3215,7 @@ MODULE_ALIAS_NET_SCH("cake");
struct cake_mq_sched {
struct mq_sched mq_priv; /* must be first */
};
static void cake_mq_destroy(struct Qdisc *sch)
-@@ -3173,25 +3223,68 @@ static void cake_mq_destroy(struct Qdisc
+@@ -3176,25 +3226,68 @@ static void cake_mq_destroy(struct Qdisc
static int cake_mq_init(struct Qdisc *sch, struct nlattr *opt,
struct netlink_ext_ack *extack)
{
return NULL;
@@ -2208,6 +2250,7 @@ retry:
- b->tin_ecn_mark += !!flow->cvars.ecn_marked;
+ WRITE_ONCE(b->tin_ecn_mark, b->tin_ecn_mark + !!flow->cvars.ecn_marked);
qdisc_bstats_update(sch, skb);
+ WRITE_ONCE(q->last_active, now);
/* collect delay stats */
delay = ktime_to_ns(ktime_sub(now, cobalt_get_enqueue_time(skb)));
-@@ -2308,6 +2351,9 @@ static void cake_set_rate(struct cake_ti
+@@ -2310,6 +2353,9 @@ static void cake_set_rate(struct cake_ti
b->tin_rate_ns = rate_ns;
b->tin_rate_shft = rate_shft;
+
byte_target_ns = (byte_target * rate_ns) >> rate_shft;
- b->cparams.target = max((byte_target_ns * 3) / 2, target_ns);
-@@ -2774,6 +2820,7 @@ static void cake_config_init(struct cake
+ WRITE_ONCE(b->cparams.target,
+@@ -2777,6 +2823,7 @@ static void cake_config_init(struct cake
*/
q->rate_flags |= CAKE_FLAG_SPLIT_GSO;
q->is_shared = is_shared;
}
static int cake_init(struct Qdisc *sch, struct nlattr *opt,
-@@ -2845,6 +2892,9 @@ static int cake_init(struct Qdisc *sch,
+@@ -2848,6 +2895,9 @@ static int cake_init(struct Qdisc *sch,
qd->avg_peak_bandwidth = q->rate_bps;
qd->min_netlen = ~0;
qd->min_adjlen = ~0;
return 0;
err:
kvfree(qd->config);
-@@ -2977,6 +3027,7 @@ static int cake_dump_stats(struct Qdisc
+@@ -2980,6 +3030,7 @@ static int cake_dump_stats(struct Qdisc
PUT_STAT_U32(MAX_ADJLEN, q->max_adjlen);
PUT_STAT_U32(MIN_NETLEN, q->min_netlen);
PUT_STAT_U32(MIN_ADJLEN, q->min_adjlen);
struct cake_heap_entry overflow_heap[CAKE_QUEUES * CAKE_MAX_TINS];
-@@ -2803,8 +2804,6 @@ static void cake_destroy(struct Qdisc *s
+@@ -2806,8 +2807,6 @@ static void cake_destroy(struct Qdisc *s
qdisc_watchdog_cancel(&q->watchdog);
tcf_block_put(q->block);
kvfree(q->tins);
}
static void cake_config_init(struct cake_sched_config *q, bool is_shared)
-@@ -2827,13 +2826,9 @@ static int cake_init(struct Qdisc *sch,
+@@ -2830,13 +2829,9 @@ static int cake_init(struct Qdisc *sch,
struct netlink_ext_ack *extack)
{
struct cake_sched_data *qd = qdisc_priv(sch);
cake_config_init(q, false);
sch->limit = 10240;
-@@ -2845,14 +2840,13 @@ static int cake_init(struct Qdisc *sch,
+@@ -2848,14 +2843,13 @@ static int cake_init(struct Qdisc *sch,
if (opt) {
err = cake_change(sch, opt, extack);
quantum_div[0] = ~0;
for (i = 1; i <= CAKE_QUEUES; i++)
-@@ -2860,10 +2854,8 @@ static int cake_init(struct Qdisc *sch,
+@@ -2863,10 +2857,8 @@ static int cake_init(struct Qdisc *sch,
qd->tins = kvcalloc(CAKE_MAX_TINS, sizeof(struct cake_tin_data),
GFP_KERNEL);
for (i = 0; i < CAKE_MAX_TINS; i++) {
struct cake_tin_data *b = qd->tins + i;
-@@ -2896,22 +2888,13 @@ static int cake_init(struct Qdisc *sch,
+@@ -2899,22 +2891,13 @@ static int cake_init(struct Qdisc *sch,
qd->last_checked_active = 0;
return 0;
}
begin:
-@@ -2367,12 +2364,10 @@ static void cake_set_rate(struct cake_ti
+@@ -2370,12 +2367,10 @@ static void cake_set_rate(struct cake_ti
b->cparams.p_dec = 1 << 20; /* 1/4096 */
}
q->tin_cnt = 1;
-@@ -2386,12 +2381,10 @@ static int cake_config_besteffort(struct
+@@ -2389,12 +2384,10 @@ static int cake_config_besteffort(struct
return 0;
}
u32 quantum = 256;
u32 i;
-@@ -2462,7 +2455,7 @@ static int cake_config_precedence(struct
+@@ -2465,7 +2458,7 @@ static int cake_config_precedence(struct
* Total 12 traffic classes.
*/
{
/* Pruned list of traffic classes for typical applications:
*
-@@ -2479,8 +2472,6 @@ static int cake_config_diffserv8(struct
+@@ -2482,8 +2475,6 @@ static int cake_config_diffserv8(struct
*/
struct cake_sched_data *q = qdisc_priv(sch);
u32 quantum = 256;
u32 i;
-@@ -2510,7 +2501,7 @@ static int cake_config_diffserv8(struct
+@@ -2513,7 +2504,7 @@ static int cake_config_diffserv8(struct
return 0;
}
{
/* Further pruned list of traffic classes for four-class system:
*
-@@ -2523,8 +2514,6 @@ static int cake_config_diffserv4(struct
+@@ -2526,8 +2517,6 @@ static int cake_config_diffserv4(struct
*/
struct cake_sched_data *q = qdisc_priv(sch);
u32 quantum = 1024;
q->tin_cnt = 4;
-@@ -2552,7 +2541,7 @@ static int cake_config_diffserv4(struct
+@@ -2555,7 +2544,7 @@ static int cake_config_diffserv4(struct
return 0;
}
{
/* Simplified Diffserv structure with 3 tins.
* Latency Sensitive (CS7, CS6, EF, VA, TOS4)
-@@ -2560,8 +2549,6 @@ static int cake_config_diffserv3(struct
+@@ -2563,8 +2552,6 @@ static int cake_config_diffserv3(struct
* Low Priority (LE, CS1)
*/
struct cake_sched_data *q = qdisc_priv(sch);
u32 quantum = 1024;
q->tin_cnt = 3;
-@@ -2586,32 +2573,33 @@ static int cake_config_diffserv3(struct
+@@ -2589,32 +2576,33 @@ static int cake_config_diffserv3(struct
return 0;
}
break;
}
-@@ -2622,6 +2610,14 @@ static void cake_reconfigure(struct Qdis
+@@ -2625,6 +2613,14 @@ static void cake_reconfigure(struct Qdis
qd->rate_ns = qd->tins[ft].tin_rate_ns;
qd->rate_shft = qd->tins[ft].tin_rate_shft;
+++ /dev/null
-From 48afd5124fd6129c46fd12cb06155384b1c4a0c4 Mon Sep 17 00:00:00 2001
-From: Chih Kai Hsu <hsu.chih.kai@realtek.com>
-Date: Thu, 26 Mar 2026 15:39:23 +0800
-Subject: [PATCH] r8152: fix incorrect register write to USB_UPHY_XTAL
-
-The old code used ocp_write_byte() to clear the OOBS_POLLING bit
-(BIT(8)) in the USB_UPHY_XTAL register, but this doesn't correctly
-clear a bit in the upper byte of the 16-bit register.
-
-Fix this by using ocp_write_word() instead.
-
-Fixes: 195aae321c82 ("r8152: support new chips")
-Signed-off-by: Chih Kai Hsu <hsu.chih.kai@realtek.com>
-Reviewed-by: Hayes Wang <hayeswang@realtek.com>
-Link: https://patch.msgid.link/20260326073925.32976-454-nic_swsd@realtek.com
-Signed-off-by: Paolo Abeni <pabeni@redhat.com>
----
- drivers/net/usb/r8152.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/net/usb/r8152.c
-+++ b/drivers/net/usb/r8152.c
-@@ -3898,7 +3898,7 @@ static void r8156_ups_en(struct r8152 *t
- case RTL_VER_15:
- ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_UPHY_XTAL);
- ocp_data &= ~OOBS_POLLING;
-- ocp_write_byte(tp, MCU_TYPE_USB, USB_UPHY_XTAL, ocp_data);
-+ ocp_write_word(tp, MCU_TYPE_USB, USB_UPHY_XTAL, ocp_data);
- break;
- default:
- break;
+++ /dev/null
-From b7abbc8c7acaeb60c114b038f1fa91bbedb3d16a Mon Sep 17 00:00:00 2001
-From: Aleksander Jan Bajkowski <olek2@wp.pl>
-Date: Sun, 8 Feb 2026 11:35:53 +0100
-Subject: [PATCH] crypto: inside-secure/eip93 - fix register definition
-
-Checked the register definitions with the documentation[1]. Turns out
-that the PKTE_INBUF_CNT register has a bad offset. It's used in Direct
-Host Mode (DHM). The driver uses Autonomous Ring Mode (ARM), so it
-causes no harm.
-
-1. ADSP-SC58x/ADSP-2158x SHARC+ Processor Hardware Reference
-Fixes: 9739f5f93b78 ("crypto: eip93 - Add Inside Secure SafeXcel EIP-93 crypto engine support")
-Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
-Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
----
- drivers/crypto/inside-secure/eip93/eip93-regs.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/crypto/inside-secure/eip93/eip93-regs.h
-+++ b/drivers/crypto/inside-secure/eip93/eip93-regs.h
-@@ -109,7 +109,7 @@
- #define EIP93_REG_PE_BUF_THRESH 0x10c
- #define EIP93_PE_OUTBUF_THRESH GENMASK(23, 16)
- #define EIP93_PE_INBUF_THRESH GENMASK(7, 0)
--#define EIP93_REG_PE_INBUF_COUNT 0x100
-+#define EIP93_REG_PE_INBUF_COUNT 0x110
- #define EIP93_REG_PE_OUTBUF_COUNT 0x114
- #define EIP93_REG_PE_BUF_RW_PNTR 0x118 /* BUF_PNTR */
-
+++ /dev/null
-From 5377032914b29b4643adece0ff1dfc67e36700f4 Mon Sep 17 00:00:00 2001
-From: Aleksander Jan Bajkowski <olek2@wp.pl>
-Date: Fri, 6 Mar 2026 23:17:40 +0100
-Subject: [PATCH] crypto: inside-secure/eip93 - register hash before
- authenc algorithms
-
-Register hash before hmac and authenc algorithms. This will ensure
-selftests pass at startup. Previously, selftests failed on the
-crypto_alloc_ahash() function since the associated algorithm was
-not yet registered.
-
-Fixes following error:
-...
-[ 18.375811] alg: self-tests for authenc(hmac(sha1),cbc(aes)) using authenc(hmac(sha1-eip93),cbc(aes-eip93)) failed (rc=-2)
-[ 18.382140] alg: self-tests for authenc(hmac(sha224),rfc3686(ctr(aes))) using authenc(hmac(sha224-eip93),rfc3686(ctr(aes-eip93))) failed (rc=-2)
-[ 18.395029] alg: aead: authenc(hmac(sha256-eip93),cbc(des-eip93)) setkey failed on test vector 0; expected_error=0, actual_error=-2, flags=0x1
-[ 18.409734] alg: aead: authenc(hmac(md5-eip93),cbc(des3_ede-eip93)) setkey failed on test vector 0; expected_error=0, actual_error=-2, flags=0x1
-...
-
-Fixes: 9739f5f93b78 ("crypto: eip93 - Add Inside Secure SafeXcel EIP-93 crypto engine support")
-Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
-Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
----
- drivers/crypto/inside-secure/eip93/eip93-main.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
---- a/drivers/crypto/inside-secure/eip93/eip93-main.c
-+++ b/drivers/crypto/inside-secure/eip93/eip93-main.c
-@@ -36,6 +36,14 @@ static struct eip93_alg_template *eip93_
- &eip93_alg_cbc_aes,
- &eip93_alg_ctr_aes,
- &eip93_alg_rfc3686_aes,
-+ &eip93_alg_md5,
-+ &eip93_alg_sha1,
-+ &eip93_alg_sha224,
-+ &eip93_alg_sha256,
-+ &eip93_alg_hmac_md5,
-+ &eip93_alg_hmac_sha1,
-+ &eip93_alg_hmac_sha224,
-+ &eip93_alg_hmac_sha256,
- &eip93_alg_authenc_hmac_md5_cbc_des,
- &eip93_alg_authenc_hmac_sha1_cbc_des,
- &eip93_alg_authenc_hmac_sha224_cbc_des,
-@@ -52,14 +60,6 @@ static struct eip93_alg_template *eip93_
- &eip93_alg_authenc_hmac_sha1_rfc3686_aes,
- &eip93_alg_authenc_hmac_sha224_rfc3686_aes,
- &eip93_alg_authenc_hmac_sha256_rfc3686_aes,
-- &eip93_alg_md5,
-- &eip93_alg_sha1,
-- &eip93_alg_sha224,
-- &eip93_alg_sha256,
-- &eip93_alg_hmac_md5,
-- &eip93_alg_hmac_sha1,
-- &eip93_alg_hmac_sha224,
-- &eip93_alg_hmac_sha256,
- };
-
- inline void eip93_irq_disable(struct eip93_device *eip93, u32 mask)
irq_domain_remove(pp->irq_domain);
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
-@@ -810,7 +810,7 @@ static inline enum dw_pcie_ltssm dw_pcie
+@@ -812,7 +812,7 @@ static inline enum dw_pcie_ltssm dw_pcie
#ifdef CONFIG_PCIE_DW_HOST
int dw_pcie_suspend_noirq(struct dw_pcie *pci);
int dw_pcie_resume_noirq(struct dw_pcie *pci);
void dw_pcie_msi_init(struct dw_pcie_rp *pp);
int dw_pcie_msi_host_init(struct dw_pcie_rp *pp);
void dw_pcie_free_msi(struct dw_pcie_rp *pp);
-@@ -831,10 +831,7 @@ static inline int dw_pcie_resume_noirq(s
+@@ -833,10 +833,7 @@ static inline int dw_pcie_resume_noirq(s
return 0;
}
+++ /dev/null
-From 0c078021d3861966614d5e594ee03587f0c9e74d Mon Sep 17 00:00:00 2001
-From: Mieczyslaw Nalewaj <namiltd@yahoo.com>
-Date: Sun, 19 Apr 2026 21:37:07 +0200
-Subject: net: dsa: realtek: rtl8365mb: fix mode mask calculation
-
-The RTL8365MB_DIGITAL_INTERFACE_SELECT_MODE_MASK macro was shifting
-the 4-bit mask (0xF) by only (_extint % 2) bits instead of
-(_extint % 2) * 4. This caused the mask to overlap with the adjacent
-nibble when configuring odd-numbered external interfaces, selecting
-the wrong bits entirely.
-
-Align the shift calculation with the existing ...MODE_OFFSET macro.
-
-Fixes: 4af2950c50c8 ("net: dsa: realtek-smi: add rtl8365mb subdriver for RTL8365MB-VC")
-Signed-off-by: Abdulkader Alrezej <alrazj.abdulkader@gmail.com>
-Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
-Reviewed-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
-Link: https://patch.msgid.link/400a6387-a444-4576-af6d-26be5410bce3@yahoo.com
-Signed-off-by: Paolo Abeni <pabeni@redhat.com>
----
- drivers/net/dsa/realtek/rtl8365mb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/net/dsa/realtek/rtl8365mb.c
-+++ b/drivers/net/dsa/realtek/rtl8365mb.c
-@@ -216,7 +216,7 @@
- (_extint) == 2 ? RTL8365MB_DIGITAL_INTERFACE_SELECT_REG1 : \
- 0x0)
- #define RTL8365MB_DIGITAL_INTERFACE_SELECT_MODE_MASK(_extint) \
-- (0xF << (((_extint) % 2)))
-+ (0xF << (((_extint) % 2) * 4))
- #define RTL8365MB_DIGITAL_INTERFACE_SELECT_MODE_OFFSET(_extint) \
- (((_extint) % 2) * 4)
-
struct net_device *dev = qdisc_dev(sch);
struct cake_sched_data *other_priv;
u64 new_rate = q->config->rate_bps;
-@@ -3358,8 +3361,13 @@ static int __init cake_module_init(void)
+@@ -3361,8 +3364,13 @@ static int __init cake_module_init(void)
return ret;
ret = register_qdisc(&cake_mq_qdisc_ops);
return ret;
}
-@@ -3368,6 +3376,7 @@ static void __exit cake_module_exit(void
+@@ -3371,6 +3379,7 @@ static void __exit cake_module_exit(void
{
unregister_qdisc(&cake_qdisc_ops);
unregister_qdisc(&cake_mq_qdisc_ops);
mod##SNMP_UPD_PO_STATS((net)->mib.statname##_statistics, field, _val);\
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -3967,6 +3967,12 @@ static u32 tcp_newly_delivered(struct so
+@@ -3969,6 +3969,12 @@ static u32 tcp_newly_delivered(struct so
struct tcp_sock *tp = tcp_sk(sk);
u32 delivered;
-LINUX_VERSION-6.18 = .32
-LINUX_KERNEL_HASH-6.18.32 = 067dadd445578284ea6158f312f7970d8940fed3e094dbe49cff66d188d3bda4
+LINUX_VERSION-6.18 = .33
+LINUX_KERNEL_HASH-6.18.33 = 6f16ff302599f6fe34742890322cf0775703105fbd8767449682fca6af0fb782
static const struct flash_info spi_nor_generic_flash = {
--- a/drivers/mtd/spi-nor/core.h
+++ b/drivers/mtd/spi-nor/core.h
-@@ -598,6 +598,7 @@ extern const struct spi_nor_manufacturer
+@@ -604,6 +604,7 @@ extern const struct spi_nor_manufacturer
extern const struct spi_nor_manufacturer spi_nor_sst;
extern const struct spi_nor_manufacturer spi_nor_winbond;
extern const struct spi_nor_manufacturer spi_nor_xmc;
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1237,6 +1237,7 @@ static const struct spinand_manufacturer
+@@ -1228,6 +1228,7 @@ static const struct spinand_manufacturer
&ato_spinand_manufacturer,
&esmt_8c_spinand_manufacturer,
&esmt_c8_spinand_manufacturer,
+};
--- a/include/linux/mtd/spinand.h
+++ b/include/linux/mtd/spinand.h
-@@ -356,6 +356,7 @@ extern const struct spinand_manufacturer
+@@ -362,6 +362,7 @@ extern const struct spinand_manufacturer
extern const struct spinand_manufacturer ato_spinand_manufacturer;
extern const struct spinand_manufacturer esmt_8c_spinand_manufacturer;
extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer;
| NETIF_F_HW_CSUM
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
-@@ -904,7 +904,7 @@ static int macvlan_hwtstamp_set(struct n
+@@ -905,7 +905,7 @@ static int macvlan_hwtstamp_set(struct n
static struct lock_class_key macvlan_netdev_addr_lock_key;
#define ALWAYS_ON_OFFLOADS \
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
-@@ -9091,7 +9091,7 @@ static int nft_register_flowtable_ops(st
+@@ -9092,7 +9092,7 @@ static int nft_register_flowtable_ops(st
err = flowtable->data.type->setup(&flowtable->data,
ops->dev, FLOW_BLOCK_BIND);
/* show configuration fields */
#define pci_config_attr(field, format_string) \
-@@ -1701,12 +1703,32 @@ static const struct attribute_group pci_
+@@ -1673,12 +1675,32 @@ static const struct attribute_group pci_
.is_visible = resource_resize_is_visible,
};
}
/**
-@@ -1727,21 +1749,23 @@ static int __init pci_sysfs_init(void)
+@@ -1699,21 +1721,23 @@ static int __init pci_sysfs_init(void)
{
struct pci_dev *pdev = NULL;
struct pci_bus *pbus = NULL;
+++ /dev/null
-From: Aleksander Jan Bajkowski <olek2@wp.pl>
-Date: Sat, 11 Apr 2026 23:08:17 +0200
-Subject: [PATCH] crypto: inside-secure/eip93 - eip93: fix hmac setkey algo
- selection
-
-eip93_hmac_setkey() allocates a temporary ahash transform for
-computing HMAC ipad/opad key material. The allocation uses the
-driver-specific cra_driver_name (e.g. "sha256-eip93") but passes
-CRYPTO_ALG_ASYNC as the mask, which excludes async algorithms.
-
-Since the EIP93 hash algorithms are the only ones registered
-under those driver names and they are inherently async, the
-lookup is self-contradictory and always fails with -ENOENT.
-
-When called from the AEAD setkey path, this failure leaves the
-SA record partially initialized with zeroed digest fields. A
-subsequent crypto operation then dereferences a NULL pointer in
-the request context, resulting in a kernel panic:
-
-```
- pc : eip93_aead_handle_result+0xc8c/0x1240 [crypto_hw_eip93]
- lr : eip93_aead_handle_result+0xbec/0x1240 [crypto_hw_eip93]
- sp : ffffffc082feb820
- x29: ffffffc082feb820 x28: ffffff8011043980 x27: 0000000000000000
- x26: 0000000000000000 x25: ffffffc078da0bc8 x24: 0000000091043980
- x23: ffffff8004d59e50 x22: ffffff8004d59410 x21: ffffff8004d593c0
- x20: ffffff8004d593c0 x19: ffffff8004d4f300 x18: 0000000000000000
- x17: 0000000000000000 x16: 0000000000000000 x15: 0000007fda7aa498
- x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
- x11: 0000000000000000 x10: fffffffff8127a80 x9 : 0000000000000000
- x8 : ffffff8004d4f380 x7 : 0000000000000000 x6 : 000000000000003f
- x5 : 0000000000000040 x4 : 0000000000000008 x3 : 0000000000000009
- x2 : 0000000000000008 x1 : 0000000028000003 x0 : ffffff8004d388c0
- Code: 910142b6 f94012e0 f9002aa0 f90006d3 (f9400740)
-```
-
-The reported symbol eip93_aead_handle_result+0xc8c is a
-resolution artifact from static functions being merged under
-the nearest exported symbol. Decoding the faulting sequence:
-
-```
- 910142b6 ADD X22, X21, #0x50
- f94012e0 LDR X0, [X23, #0x20]
- f9002aa0 STR X0, [X21, #0x50]
- f90006d3 STR X19, [X22, #0x8]
- f9400740 LDR X0, [X26, #0x8]
-```
-
-The faulting LDR at [X26, #0x8] is loading ctx->flags
-(offset 8 in eip93_hash_ctx), where ctx has been resolved
-to NULL from a partially initialized or unreachable
-transform context following the failed setkey.
-
-Fix this by dropping the CRYPTO_ALG_ASYNC mask from the
-crypto_alloc_ahash() call. The code already handles async
-completion correctly via crypto_wait_req(), so there is no
-requirement to restrict the lookup to synchronous algorithms.
-
-Note that hashing a single 64-byte block through the hardware
-is likely slower than doing it in software due to the DMA
-round-trip overhead, but offloading it may still spare CPU
-cycles on the slower embedded cores where this IP is found.
-
-Fixes: 9739f5f93b78 ("crypto: eip93 - Add Inside Secure SafeXcel EIP-93 crypto engine support")
-Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
-[Detailed investigation report of this bug]
-Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
----
- drivers/crypto/inside-secure/eip93/eip93-common.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/crypto/inside-secure/eip93/eip93-common.c
-+++ b/drivers/crypto/inside-secure/eip93/eip93-common.c
-@@ -731,7 +731,7 @@ int eip93_hmac_setkey(u32 ctx_flags, con
- return -EINVAL;
- }
-
-- ahash_tfm = crypto_alloc_ahash(alg_name, 0, CRYPTO_ALG_ASYNC);
-+ ahash_tfm = crypto_alloc_ahash(alg_name, 0, 0);
- if (IS_ERR(ahash_tfm))
- return PTR_ERR(ahash_tfm);
-
#include <net/dst.h>
#include <net/sock.h>
#include <net/checksum.h>
-@@ -5082,6 +5086,9 @@ static const u8 skb_ext_type_len[] = {
+@@ -5089,6 +5093,9 @@ static const u8 skb_ext_type_len[] = {
#if IS_ENABLED(CONFIG_INET_PSP)
[SKB_EXT_PSP] = SKB_EXT_CHUNKSIZEOF(struct psp_skb_ext),
#endif
};
#define QCOM_PCIE_2_7_0_MAX_SUPPLIES 2
-@@ -727,12 +740,65 @@ static int qcom_pcie_post_init_2_3_2(str
+@@ -732,12 +745,65 @@ static int qcom_pcie_post_init_2_3_2(str
return 0;
}
int ret;
res->num_clks = devm_clk_bulk_get_all(dev, &res->clks);
-@@ -771,6 +837,17 @@ static void qcom_pcie_deinit_2_4_0(struc
+@@ -776,6 +842,17 @@ static void qcom_pcie_deinit_2_4_0(struc
clk_bulk_disable_unprepare(res->num_clks, res->clks);
}
static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie)
{
struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0;
-@@ -1379,6 +1456,16 @@ static const struct qcom_pcie_ops ops_2_
+@@ -1384,6 +1461,16 @@ static const struct qcom_pcie_ops ops_2_
.ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
};
/* Qcom IP rev.: 2.3.3 Synopsys IP rev.: 4.30a */
static const struct qcom_pcie_ops ops_2_3_3 = {
.get_resources = qcom_pcie_get_resources_2_3_3,
-@@ -1457,6 +1544,10 @@ static const struct qcom_pcie_cfg cfg_2_
+@@ -1462,6 +1549,10 @@ static const struct qcom_pcie_cfg cfg_2_
.ops = &ops_2_4_0,
};
static const struct qcom_pcie_cfg cfg_2_7_0 = {
.ops = &ops_2_7_0,
};
-@@ -2016,6 +2107,7 @@ static const struct of_device_id qcom_pc
+@@ -2021,6 +2112,7 @@ static const struct of_device_id qcom_pc
{ .compatible = "qcom,pcie-apq8064", .data = &cfg_2_1_0 },
{ .compatible = "qcom,pcie-apq8084", .data = &cfg_1_0_0 },
{ .compatible = "qcom,pcie-ipq4019", .data = &cfg_2_4_0 },
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
-@@ -3003,6 +3003,24 @@ char *ppp_dev_name(struct ppp_channel *c
+@@ -3006,6 +3006,24 @@ char *ppp_dev_name(struct ppp_channel *c
return name;
}
/*
* Disconnect a channel from the generic layer.
-@@ -3664,6 +3682,7 @@ EXPORT_SYMBOL(ppp_unregister_channel);
+@@ -3667,6 +3685,7 @@ EXPORT_SYMBOL(ppp_unregister_channel);
EXPORT_SYMBOL(ppp_channel_index);
EXPORT_SYMBOL(ppp_unit_number);
EXPORT_SYMBOL(ppp_dev_name);
(transaction layer end-to-end CRC checking).
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
-@@ -1660,6 +1660,8 @@ void pci_walk_bus(struct pci_bus *top, i
+@@ -1654,6 +1654,8 @@ void pci_walk_bus(struct pci_bus *top, i
void *userdata);
int pci_cfg_space_size(struct pci_dev *dev);
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
return nr_parts;
@@ -197,6 +249,7 @@ ofpart_none:
+ if (dedicated)
of_node_put(ofpart_node);
- of_node_put(pp);
kfree(parts);
+ kfree(part_nodes);
return ret;
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1235,6 +1235,7 @@ static const struct nand_ops spinand_ops
+@@ -1226,6 +1226,7 @@ static const struct nand_ops spinand_ops
static const struct spinand_manufacturer *spinand_manufacturers[] = {
&alliancememory_spinand_manufacturer,
&ato_spinand_manufacturer,
+};
--- a/include/linux/mtd/spinand.h
+++ b/include/linux/mtd/spinand.h
-@@ -354,6 +354,7 @@ struct spinand_manufacturer {
+@@ -360,6 +360,7 @@ struct spinand_manufacturer {
/* SPI NAND manufacturers */
extern const struct spinand_manufacturer alliancememory_spinand_manufacturer;
extern const struct spinand_manufacturer ato_spinand_manufacturer;
---
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -979,7 +979,7 @@ static int spinand_mtd_write(struct mtd_
+@@ -970,7 +970,7 @@ static int spinand_mtd_write(struct mtd_
static bool spinand_isbad(struct nand_device *nand, const struct nand_pos *pos)
{
struct spinand_device *spinand = nand_to_spinand(nand);
struct nand_page_io_req req = {
.pos = *pos,
.ooblen = sizeof(marker),
-@@ -998,7 +998,7 @@ static bool spinand_isbad(struct nand_de
+@@ -989,7 +989,7 @@ static bool spinand_isbad(struct nand_de
spinand_read_page(spinand, &req);
}
int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
{
-@@ -1685,6 +1686,7 @@ static int spinand_probe(struct spi_mem
+@@ -1719,6 +1720,7 @@ static int spinand_probe(struct spi_mem
if (ret)
return ret;
ret = mtd_device_register(mtd, NULL, 0);
if (ret)
goto err_spinand_cleanup;
-@@ -1692,6 +1694,7 @@ static int spinand_probe(struct spi_mem
+@@ -1726,6 +1728,7 @@ static int spinand_probe(struct spi_mem
return 0;
err_spinand_cleanup:
spinand_cleanup(spinand);
return ret;
-@@ -1710,6 +1713,7 @@ static int spinand_remove(struct spi_mem
+@@ -1744,6 +1747,7 @@ static int spinand_remove(struct spi_mem
if (ret)
return ret;
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1279,6 +1279,56 @@ static int spinand_manufacturer_match(st
+@@ -1270,6 +1270,56 @@ static int spinand_manufacturer_match(st
return -EOPNOTSUPP;
}
static int spinand_id_detect(struct spinand_device *spinand)
{
u8 *id = spinand->id.data;
-@@ -1555,6 +1605,10 @@ static int spinand_init(struct spinand_d
- if (!spinand->scratchbuf)
- return -ENOMEM;
+@@ -1589,6 +1639,10 @@ static int spinand_init(struct spinand_d
+
+ spinand_init_ssdr_templates(spinand);
+ ret = spi_mem_do_calibration(spinand->spimem, spinand_cal_read, spinand);
+ if (ret)
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1320,7 +1320,10 @@ static int spinand_cal_read(void *priv,
+@@ -1311,7 +1311,10 @@ static int spinand_cal_read(void *priv,
if (ret)
return ret;
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1778,6 +1778,7 @@ static int spinand_remove(struct spi_mem
+@@ -1812,6 +1812,7 @@ static int spinand_remove(struct spi_mem
static const struct spi_device_id spinand_ids[] = {
{ .name = "spi-nand" },
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(spi, spinand_ids);
-@@ -1785,6 +1786,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
+@@ -1819,6 +1820,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
#ifdef CONFIG_OF
static const struct of_device_id spinand_of_ids[] = {
{ .compatible = "spi-nand" },
&spi_nor_everspin,
--- a/drivers/mtd/spi-nor/core.h
+++ b/drivers/mtd/spi-nor/core.h
-@@ -585,6 +585,7 @@ struct sfdp {
+@@ -591,6 +591,7 @@ struct sfdp {
/* Manufacturer drivers. */
extern const struct spi_nor_manufacturer spi_nor_atmel;
}
axi_dma_enable(chan->chip);
-@@ -1074,6 +1076,14 @@ static noinline void axi_chan_handle_err
+@@ -1072,6 +1074,14 @@ static noinline void axi_chan_handle_err
axi_chan_name(chan));
goto out;
}
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -723,8 +723,13 @@ static int dw_axi_dma_set_hw_desc(struct
+@@ -721,8 +721,13 @@ static int dw_axi_dma_set_hw_desc(struct
hw_desc->lli->block_ts_lo = cpu_to_le32(block_ts - 1);
hw_desc->lli->ctl_lo = cpu_to_le32(ctllo);
set_desc_src_master(hw_desc);
-@@ -1589,7 +1594,11 @@ static int dw_probe(struct platform_devi
+@@ -1587,7 +1592,11 @@ static int dw_probe(struct platform_devi
* Therefore, set constraint to 1024 * 4.
*/
dw->dma.dev->dma_parms = &dw->dma_parms;
platform_set_drvdata(pdev, chip);
pm_runtime_enable(chip->dev);
-@@ -1674,6 +1683,9 @@ static const struct of_device_id dw_dma_
+@@ -1672,6 +1681,9 @@ static const struct of_device_id dw_dma_
.compatible = "intel,kmb-axi-dma",
.data = (void *)AXI_DMA_FLAG_HAS_APB_REGS,
}, {