linux-remoteproc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] remoteproc: imx_rproc: enlarge IMX7D_RPROC_MEM_MAX
@ 2021-03-19 10:47 Peng Fan (OSS)
  2021-03-19 10:47 ` [PATCH 2/2] remoteproc: imx_rproc: support remote cores booted before Linux Kernel Peng Fan (OSS)
  2021-03-25 23:00 ` [PATCH 1/2] remoteproc: imx_rproc: enlarge IMX7D_RPROC_MEM_MAX Mathieu Poirier
  0 siblings, 2 replies; 5+ messages in thread
From: Peng Fan (OSS) @ 2021-03-19 10:47 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel
  Cc: shawnguo, s.hauer, kernel, festevam, linux-imx, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

8 is not enough when we need more, so enlarge IMX7D_RPROC_MEM_MAX to 32,
and also rename it to IMX_RPROC_MEM_MAX which make more sense.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/remoteproc/imx_rproc.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 6d3207ccbaef..24275429a7cc 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -48,7 +48,7 @@
 					 | IMX6SX_SW_M4C_NON_SCLR_RST \
 					 | IMX6SX_SW_M4C_RST)
 
-#define IMX7D_RPROC_MEM_MAX		8
+#define IMX_RPROC_MEM_MAX		32
 
 /**
  * struct imx_rproc_mem - slim internal memory structure
@@ -88,7 +88,7 @@ struct imx_rproc {
 	struct regmap			*regmap;
 	struct rproc			*rproc;
 	const struct imx_rproc_dcfg	*dcfg;
-	struct imx_rproc_mem		mem[IMX7D_RPROC_MEM_MAX];
+	struct imx_rproc_mem		mem[IMX_RPROC_MEM_MAX];
 	struct clk			*clk;
 	struct mbox_client		cl;
 	struct mbox_chan		*tx_ch;
@@ -272,7 +272,7 @@ static void *imx_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *i
 	if (imx_rproc_da_to_sys(priv, da, len, &sys))
 		return NULL;
 
-	for (i = 0; i < IMX7D_RPROC_MEM_MAX; i++) {
+	for (i = 0; i < IMX_RPROC_MEM_MAX; i++) {
 		if (sys >= priv->mem[i].sys_addr && sys + len <
 		    priv->mem[i].sys_addr +  priv->mem[i].size) {
 			unsigned int offset = sys - priv->mem[i].sys_addr;
@@ -425,7 +425,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
 		if (!(att->flags & ATT_OWN))
 			continue;
 
-		if (b >= IMX7D_RPROC_MEM_MAX)
+		if (b >= IMX_RPROC_MEM_MAX)
 			break;
 
 		priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev,
@@ -459,7 +459,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
 			return err;
 		}
 
-		if (b >= IMX7D_RPROC_MEM_MAX)
+		if (b >= IMX_RPROC_MEM_MAX)
 			break;
 
 		/* Not use resource version, because we might share region */
-- 
2.30.0


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

* [PATCH 2/2] remoteproc: imx_rproc: support remote cores booted before Linux Kernel
  2021-03-19 10:47 [PATCH 1/2] remoteproc: imx_rproc: enlarge IMX7D_RPROC_MEM_MAX Peng Fan (OSS)
