mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v3 0/5] Enable DSP device for i.MX8ULP
@ 2026-11-11  3:18 shengjiu.wang
  2026-11-11  3:18 ` [PATCH v3 1/5] dt-bindings: dsp: fsl,dsp: document debug reset control shengjiu.wang
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: shengjiu.wang @ 2026-11-11  3:18 UTC (permalink / raw)
  To: robh, krzk+dt, conor+dt, shengjiu.wang, daniel.baluta,
	devicetree, linux-kernel, andersson, mathieu.poirier, Frank.Li,
	s.hauer, kernel, festevam, p.zabel, linux-remoteproc, imx,
	linux-arm-kernel

From: Shengjiu Wang <shengjiu.wang@nxp.com>

The debug reset control is one of the HIFI4 DSP’s reset mechanisms used
by the debug interface; add documentation for the optional debug reset
controls and update the driver to use both the soft reset and debug reset
controller APIs (the soft reset is already documented).

Add a HiFi4 DSP node and enable the DSP on i.MX8ULP.

Changes in v3
- Split the previous patch 1/4 into two patches
- Update the commit message to explain why the reset properties are
  required for i.MX8ULP
- Update the commit message of patch 3/5 to clarify the switch from
  direct register access to the reset controller API

Changes in v2:
- Update commit messages for all patches
- Require the reset properties for the i.MX8ULP HiFi4 DSP in patch 1/4,
  as suggested by Sashiko
- Use sim_lpav as the clock provider for the ipg, ocram, and core clocks in
  patch 3/4, as suggested by Sashiko
- Rename the reserved-memory node from dsp_reserved to memory in patch 4/4,
  as suggested by Sashiko

Shengjiu Wang (5):
  dt-bindings: dsp: fsl,dsp: document debug reset control
  dt-bindings: dsp: fsl,dsp: require resets for i.MX8ULP
  remoteproc: imx_dsp_rproc: use reset controller for i.MX8ULP
  arm64: dts: imx8ulp: add HiFi4 DSP node
  arm64: dts: imx8ulp-evk: Enable HiFi4 DSP

 .../devicetree/bindings/dsp/fsl,dsp.yaml      |  4 +
 arch/arm64/boot/dts/freescale/imx8ulp-evk.dts | 34 +++++++++
 arch/arm64/boot/dts/freescale/imx8ulp.dtsi    | 23 ++++++
 drivers/remoteproc/imx_dsp_rproc.c            | 76 +++++--------------
 4 files changed, 82 insertions(+), 55 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v3 1/5] dt-bindings: dsp: fsl,dsp: document debug reset control
  2026-11-11  3:18 [PATCH v3 0/5] Enable DSP device for i.MX8ULP shengjiu.wang
@ 2026-11-11  3:18 ` shengjiu.wang
  2026-11-12 10:38   ` Krzysztof Kozlowski
  2026-11-11  3:18 ` [PATCH v3 2/5] dt-bindings: dsp: fsl,dsp: require resets for i.MX8ULP shengjiu.wang
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: shengjiu.wang @ 2026-11-11  3:18 UTC (permalink / raw)
  To: robh, krzk+dt, conor+dt, shengjiu.wang, daniel.baluta,
	devicetree, linux-kernel, andersson, mathieu.poirier, Frank.Li,
	s.hauer, kernel, festevam, p.zabel, linux-remoteproc, imx,
	linux-arm-kernel

From: Shengjiu Wang <shengjiu.wang@nxp.com>

The HiFi4 DSP provides a separate reset control for its debug logic.
Keep this reset deasserted so that an external debug agent can access
the DSP and perform debug operations.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
 Documentation/devicetree/bindings/dsp/fsl,dsp.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml b/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml
index e610b7636a08..4a75a271b7fa 100644
--- a/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml
+++ b/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml
@@ -84,12 +84,14 @@ properties:
 
   resets:
     minItems: 1
+    maxItems: 3
 
   reset-names:
     minItems: 1
     items:
       - const: runstall
       - const: softreset
