Message ID | 20230116225343.26336-1-iuliana.prodan@oss.nxp.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | remoteproc: imx_dsp_rproc: add module parameter to ignore ready flag from remote processor | expand |
> > There are cases when we want to test a simple "hello world" > application on the DSP and we don't have IPC between the cores. > Therefore, skip the wait for remote processor to start. > > Added "ignoreready" flag while inserting the module to ignore remote > processor reply after start. > By default, this is off - do not ignore reply from rproc. > > Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com> > --- > drivers/remoteproc/imx_dsp_rproc.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/remoteproc/imx_dsp_rproc.c > b/drivers/remoteproc/imx_dsp_rproc.c > index 95da1cbefacf..ec298f8b019f 100644 > --- a/drivers/remoteproc/imx_dsp_rproc.c > +++ b/drivers/remoteproc/imx_dsp_rproc.c > @@ -26,9 +26,20 @@ > #include "remoteproc_elf_helpers.h" > #include "remoteproc_internal.h" > > +#define IMX_DSP_IGNORE_REMOTE_READY 0 > + > +/* > + * Module parameters > + */ > +static unsigned int imx_dsp_rproc_ignoreready = > +IMX_DSP_IGNORE_REMOTE_READY; module_param_named(ignoreready, > +imx_dsp_rproc_ignoreready, int, 0644); MODULE_PARM_DESC(ignoreready, > + "Ignore remote proc reply after start, default is 0 (off)."); > + > #define DSP_RPROC_CLK_MAX 5 > > #define REMOTE_IS_READY BIT(0) > +#define REMOTE_SKIP_WAIT BIT(31) Can we use a close bit with REMOTE_IS_READY, like BIT(1)? Best regards Wang Shengjiu > #define REMOTE_READY_WAIT_MAX_RETRIES 500 > > /* att flags */ > @@ -285,6 +296,9 @@ static int imx_dsp_rproc_ready(struct rproc *rproc) > if (!priv->rxdb_ch) > return 0; > > + if (priv->flags & REMOTE_SKIP_WAIT) > + return 0; > + > for (i = 0; i < REMOTE_READY_WAIT_MAX_RETRIES; i++) { > if (priv->flags & REMOTE_IS_READY) > return 0; > @@ -903,6 +917,9 @@ static int imx_dsp_rproc_probe(struct > platform_device *pdev) > priv->rproc = rproc; > priv->dsp_dcfg = dsp_dcfg; > > + if (imx_dsp_rproc_ignoreready) > + priv->flags |= REMOTE_SKIP_WAIT; > + > dev_set_drvdata(dev, rproc); > > INIT_WORK(&priv->rproc_work, imx_dsp_rproc_vq_work); > -- > 2.17.1
On 1/17/2023 9:36 AM, S.J. Wang wrote: >> There are cases when we want to test a simple "hello world" >> application on the DSP and we don't have IPC between the cores. >> Therefore, skip the wait for remote processor to start. >> >> Added "ignoreready" flag while inserting the module to ignore remote >> processor reply after start. >> By default, this is off - do not ignore reply from rproc. >> >> Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com> >> --- >> drivers/remoteproc/imx_dsp_rproc.c | 17 +++++++++++++++++ >> 1 file changed, 17 insertions(+) >> >> diff --git a/drivers/remoteproc/imx_dsp_rproc.c >> b/drivers/remoteproc/imx_dsp_rproc.c >> index 95da1cbefacf..ec298f8b019f 100644 >> --- a/drivers/remoteproc/imx_dsp_rproc.c >> +++ b/drivers/remoteproc/imx_dsp_rproc.c >> @@ -26,9 +26,20 @@ >> #include "remoteproc_elf_helpers.h" >> #include "remoteproc_internal.h" >> >> +#define IMX_DSP_IGNORE_REMOTE_READY 0 >> + >> +/* >> + * Module parameters >> + */ >> +static unsigned int imx_dsp_rproc_ignoreready = >> +IMX_DSP_IGNORE_REMOTE_READY; module_param_named(ignoreready, >> +imx_dsp_rproc_ignoreready, int, 0644); MODULE_PARM_DESC(ignoreready, >> + "Ignore remote proc reply after start, default is 0 (off)."); >> + >> #define DSP_RPROC_CLK_MAX 5 >> >> #define REMOTE_IS_READY BIT(0) >> +#define REMOTE_SKIP_WAIT BIT(31) > Can we use a close bit with REMOTE_IS_READY, like BIT(1)? Sure, I'll send a v2. Thanks, Iulia
On Tue, Jan 17, 2023 at 1:21 AM Iuliana Prodan (OSS) <iuliana.prodan@oss.nxp.com> wrote: > > From: Iuliana Prodan <iuliana.prodan@nxp.com> > > There are cases when we want to test a simple "hello world" > application on the DSP and we don't have IPC between the cores. > Therefore, skip the wait for remote processor to start. > > Added "ignoreready" flag while inserting the module to ignore > remote processor reply after start. > By default, this is off - do not ignore reply from rproc. I think that ignore_dsp_ready would be a clearer name flag.
On 1/17/2023 11:28 AM, Daniel Baluta wrote: > On Tue, Jan 17, 2023 at 1:21 AM Iuliana Prodan (OSS) > <iuliana.prodan@oss.nxp.com> wrote: >> From: Iuliana Prodan <iuliana.prodan@nxp.com> >> >> There are cases when we want to test a simple "hello world" >> application on the DSP and we don't have IPC between the cores. >> Therefore, skip the wait for remote processor to start. >> >> Added "ignoreready" flag while inserting the module to ignore >> remote processor reply after start. >> By default, this is off - do not ignore reply from rproc. > I think that ignore_dsp_ready would be a clearer name flag. Done, I've sent a v3. Thanks, Iulia
diff --git a/drivers/remoteproc/imx_dsp_rproc.c b/drivers/remoteproc/imx_dsp_rproc.c index 95da1cbefacf..ec298f8b019f 100644 --- a/drivers/remoteproc/imx_dsp_rproc.c +++ b/drivers/remoteproc/imx_dsp_rproc.c @@ -26,9 +26,20 @@ #include "remoteproc_elf_helpers.h" #include "remoteproc_internal.h" +#define IMX_DSP_IGNORE_REMOTE_READY 0 + +/* + * Module parameters + */ +static unsigned int imx_dsp_rproc_ignoreready = IMX_DSP_IGNORE_REMOTE_READY; +module_param_named(ignoreready, imx_dsp_rproc_ignoreready, int, 0644); +MODULE_PARM_DESC(ignoreready, + "Ignore remote proc reply after start, default is 0 (off)."); + #define DSP_RPROC_CLK_MAX 5 #define REMOTE_IS_READY BIT(0) +#define REMOTE_SKIP_WAIT BIT(31) #define REMOTE_READY_WAIT_MAX_RETRIES 500 /* att flags */ @@ -285,6 +296,9 @@ static int imx_dsp_rproc_ready(struct rproc *rproc) if (!priv->rxdb_ch) return 0; + if (priv->flags & REMOTE_SKIP_WAIT) + return 0; + for (i = 0; i < REMOTE_READY_WAIT_MAX_RETRIES; i++) { if (priv->flags & REMOTE_IS_READY) return 0; @@ -903,6 +917,9 @@ static int imx_dsp_rproc_probe(struct platform_device *pdev) priv->rproc = rproc; priv->dsp_dcfg = dsp_dcfg; + if (imx_dsp_rproc_ignoreready) + priv->flags |= REMOTE_SKIP_WAIT; + dev_set_drvdata(dev, rproc); INIT_WORK(&priv->rproc_work, imx_dsp_rproc_vq_work);