@ 2021-03-19 10:47 ` Peng Fan (OSS)
  2021-03-25 23:58   ` Mathieu Poirier
  2021-03-25 23:00 ` [PATCH 1/2] remoteproc: imx_rproc: enlarge IMX7D_RPROC_MEM_MAX Mathieu Poirier
  1 sibling, 1 reply; 5+ messages in thread
From: Peng Fan (OSS) @ 2021-03-19 10:47 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel
  Cc: shawnguo, s.hauer, kernel, festevam, linux-imx, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Support remote cores booted before Linux Kernel booting.

Add rsc_table to hold the resource table published by remote cores
Add attach hook
Add imx_rproc_detect_mode to detect remote cores' working mode, and if
remote cores are booted before booting Linux Kernel, parse the memory
regions and initialize the table_ptr, table_sz, cached_table.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/remoteproc/imx_rproc.c | 64 ++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 24275429a7cc..fdaaf7599cc8 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -74,6 +74,16 @@ struct imx_rproc_att {
 	int flags;
 };
 
+enum imx_rproc_mode {
+	/* Linux load/kick remote core */
+	IMX_RPROC_NORMAL,
+	/*
+	 * remote core booted before kicking Linux, and remote core
+	 * could be stopped & restarted by Linux
+	 */
+	IMX_RPROC_EARLY_BOOT,
+};
+
 struct imx_rproc_dcfg {
 	u32				src_reg;
 	u32				src_mask;
@@ -95,6 +105,8 @@ struct imx_rproc {
 	struct mbox_chan		*rx_ch;
 	struct work_struct		rproc_work;
 	struct workqueue_struct		*workqueue;
+	enum imx_rproc_mode		mode;
+	void __iomem			*rsc_table;
 };
 
 static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
@@ -229,6 +241,9 @@ static int imx_rproc_stop(struct rproc *rproc)
 	if (ret)
 		dev_err(dev, "Failed to stop M4!\n");
 
+	if (priv->mode == IMX_RPROC_EARLY_BOOT)
+		priv->mode = IMX_RPROC_NORMAL;
+
 	return ret;
 }
 
@@ -398,9 +413,15 @@ static void imx_rproc_kick(struct rproc *rproc, int vqid)
 			__func__, vqid, err);
 }
 
+static int imx_rproc_attach(struct rproc *rproc)
+{
+	return 0;
+}
+
 static const struct rproc_ops imx_rproc_ops = {
 	.start		= imx_rproc_start,
 	.stop		= imx_rproc_stop,
+	.attach		= imx_rproc_attach,
 	.kick		= imx_rproc_kick,
 	.da_to_va       = imx_rproc_da_to_va,
 	.load		= rproc_elf_load_segments,
@@ -470,6 +491,8 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
 		}
 		priv->mem[b].sys_addr = res.start;
 		priv->mem[b].size = resource_size(&res);
+		if (!strcmp(node->name, "rsc_table"))
+			priv->rsc_table = priv->mem[b].cpu_addr;
 		b++;
 	}
 
@@ -536,6 +559,43 @@ static void imx_rproc_free_mbox(struct rproc *rproc)
 	mbox_free_channel(priv->rx_ch);
 }
 
+static int imx_rproc_detect_mode(struct imx_rproc *priv)
+{
+	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
+	struct rproc *rproc = priv->rproc;
+	struct device *dev = priv->dev;
+	int ret;
+	u32 val;
+
+	ret = regmap_read(priv->regmap, dcfg->src_reg, &val);
+	if (ret) {
+		dev_err(dev, "Failed to read src\n");
+		return ret;
+	}
+
+	if (!(val & dcfg->src_stop))
+		priv->mode = IMX_RPROC_EARLY_BOOT;
+	else
+		priv->mode = IMX_RPROC_NORMAL;
+
+	if (priv->mode == IMX_RPROC_EARLY_BOOT) {
+		priv->rproc->state = RPROC_DETACHED;
+
+		ret = imx_rproc_parse_memory_regions(priv->rproc);
+		if (ret)
+			return ret;
+
+		if (!priv->rsc_table)
+			return 0;
+
+		rproc->table_ptr = (struct resource_table *)priv->rsc_table;
+		rproc->table_sz = SZ_1K;
+		rproc->cached_table = NULL;
+	}
+
+	return 0;
+}
+
 static int imx_rproc_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -590,6 +650,10 @@ static int imx_rproc_probe(struct platform_device *pdev)
 		goto err_put_mbox;
 	}
 
+	ret = imx_rproc_detect_mode(priv);
+	if (ret)
+		goto err_put_mbox;
+
 	priv->clk = devm_clk_get(dev, NULL);
 	if (IS_ERR(priv->clk)) {
 		dev_err(dev, "Failed to get clock\n");
-- 
2.30.0


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

* Re: [PATCH 1/2] remoteproc: imx_rproc: enlarge IMX7D_RPROC_MEM_MAX
  2021-03-19 10:47 [PATCH 1/2] remoteproc: imx_rproc: enlarge IMX7D_RPROC_MEM_MAX Peng Fan (OSS)
  2021-03-19 10:47 ` [PATCH 2/2] remoteproc: imx_rproc: support remote cores booted before Linux Kernel Peng Fan (OSS)
@ 2021-03-25 23:00 ` Mathieu Poirier
  2021-03-25 23:23   ` Mathieu Poirier
  1 sibling, 1 reply; 5+ messages in thread
From: Mathieu Poirier @ 2021-03-25 23:00 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: ohad, bjorn.andersson, o.rempel, shawnguo, s.hauer, kernel,
	festevam, linux-imx, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

Hi Peng,