+      - const: dbgreset
 
   access-controllers:
     maxItems: 1
-- 
2.34.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v3 2/5] dt-bindings: dsp: fsl,dsp: require resets for i.MX8ULP
  2026-11-11  3:18 [PATCH v3 0/5] Enable DSP device for i.MX8ULP shengjiu.wang
  2026-11-11  3:18 ` [PATCH v3 1/5] dt-bindings: dsp: fsl,dsp: document debug reset control shengjiu.wang
@ 2026-11-11  3:18 ` shengjiu.wang
  2026-11-12 10:38   ` Krzysztof Kozlowski
  2026-11-11  3:18 ` [PATCH v3 3/5] remoteproc: imx_dsp_rproc: use reset controller " shengjiu.wang
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: shengjiu.wang @ 2026-11-11  3:18 UTC (permalink / raw)
  To: robh, krzk+dt, conor+dt, shengjiu.wang, daniel.baluta,
	devicetree, linux-kernel, andersson, mathieu.poirier, Frank.Li,
	s.hauer, kernel, festevam, p.zabel, linux-remoteproc, imx,
	linux-arm-kernel

From: Shengjiu Wang <shengjiu.wang@nxp.com>

Commit e1b312356d7a ("dt-bindings: dsp: fsl,dsp: Add resets property")
introduced the reset controller interface for DSP reset handling instead
of accessing the reset control bits through syscon.

The i.MX8ULP DSP also requires reset controls for reset handling, but
they were previously missing from the binding requirements. Require the
reset properties for i.MX8ULP.

This changes the binding ABI, but the i.MX8ULP DSP has not been enabled
upstream before.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
 Documentation/devicetree/bindings/dsp/fsl,dsp.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml b/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml
index 4a75a271b7fa..2f4c8623ff21 100644
--- a/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml
+++ b/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml
@@ -185,6 +185,8 @@ allOf:
             enum:
               - fsl,imx8mp-dsp
               - fsl,imx8mp-hifi4
+              - fsl,imx8ulp-dsp
+              - fsl,imx8ulp-hifi4
     then:
       required:
         - resets
-- 
2.34.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v3 3/5] remoteproc: imx_dsp_rproc: use reset controller for i.MX8ULP
  2026-11-11  3:18 [PATCH v3 0/5] Enable DSP device for i.MX8ULP shengjiu.wang
  2026-11-11  3:18 ` [PATCH v3 1/5] dt-bindings: dsp: fsl,dsp: document debug reset control shengjiu.wang
  2026-11-11  3:18 ` [PATCH v3 2/5] dt-bindings: dsp: fsl,dsp: require resets for i.MX8ULP shengjiu.wang
@ 2026-11-11  3:18 ` shengjiu.wang
  2026-11-12 11:36   ` Daniel Baluta
  2026-11-11  3:18 ` [PATCH v3 4/5] arm64: dts: imx8ulp: add HiFi4 DSP node shengjiu.wang
  2026-11-11  3:18 ` [PATCH v3 5/5] arm64: dts: imx8ulp-evk: Enable HiFi4 DSP shengjiu.wang
  4 siblings, 1 reply; 11+ messages in thread
From: shengjiu.wang @ 2026-11-11  3:18 UTC (permalink / raw)
  To: robh, krzk+dt, conor+dt, shengjiu.wang, daniel.baluta,
	devicetree, linux-kernel, andersson, mathieu.poirier, Frank.Li,
	s.hauer, kernel, festevam, p.zabel, linux-remoteproc, imx,
	linux-arm-kernel

From: Shengjiu Wang <shengjiu.wang@nxp.com>

Add soft_rst and dbg_rst to struct imx_dsp_rproc for the softreset and
dbgreset controls defined in the DSP binding.

Update imx_dsp_rproc_reset_ctrl_detect_mode() to acquire the runstall,
softreset, and dbgreset controls. Acquire softreset and dbgreset as
optional since they are not provided by all supported DSP variants.

