KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-5.4 = .219
+LINUX_VERSION-5.4 = .224
-LINUX_KERNEL_HASH-5.4.219 = 5293ad927269dfb697bc80e9dd95c1d9fd2e4bad7d8422300e012fd31950a261
+LINUX_KERNEL_HASH-5.4.224 = 8b7df25b5560620eb2776d7b7c67569764b3916ff2f596767f72567b38d13d36
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
static const char hcd_name[] = "xhci_hcd";
static struct hc_driver __read_mostly xhci_pci_hc_driver;
-@@ -334,6 +374,873 @@ static void xhci_pme_acpi_rtd3_enable(st
+@@ -340,6 +380,873 @@ static void xhci_pme_acpi_rtd3_enable(st
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
#endif /* CONFIG_ACPI */
/* called during probe() after chip reset completes */
static int xhci_pci_setup(struct usb_hcd *hcd)
{
-@@ -375,6 +1282,27 @@ static int xhci_pci_probe(struct pci_dev
+@@ -381,6 +1288,27 @@ static int xhci_pci_probe(struct pci_dev
struct hc_driver *driver;
struct usb_hcd *hcd;
driver = (struct hc_driver *)id->driver_data;
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
-@@ -436,6 +1364,16 @@ static void xhci_pci_remove(struct pci_d
+@@ -442,6 +1370,16 @@ static void xhci_pci_remove(struct pci_d
{
struct xhci_hcd *xhci;
xhci = hcd_to_xhci(pci_get_drvdata(dev));
xhci->xhc_state |= XHCI_STATE_REMOVING;
-@@ -575,6 +1513,11 @@ static int xhci_pci_resume(struct usb_hc
+@@ -581,6 +1519,11 @@ static int xhci_pci_resume(struct usb_hc
if (pdev->vendor == PCI_VENDOR_ID_INTEL)
usb_enable_intel_xhci_ports(pdev);
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
-@@ -254,7 +254,7 @@ compressor-$(CONFIG_KERNEL_LZO) := lzo
+@@ -255,7 +255,7 @@ compressor-$(CONFIG_KERNEL_LZO) := lzo
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
quiet_cmd_wrap = WRAP $@
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -3997,14 +3997,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3998,14 +3998,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
+ xhci->quirks |= XHCI_LPM_SUPPORT;
+
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
- pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI)
- xhci->quirks |= XHCI_BROKEN_STREAMS;
+ pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI) {
+ /*
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -1485,6 +1485,103 @@ command_cleanup:
+@@ -1486,6 +1486,103 @@ command_cleanup:
}
/*
* non-error returns are a promise to giveback() the urb later
* we drop ownership so next owner (or urb unlink) can get it
*/
-@@ -5386,6 +5483,7 @@ static const struct hc_driver xhci_hc_dr
+@@ -5387,6 +5484,7 @@ static const struct hc_driver xhci_hc_dr
.endpoint_reset = xhci_endpoint_reset,
.check_bandwidth = xhci_check_bandwidth,
.reset_bandwidth = xhci_reset_bandwidth,
+ }
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
- pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI)
+ pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI) {
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -563,7 +563,10 @@ void xhci_find_new_dequeue_state(struct
#define USB_VENDOR_ID_BELKIN 0x050d
#define USB_DEVICE_ID_FLIP_KVM 0x3201
-@@ -1263,6 +1266,9 @@
+@@ -1264,6 +1267,9 @@
#define USB_VENDOR_ID_XAT 0x2505
#define USB_DEVICE_ID_XAT_CSR 0x0220
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
-@@ -2513,9 +2513,11 @@ int xhci_mem_init(struct xhci_hcd *xhci,
+@@ -2522,9 +2522,11 @@ int xhci_mem_init(struct xhci_hcd *xhci,
* Event ring setup: Allocate a normal ring, but also setup
* the event ring segment table (ERST). Section 4.9.3.
*/
if (!xhci->event_ring)
goto fail;
if (xhci_check_trb_in_td_math(xhci) < 0)
-@@ -2528,7 +2530,7 @@ int xhci_mem_init(struct xhci_hcd *xhci,
+@@ -2537,7 +2539,7 @@ int xhci_mem_init(struct xhci_hcd *xhci,
/* set ERST count with the number of entries in the segment table */
val = readl(&xhci->ir_set->erst_size);
val &= ERST_SIZE_MASK;
--- a/Makefile
+++ b/Makefile
-@@ -1272,6 +1272,9 @@ ifneq ($(dtstree),)
+@@ -1274,6 +1274,9 @@ ifneq ($(dtstree),)
%.dtb: include/config/kernel.release scripts_dtc
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
--- a/Makefile
+++ b/Makefile
-@@ -1272,7 +1272,7 @@ ifneq ($(dtstree),)
+@@ -1274,7 +1274,7 @@ ifneq ($(dtstree),)
%.dtb: include/config/kernel.release scripts_dtc
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
/**
* struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP
*
-@@ -1724,6 +1729,7 @@ enum v4l2_ctrl_type {
+@@ -1725,6 +1730,7 @@ enum v4l2_ctrl_type {
V4L2_CTRL_TYPE_U8 = 0x0100,
V4L2_CTRL_TYPE_U16 = 0x0101,
V4L2_CTRL_TYPE_U32 = 0x0102,
--- a/include/media/v4l2-common.h
+++ b/include/media/v4l2-common.h
-@@ -457,8 +457,24 @@ int v4l2_s_parm_cap(struct video_device
+@@ -458,8 +458,24 @@ int v4l2_s_parm_cap(struct video_device
/* Pixel format and FourCC helpers */
/**
* @mem_planes: Number of memory planes, which includes the alpha plane (1 to 4).
* @comp_planes: Number of component planes, which includes the alpha plane (1 to 4).
* @bpp: Array of per-plane bytes per pixel
-@@ -469,6 +485,7 @@ int v4l2_s_parm_cap(struct video_device
+@@ -470,6 +486,7 @@ int v4l2_s_parm_cap(struct video_device
*/
struct v4l2_format_info {
u32 format;
u8 mem_planes;
u8 comp_planes;
u8 bpp[4];
-@@ -478,8 +495,22 @@ struct v4l2_format_info {
+@@ -479,8 +496,22 @@ struct v4l2_format_info {
u8 block_h[4];
};
replace define V4L2_DEC_CMD_PAUSE_TO_BLACK decoder-cmds
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
-@@ -1988,6 +1988,7 @@ struct v4l2_encoder_cmd {
+@@ -1989,6 +1989,7 @@ struct v4l2_encoder_cmd {
#define V4L2_DEC_CMD_STOP (1)
#define V4L2_DEC_CMD_PAUSE (2)
#define V4L2_DEC_CMD_RESUME (3)
if (b->sparse_flow_count + b->bulk_flow_count)
empty = false;
-@@ -2269,8 +2268,7 @@ static int cake_config_besteffort(struct
+@@ -2273,8 +2272,7 @@ static int cake_config_besteffort(struct
cake_set_rate(b, rate, mtu,
us_to_ns(q->target), us_to_ns(q->interval));
return 0;
}
-@@ -2281,8 +2279,7 @@ static int cake_config_precedence(struct
+@@ -2285,8 +2283,7 @@ static int cake_config_precedence(struct
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u64 rate = q->rate_bps;
u32 i;
q->tin_cnt = 8;
-@@ -2295,18 +2292,14 @@ static int cake_config_precedence(struct
+@@ -2299,18 +2296,14 @@ static int cake_config_precedence(struct
cake_set_rate(b, rate, mtu, us_to_ns(q->target),
us_to_ns(q->interval));
}
return 0;
-@@ -2375,8 +2368,7 @@ static int cake_config_diffserv8(struct
+@@ -2379,8 +2372,7 @@ static int cake_config_diffserv8(struct
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u64 rate = q->rate_bps;
u32 i;
q->tin_cnt = 8;
-@@ -2392,18 +2384,14 @@ static int cake_config_diffserv8(struct
+@@ -2396,18 +2388,14 @@ static int cake_config_diffserv8(struct
cake_set_rate(b, rate, mtu, us_to_ns(q->target),
us_to_ns(q->interval));
}
return 0;
-@@ -2442,17 +2430,11 @@ static int cake_config_diffserv4(struct
+@@ -2446,17 +2434,11 @@ static int cake_config_diffserv4(struct
cake_set_rate(&q->tins[3], rate >> 2, mtu,
us_to_ns(q->target), us_to_ns(q->interval));
return 0;
}
-@@ -2483,15 +2465,10 @@ static int cake_config_diffserv3(struct
+@@ -2487,15 +2469,10 @@ static int cake_config_diffserv3(struct
cake_set_rate(&q->tins[2], rate >> 2, mtu,
us_to_ns(q->target), us_to_ns(q->interval));
kfree(sdev->inquiry);
kfree(sdev);
-@@ -891,6 +900,8 @@ static struct bin_attribute dev_attr_vpd
+@@ -899,6 +908,8 @@ static struct bin_attribute dev_attr_vpd
sdev_vpd_pg_attr(pg83);
sdev_vpd_pg_attr(pg80);
static ssize_t show_inquiry(struct file *filep, struct kobject *kobj,
struct bin_attribute *bin_attr,
-@@ -1223,12 +1234,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
+@@ -1231,12 +1242,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
struct scsi_device *sdev = to_scsi_device(dev);
return S_IRUGO;
}
-@@ -1271,8 +1288,10 @@ static struct attribute *scsi_sdev_attrs
+@@ -1279,8 +1296,10 @@ static struct attribute *scsi_sdev_attrs
};
static struct bin_attribute *scsi_sdev_bin_attrs[] = {
# CONFIG_ARM64_ERRATUM_1024718 is not set
# CONFIG_ARM64_ERRATUM_1463225 is not set
# CONFIG_ARM64_ERRATUM_1542419 is not set
+# CONFIG_ARM64_ERRATUM_1742098 is not set
# CONFIG_ARM64_ERRATUM_819472 is not set
# CONFIG_ARM64_ERRATUM_824069 is not set
# CONFIG_ARM64_ERRATUM_826319 is not set
*/
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2692,6 +2692,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -2694,6 +2694,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
}
/**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter
-@@ -2823,16 +2827,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2825,16 +2829,6 @@ static inline struct sk_buff *dev_alloc_
}
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2658,7 +2658,7 @@ static inline int pskb_network_may_pull(
+@@ -2660,7 +2660,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/
#ifndef NET_SKB_PAD
kfree(net->ipv6.ip6_blk_hole_entry);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6428,6 +6477,9 @@ void __init ip6_route_init_special_entri
+@@ -6434,6 +6483,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
#endif
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -824,6 +824,7 @@ struct sk_buff {
- #ifdef CONFIG_TLS_DEVICE
+@@ -826,6 +826,7 @@ struct sk_buff {
__u8 decrypted:1;
#endif
+ __u8 scm_io_uring:1;
+ __u8 gro_skip:1;
#ifdef CONFIG_NET_SCHED
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
-@@ -1763,7 +1763,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
+@@ -1764,7 +1764,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
static const struct sdhci_ops sdhci_msm_ops = {
.reset = sdhci_reset,
return 0;
}
-@@ -457,16 +651,16 @@ ltq_etop_tx(struct sk_buff *skb, struct
+@@ -457,15 +651,16 @@ ltq_etop_tx(struct sk_buff *skb, struct
int queue = skb_get_queue_mapping(skb);
struct netdev_queue *txq = netdev_get_tx_queue(dev, queue);
struct ltq_etop_priv *priv = netdev_priv(dev);
len = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len;
- if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) || ch->skb[ch->dma.desc]) {
-- dev_kfree_skb_any(skb);
+ if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) ||
+ priv->txch.skb[priv->txch.dma.desc]) {
netdev_err(dev, "tx ring full\n");
netif_tx_stop_queue(txq);
return NETDEV_TX_BUSY;
-@@ -474,7 +668,7 @@ ltq_etop_tx(struct sk_buff *skb, struct
+@@ -473,7 +668,7 @@ ltq_etop_tx(struct sk_buff *skb, struct
/* dma needs to start on a 16 byte aligned address */
byte_offset = CPHYSADDR(skb->data) % 16;
netif_trans_update(dev);
-@@ -484,11 +678,11 @@ ltq_etop_tx(struct sk_buff *skb, struct
+@@ -483,11 +678,11 @@ ltq_etop_tx(struct sk_buff *skb, struct
wmb();
desc->ctl = LTQ_DMA_OWN | LTQ_DMA_SOP | LTQ_DMA_EOP |
LTQ_DMA_TX_OFFSET(byte_offset) | (len & LTQ_DMA_SIZE_MASK);
netif_tx_stop_queue(txq);
return NETDEV_TX_OK;
-@@ -499,11 +693,14 @@ ltq_etop_change_mtu(struct net_device *d
+@@ -498,11 +693,14 @@ ltq_etop_change_mtu(struct net_device *d
{
struct ltq_etop_priv *priv = netdev_priv(dev);
unsigned long flags;
spin_unlock_irqrestore(&priv->lock, flags);
return 0;
-@@ -563,6 +760,9 @@ ltq_etop_init(struct net_device *dev)
+@@ -562,6 +760,9 @@ ltq_etop_init(struct net_device *dev)
if (err)
goto err_hw;
ltq_etop_change_mtu(dev, 1500);
memcpy(&mac, &priv->pldata->mac, sizeof(struct sockaddr));
if (!is_valid_ether_addr(mac.sa_data)) {
-@@ -580,9 +780,10 @@ ltq_etop_init(struct net_device *dev)
+@@ -579,9 +780,10 @@ ltq_etop_init(struct net_device *dev)
dev->addr_assign_type = NET_ADDR_RANDOM;
ltq_etop_set_multicast_list(dev);
return 0;
err_netdev:
-@@ -602,6 +803,9 @@ ltq_etop_tx_timeout(struct net_device *d
+@@ -601,6 +803,9 @@ ltq_etop_tx_timeout(struct net_device *d
err = ltq_etop_hw_init(dev);
if (err)
goto err_hw;
netif_trans_update(dev);
netif_wake_queue(dev);
return;
-@@ -625,14 +829,19 @@ static const struct net_device_ops ltq_e
+@@ -624,14 +829,19 @@ static const struct net_device_ops ltq_e
.ndo_tx_timeout = ltq_etop_tx_timeout,
};
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
-@@ -658,31 +867,62 @@ ltq_etop_probe(struct platform_device *p
+@@ -657,31 +867,62 @@ ltq_etop_probe(struct platform_device *p
goto err_out;
}
err = register_netdev(dev);
if (err)
-@@ -711,31 +951,22 @@ ltq_etop_remove(struct platform_device *
+@@ -710,31 +951,22 @@ ltq_etop_remove(struct platform_device *
return 0;
}
* address space as memory. Needed when the kernel wants to execute
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
-@@ -323,6 +323,13 @@ static struct mem_type mem_types[] __ro_
- .prot_sect = PMD_TYPE_SECT,
+@@ -327,6 +327,13 @@ static struct mem_type mem_types[] __ro_
+ #endif
.domain = DOMAIN_KERNEL,
},
+ [MT_MEMORY_RW_NS] = {
[MT_ROM] = {
.prot_sect = PMD_TYPE_SECT,
.domain = DOMAIN_KERNEL,
-@@ -663,6 +670,7 @@ static void __init build_mem_type_table(
+@@ -667,6 +674,7 @@ static void __init build_mem_type_table(
}
kern_pgprot |= PTE_EXT_AF;
vecs_pgprot |= PTE_EXT_AF;
/*
* Set PXN for user mappings
-@@ -691,6 +699,7 @@ static void __init build_mem_type_table(
+@@ -695,6 +703,7 @@ static void __init build_mem_type_table(
mem_types[MT_MEMORY_RWX].prot_pte |= kern_pgprot;
mem_types[MT_MEMORY_RW].prot_sect |= ecc_mask | cp->pmd;
mem_types[MT_MEMORY_RW].prot_pte |= kern_pgprot;
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -1025,6 +1025,7 @@ void skb_dump(const char *level, const s
+@@ -1027,6 +1027,7 @@ void skb_dump(const char *level, const s
void skb_tx_error(struct sk_buff *skb);
void consume_skb(struct sk_buff *skb);
void __consume_stateless_skb(struct sk_buff *skb);
fsl-enetc-mdio-y := enetc_pci_mdio.o enetc_mdio.o
--- a/drivers/net/ethernet/freescale/enetc/enetc.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
-@@ -1419,8 +1419,7 @@ int enetc_close(struct net_device *ndev)
+@@ -1424,8 +1424,7 @@ int enetc_close(struct net_device *ndev)
return 0;
}
{
struct enetc_ndev_priv *priv = netdev_priv(ndev);
struct tc_mqprio_qopt *mqprio = type_data;
-@@ -1428,9 +1427,6 @@ int enetc_setup_tc(struct net_device *nd
+@@ -1433,9 +1432,6 @@ int enetc_setup_tc(struct net_device *nd
u8 num_tc;
int i;
mqprio->hw = TC_MQPRIO_HW_OFFLOAD_TCS;
num_tc = mqprio->num_tc;
-@@ -1475,6 +1471,19 @@ int enetc_setup_tc(struct net_device *nd
+@@ -1480,6 +1476,19 @@ int enetc_setup_tc(struct net_device *nd
return 0;
}
}
static int enetc_dma_alloc_bdr(struct enetc_bdr *r, size_t bd_size)
-@@ -1306,8 +1311,12 @@ static void enetc_disable_interrupts(str
+@@ -1311,8 +1316,12 @@ static void enetc_disable_interrupts(str
static void adjust_link(struct net_device *ndev)
{
+ taprio(802.1Qbv) and Credit Based Shaper(802.1Qbu).
--- a/drivers/net/ethernet/freescale/enetc/enetc.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
-@@ -1516,6 +1516,8 @@ int enetc_setup_tc(struct net_device *nd
+@@ -1521,6 +1521,8 @@ int enetc_setup_tc(struct net_device *nd
return enetc_setup_tc_mqprio(ndev, type_data);
case TC_SETUP_QDISC_TAPRIO:
return enetc_setup_tc_taprio(ndev, type_data);
--- a/drivers/net/ethernet/freescale/enetc/enetc.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
-@@ -1361,6 +1361,7 @@ static int enetc_phy_connect(struct net_
+@@ -1366,6 +1366,7 @@ static int enetc_phy_connect(struct net_
{
struct enetc_ndev_priv *priv = netdev_priv(ndev);
struct phy_device *phydev;
if (!priv->phy_node)
return 0; /* phy-less mode */
-@@ -1374,6 +1375,10 @@ static int enetc_phy_connect(struct net_
+@@ -1379,6 +1380,10 @@ static int enetc_phy_connect(struct net_
phy_attached_info(phydev);
--- a/drivers/net/ethernet/freescale/enetc/enetc.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
-@@ -1653,7 +1653,10 @@ int enetc_ioctl(struct net_device *ndev,
+@@ -1658,7 +1658,10 @@ int enetc_ioctl(struct net_device *ndev,
if (cmd == SIOCGHWTSTAMP)
return enetc_hwtstamp_get(ndev, rq);
#endif
#include <linux/serial_core.h>
#include <linux/slab.h>
#include <linux/tty_flip.h>
-@@ -2392,6 +2394,54 @@ static struct uart_driver lpuart_reg = {
+@@ -2394,6 +2396,54 @@ static struct uart_driver lpuart_reg = {
.cons = LPUART_CONSOLE,
};
static int lpuart_probe(struct platform_device *pdev)
{
const struct of_device_id *of_id = of_match_device(lpuart_dt_ids,
-@@ -2429,6 +2479,10 @@ static int lpuart_probe(struct platform_
+@@ -2431,6 +2481,10 @@ static int lpuart_probe(struct platform_
sport->port.rs485_config = lpuart_config_rs485;
- del_timer_sync(&sport->lpuart_timer);
+ lpuart_del_timer_sync(sport);
lpuart_dma_rx_free(&sport->port);
+ sport->lpuart_dma_rx_use = false;
}
-
-@@ -1649,11 +1794,22 @@ static void lpuart32_shutdown(struct uar
+@@ -1651,11 +1796,22 @@ static void lpuart32_shutdown(struct uar
spin_lock_irqsave(&port->lock, flags);
spin_unlock_irqrestore(&port->lock, flags);
-@@ -1750,10 +1906,10 @@ lpuart_set_termios(struct uart_port *por
+@@ -1752,10 +1908,10 @@ lpuart_set_termios(struct uart_port *por
* baud rate and restart Rx DMA path.
*
* Since timer function acqures sport->port.lock, need to stop before
lpuart_dma_rx_free(&sport->port);
}
-@@ -1965,10 +2121,10 @@ lpuart32_set_termios(struct uart_port *p
+@@ -1967,10 +2123,10 @@ lpuart32_set_termios(struct uart_port *p
* baud rate and restart Rx DMA path.
*
* Since timer function acqures sport->port.lock, need to stop before
lpuart_dma_rx_free(&sport->port);
}
-@@ -2481,6 +2637,10 @@ static int lpuart_probe(struct platform_
+@@ -2483,6 +2639,10 @@ static int lpuart_probe(struct platform_
sport->port.dev = &pdev->dev;
sport->port.type = PORT_LPUART;
sport->devtype = sdata->devtype;
ret = platform_get_irq(pdev, 0);
if (ret < 0)
return ret;
-@@ -2631,7 +2791,7 @@ static int lpuart_suspend(struct device
+@@ -2633,7 +2793,7 @@ static int lpuart_suspend(struct device
* Rx DMA path before suspend and start Rx DMA path on resume.
*/
if (irq_wake) {
static void lpuart_stop_tx(struct uart_port *port)
{
unsigned char temp;
-@@ -2724,6 +2766,10 @@ static int lpuart_probe(struct platform_
+@@ -2726,6 +2768,10 @@ static int lpuart_probe(struct platform_
if (ret)
goto failed_attach_port;
uart_get_rs485_mode(&pdev->dev, &sport->port.rs485);
if (sport->port.rs485.flags & SER_RS485_RX_DURING_TX)
-@@ -2747,6 +2793,8 @@ static int lpuart_probe(struct platform_
+@@ -2749,6 +2795,8 @@ static int lpuart_probe(struct platform_
return 0;
/* return TIOCSER_TEMT when transmitter is not busy */
static unsigned int lpuart_tx_empty(struct uart_port *port)
{
-@@ -2281,6 +2296,7 @@ static const struct uart_ops lpuart_pops
+@@ -2283,6 +2298,7 @@ static const struct uart_ops lpuart_pops
.break_ctl = lpuart_break_ctl,
.startup = lpuart_startup,
.shutdown = lpuart_shutdown,
.set_termios = lpuart_set_termios,
.type = lpuart_type,
.request_port = lpuart_request_port,
-@@ -2305,6 +2321,7 @@ static const struct uart_ops lpuart32_po
+@@ -2307,6 +2323,7 @@ static const struct uart_ops lpuart32_po
.break_ctl = lpuart32_break_ctl,
.startup = lpuart32_startup,
.shutdown = lpuart32_shutdown,
.set_termios = lpuart32_set_termios,
.type = lpuart_type,
.request_port = lpuart_request_port,
-@@ -2762,6 +2779,11 @@ static int lpuart_probe(struct platform_
+@@ -2764,6 +2781,11 @@ static int lpuart_probe(struct platform_
if (ret)
goto failed_irq_request;
ret = uart_add_one_port(&lpuart_reg, &sport->port);
if (ret)
goto failed_attach_port;
-@@ -2796,6 +2818,9 @@ static int lpuart_probe(struct platform_
+@@ -2798,6 +2820,9 @@ static int lpuart_probe(struct platform_
failed_reset:
uart_remove_one_port(&lpuart_reg, &sport->port);
failed_attach_port:
failed_irq_request:
lpuart_disable_clks(sport);
return ret;
-@@ -2815,15 +2840,41 @@ static int lpuart_remove(struct platform
+@@ -2817,15 +2842,41 @@ static int lpuart_remove(struct platform
if (sport->dma_rx_chan)
dma_release_channel(sport->dma_rx_chan);
if (lpuart_is_32(sport)) {
/* disable Rx/Tx and interrupts */
-@@ -2837,10 +2888,14 @@ static int lpuart_suspend(struct device
+@@ -2839,10 +2890,14 @@ static int lpuart_suspend(struct device
writeb(temp, sport->port.membase + UARTCR2);
}
if (sport->lpuart_dma_rx_use) {
/*
-@@ -2871,9 +2926,6 @@ static int lpuart_suspend(struct device
+@@ -2873,9 +2928,6 @@ static int lpuart_suspend(struct device
dmaengine_terminate_all(sport->dma_tx_chan);
}
return 0;
}
-@@ -2881,9 +2933,11 @@ static int lpuart_resume(struct device *
+@@ -2883,9 +2935,11 @@ static int lpuart_resume(struct device *
{
struct lpuart_port *sport = dev_get_drvdata(dev);
bool irq_wake = irqd_is_wakeup_set(irq_get_irq_data(sport->port.irq));
if (lpuart_is_32(sport))
lpuart32_setup_watermark_enable(sport);
-@@ -2904,13 +2958,23 @@ static int lpuart_resume(struct device *
+@@ -2906,13 +2960,23 @@ static int lpuart_resume(struct device *
if (lpuart_is_32(sport))
lpuart32_configure(sport);
static struct platform_driver lpuart_driver = {
.probe = lpuart_probe,
-@@ -2918,7 +2982,7 @@ static struct platform_driver lpuart_dri
+@@ -2920,7 +2984,7 @@ static struct platform_driver lpuart_dri
.driver = {
.name = "fsl-lpuart",
.of_match_table = lpuart_dt_ids,
return 0;
}
-@@ -2865,108 +2879,205 @@ static int lpuart_runtime_resume(struct
+@@ -2867,108 +2881,205 @@ static int lpuart_runtime_resume(struct
return lpuart_enable_clks(sport);
};
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
-@@ -2132,11 +2132,12 @@ lpuart32_set_termios(struct uart_port *p
+@@ -2134,11 +2134,12 @@ lpuart32_set_termios(struct uart_port *p
{
struct lpuart_port *sport = container_of(port, struct lpuart_port, port);
unsigned long flags;
modem = lpuart32_read(&sport->port, UARTMODIR);
/*
* only support CS8 and CS7, and for CS7 must enable PE.
-@@ -2173,7 +2174,9 @@ lpuart32_set_termios(struct uart_port *p
+@@ -2175,7 +2176,9 @@ lpuart32_set_termios(struct uart_port *p
}
if (termios->c_cflag & CSTOPB)
/* parity must be enabled when CS7 to match 8-bits format */
if ((termios->c_cflag & CSIZE) == CS7)
-@@ -2244,6 +2247,7 @@ lpuart32_set_termios(struct uart_port *p
+@@ -2246,6 +2249,7 @@ lpuart32_set_termios(struct uart_port *p
lpuart32_write(&sport->port, old_ctrl & ~(UARTCTRL_TE | UARTCTRL_RE),
UARTCTRL);
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
-@@ -2615,7 +2615,9 @@ static int __init lpuart32_early_console
+@@ -2617,7 +2617,9 @@ static int __init lpuart32_early_console
if (!device->port.membase)
return -ENODEV;
* All 3.1 IP version constants are greater than the 3.0 IP
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
-@@ -3706,6 +3706,10 @@ int dwc3_gadget_init(struct dwc3 *dwc)
+@@ -3710,6 +3710,10 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc->gadget.sg_supported = true;
dwc->gadget.name = "dwc3-gadget";
dwc->gadget.lpm_capable = true;
* bursts that are required to move all packets in this TD. Only SuperSpeed
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -5414,6 +5414,7 @@ static const struct hc_driver xhci_hc_dr
+@@ -5415,6 +5415,7 @@ static const struct hc_driver xhci_hc_dr
.disable_usb3_lpm_timeout = xhci_disable_usb3_lpm_timeout,
.find_raw_port_number = xhci_find_raw_port_number,
.clear_tt_buffer_complete = xhci_clear_tt_buffer_complete,
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -5435,6 +5435,8 @@ void xhci_init_driver(struct hc_driver *
+@@ -5436,6 +5436,8 @@ void xhci_init_driver(struct hc_driver *
drv->check_bandwidth = over->check_bandwidth;
if (over->reset_bandwidth)
drv->reset_bandwidth = over->reset_bandwidth;
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
-@@ -161,6 +161,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+@@ -162,6 +162,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
src-wlib := $(sort $(src-wlib-y))
src-plat := $(sort $(src-plat-y))
-@@ -342,7 +343,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm
+@@ -343,7 +344,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm
image-$(CONFIG_TQM8560) += cuImage.tqm8560
image-$(CONFIG_SBC8548) += cuImage.sbc8548
image-$(CONFIG_KSI8560) += cuImage.ksi8560
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
-@@ -268,7 +268,6 @@ image-$(CONFIG_PPC_CHRP) += zImage.chrp
+@@ -269,7 +269,6 @@ image-$(CONFIG_PPC_CHRP) += zImage.chrp
image-$(CONFIG_PPC_EFIKA) += zImage.chrp
image-$(CONFIG_PPC_PMAC) += zImage.pmac
image-$(CONFIG_PPC_HOLLY) += dtbImage.holly
image-$(CONFIG_EPAPR_BOOT) += zImage.epapr
#
-@@ -397,15 +396,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
+@@ -398,15 +397,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
$(obj)/vmlinux.strip: vmlinux
$(STRIP) -s -R .comment $< -o $@
static inline struct clk_oxnas_gate *to_clk_oxnas_gate(struct clk_hw *hw)
{
return container_of(hw, struct clk_oxnas_gate, hw);
-@@ -249,3 +401,42 @@ static struct platform_driver oxnas_stdc
+@@ -251,3 +403,42 @@ static struct platform_driver oxnas_stdc
},
};
builtin_platform_driver(oxnas_stdclk_driver);
CONFIG_ARM64_CONT_SHIFT=4
CONFIG_ARM64_ERRATUM_1165522=y
CONFIG_ARM64_ERRATUM_1286807=y
+CONFIG_ARM64_ERRATUM_1742098=y
CONFIG_ARM64_PAGE_SHIFT=12
CONFIG_ARM64_PA_BITS=48
CONFIG_ARM64_PA_BITS_48=y
#include <linux/crc32.h>
#include <linux/if_vlan.h>
#include <linux/uaccess.h>
-@@ -4336,6 +4337,22 @@ static void rtl_tally_reset(struct r8152
+@@ -4338,6 +4339,22 @@ static void rtl_tally_reset(struct r8152
ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
}
static void r8152b_init(struct r8152 *tp)
{
u32 ocp_data;
-@@ -4377,6 +4394,8 @@ static void r8152b_init(struct r8152 *tp
+@@ -4379,6 +4396,8 @@ static void r8152b_init(struct r8152 *tp
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
}
static void r8153_init(struct r8152 *tp)
-@@ -4511,6 +4530,8 @@ static void r8153_init(struct r8152 *tp)
+@@ -4513,6 +4532,8 @@ static void r8153_init(struct r8152 *tp)
tp->coalesce = COALESCE_SLOW;
break;
}
}
static void r8153b_init(struct r8152 *tp)
-@@ -4587,6 +4608,8 @@ static void r8153b_init(struct r8152 *tp
+@@ -4589,6 +4610,8 @@ static void r8153b_init(struct r8152 *tp
rtl_tally_reset(tp);
tp->coalesce = 15000; /* 15 us */