Refreshed all patches.
Removed patches because included in upstream:
- 499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch
- 0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch
Compile-tested on: ipq40xx, lantiq/xrx200, x86/64, ipq806x
Runtime-tested on: ipq40xx, lantiq/xrx200, x86/64
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-4.14 = .212
+LINUX_VERSION-4.14 = .214
-LINUX_KERNEL_HASH-4.14.212 = 0e1bc32c4842c3bbee3a15454408f528acd4d3c5e83312b93008d5ee2e9a0c79
+LINUX_KERNEL_HASH-4.14.214 = f54296216ace09a1bf81efaa9dbbd4ebbe8631dbf22df9c6f286157db827391e
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
uport->cons->cflag = 0;
}
/*
-@@ -2072,8 +2074,10 @@ uart_set_options(struct uart_port *port,
+@@ -2076,8 +2078,10 @@ uart_set_options(struct uart_port *port,
* Allow the setting of the UART parameters with a NULL console
* too:
*/
+MODULE_ALIAS("platform:" DRIVER_NAME);
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
-@@ -1647,6 +1647,13 @@ config PIC32_DMT
+@@ -1648,6 +1648,13 @@ config PIC32_DMT
To compile this driver as a loadable module, choose M here.
The module will be called pic32-dmt.
uport->cons->cflag = 0;
}
/*
-@@ -2072,8 +2074,10 @@ uart_set_options(struct uart_port *port,
+@@ -2076,8 +2078,10 @@ uart_set_options(struct uart_port *port,
* Allow the setting of the UART parameters with a NULL console
* too:
*/
#include <linux/clockchips.h>
#include <linux/clocksource.h>
#include <linux/interrupt.h>
-@@ -836,6 +837,16 @@ static void arch_timer_of_configure_rate
+@@ -845,6 +846,16 @@ static void arch_timer_of_configure_rate
if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate))
arch_timer_rate = rate;
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
-@@ -1473,6 +1473,15 @@ config WDT_MTX1
+@@ -1474,6 +1474,15 @@ config WDT_MTX1
Hardware driver for the MTX-1 boards. This is a watchdog timer that
will reboot the machine after a 100 seconds timer expired.
* Before updating sk_refcnt, we must commit prior changes to memory
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -1699,7 +1699,7 @@ u32 tcp_tso_autosize(const struct sock *
+@@ -1700,7 +1700,7 @@ u32 tcp_tso_autosize(const struct sock *
{
u32 bytes, segs;
sk->sk_gso_max_size - 1 - MAX_TCP_HEADER);
/* Goal is to send at least one packet per ms,
-@@ -2217,7 +2217,7 @@ static bool tcp_small_queue_check(struct
+@@ -2218,7 +2218,7 @@ static bool tcp_small_queue_check(struct
{
unsigned int limit;
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
-@@ -2012,7 +2012,8 @@ static const struct usb_device_id option
+@@ -2015,7 +2015,8 @@ static const struct usb_device_id option
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d01, 0xff) }, /* D-Link DWM-156 (variant) */
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d02, 0xff) },
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d03, 0xff) },
config MODULES_TREE_LOOKUP
--- a/kernel/module.c
+++ b/kernel/module.c
-@@ -3024,9 +3024,11 @@ static struct module *setup_load_info(st
+@@ -3022,9 +3022,11 @@ static struct module *setup_load_info(st
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
{
if (flags & MODULE_INIT_IGNORE_VERMAGIC)
modmagic = NULL;
-@@ -3047,6 +3049,7 @@ static int check_modinfo(struct module *
+@@ -3045,6 +3047,7 @@ static int check_modinfo(struct module *
mod->name);
add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
}
+++ /dev/null
-From: Sven Eckelmann <sven@narfation.org>
-Date: Sun, 22 Nov 2020 00:48:33 +0100
-Subject: [PATCH RFC] mtd: parser: cmdline: Fix parsing of part-names with colons
-
-Some devices (especially QCA ones) are already using hardcoded partition
-names with colons in it. The OpenMesh A62 for example provides following
-mtd relevant information via cmdline:
-
- root=31:11 mtdparts=spi0.0:256k(0:SBL1),128k(0:MIBIB),384k(0:QSEE),64k(0:CDT),64k(0:DDRPARAMS),64k(0:APPSBLENV),512k(0:APPSBL),64k(0:ART),64k(custom),64k(0:KEYS),0x002b0000(kernel),0x00c80000(rootfs),15552k(inactive) rootfsname=rootfs rootwait
-
-The change to split only on the last colon between mtd-id and partitions
-will cause newpart to see following string for the first partition:
-
- KEYS),0x002b0000(kernel),0x00c80000(rootfs),15552k(inactive)
-
-Such a partition list cannot be parsed and thus the device fails to boot.
-
-Avoid this behavior by making sure that the start of the first part-name
-("(") will also be the last byte the mtd-id split algorithm is using for
-its colon search.
-
-Forwarded: https://patchwork.ozlabs.org/project/linux-mtd/patch/20201122001533.985641-1-sven@narfation.org/
-Fixes: eb13fa022741 ("mtd: parser: cmdline: Support MTD names containing one or more colons")
-Signed-off-by: Sven Eckelmann <sven@narfation.org>
-
---- a/drivers/mtd/cmdlinepart.c
-+++ b/drivers/mtd/cmdlinepart.c
-@@ -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;
-- char *p, *mtd_id, *semicol;
-+ char *p, *mtd_id, *semicol, *open_parenth;
-
- /*
- * Replace the first ';' by a NULL char so strrchr can work
-@@ -238,6 +238,13 @@ static int mtdpart_setup_real(char *s)
- if (semicol)
- *semicol = '\0';
-
-+ /* make sure that part-names with ":" will not be handled as
-+ * part of the mtd-id with an ":"
-+ */
-+ open_parenth = strchr(s, '(');
-+ if (open_parenth)
-+ *open_parenth = '\0';
-+
- mtd_id = s;
-
- /*
-@@ -247,6 +254,10 @@ static int mtdpart_setup_real(char *s)
- */
- p = strrchr(s, ':');
-
-+ /* Restore the '(' now. */
-+ if (open_parenth)
-+ *open_parenth = '(';
-+
- /* Restore the ';' now. */
- if (semicol)
- *semicol = ';';
struct reset_control *pci_reset;
struct reset_control *axi_reset;
struct reset_control *ahb_reset;
-@@ -249,6 +251,14 @@ static int qcom_pcie_get_resources_2_1_0
+@@ -250,6 +252,14 @@ static int qcom_pcie_get_resources_2_1_0
if (IS_ERR(res->phy_clk))
return PTR_ERR(res->phy_clk);
res->pci_reset = devm_reset_control_get_exclusive(dev, "pci");
if (IS_ERR(res->pci_reset))
return PTR_ERR(res->pci_reset);
-@@ -281,6 +291,8 @@ static void qcom_pcie_deinit_2_1_0(struc
+@@ -287,6 +297,8 @@ static void qcom_pcie_deinit_2_1_0(struc
clk_disable_unprepare(res->iface_clk);
clk_disable_unprepare(res->core_clk);
clk_disable_unprepare(res->phy_clk);
regulator_disable(res->vdda);
regulator_disable(res->vdda_phy);
regulator_disable(res->vdda_refclk);
-@@ -324,16 +336,28 @@ static int qcom_pcie_init_2_1_0(struct q
+@@ -330,16 +342,28 @@ static int qcom_pcie_init_2_1_0(struct q
goto err_assert_ahb;
}
}
ret = reset_control_deassert(res->ahb_reset);
-@@ -389,10 +413,14 @@ static int qcom_pcie_init_2_1_0(struct q
+@@ -401,10 +425,14 @@ static int qcom_pcie_init_2_1_0(struct q
return 0;
err_deassert_ahb:
+++ /dev/null
-From 490d103232287eb51c92c49a4ef8865fd0a9d59e Mon Sep 17 00:00:00 2001
-From: Sham Muthayyan <smuthayy@codeaurora.org>
-Date: Tue, 19 Jul 2016 18:58:18 +0530
-Subject: PCI: qcom: Fixed IPQ806x PCIE reset changes
-
-Change-Id: Ia6590e960b9754b1e8b7a51f318788cd63e9e321
-Signed-off-by: Sham Muthayyan <smuthayy@codeaurora.org>
----
- drivers/pci/host/pcie-qcom.c | 24 +++++++++++++++++++-----
- 1 file changed, 19 insertions(+), 5 deletions(-)
-
---- a/drivers/pci/dwc/pcie-qcom.c
-+++ b/drivers/pci/dwc/pcie-qcom.c
-@@ -98,6 +98,7 @@ struct qcom_pcie_resources_2_1_0 {
- struct reset_control *ahb_reset;
- struct reset_control *por_reset;
- struct reset_control *phy_reset;
-+ struct reset_control *ext_reset;
- struct regulator *vdda;
- struct regulator *vdda_phy;
- struct regulator *vdda_refclk;
-@@ -275,6 +276,10 @@ static int qcom_pcie_get_resources_2_1_0
- if (IS_ERR(res->por_reset))
- return PTR_ERR(res->por_reset);
-
-+ res->ext_reset = devm_reset_control_get(dev, "ext");
-+ if (IS_ERR(res->ext_reset))
-+ return PTR_ERR(res->ext_reset);
-+
- res->phy_reset = devm_reset_control_get_exclusive(dev, "phy");
- return PTR_ERR_OR_ZERO(res->phy_reset);
- }
-@@ -288,6 +293,7 @@ static void qcom_pcie_deinit_2_1_0(struc
- reset_control_assert(res->ahb_reset);
- reset_control_assert(res->por_reset);
- reset_control_assert(res->pci_reset);
-+ reset_control_assert(res->ext_reset);
- clk_disable_unprepare(res->iface_clk);
- clk_disable_unprepare(res->core_clk);
- clk_disable_unprepare(res->phy_clk);
-@@ -306,6 +312,12 @@ static int qcom_pcie_init_2_1_0(struct q
- u32 val;
- int ret;
-
-+ ret = reset_control_assert(res->ahb_reset);
-+ if (ret) {
-+ dev_err(dev, "cannot assert ahb reset\n");
-+ return ret;
-+ }
-+
- ret = regulator_enable(res->vdda);
- if (ret) {
- dev_err(dev, "cannot enable vdda regulator\n");
-@@ -324,16 +336,16 @@ static int qcom_pcie_init_2_1_0(struct q
- goto err_vdda_phy;
- }
-
-- ret = reset_control_assert(res->ahb_reset);
-+ ret = reset_control_deassert(res->ext_reset);
- if (ret) {
-- dev_err(dev, "cannot assert ahb reset\n");
-- goto err_assert_ahb;
-+ dev_err(dev, "cannot assert ext reset\n");
-+ goto err_reset_ext;
- }
-
- ret = clk_prepare_enable(res->iface_clk);
- if (ret) {
- dev_err(dev, "cannot prepare/enable iface clock\n");
-- goto err_assert_ahb;
-+ goto err_iface;
- }
-
- ret = clk_prepare_enable(res->core_clk);
-@@ -422,7 +434,9 @@ err_clk_phy:
- clk_disable_unprepare(res->core_clk);
- err_clk_core:
- clk_disable_unprepare(res->iface_clk);
--err_assert_ahb:
-+err_iface:
-+ reset_control_assert(res->ext_reset);
-+err_reset_ext:
- regulator_disable(res->vdda_phy);
- err_vdda_phy:
- regulator_disable(res->vdda_refclk);
- u32 val;
int ret;
- ret = reset_control_assert(res->ahb_reset);
+ ret = regulator_enable(res->vdda);
@@ -378,15 +410,26 @@ static int qcom_pcie_init_2_1_0(struct q
goto err_deassert_ahb;
}
/* Set the Max TLP size to 2K, instead of using default of 4K */
-@@ -1382,6 +1390,8 @@ static int qcom_pcie_probe(struct platfo
+@@ -1380,6 +1388,8 @@ static int qcom_pcie_probe(struct platfo
struct dw_pcie *pci;
struct qcom_pcie *pcie;
int ret;
pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
if (!pcie)
-@@ -1403,6 +1413,9 @@ static int qcom_pcie_probe(struct platfo
+@@ -1401,6 +1411,9 @@ static int qcom_pcie_probe(struct platfo
if (IS_ERR(pcie->reset))
return PTR_ERR(pcie->reset);
struct qcom_pcie_resources_2_1_0 {
struct clk *iface_clk;
struct clk *core_clk;
-@@ -1472,6 +1480,35 @@ static int qcom_pcie_probe(struct platfo
+@@ -1470,6 +1478,35 @@ static int qcom_pcie_probe(struct platfo
return 0;
}
reset_control_assert(res->axi_reset);
reset_control_assert(res->ahb_reset);
@@ -415,7 +416,6 @@ static void qcom_pcie_deinit_2_1_0(struc
- reset_control_assert(res->ext_reset);
+ reset_control_assert(res->pci_reset);
clk_disable_unprepare(res->iface_clk);
clk_disable_unprepare(res->core_clk);
- clk_disable_unprepare(res->phy_clk);
clk_disable_unprepare(res->aux_clk);
clk_disable_unprepare(res->ref_clk);
regulator_disable(res->vdda);
-@@ -472,12 +472,6 @@ static int qcom_pcie_init_2_1_0(struct q
+@@ -466,12 +466,6 @@ static int qcom_pcie_init_2_1_0(struct q
goto err_clk_core;
}
static irqreturn_t dpio_irq_handler(int irq_num, void *arg)
{
struct device *dev = (struct device *)arg;
-@@ -113,7 +91,7 @@ static int dpaa2_dpio_probe(struct fsl_m
+@@ -110,7 +88,7 @@ static int dpaa2_dpio_probe(struct fsl_m
struct dpio_priv *priv;
int err = -ENOMEM;
struct device *dev = &dpio_dev->dev;
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
-@@ -135,6 +113,12 @@ static int dpaa2_dpio_probe(struct fsl_m
+@@ -132,6 +110,12 @@ static int dpaa2_dpio_probe(struct fsl_m
goto err_open;
}
err = dpio_get_attributes(dpio_dev->mc_io, 0, dpio_dev->mc_handle,
&dpio_attrs);
if (err) {
-@@ -155,26 +139,35 @@ static int dpaa2_dpio_probe(struct fsl_m
+@@ -152,26 +136,35 @@ static int dpaa2_dpio_probe(struct fsl_m
desc.dpio_id = dpio_dev->obj_desc.id;
/* get the cpu to use for the affinity hint */
err = fsl_mc_allocate_irqs(dpio_dev);
if (err) {
-@@ -186,7 +179,7 @@ static int dpaa2_dpio_probe(struct fsl_m
+@@ -183,7 +176,7 @@ static int dpaa2_dpio_probe(struct fsl_m
if (err)
goto err_register_dpio_irq;
if (!priv->io) {
dev_err(dev, "dpaa2_io_create failed\n");
goto err_dpaa2_io_create;
-@@ -196,7 +189,6 @@ static int dpaa2_dpio_probe(struct fsl_m
+@@ -193,7 +186,6 @@ static int dpaa2_dpio_probe(struct fsl_m
dev_dbg(dev, " receives_notifications = %d\n",
desc.receives_notifications);
dpio_close(dpio_dev->mc_io, 0, dpio_dev->mc_handle);
return 0;
-@@ -207,6 +199,7 @@ err_register_dpio_irq:
+@@ -204,6 +196,7 @@ err_register_dpio_irq:
err_allocate_irqs:
dpio_disable(dpio_dev->mc_io, 0, dpio_dev->mc_handle);
err_get_attr:
dpio_close(dpio_dev->mc_io, 0, dpio_dev->mc_handle);
err_open:
fsl_mc_portal_free(dpio_dev->mc_io);
-@@ -227,7 +220,7 @@ static int dpaa2_dpio_remove(struct fsl_
+@@ -224,7 +217,7 @@ static int dpaa2_dpio_remove(struct fsl_
{
struct device *dev;
struct dpio_priv *priv;
dev = &dpio_dev->dev;
priv = dev_get_drvdata(dev);
-@@ -236,11 +229,8 @@ static int dpaa2_dpio_remove(struct fsl_
+@@ -233,11 +226,8 @@ static int dpaa2_dpio_remove(struct fsl_
dpio_teardown_irqs(dpio_dev);
err = dpio_open(dpio_dev->mc_io, 0, dpio_dev->obj_desc.id,
&dpio_dev->mc_handle);
-@@ -261,7 +251,7 @@ static int dpaa2_dpio_remove(struct fsl_
+@@ -258,7 +248,7 @@ static int dpaa2_dpio_remove(struct fsl_
err_open:
fsl_mc_portal_free(dpio_dev->mc_io);
return err;
}
-@@ -285,11 +275,16 @@ static struct fsl_mc_driver dpaa2_dpio_d
+@@ -282,11 +272,16 @@ static struct fsl_mc_driver dpaa2_dpio_d
static int dpio_driver_init(void)
{