* [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* 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
* [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* 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
* [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* 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
* [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* 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
* [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 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