On Fri, Mar 19, 2021 at 06:47:07PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> 8 is not enough when we need more, so enlarge IMX7D_RPROC_MEM_MAX to 32,
> and also rename it to IMX_RPROC_MEM_MAX which make more sense.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/remoteproc/imx_rproc.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 6d3207ccbaef..24275429a7cc 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -48,7 +48,7 @@
>  					 | IMX6SX_SW_M4C_NON_SCLR_RST \
>  					 | IMX6SX_SW_M4C_RST)
>  
> -#define IMX7D_RPROC_MEM_MAX		8
> +#define IMX_RPROC_MEM_MAX		32

The size of structure imx_rproc_att_imx7d and imx_rproc_att_imx6sx have
not changed nor has there been an addition of new imx_rproc_att that would
justify the change.

It seems to me you are working on something internally and this patch is in
preparation for that.  If that is the case then please resubmit this patch with
the rest of the code.

Thanks,
Mathieu 

>  
>  /**
>   * struct imx_rproc_mem - slim internal memory structure
> @@ -88,7 +88,7 @@ struct imx_rproc {
>  	struct regmap			*regmap;
>  	struct rproc			*rproc;
>  	const struct imx_rproc_dcfg	*dcfg;
> -	struct imx_rproc_mem		mem[IMX7D_RPROC_MEM_MAX];
> +	struct imx_rproc_mem		mem[IMX_RPROC_MEM_MAX];
>  	struct clk			*clk;
>  	struct mbox_client		cl;
>  	struct mbox_chan		*tx_ch;
> @@ -272,7 +272,7 @@ static void *imx_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *i
>  	if (imx_rproc_da_to_sys(priv, da, len, &sys))
>  		return NULL;
>  
> -	for (i = 0; i < IMX7D_RPROC_MEM_MAX; i++) {
> +	for (i = 0; i < IMX_RPROC_MEM_MAX; i++) {
>  		if (sys >= priv->mem[i].sys_addr && sys + len <
>  		    priv->mem[i].sys_addr +  priv->mem[i].size) {
>  			unsigned int offset = sys - priv->mem[i].sys_addr;
> @@ -425,7 +425,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
>  		if (!(att->flags & ATT_OWN))
>  			continue;
>  
> -		if (b >= IMX7D_RPROC_MEM_MAX)
> +		if (b >= IMX_RPROC_MEM_MAX)
>  			break;
>  
>  		priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev,
> @@ -459,7 +459,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
>  			return err;
>  		}
>  
> -		if (b >= IMX7D_RPROC_MEM_MAX)
> +		if (b >= IMX_RPROC_MEM_MAX)
>  			break;
>  
>  		/* Not use resource version, because we might share region */
> -- 
> 2.30.0
> 

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

* Re: [PATCH 1/2] remoteproc: imx_rproc: enlarge IMX7D_RPROC_MEM_MAX
  2021-03-25 23:00 ` [PATCH 1/2] remoteproc: imx_rproc: enlarge IMX7D_RPROC_MEM_MAX Mathieu Poirier
@ 2021-03-25 23:23   ` Mathieu Poirier
  0 siblings, 0 replies; 5+ messages in thread
From: Mathieu Poirier @ 2021-03-25 23:23 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: ohad, bjorn.andersson, o.rempel, shawnguo, s.hauer, kernel,
	festevam, linux-imx, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

On Thu, Mar 25, 2021 at 05:00:42PM -0600, Mathieu Poirier wrote:
> Hi Peng,
> 
> On Fri, Mar 19, 2021 at 06:47:07PM +0800, Peng Fan (OSS) wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> > 
> > 8 is not enough when we need more, so enlarge IMX7D_RPROC_MEM_MAX to 32,
> > and also rename it to IMX_RPROC_MEM_MAX which make more sense.
> > 
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >  drivers/remoteproc/imx_rproc.c | 10 +++++-----
> >  1 file changed, 5 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> > index 6d3207ccbaef..24275429a7cc 100644
> > --- a/drivers/remoteproc/imx_rproc.c
> > +++ b/drivers/remoteproc/imx_rproc.c
> > @@ -48,7 +48,7 @@
> >  					 | IMX6SX_SW_M4C_NON_SCLR_RST \
> >  					 | IMX6SX_SW_M4C_RST)
> >  
> > -#define IMX7D_RPROC_MEM_MAX		8
> > +#define IMX_RPROC_MEM_MAX		32
> 
> The size of structure imx_rproc_att_imx7d and imx_rproc_att_imx6sx have
> not changed nor has there been an addition of new imx_rproc_att that would
> justify the change.
> 
> It seems to me you are working on something internally and this patch is in
> preparation for that.  If that is the case then please resubmit this patch with
> the rest of the code.