Update imx8ulp_dsp_reset() to use the reset controller API instead of
accessing the reset registers directly. This relies on the i.MX8ULP
SIM LPAV reset controller support added by commit 5aac7afc752b
("reset: imx8mp-audiomix: Support i.MX8ULP SIM LPAV").

Remove the MMIO reset handling, which is no longer used after switching
i.MX8ULP to the reset controller API.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
 drivers/remoteproc/imx_dsp_rproc.c | 76 +++++++++---------------------
 1 file changed, 21 insertions(+), 55 deletions(-)

diff --git a/drivers/remoteproc/imx_dsp_rproc.c b/drivers/remoteproc/imx_dsp_rproc.c
index 96d619daf3f5..0b0042525ea2 100644
--- a/drivers/remoteproc/imx_dsp_rproc.c
+++ b/drivers/remoteproc/imx_dsp_rproc.c
@@ -108,8 +108,9 @@ enum imx_dsp_rp_mbox_messages {
 
 /**
  * struct imx_dsp_rproc - DSP remote processor state
- * @regmap: regmap handler
  * @run_stall: reset control handle used for Run/Stall operation
+ * @soft_rst: reset control handle used for DSP core reset
+ * @dbg_rst: reset control handle used for DSP debug logic
  * @rproc: rproc handler
  * @dsp_dcfg: device configuration pointer
  * @clks: clocks needed by this device
@@ -125,8 +126,9 @@ enum imx_dsp_rp_mbox_messages {
  * @flags: control flags
  */
 struct imx_dsp_rproc {
-	struct regmap				*regmap;
 	struct reset_control			*run_stall;
+	struct reset_control			*soft_rst;
+	struct reset_control			*dbg_rst;
 	struct rproc				*rproc;
 	const struct imx_dsp_rproc_dcfg		*dsp_dcfg;
 	struct clk_bulk_data			clks[DSP_RPROC_CLK_MAX];
@@ -243,20 +245,15 @@ static int imx8ulp_dsp_reset(struct imx_dsp_rproc *priv)
 	struct arm_smccc_res res;
 
 	/* Put DSP into reset and stall */
-	regmap_update_bits(priv->regmap, IMX8ULP_SIM_LPAV_REG_SYSCTRL0,
-			   IMX8ULP_SYSCTRL0_DSP_RST, IMX8ULP_SYSCTRL0_DSP_RST);
-	regmap_update_bits(priv->regmap, IMX8ULP_SIM_LPAV_REG_SYSCTRL0,
-			   IMX8ULP_SYSCTRL0_DSP_STALL,
-			   IMX8ULP_SYSCTRL0_DSP_STALL);
+	reset_control_assert(priv->soft_rst);
+	reset_control_assert(priv->run_stall);
 
 	/* Configure resources of DSP through TFA */
 	arm_smccc_smc(IMX8ULP_SIP_HIFI_XRDC, 0, 0, 0, 0, 0, 0, 0, &res);
 
 	/* Take the DSP out of reset and keep stalled for FW loading */
-	regmap_update_bits(priv->regmap, IMX8ULP_SIM_LPAV_REG_SYSCTRL0,
-			   IMX8ULP_SYSCTRL0_DSP_RST, 0);
-	regmap_update_bits(priv->regmap, IMX8ULP_SIM_LPAV_REG_SYSCTRL0,
-			   IMX8ULP_SYSCTRL0_DSP_DBG_RST, 0);
+	reset_control_deassert(priv->soft_rst);
+	reset_control_deassert(priv->dbg_rst);
 
 	return 0;
 }
@@ -338,14 +335,6 @@ static int imx_dsp_rproc_handle_rsc(struct rproc *rproc, u32 rsc_type,
 	return RSC_HANDLED;
 }
 
-static int imx_dsp_rproc_mmio_start(struct rproc *rproc)
-{
-	struct imx_dsp_rproc *priv = rproc->priv;
-	const struct imx_rproc_dcfg *dcfg = priv->dsp_dcfg->dcfg;
-
-	return regmap_update_bits(priv->regmap, dcfg->src_reg, dcfg->src_mask, dcfg->src_start);
-}
-
 static int imx_dsp_rproc_reset_ctrl_start(struct rproc *rproc)
 {
 	struct imx_dsp_rproc *priv = rproc->priv;
@@ -391,14 +380,6 @@ static int imx_dsp_rproc_start(struct rproc *rproc)
 	return 0;
 }
 
-static int imx_dsp_rproc_mmio_stop(struct rproc *rproc)
-{
-	struct imx_dsp_rproc *priv = rproc->priv;
-	const struct imx_rproc_dcfg *dcfg = priv->dsp_dcfg->dcfg;
-
-	return regmap_update_bits(priv->regmap, dcfg->src_reg, dcfg->src_mask, dcfg->src_stop);
-}
-
 static int imx_dsp_rproc_reset_ctrl_stop(struct rproc *rproc)
 {
 	struct imx_dsp_rproc *priv = rproc->priv;
@@ -1024,23 +1005,6 @@ static int imx_dsp_attach_pm_domains(struct imx_dsp_rproc *priv)
 	return devm_pm_domain_attach_list(dev, NULL, &priv->pd_list);
 }
 
-static int imx_dsp_rproc_mmio_detect_mode(struct rproc *rproc)
-{
-	struct imx_dsp_rproc *priv = rproc->priv;
-	struct device *dev = rproc->dev.parent;
-	struct regmap *regmap;
-
-	regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "fsl,dsp-ctrl");
-	if (IS_ERR(regmap)) {
-		dev_err(dev, "failed to find syscon\n");
-		return PTR_ERR(regmap);
-	}
-
-	priv->regmap = regmap;
-
-	return 0;
-}
-
 static int imx_dsp_rproc_reset_ctrl_detect_mode(struct rproc *rproc)
 {
 	struct imx_dsp_rproc *priv = rproc->priv;
@@ -1052,6 +1016,18 @@ static int imx_dsp_rproc_reset_ctrl_detect_mode(struct rproc *rproc)
 		return PTR_ERR(priv->run_stall);
 	}
 
