From: Peng Fan <peng.fan@nxp.com>
Add imx_rproc_cfg_imx95_m7 and address(TCM and DDR) mapping.
Add i.MX95 of_device_id entry.
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
drivers/remoteproc/imx_rproc.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index b1a117ca5e5795554b67eb7092db2a25fc7de13b..c226f78c84ad180c69804116d6cfcab19db6aaa5 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -73,6 +73,10 @@
#define IMX_SC_IRQ_GROUP_REBOOTED 5
+/* Must align with System Manager Firmware */
+#define IMX95_M7_CPUID 1
+#define IMX95_M7_LMID 1
+
/**
* struct imx_rproc_mem - slim internal memory structure
* @cpu_addr: MPU virtual address of the memory region
@@ -126,6 +130,18 @@ struct imx_rproc {
u32 flags;
};
+static const struct imx_rproc_att imx_rproc_att_imx95_m7[] = {
+ /* dev addr , sys addr , size , flags */
+ /* TCM CODE NON-SECURE */
+ { 0x00000000, 0x203C0000, 0x00040000, ATT_OWN | ATT_IOMEM },
+
+ /* TCM SYS NON-SECURE*/
+ { 0x20000000, 0x20400000, 0x00040000, ATT_OWN | ATT_IOMEM },
+
+ /* DDR */
+ { 0x80000000, 0x80000000, 0x50000000, 0 },
+};
+
static const struct imx_rproc_att imx_rproc_att_imx93[] = {
/* dev addr , sys addr , size , flags */
/* TCM CODE NON-SECURE */
@@ -372,6 +388,14 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx93 = {
.method = IMX_RPROC_SMC,
};
+static const struct imx_rproc_dcfg imx_rproc_cfg_imx95_m7 = {
+ .att = imx_rproc_att_imx95_m7,
+ .att_size = ARRAY_SIZE(imx_rproc_att_imx95_m7),
+ .method = IMX_RPROC_SM,
+ .cpuid = IMX95_M7_CPUID,
+ .lmid = IMX95_M7_LMID,
+};
+
static int imx_rproc_start(struct rproc *rproc)
{
struct imx_rproc *priv = rproc->priv;
@@ -1301,6 +1325,7 @@ static const struct of_device_id imx_rproc_of_match[] = {
{ .compatible = "fsl,imx8qm-cm4", .data = &imx_rproc_cfg_imx8qm },
{ .compatible = "fsl,imx8ulp-cm33", .data = &imx_rproc_cfg_imx8ulp },
{ .compatible = "fsl,imx93-cm33", .data = &imx_rproc_cfg_imx93 },
+ { .compatible = "fsl,imx95-cm7", .data = &imx_rproc_cfg_imx95_m7 },
{},
};
MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
--
2.37.1
On Wed, Jun 25, 2025 at 10:23:29AM +0800, Peng Fan (OSS) wrote: > From: Peng Fan <peng.fan@nxp.com> > > Add imx_rproc_cfg_imx95_m7 and address(TCM and DDR) mapping. > Add i.MX95 of_device_id entry. > > Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com> > Signed-off-by: Peng Fan <peng.fan@nxp.com> > --- > drivers/remoteproc/imx_rproc.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c > index b1a117ca5e5795554b67eb7092db2a25fc7de13b..c226f78c84ad180c69804116d6cfcab19db6aaa5 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -73,6 +73,10 @@ > > #define IMX_SC_IRQ_GROUP_REBOOTED 5 > > +/* Must align with System Manager Firmware */ > +#define IMX95_M7_CPUID 1 > +#define IMX95_M7_LMID 1 Any reason those aren't set in the device tree? Thanks, Mathieu > + > /** > * struct imx_rproc_mem - slim internal memory structure > * @cpu_addr: MPU virtual address of the memory region > @@ -126,6 +130,18 @@ struct imx_rproc { > u32 flags; > }; > > +static const struct imx_rproc_att imx_rproc_att_imx95_m7[] = { > + /* dev addr , sys addr , size , flags */ > + /* TCM CODE NON-SECURE */ > + { 0x00000000, 0x203C0000, 0x00040000, ATT_OWN | ATT_IOMEM }, > + > + /* TCM SYS NON-SECURE*/ > + { 0x20000000, 0x20400000, 0x00040000, ATT_OWN | ATT_IOMEM }, > + > + /* DDR */ > + { 0x80000000, 0x80000000, 0x50000000, 0 }, > +}; > + > static const struct imx_rproc_att imx_rproc_att_imx93[] = { > /* dev addr , sys addr , size , flags */ > /* TCM CODE NON-SECURE */ > @@ -372,6 +388,14 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx93 = { > .method = IMX_RPROC_SMC, > }; > > +static const struct imx_rproc_dcfg imx_rproc_cfg_imx95_m7 = { > + .att = imx_rproc_att_imx95_m7, > + .att_size = ARRAY_SIZE(imx_rproc_att_imx95_m7), > + .method = IMX_RPROC_SM, > + .cpuid = IMX95_M7_CPUID, > + .lmid = IMX95_M7_LMID, > +}; > + > static int imx_rproc_start(struct rproc *rproc) > { > struct imx_rproc *priv = rproc->priv; > @@ -1301,6 +1325,7 @@ static const struct of_device_id imx_rproc_of_match[] = { > { .compatible = "fsl,imx8qm-cm4", .data = &imx_rproc_cfg_imx8qm }, > { .compatible = "fsl,imx8ulp-cm33", .data = &imx_rproc_cfg_imx8ulp }, > { .compatible = "fsl,imx93-cm33", .data = &imx_rproc_cfg_imx93 }, > + { .compatible = "fsl,imx95-cm7", .data = &imx_rproc_cfg_imx95_m7 }, > {}, > }; > MODULE_DEVICE_TABLE(of, imx_rproc_of_match); > > -- > 2.37.1 >
Hi Mathieu, On Tue, Jul 08, 2025 at 10:39:55AM -0600, Mathieu Poirier wrote: >On Wed, Jun 25, 2025 at 10:23:29AM +0800, Peng Fan (OSS) wrote: >> From: Peng Fan <peng.fan@nxp.com> >> >> Add imx_rproc_cfg_imx95_m7 and address(TCM and DDR) mapping. >> Add i.MX95 of_device_id entry. >> >> Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com> >> Signed-off-by: Peng Fan <peng.fan@nxp.com> >> --- >> drivers/remoteproc/imx_rproc.c | 25 +++++++++++++++++++++++++ >> 1 file changed, 25 insertions(+) >> >> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c >> index b1a117ca5e5795554b67eb7092db2a25fc7de13b..c226f78c84ad180c69804116d6cfcab19db6aaa5 100644 >> --- a/drivers/remoteproc/imx_rproc.c >> +++ b/drivers/remoteproc/imx_rproc.c >> @@ -73,6 +73,10 @@ >> >> #define IMX_SC_IRQ_GROUP_REBOOTED 5 >> >> +/* Must align with System Manager Firmware */ >> +#define IMX95_M7_CPUID 1 >> +#define IMX95_M7_LMID 1 > >Any reason those aren't set in the device tree? Krzysztof rejected to introduce the IDs to devicetree. From IRC: "To me this makes no sense in current explanayton - you have 8 cores, but only one can be put there, so what happens with the rest? And I don't think we care about something like remote and local ID - it is the same. CPUs have single number. So this looks like copy paste downstream and thus solve it internally first" In System Manager Firmware, CPUID is fixed and will not change. LMID is also fixed as of now, we not expect customer to change LMID. So with "fsl,imx95-m7", we could know the CPUID and LMID for M7, so it does not make sense to introduce new property saying "fsl,imx95-lmid" and "fsl,imx95-cpuid". This should be the main concern that DT maintainers reject to add properties for the IDs. Thanks, Peng > >Thanks, >Mathieu >
On Wed, Jul 09, 2025 at 03:49:40PM +0800, Peng Fan wrote: > Hi Mathieu, > > On Tue, Jul 08, 2025 at 10:39:55AM -0600, Mathieu Poirier wrote: > >On Wed, Jun 25, 2025 at 10:23:29AM +0800, Peng Fan (OSS) wrote: > >> From: Peng Fan <peng.fan@nxp.com> > >> > >> Add imx_rproc_cfg_imx95_m7 and address(TCM and DDR) mapping. > >> Add i.MX95 of_device_id entry. > >> > >> Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com> > >> Signed-off-by: Peng Fan <peng.fan@nxp.com> > >> --- > >> drivers/remoteproc/imx_rproc.c | 25 +++++++++++++++++++++++++ > >> 1 file changed, 25 insertions(+) > >> > >> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c > >> index b1a117ca5e5795554b67eb7092db2a25fc7de13b..c226f78c84ad180c69804116d6cfcab19db6aaa5 100644 > >> --- a/drivers/remoteproc/imx_rproc.c > >> +++ b/drivers/remoteproc/imx_rproc.c > >> @@ -73,6 +73,10 @@ > >> > >> #define IMX_SC_IRQ_GROUP_REBOOTED 5 > >> > >> +/* Must align with System Manager Firmware */ > >> +#define IMX95_M7_CPUID 1 > >> +#define IMX95_M7_LMID 1 > > > >Any reason those aren't set in the device tree? > > Krzysztof rejected to introduce the IDs to devicetree. > > From IRC: > "To me this makes no sense in current explanayton - you have 8 cores, but only > one can be put there, so what happens with the rest? > And I don't think we care about something like remote and local ID - it is > the same. CPUs have single number. So this looks like copy paste downstream > and thus solve it internally first" > > > In System Manager Firmware, CPUID is fixed and will not change. > LMID is also fixed as of now, we not expect customer to change LMID. > > So with "fsl,imx95-m7", we could know the CPUID and LMID for M7, so > it does not make sense to introduce new property saying "fsl,imx95-lmid" > and "fsl,imx95-cpuid". This should be the main concern that DT maintainers > reject to add properties for the IDs. > Ok > Thanks, > Peng > > > > >Thanks, > >Mathieu > >
On Wed, Jun 25, 2025 at 10:23:29AM +0800, Peng Fan (OSS) wrote: > From: Peng Fan <peng.fan@nxp.com> > > Add imx_rproc_cfg_imx95_m7 and address(TCM and DDR) mapping. nit: generally, need empty line between two segments > Add i.MX95 of_device_id entry. > > Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com> > Signed-off-by: Peng Fan <peng.fan@nxp.com> > --- Reviewed-by: Frank Li <Frank.Li@nxp.com> > drivers/remoteproc/imx_rproc.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c > index b1a117ca5e5795554b67eb7092db2a25fc7de13b..c226f78c84ad180c69804116d6cfcab19db6aaa5 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -73,6 +73,10 @@ > > #define IMX_SC_IRQ_GROUP_REBOOTED 5 > > +/* Must align with System Manager Firmware */ > +#define IMX95_M7_CPUID 1 > +#define IMX95_M7_LMID 1 > + > /** > * struct imx_rproc_mem - slim internal memory structure > * @cpu_addr: MPU virtual address of the memory region > @@ -126,6 +130,18 @@ struct imx_rproc { > u32 flags; > }; > > +static const struct imx_rproc_att imx_rproc_att_imx95_m7[] = { > + /* dev addr , sys addr , size , flags */ > + /* TCM CODE NON-SECURE */ > + { 0x00000000, 0x203C0000, 0x00040000, ATT_OWN | ATT_IOMEM }, > + > + /* TCM SYS NON-SECURE*/ > + { 0x20000000, 0x20400000, 0x00040000, ATT_OWN | ATT_IOMEM }, > + > + /* DDR */ > + { 0x80000000, 0x80000000, 0x50000000, 0 }, > +}; > + > static const struct imx_rproc_att imx_rproc_att_imx93[] = { > /* dev addr , sys addr , size , flags */ > /* TCM CODE NON-SECURE */ > @@ -372,6 +388,14 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx93 = { > .method = IMX_RPROC_SMC, > }; > > +static const struct imx_rproc_dcfg imx_rproc_cfg_imx95_m7 = { > + .att = imx_rproc_att_imx95_m7, > + .att_size = ARRAY_SIZE(imx_rproc_att_imx95_m7), > + .method = IMX_RPROC_SM, > + .cpuid = IMX95_M7_CPUID, > + .lmid = IMX95_M7_LMID, > +}; > + > static int imx_rproc_start(struct rproc *rproc) > { > struct imx_rproc *priv = rproc->priv; > @@ -1301,6 +1325,7 @@ static const struct of_device_id imx_rproc_of_match[] = { > { .compatible = "fsl,imx8qm-cm4", .data = &imx_rproc_cfg_imx8qm }, > { .compatible = "fsl,imx8ulp-cm33", .data = &imx_rproc_cfg_imx8ulp }, > { .compatible = "fsl,imx93-cm33", .data = &imx_rproc_cfg_imx93 }, > + { .compatible = "fsl,imx95-cm7", .data = &imx_rproc_cfg_imx95_m7 }, > {}, > }; > MODULE_DEVICE_TABLE(of, imx_rproc_of_match); > > -- > 2.37.1 >
© 2016 - 2025 Red Hat, Inc.