Reviewing the other patch in this set [1], I understand why the extension is
needed.  Without a cover letter I assume the patches were not related.  Next
time please add one so that I know exactly what is going on.  Adding a line in
the changelog that explains why it is needed, i.e for the resource table, would
also be helpful.

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

[1]. remoteproc: imx_rproc: support remote cores booted before Linux Kernel

> 
> Thanks,
> Mathieu 
> 
> >  
> >  /**
> >   * struct imx_rproc_mem - slim internal memory structure
> > @@ -88,7 +88,7 @@ struct imx_rproc {
> >  	struct regmap			*regmap;
> >  	struct rproc			*rproc;
> >  	const struct imx_rproc_dcfg	*dcfg;
> > -	struct imx_rproc_mem		mem[IMX7D_RPROC_MEM_MAX];
> > +	struct imx_rproc_mem		mem[IMX_RPROC_MEM_MAX];
> >  	struct clk			*clk;
> >  	struct mbox_client		cl;
> >  	struct mbox_chan		*tx_ch;
> > @@ -272,7 +272,7 @@ static void *imx_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *i
> >  	if (imx_rproc_da_to_sys(priv, da, len, &sys))
> >  		return NULL;
> >  
> > -	for (i = 0; i < IMX7D_RPROC_MEM_MAX; i++) {
> > +	for (i = 0; i < IMX_RPROC_MEM_MAX; i++) {
> >  		if (sys >= priv->mem[i].sys_addr && sys + len <
> >  		    priv->mem[i].sys_addr +  priv->mem[i].size) {
> >  			unsigned int offset = sys - priv->mem[i].sys_addr;
> > @@ -425,7 +425,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
> >  		if (!(att->flags & ATT_OWN))
> >  			continue;
> >  
> > -		if (b >= IMX7D_RPROC_MEM_MAX)
> > +		if (b >= IMX_RPROC_MEM_MAX)
> >  			break;
> >  
> >  		priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev,
> > @@ -459,7 +459,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
> >  			return err;
> >  		}
> >  
> > -		if (b >= IMX7D_RPROC_MEM_MAX)
> > +		if (b >= IMX_RPROC_MEM_MAX)
> >  			break;
> >  
> >  		/* Not use resource version, because we might share region */
> > -- 
> > 2.30.0
> > 

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

* Re: [PATCH 2/2] remoteproc: imx_rproc: support remote cores booted before Linux Kernel
  2021-03-19 10:47 ` [PATCH 2/2] remoteproc: imx_rproc: support remote cores booted before Linux Kernel Peng Fan (OSS)
@ 2021-03-25 23:58   ` Mathieu Poirier
  0 siblings, 0 replies; 5+ messages in thread
From: Mathieu Poirier @ 2021-03-25 23:58 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: ohad, bjorn.andersson, o.rempel, shawnguo, s.hauer, kernel,
	festevam, linux-imx, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

On Fri, Mar 19, 2021 at 06:47:08PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Support remote cores booted before Linux Kernel booting.
> 
> Add rsc_table to hold the resource table published by remote cores
> Add attach hook

Missing a period "." and a new line between the paragraphs.