+	priv->soft_rst = devm_reset_control_get_optional_exclusive(dev, "softreset");
+	if (IS_ERR(priv->soft_rst)) {
+		dev_err(dev, "Failed to get DSP soft reset control\n");
+		return PTR_ERR(priv->soft_rst);
+	}
+
+	priv->dbg_rst = devm_reset_control_get_optional_exclusive(dev, "dbgreset");
+	if (IS_ERR(priv->dbg_rst)) {
+		dev_err(dev, "Failed to get DSP debug reset control\n");
+		return PTR_ERR(priv->dbg_rst);
+	}
+
 	return 0;
 }
 
@@ -1316,12 +1292,6 @@ static const struct dev_pm_ops imx_dsp_rproc_pm_ops = {
 	RUNTIME_PM_OPS(imx_dsp_runtime_suspend, imx_dsp_runtime_resume, NULL)
 };
 
-static const struct imx_rproc_plat_ops imx_dsp_rproc_ops_mmio = {
-	.start		= imx_dsp_rproc_mmio_start,
-	.stop		= imx_dsp_rproc_mmio_stop,
-	.detect_mode	= imx_dsp_rproc_mmio_detect_mode,
-};
-
 static const struct imx_rproc_plat_ops imx_dsp_rproc_ops_reset_ctrl = {
 	.start		= imx_dsp_rproc_reset_ctrl_start,
 	.stop		= imx_dsp_rproc_reset_ctrl_stop,
@@ -1348,13 +1318,9 @@ static const struct imx_dsp_rproc_dcfg imx_dsp_rproc_cfg_imx8mp = {
 
 /* Specific configuration for i.MX8ULP */
 static const struct imx_rproc_dcfg dsp_rproc_cfg_imx8ulp = {
-	.src_reg	= IMX8ULP_SIM_LPAV_REG_SYSCTRL0,
-	.src_mask	= IMX8ULP_SYSCTRL0_DSP_STALL,
-	.src_start	= 0,
-	.src_stop	= IMX8ULP_SYSCTRL0_DSP_STALL,
 	.att		= imx_dsp_rproc_att_imx8ulp,
 	.att_size	= ARRAY_SIZE(imx_dsp_rproc_att_imx8ulp),
-	.ops		= &imx_dsp_rproc_ops_mmio,
+	.ops		= &imx_dsp_rproc_ops_reset_ctrl,
 };
 
 static const struct imx_dsp_rproc_dcfg imx_dsp_rproc_cfg_imx8ulp = {
-- 
2.34.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v3 4/5] arm64: dts: imx8ulp: add HiFi4 DSP node
  2026-11-11  3:18 [PATCH v3 0/5] Enable DSP device for i.MX8ULP shengjiu.wang
                   ` (2 preceding siblings ...)
  2026-11-11  3:18 ` [PATCH v3 3/5] remoteproc: imx_dsp_rproc: use reset controller " shengjiu.wang
@ 2026-11-11  3:18 ` shengjiu.wang
  2026-11-12 11:35   ` Daniel Baluta
  2026-11-11  3:18 ` [PATCH v3 5/5] arm64: dts: imx8ulp-evk: Enable HiFi4 DSP shengjiu.wang
  4 siblings, 1 reply; 11+ messages in thread
From: shengjiu.wang @ 2026-11-11  3:18 UTC (permalink / raw)
  To: robh, krzk+dt, conor+dt, shengjiu.wang, daniel.baluta,
	devicetree, linux-kernel, andersson, mathieu.poirier, Frank.Li,
	s.hauer, kernel, festevam, p.zabel, linux-remoteproc, imx,
	linux-arm-kernel

From: Shengjiu Wang <shengjiu.wang@nxp.com>

Add the HiFi4 DSP node with the required registers, clocks, firmware
reference, and mailbox connections.

Keep the node disabled by default, allowing boards to enable it when
HiFi4 DSP support is needed.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
index 777b89ed6849..9da690b5e03d 100644
--- a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
@@ -8,6 +8,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/power/imx8ulp-power.h>
+#include <dt-bindings/reset/fsl,imx8ulp-sim-lpav.h>
 #include <dt-bindings/thermal/thermal.h>
 
 #include "imx8ulp-pinfunc.h"
@@ -200,6 +201,28 @@ soc: soc@0 {
 		ranges = <0x0 0x0 0x0 0x40000000>,
 			 <0x60000000 0x0 0x60000000 0x1000000>;
 
+		dsp: dsp@21170000 {
+			compatible = "fsl,imx8ulp-hifi4";
+			reg = <0x21170000 0x20000>;
+			clocks = <&sim_lpav IMX8ULP_CLK_SIM_LPAV_HIFI_PBCLK>,
+				 <&sim_lpav IMX8ULP_CLK_SIM_LPAV_HIFI_PLAT>,
+				 <&sim_lpav IMX8ULP_CLK_SIM_LPAV_HIFI_CORE>,
+				 <&cgc1 IMX8ULP_CLK_DUMMY>,
+				 <&pcc5 IMX8ULP_CLK_MU3_B>;
+			clock-names = "ipg", "ocram", "core", "debug", "mu";
+			firmware-name = "imx/dsp/hifi4.bin";
+			mboxes = <&mu3 0 0>,
+				 <&mu3 1 0>,
+				 <&mu3 3 0>;
+			mbox-names = "tx", "rx", "rxdb";
+			power-domains = <&scmi_devpd IMX8ULP_PD_HIFI4>;
+			resets = <&sim_lpav IMX8ULP_SIM_LPAV_HIFI4_DSP_STALL>,
+				 <&sim_lpav IMX8ULP_SIM_LPAV_HIFI4_DSP_RST>,
+				 <&sim_lpav IMX8ULP_SIM_LPAV_HIFI4_DSP_DBG_RST>;
+			reset-names = "runstall", "softreset", "dbgreset";
+			status = "disabled";
+		};
+
 		s4muap: mailbox@27020000 {
 			compatible = "fsl,imx8ulp-mu-s4";
 			reg = <0x27020000 0x10000>;
-- 
2.34.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v3 5/5] arm64: dts: imx8ulp-evk: Enable HiFi4 DSP
  2026-11-11  3:18 [PATCH v3 0/5] Enable DSP device for i.MX8ULP shengjiu.wang
                   ` (3 preceding siblings ...)
  2026-11-11  3:18 ` [PATCH v3 4/5] arm64: dts: imx8ulp: add HiFi4 DSP node shengjiu.wang
@ 2026-11-11  3:18 ` shengjiu.wang
  2026-11-12 11:35   ` Daniel Baluta
  4 siblings, 1 reply; 11+ messages in thread
From: shengjiu.wang @ 2026-11-11  3:18 UTC (permalink / raw)
  To: robh, krzk+dt, conor+dt, shengjiu.wang, daniel.baluta,
	devicetree, linux-kernel, andersson, mathieu.poirier, Frank.Li,
	s.hauer, kernel, festevam, p.zabel, linux-remoteproc, imx,
	linux-arm-kernel

From: Shengjiu Wang <shengjiu.wang@nxp.com>

Configure the HiFi4 DSP clocks and memory regions, including the
vdev0vring0, vdev0vring1, vdev0buffer, and dsp_reserved regions.

Enable MU3, which provides the mailbox used for communication with
the DSP, and enable the HiFi4 DSP.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8ulp-evk.dts | 34 +++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8ulp-evk.dts b/arch/arm64/boot/dts/freescale/imx8ulp-evk.dts
index 4e19847f240a..f7f5577c0f94 100644
--- a/arch/arm64/boot/dts/freescale/imx8ulp-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8ulp-evk.dts
@@ -60,6 +60,27 @@ rsc_table: rsc-table@20000000 {
 			no-map;
 		};
 
+		dsp_reserved: memory@8e000000 {
+			reg = <0 0x8e000000 0 0x1000000>;
+			no-map;
+		};
+
+		dsp_vdev0vring0: vdev0vring0@8fef0000 {
+			reg = <0 0x8fef0000 0 0x8000>;
+			no-map;
+		};
+
+		dsp_vdev0vring1: vdev0vring1@8fef8000 {
+			reg = <0 0x8fef8000 0 0x8000>;
+			no-map;
+		};
+
+		dsp_vdev0buffer: vdev0buffer@8ff00000 {
+			compatible = "shared-dma-pool";
+			reg = <0 0x8ff00000 0 0x100000>;
+			no-map;
+		};
+
 		vdev0vring0: vdev0vring0@aff00000 {
 			reg = <0 0xaff00000 0 0x8000>;
 			no-map;
@@ -144,6 +165,15 @@ &cm33 {
 	status = "okay";
 };
 
+&dsp {
+	assigned-clocks = <&cgc2 IMX8ULP_CLK_HIFI_SEL>, <&cgc2 IMX8ULP_CLK_HIFI_DIVCORE>;
+	assigned-clock-parents = <&cgc2 IMX8ULP_CLK_PLL4_PFD0>;
+	assigned-clock-rates = <0>, <475200000>;
+	memory-region = <&dsp_vdev0buffer>, <&dsp_vdev0vring0>,
+			<&dsp_vdev0vring1>, <&dsp_reserved>;
+	status = "okay";
+};
+
 &flexspi2 {
 	pinctrl-names = "default", "sleep";
 	pinctrl-0 = <&pinctrl_flexspi2_ptd>;
@@ -320,6 +350,10 @@ &mu {
 	status = "okay";
 };
 
+&mu3 {
+	status = "okay";
+};
+
 &iomuxc1 {
 	pinctrl_enet: enetgrp {
 		fsl,pins = <
-- 
2.34.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 1/5] dt-bindings: dsp: fsl,dsp: document debug reset control
  2026-11-11  3:18 ` [PATCH v3 1/5] dt-bindings: dsp: fsl,dsp: document debug reset control shengjiu.wang
@ 2026-11-12 10:38   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-12 10:38 UTC (permalink / raw)
  To: shengjiu.wang
  Cc: robh, krzk+dt, conor+dt, shengjiu.wang, daniel.baluta,
	devicetree, linux-kernel, andersson, mathieu.poirier, Frank.Li,
	s.hauer, kernel, festevam, p.zabel, linux-remoteproc, imx,
	linux-arm-kernel

On Wed, Nov 11, 2026 at 11:18:04AM +0800, shengjiu.wang@oss.nxp.com wrote:
> From: Shengjiu Wang <shengjiu.wang@nxp.com>
> 
> The HiFi4 DSP provides a separate reset control for its debug logic.
> Keep this reset deasserted so that an external debug agent can access
> the DSP and perform debug operations.
> 
> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
> ---
>  Documentation/devicetree/bindings/dsp/fsl,dsp.yaml | 2 ++
>  1 file changed, 2 insertions(+)

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 2/5] dt-bindings: dsp: fsl,dsp: require resets for i.MX8ULP
  2026-11-11  3:18 ` [PATCH v3 2/5] dt-bindings: dsp: fsl,dsp: require resets for i.MX8ULP shengjiu.wang
@ 2026-11-12 10:38   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-12 10:38 UTC (permalink / raw)
  To: shengjiu.wang
  Cc: robh, krzk+dt, conor+dt, shengjiu.wang, daniel.baluta,
	devicetree, linux-kernel, andersson, mathieu.poirier, Frank.Li,
	s.hauer, kernel, festevam, p.zabel, linux-remoteproc, imx,
	linux-arm-kernel

On Wed, Nov 11, 2026 at 11:18:05AM +0800, shengjiu.wang@oss.nxp.com wrote:
> From: Shengjiu Wang <shengjiu.wang@nxp.com>
> 
> Commit e1b312356d7a ("dt-bindings: dsp: fsl,dsp: Add resets property")
> introduced the reset controller interface for DSP reset handling instead
> of accessing the reset control bits through syscon.
> 
> The i.MX8ULP DSP also requires reset controls for reset handling, but
> they were previously missing from the binding requirements. Require the
> reset properties for i.MX8ULP.
> 
> This changes the binding ABI, but the i.MX8ULP DSP has not been enabled
> upstream before.
> 
> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
> ---
>  Documentation/devicetree/bindings/dsp/fsl,dsp.yaml | 2 ++
>  1 file changed, 2 insertions(+)

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 5/5] arm64: dts: imx8ulp-evk: Enable HiFi4 DSP
  2026-11-11  3:18 ` [PATCH v3 5/5] arm64: dts: imx8ulp-evk: Enable HiFi4 DSP shengjiu.wang
@ 2026-11-12 11:35   ` Daniel Baluta
  0 siblings, 0 replies; 11+ messages in thread
From: Daniel Baluta @ 2026-11-12 11:35 UTC (permalink / raw)
  To: shengjiu.wang, robh, krzk+dt, conor+dt, shengjiu.wang,
	daniel.baluta, devicetree, linux-kernel, andersson,
	mathieu.poirier, Frank.Li, s.hauer, kernel, festevam, p.zabel,
	linux-remoteproc, imx, linux-arm-kernel

On 11/11/26 05:18, shengjiu.wang@oss.nxp.com wrote:
> From: Shengjiu Wang <shengjiu.wang@nxp.com>
> 
> Configure the HiFi4 DSP clocks and memory regions, including the
> vdev0vring0, vdev0vring1, vdev0buffer, and dsp_reserved regions.
> 
> Enable MU3, which provides the mailbox used for communication with
> the DSP, and enable the HiFi4 DSP.
> 
> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>


Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 4/5] arm64: dts: imx8ulp: add HiFi4 DSP node
  2026-11-11  3:18 ` [PATCH v3 4/5] arm64: dts: imx8ulp: add HiFi4 DSP node shengjiu.wang
@ 2026-11-12 11:35   ` Daniel Baluta
  0 siblings, 0 replies; 11+ messages in thread
From: Daniel Baluta @ 2026-11-12 11:35 UTC (permalink / raw)
  To: shengjiu.wang, robh, krzk+dt, conor+dt, shengjiu.wang,
	daniel.baluta, devicetree, linux-kernel, andersson,
	mathieu.poirier, Frank.Li, s.hauer, kernel, festevam, p.zabel,
	linux-remoteproc, imx, linux-arm-kernel

On 11/11/26 05:18, shengjiu.wang@oss.nxp.com wrote:
> From: Shengjiu Wang <shengjiu.wang@nxp.com>
> 
> Add the HiFi4 DSP node with the required registers, clocks, firmware
> reference, and mailbox connections.
> 
> Keep the node disabled by default, allowing boards to enable it when
> HiFi4 DSP support is needed.
> 
> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>


Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 3/5] remoteproc: imx_dsp_rproc: use reset controller for i.MX8ULP
  2026-11-11  3:18 ` [PATCH v3 3/5] remoteproc: imx_dsp_rproc: use reset controller " shengjiu.wang
@ 2026-11-12 11:36   ` Daniel Baluta
  0 siblings, 0 replies; 11+ messages in thread
From: Daniel Baluta @ 2026-11-12 11:36 UTC (permalink / raw)
  To: shengjiu.wang, robh, krzk+dt, conor+dt, shengjiu.wang,
	daniel.baluta, devicetree, linux-kernel, andersson,
	mathieu.poirier, Frank.Li, s.hauer, kernel, festevam, p.zabel,
	linux-remoteproc, imx, linux-arm-kernel

On 11/11/26 05:18, shengjiu.wang@oss.nxp.com wrote:
> From: Shengjiu Wang <shengjiu.wang@nxp.com>
> 
> Add soft_rst and dbg_rst to struct imx_dsp_rproc for the softreset and
> dbgreset controls defined in the DSP binding.
> 
> Update imx_dsp_rproc_reset_ctrl_detect_mode() to acquire the runstall,
> softreset, and dbgreset controls. Acquire softreset and dbgreset as
> optional since they are not provided by all supported DSP variants.
> 
> Update imx8ulp_dsp_reset() to use the reset controller API instead of
> accessing the reset registers directly. This relies on the i.MX8ULP
> SIM LPAV reset controller support added by commit 5aac7afc752b
> ("reset: imx8mp-audiomix: Support i.MX8ULP SIM LPAV").
> 
> Remove the MMIO reset handling, which is no longer used after switching
> i.MX8ULP to the reset controller API.
> 
> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>

Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2026-11-12 11:32 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-11  3:18 [PATCH v3 0/5] Enable DSP device for i.MX8ULP shengjiu.wang
2026-11-11  3:18 ` [PATCH v3 1/5] dt-bindings: dsp: fsl,dsp: document debug reset control shengjiu.wang
2026-11-12 10:38   ` Krzysztof Kozlowski
2026-11-11  3:18 ` [PATCH v3 2/5] dt-bindings: dsp: fsl,dsp: require resets for i.MX8ULP shengjiu.wang
2026-11-12 10:38   ` Krzysztof Kozlowski
2026-11-11  3:18 ` [PATCH v3 3/5] remoteproc: imx_dsp_rproc: use reset controller " shengjiu.wang
2026-11-12 11:36   ` Daniel Baluta
2026-11-11  3:18 ` [PATCH v3 4/5] arm64: dts: imx8ulp: add HiFi4 DSP node shengjiu.wang
2026-11-12 11:35   ` Daniel Baluta
2026-11-11  3:18 ` [PATCH v3 5/5] arm64: dts: imx8ulp-evk: Enable HiFi4 DSP shengjiu.wang
2026-11-12 11:35   ` Daniel Baluta

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®