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>master
parent
e290024717
commit
c9388fa986
@ -1,61 +0,0 @@ |
||||
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 = ';';
|
@ -1,85 +0,0 @@ |
||||
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);
|
Loading…
Reference in new issue