summaryrefslogtreecommitdiffstats
path: root/configs/platform-v7a/patches
diff options
context:
space:
mode:
authorRobert Schwebel <r.schwebel@pengutronix.de>2023-10-21 11:12:55 +0200
committerRobert Schwebel <r.schwebel@pengutronix.de>2023-10-21 11:12:55 +0200
commit77a5ded8db38326f62691b26c66ee53b5d267227 (patch)
tree7d482e88f7de9cbb5675a2a1d07da0fb9a4134a6 /configs/platform-v7a/patches
parent5b3855bd676a2470d39118fdad4f582ba63f5128 (diff)
downloadDistroKit-77a5ded8db38326f62691b26c66ee53b5d267227.tar.gz
DistroKit-77a5ded8db38326f62691b26c66ee53b5d267227.tar.xz
platform-v7a: add upstream patches for stm32mp
Currently we get this new error: ERROR: stm32-rproc 10000000.m4@10000000.of: failed to get tz syscfg Apply upstream patches from the mailing list. Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
Diffstat (limited to 'configs/platform-v7a/patches')
-rw-r--r--configs/platform-v7a/patches/barebox-2023.09.0/0001-remoteproc-stm32-fix-typo-in-Kconfig-symbol.patch26
-rw-r--r--configs/platform-v7a/patches/barebox-2023.09.0/0002-remoteproc-stm32-fix-breakage-after-DT-sync-with-ups.patch135
-rw-r--r--configs/platform-v7a/patches/barebox-2023.09.0/series5
3 files changed, 166 insertions, 0 deletions
diff --git a/configs/platform-v7a/patches/barebox-2023.09.0/0001-remoteproc-stm32-fix-typo-in-Kconfig-symbol.patch b/configs/platform-v7a/patches/barebox-2023.09.0/0001-remoteproc-stm32-fix-typo-in-Kconfig-symbol.patch
new file mode 100644
index 0000000..acb5ba3
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2023.09.0/0001-remoteproc-stm32-fix-typo-in-Kconfig-symbol.patch
@@ -0,0 +1,26 @@
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Fri, 20 Oct 2023 15:37:43 +0200
+Subject: [PATCH] remoteproc: stm32: fix typo in Kconfig symbol
+
+The Kconfig symbol for enabling support for the ARM Secure Monitor Call
+Calling Convention if CONFIG_ARM_SMCCC and not CONFIG_ARM_SMCC, but the
+latter is checked with IS_ENABLED() in the driver. Fix the typo.
+
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+ drivers/remoteproc/stm32_rproc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/remoteproc/stm32_rproc.c b/drivers/remoteproc/stm32_rproc.c
+index b6a62634842f..b2282f2fac5b 100644
+--- a/drivers/remoteproc/stm32_rproc.c
++++ b/drivers/remoteproc/stm32_rproc.c
+@@ -56,7 +56,7 @@ static int stm32_rproc_set_hold_boot(struct rproc *rproc, bool hold)
+
+ val = hold ? HOLD_BOOT : RELEASE_BOOT;
+
+- if (IS_ENABLED(CONFIG_ARM_SMCC) && ddata->secured_soc) {
++ if (IS_ENABLED(CONFIG_ARM_SMCCC) && ddata->secured_soc) {
+ arm_smccc_smc(STM32_SMC_RCC, STM32_SMC_REG_WRITE,
+ hold_boot->reg, val, 0, 0, 0, 0, &smc_res);
+ err = smc_res.a0;
diff --git a/configs/platform-v7a/patches/barebox-2023.09.0/0002-remoteproc-stm32-fix-breakage-after-DT-sync-with-ups.patch b/configs/platform-v7a/patches/barebox-2023.09.0/0002-remoteproc-stm32-fix-breakage-after-DT-sync-with-ups.patch
new file mode 100644
index 0000000..8d93285
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2023.09.0/0002-remoteproc-stm32-fix-breakage-after-DT-sync-with-ups.patch
@@ -0,0 +1,135 @@
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Fri, 20 Oct 2023 15:37:44 +0200
+Subject: [PATCH] remoteproc: stm32: fix breakage after DT sync with upstream
+
+Once more, a device tree sync with Linux breaks a barebox driver.
+
+This time, the STM32 remoteproc driver ported from Linux was broken by
+the upstream stm32mp151.dtsi removing the st,syscfg-tz property.
+
+This property is only needed for the SiP secure monitor call case,
+but was so far always specified and the driver required its presence,
+even if it went unused.
+
+The Linux driver has since removed this hard requirement and added a new
+third way to do co-processor reset: Besides direct access to hardware
+and Silicon Provider specific secure monitor call, there's also support
+for doing it over SCMI now.
+
+Sync that part with the Linux driver to fix following boot-time error
+message:
+
+ ERROR: stm32-rproc 10000000.m4@10000000.of: failed to get tz syscfg
+
+Reported-by: Robert Schwebel <rsc@pengutronix.de>
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+ drivers/remoteproc/stm32_rproc.c | 70 ++++++++++++++++++++++++++++------------
+ 1 file changed, 50 insertions(+), 20 deletions(-)
+
+diff --git a/drivers/remoteproc/stm32_rproc.c b/drivers/remoteproc/stm32_rproc.c
+index b2282f2fac5b..a7df29e57051 100644
+--- a/drivers/remoteproc/stm32_rproc.c
++++ b/drivers/remoteproc/stm32_rproc.c
+@@ -30,8 +30,9 @@ struct stm32_syscon {
+
+ struct stm32_rproc {
+ struct reset_control *rst;
++ struct reset_control *hold_boot_rst;
+ struct stm32_syscon hold_boot;
+- bool secured_soc;
++ bool hold_boot_smc;
+ };
+
+ static void *stm32_rproc_da_to_va(struct rproc *rproc, u64 da, int len)
+@@ -54,13 +55,28 @@ static int stm32_rproc_set_hold_boot(struct rproc *rproc, bool hold)
+ struct arm_smccc_res smc_res;
+ int val, err;
+
++ /*
++ * Three ways to manage the hold boot
++ * - using SCMI: the hold boot is managed as a reset,
++ * - using Linux(no SCMI): the hold boot is managed as a syscon register
++ * - using SMC call (deprecated): use SMC reset interface
++ */
++
+ val = hold ? HOLD_BOOT : RELEASE_BOOT;
+
+- if (IS_ENABLED(CONFIG_ARM_SMCCC) && ddata->secured_soc) {
++ if (ddata->hold_boot_rst) {
++ /* Use the SCMI reset controller */
++ if (!hold)
++ err = reset_control_deassert(ddata->hold_boot_rst);
++ else
++ err = reset_control_assert(ddata->hold_boot_rst);
++ } else if (IS_ENABLED(CONFIG_HAVE_ARM_SMCCC) && ddata->hold_boot_smc) {
++ /* Use the SMC call */
+ arm_smccc_smc(STM32_SMC_RCC, STM32_SMC_REG_WRITE,
+ hold_boot->reg, val, 0, 0, 0, 0, &smc_res);
+ err = smc_res.a0;
+ } else {
++ /* Use syscon */
+ err = regmap_update_bits(hold_boot->map, hold_boot->reg,
+ hold_boot->mask, val);
+ }
+@@ -142,28 +158,42 @@ static int stm32_rproc_parse_dt(struct device *dev, struct stm32_rproc *ddata)
+ }
+
+ /*
+- * if platform is secured the hold boot bit must be written by
+- * smc call and read normally.
+- * if not secure the hold boot bit could be read/write normally
++ * Three ways to manage the hold boot
++ * - using SCMI: the hold boot is managed as a reset
++ * The DT "reset-mames" property should be defined with 2 items:
++ * reset-names = "mcu_rst", "hold_boot";
++ * - using SMC call (deprecated): use SMC reset interface
++ * The DT "reset-mames" property is optional, "st,syscfg-tz" is required
++ * - default(no SCMI, no SMC): the hold boot is managed as a syscon register
++ * The DT "reset-mames" property is optional, "st,syscfg-holdboot" is required
+ */
+- err = stm32_rproc_get_syscon(np, "st,syscfg-tz", &tz);
+- if (err) {
+- dev_err(dev, "failed to get tz syscfg\n");
+- return err;
+- }
+
+- err = regmap_read(tz.map, tz.reg, &tzen);
+- if (err) {
+- dev_err(dev, "failed to read tzen\n");
+- return err;
++ ddata->hold_boot_rst = reset_control_get_optional(dev, "hold_boot");
++ if (IS_ERR(ddata->hold_boot_rst))
++ return dev_err_probe(dev, PTR_ERR(ddata->hold_boot_rst),
++ "failed to get hold_boot reset\n");
++
++ if (!ddata->hold_boot_rst && IS_ENABLED(CONFIG_HAVE_ARM_SMCCC)) {
++ /* Manage the MCU_BOOT using SMC call */
++ err = stm32_rproc_get_syscon(np, "st,syscfg-tz", &tz);
++ if (!err) {
++ err = regmap_read(tz.map, tz.reg, &tzen);
++ if (err) {
++ dev_err(dev, "failed to read tzen\n");
++ return err;
++ }
++ ddata->hold_boot_smc = tzen & tz.mask;
++ }
+ }
+- ddata->secured_soc = tzen & tz.mask;
+
+- err = stm32_rproc_get_syscon(np, "st,syscfg-holdboot",
+- &ddata->hold_boot);
+- if (err) {
+- dev_err(dev, "failed to get hold boot\n");
+- return err;
++ if (!ddata->hold_boot_rst && !ddata->hold_boot_smc) {
++ /* Default: hold boot manage it through the syscon controller */
++ err = stm32_rproc_get_syscon(np, "st,syscfg-holdboot",
++ &ddata->hold_boot);
++ if (err) {
++ dev_err(dev, "failed to get hold boot\n");
++ return err;
++ }
+ }
+
+ return 0;
diff --git a/configs/platform-v7a/patches/barebox-2023.09.0/series b/configs/platform-v7a/patches/barebox-2023.09.0/series
new file mode 100644
index 0000000..7dadf91
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2023.09.0/series
@@ -0,0 +1,5 @@
+# generated by git-ptx-patches
+#tag:base --start-number 1
+0001-remoteproc-stm32-fix-typo-in-Kconfig-symbol.patch
+0002-remoteproc-stm32-fix-breakage-after-DT-sync-with-ups.patch
+# 3e889491708d7a397dcb8350d8babf58 - git-ptx-patches magic