> Add imx_rproc_detect_mode to detect remote cores' working mode, and if
> remote cores are booted before booting Linux Kernel, parse the memory
> regions and initialize the table_ptr, table_sz, cached_table.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/remoteproc/imx_rproc.c | 64 ++++++++++++++++++++++++++++++++++
>  1 file changed, 64 insertions(+)
> 
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 24275429a7cc..fdaaf7599cc8 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -74,6 +74,16 @@ struct imx_rproc_att {
>  	int flags;
>  };
>  
> +enum imx_rproc_mode {
> +	/* Linux load/kick remote core */
> +	IMX_RPROC_NORMAL,
> +	/*
> +	 * remote core booted before kicking Linux, and remote core
> +	 * could be stopped & restarted by Linux
> +	 */
> +	IMX_RPROC_EARLY_BOOT,
> +};
> +
>  struct imx_rproc_dcfg {
>  	u32				src_reg;
>  	u32				src_mask;
> @@ -95,6 +105,8 @@ struct imx_rproc {
>  	struct mbox_chan		*rx_ch;
>  	struct work_struct		rproc_work;
>  	struct workqueue_struct		*workqueue;
> +	enum imx_rproc_mode		mode;
> +	void __iomem			*rsc_table;
>  };
>  
>  static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
> @@ -229,6 +241,9 @@ static int imx_rproc_stop(struct rproc *rproc)
>  	if (ret)
>  		dev_err(dev, "Failed to stop M4!\n");
>  
> +	if (priv->mode == IMX_RPROC_EARLY_BOOT)
> +		priv->mode = IMX_RPROC_NORMAL;
> +

Why is this needed?  What scenario are you trying to address?

>  	return ret;
>  }
>  
> @@ -398,9 +413,15 @@ static void imx_rproc_kick(struct rproc *rproc, int vqid)
>  			__func__, vqid, err);
>  }
>  
> +static int imx_rproc_attach(struct rproc *rproc)
> +{
> +	return 0;
> +}
> +
>  static const struct rproc_ops imx_rproc_ops = {
>  	.start		= imx_rproc_start,
>  	.stop		= imx_rproc_stop,
> +	.attach		= imx_rproc_attach,
>  	.kick		= imx_rproc_kick,
>  	.da_to_va       = imx_rproc_da_to_va,
>  	.load		= rproc_elf_load_segments,
> @@ -470,6 +491,8 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
>  		}
>  		priv->mem[b].sys_addr = res.start;
>  		priv->mem[b].size = resource_size(&res);
> +		if (!strcmp(node->name, "rsc_table"))
> +			priv->rsc_table = priv->mem[b].cpu_addr;
>  		b++;
>  	}
>  
> @@ -536,6 +559,43 @@ static void imx_rproc_free_mbox(struct rproc *rproc)
>  	mbox_free_channel(priv->rx_ch);
>  }
>  
> +static int imx_rproc_detect_mode(struct imx_rproc *priv)
> +{
> +	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
> +	struct rproc *rproc = priv->rproc;
> +	struct device *dev = priv->dev;
> +	int ret;
> +	u32 val;
> +
> +	ret = regmap_read(priv->regmap, dcfg->src_reg, &val);
> +	if (ret) {
> +		dev_err(dev, "Failed to read src\n");
> +		return ret;
> +	}
> +
> +	if (!(val & dcfg->src_stop))
> +		priv->mode = IMX_RPROC_EARLY_BOOT;
> +	else
> +		priv->mode = IMX_RPROC_NORMAL;
> +
> +	if (priv->mode == IMX_RPROC_EARLY_BOOT) {
> +		priv->rproc->state = RPROC_DETACHED;
> +
> +		ret = imx_rproc_parse_memory_regions(priv->rproc);

If you do this here it won't be possible to reattach to the remote processor
once it has been detached.  This kind of memory parsing should go in
rproc_ops::prepare().  I suggest you look at what has been done for STM32, the
example there is quite good and simple.

> +		if (ret)
> +			return ret;
> +
> +		if (!priv->rsc_table)
> +			return 0;
> +
> +		rproc->table_ptr = (struct resource_table *)priv->rsc_table;

The core is taking care of that, see rproc_set_rsc_table() for details.  

> +		rproc->table_sz = SZ_1K;
> +		rproc->cached_table = NULL;
> +	}
> +
> +	return 0;
> +}
> +
>  static int imx_rproc_probe(struct platform_device *pdev)
>  {
>  	struct device *dev = &pdev->dev;
> @@ -590,6 +650,10 @@ static int imx_rproc_probe(struct platform_device *pdev)
>  		goto err_put_mbox;
>  	}
>  
> +	ret = imx_rproc_detect_mode(priv);
> +	if (ret)
> +		goto err_put_mbox;
> +

While reviewing this patch I noticed that of_node_put() is never called after
of_parse_phandle().  Please add a fix for that, in a patch on its own, in your
next revision.

Thanks,
Mathieu

>  	priv->clk = devm_clk_get(dev, NULL);
>  	if (IS_ERR(priv->clk)) {
>  		dev_err(dev, "Failed to get clock\n");
> -- 
> 2.30.0
> 

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

end of thread, other threads:[~2021-03-25 23:59 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-19 10:47 [PATCH 1/2] remoteproc: imx_rproc: enlarge IMX7D_RPROC_MEM_MAX Peng Fan (OSS)
2021-03-19 10:47 ` [PATCH 2/2] remoteproc: imx_rproc: support remote cores booted before Linux Kernel Peng Fan (OSS)
2021-03-25 23:58   ` Mathieu Poirier
2021-03-25 23:00 ` [PATCH 1/2] remoteproc: imx_rproc: enlarge IMX7D_RPROC_MEM_MAX Mathieu Poirier
2021-03-25 23:23   ` Mathieu Poirier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).