diff mbox series

soc: imx: Add i.MX8MN SoC driver support

Message ID 20190611013125.3434-1-Anson.Huang@nxp.com (mailing list archive)
State New, archived
Headers show
Series soc: imx: Add i.MX8MN SoC driver support | expand

Commit Message

Anson Huang June 11, 2019, 1:31 a.m. UTC
From: Anson Huang <Anson.Huang@nxp.com>

This patch adds i.MX8MN SoC driver support:

root@imx8mnevk:~# cat /sys/devices/soc0/family
Freescale i.MX

root@imx8mnevk:~# cat /sys/devices/soc0/machine
NXP i.MX8MNano DDR4 EVK board

root@imx8mnevk:~# cat /sys/devices/soc0/soc_id
i.MX8MN

root@imx8mnevk:~# cat /sys/devices/soc0/revision
1.0

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
---
 drivers/soc/imx/soc-imx8.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

Comments

Shawn Guo June 18, 2019, 7:03 a.m. UTC | #1
On Tue, Jun 11, 2019 at 09:31:25AM +0800, Anson.Huang@nxp.com wrote:
> From: Anson Huang <Anson.Huang@nxp.com>
> 
> This patch adds i.MX8MN SoC driver support:
> 
> root@imx8mnevk:~# cat /sys/devices/soc0/family
> Freescale i.MX
> 
> root@imx8mnevk:~# cat /sys/devices/soc0/machine
> NXP i.MX8MNano DDR4 EVK board
> 
> root@imx8mnevk:~# cat /sys/devices/soc0/soc_id
> i.MX8MN
> 
> root@imx8mnevk:~# cat /sys/devices/soc0/revision
> 1.0
> 
> Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> ---
>  drivers/soc/imx/soc-imx8.c | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/soc/imx/soc-imx8.c b/drivers/soc/imx/soc-imx8.c
> index 3842d09..02309a2 100644
> --- a/drivers/soc/imx/soc-imx8.c
> +++ b/drivers/soc/imx/soc-imx8.c
> @@ -55,7 +55,12 @@ static u32 __init imx8mm_soc_revision(void)
>  	void __iomem *anatop_base;
>  	u32 rev;
>  
> -	np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-anatop");
> +	if (of_machine_is_compatible("fsl,imx8mm"))
> +		np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-anatop");
> +	else if (of_machine_is_compatible("fsl,imx8mn"))
> +		np = of_find_compatible_node(NULL, NULL, "fsl,imx8mn-anatop");

Can we have this anatop compatible in imx8_soc_data, so that we may save
the call to of_machine_is_compatible()?

Shawn

> +	else
> +		np = NULL;
>  	if (!np)
>  		return 0;
>  
> @@ -79,9 +84,15 @@ static const struct imx8_soc_data imx8mm_soc_data = {
>  	.soc_revision = imx8mm_soc_revision,
>  };
>  
> +static const struct imx8_soc_data imx8mn_soc_data = {
> +	.name = "i.MX8MN",
> +	.soc_revision = imx8mm_soc_revision,
> +};
> +
>  static const struct of_device_id imx8_soc_match[] = {
>  	{ .compatible = "fsl,imx8mq", .data = &imx8mq_soc_data, },
>  	{ .compatible = "fsl,imx8mm", .data = &imx8mm_soc_data, },
> +	{ .compatible = "fsl,imx8mn", .data = &imx8mn_soc_data, },
>  	{ }
>  };
>  
> -- 
> 2.7.4
>
Anson Huang June 18, 2019, 8:24 a.m. UTC | #2
Hi, Shawn

> -----Original Message-----
> From: Shawn Guo <shawnguo@kernel.org>
> Sent: Tuesday, June 18, 2019 3:04 PM
> To: Anson Huang <anson.huang@nxp.com>
> Cc: s.hauer@pengutronix.de; kernel@pengutronix.de; festevam@gmail.com;
> Leonard Crestez <leonard.crestez@nxp.com>; viresh.kumar@linaro.org;
> Abel Vesa <abel.vesa@nxp.com>; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org; dl-linux-imx <linux-imx@nxp.com>
> Subject: Re: [PATCH] soc: imx: Add i.MX8MN SoC driver support
> 
> On Tue, Jun 11, 2019 at 09:31:25AM +0800, Anson.Huang@nxp.com wrote:
> > From: Anson Huang <Anson.Huang@nxp.com>
> >
> > This patch adds i.MX8MN SoC driver support:
> >
> > root@imx8mnevk:~# cat /sys/devices/soc0/family Freescale i.MX
> >
> > root@imx8mnevk:~# cat /sys/devices/soc0/machine NXP i.MX8MNano
> DDR4
> > EVK board
> >
> > root@imx8mnevk:~# cat /sys/devices/soc0/soc_id i.MX8MN
> >
> > root@imx8mnevk:~# cat /sys/devices/soc0/revision
> > 1.0
> >
> > Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> > ---
> >  drivers/soc/imx/soc-imx8.c | 13 ++++++++++++-
> >  1 file changed, 12 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/soc/imx/soc-imx8.c b/drivers/soc/imx/soc-imx8.c
> > index 3842d09..02309a2 100644
> > --- a/drivers/soc/imx/soc-imx8.c
> > +++ b/drivers/soc/imx/soc-imx8.c
> > @@ -55,7 +55,12 @@ static u32 __init imx8mm_soc_revision(void)
> >  	void __iomem *anatop_base;
> >  	u32 rev;
> >
> > -	np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-anatop");
> > +	if (of_machine_is_compatible("fsl,imx8mm"))
> > +		np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-
> anatop");
> > +	else if (of_machine_is_compatible("fsl,imx8mn"))
> > +		np = of_find_compatible_node(NULL, NULL, "fsl,imx8mn-
> anatop");
> 
> Can we have this anatop compatible in imx8_soc_data, so that we may save
> the call to of_machine_is_compatible()?

Do you mean adding a variable like " const char *anatop_compat " in imx8_soc_date structure,
then initialize it according to SoC type, and in imx8mm_soc_revision(), get to soc_data's anatio_compat to
find the anatop node? If yes, we have to add some code to get the soc_data in this function, or maybe
we can pass anatop compatible name as .soc_revision's parameter?

static const struct imx8_soc_data imx8mn_soc_data = {
         .name = "i.MX8MN",
         .soc_revision = imx8mm_soc_revision,
         .anatop_compat = "fsl,imx8mn-anatop",
};

Anson.
> 
> Shawn
> 
> > +	else
> > +		np = NULL;
> >  	if (!np)
> >  		return 0;
> >
> > @@ -79,9 +84,15 @@ static const struct imx8_soc_data imx8mm_soc_data
> = {
> >  	.soc_revision = imx8mm_soc_revision,  };
> >
> > +static const struct imx8_soc_data imx8mn_soc_data = {
> > +	.name = "i.MX8MN",
> > +	.soc_revision = imx8mm_soc_revision, };
> > +
> >  static const struct of_device_id imx8_soc_match[] = {
> >  	{ .compatible = "fsl,imx8mq", .data = &imx8mq_soc_data, },
> >  	{ .compatible = "fsl,imx8mm", .data = &imx8mm_soc_data, },
> > +	{ .compatible = "fsl,imx8mn", .data = &imx8mn_soc_data, },
> >  	{ }
> >  };
> >
> > --
> > 2.7.4
> >
Shawn Guo June 18, 2019, 12:59 p.m. UTC | #3
On Tue, Jun 18, 2019 at 08:24:59AM +0000, Anson Huang wrote:
> Hi, Shawn
> 
> > -----Original Message-----
> > From: Shawn Guo <shawnguo@kernel.org>
> > Sent: Tuesday, June 18, 2019 3:04 PM
> > To: Anson Huang <anson.huang@nxp.com>
> > Cc: s.hauer@pengutronix.de; kernel@pengutronix.de; festevam@gmail.com;
> > Leonard Crestez <leonard.crestez@nxp.com>; viresh.kumar@linaro.org;
> > Abel Vesa <abel.vesa@nxp.com>; linux-arm-kernel@lists.infradead.org;
> > linux-kernel@vger.kernel.org; dl-linux-imx <linux-imx@nxp.com>
> > Subject: Re: [PATCH] soc: imx: Add i.MX8MN SoC driver support
> > 
> > On Tue, Jun 11, 2019 at 09:31:25AM +0800, Anson.Huang@nxp.com wrote:
> > > From: Anson Huang <Anson.Huang@nxp.com>
> > >
> > > This patch adds i.MX8MN SoC driver support:
> > >
> > > root@imx8mnevk:~# cat /sys/devices/soc0/family Freescale i.MX
> > >
> > > root@imx8mnevk:~# cat /sys/devices/soc0/machine NXP i.MX8MNano
> > DDR4
> > > EVK board
> > >
> > > root@imx8mnevk:~# cat /sys/devices/soc0/soc_id i.MX8MN
> > >
> > > root@imx8mnevk:~# cat /sys/devices/soc0/revision
> > > 1.0
> > >
> > > Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> > > ---
> > >  drivers/soc/imx/soc-imx8.c | 13 ++++++++++++-
> > >  1 file changed, 12 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/soc/imx/soc-imx8.c b/drivers/soc/imx/soc-imx8.c
> > > index 3842d09..02309a2 100644
> > > --- a/drivers/soc/imx/soc-imx8.c
> > > +++ b/drivers/soc/imx/soc-imx8.c
> > > @@ -55,7 +55,12 @@ static u32 __init imx8mm_soc_revision(void)
> > >  	void __iomem *anatop_base;
> > >  	u32 rev;
> > >
> > > -	np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-anatop");
> > > +	if (of_machine_is_compatible("fsl,imx8mm"))
> > > +		np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-
> > anatop");
> > > +	else if (of_machine_is_compatible("fsl,imx8mn"))
> > > +		np = of_find_compatible_node(NULL, NULL, "fsl,imx8mn-
> > anatop");
> > 
> > Can we have this anatop compatible in imx8_soc_data, so that we may save
> > the call to of_machine_is_compatible()?
> 
> Do you mean adding a variable like " const char *anatop_compat " in imx8_soc_date structure,
> then initialize it according to SoC type, and in imx8mm_soc_revision(), get to soc_data's anatio_compat to
> find the anatop node? If yes, we have to add some code to get the soc_data in this function, or maybe
> we can pass anatop compatible name as .soc_revision's parameter?
> 
> static const struct imx8_soc_data imx8mn_soc_data = {
>          .name = "i.MX8MN",
>          .soc_revision = imx8mm_soc_revision,
>          .anatop_compat = "fsl,imx8mn-anatop",
> };

Okay, just realized that we only want to handle imx8mn with imx8mm
function.  It makes less sense to add anatop compatible into
imx8_soc_data just for that.

So it looks like that imx8mn is highly compatible with imx8mm, including
anatop block?  If that's the case, maybe we can have compatible of
imx8mn anatop like below, so that we can save above changes?

	compatible = "fsl,imx8mn-anatop", "fsl,imx8mm-anatop";

Shawn
Anson Huang June 19, 2019, 1:06 a.m. UTC | #4
Hi, Shawn

> -----Original Message-----
> From: Shawn Guo <shawnguo@kernel.org>
> Sent: Tuesday, June 18, 2019 8:59 PM
> To: Anson Huang <anson.huang@nxp.com>
> Cc: s.hauer@pengutronix.de; kernel@pengutronix.de; festevam@gmail.com;
> Leonard Crestez <leonard.crestez@nxp.com>; viresh.kumar@linaro.org;
> Abel Vesa <abel.vesa@nxp.com>; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org; dl-linux-imx <linux-imx@nxp.com>
> Subject: Re: [PATCH] soc: imx: Add i.MX8MN SoC driver support
> 
> On Tue, Jun 18, 2019 at 08:24:59AM +0000, Anson Huang wrote:
> > Hi, Shawn
> >
> > > -----Original Message-----
> > > From: Shawn Guo <shawnguo@kernel.org>
> > > Sent: Tuesday, June 18, 2019 3:04 PM
> > > To: Anson Huang <anson.huang@nxp.com>
> > > Cc: s.hauer@pengutronix.de; kernel@pengutronix.de;
> > > festevam@gmail.com; Leonard Crestez <leonard.crestez@nxp.com>;
> > > viresh.kumar@linaro.org; Abel Vesa <abel.vesa@nxp.com>;
> > > linux-arm-kernel@lists.infradead.org;
> > > linux-kernel@vger.kernel.org; dl-linux-imx <linux-imx@nxp.com>
> > > Subject: Re: [PATCH] soc: imx: Add i.MX8MN SoC driver support
> > >
> > > On Tue, Jun 11, 2019 at 09:31:25AM +0800, Anson.Huang@nxp.com
> wrote:
> > > > From: Anson Huang <Anson.Huang@nxp.com>
> > > >
> > > > This patch adds i.MX8MN SoC driver support:
> > > >
> > > > root@imx8mnevk:~# cat /sys/devices/soc0/family Freescale i.MX
> > > >
> > > > root@imx8mnevk:~# cat /sys/devices/soc0/machine NXP i.MX8MNano
> > > DDR4
> > > > EVK board
> > > >
> > > > root@imx8mnevk:~# cat /sys/devices/soc0/soc_id i.MX8MN
> > > >
> > > > root@imx8mnevk:~# cat /sys/devices/soc0/revision
> > > > 1.0
> > > >
> > > > Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> > > > ---
> > > >  drivers/soc/imx/soc-imx8.c | 13 ++++++++++++-
> > > >  1 file changed, 12 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/soc/imx/soc-imx8.c
> > > > b/drivers/soc/imx/soc-imx8.c index 3842d09..02309a2 100644
> > > > --- a/drivers/soc/imx/soc-imx8.c
> > > > +++ b/drivers/soc/imx/soc-imx8.c
> > > > @@ -55,7 +55,12 @@ static u32 __init imx8mm_soc_revision(void)
> > > >  	void __iomem *anatop_base;
> > > >  	u32 rev;
> > > >
> > > > -	np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-anatop");
> > > > +	if (of_machine_is_compatible("fsl,imx8mm"))
> > > > +		np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-
> > > anatop");
> > > > +	else if (of_machine_is_compatible("fsl,imx8mn"))
> > > > +		np = of_find_compatible_node(NULL, NULL, "fsl,imx8mn-
> > > anatop");
> > >
> > > Can we have this anatop compatible in imx8_soc_data, so that we may
> > > save the call to of_machine_is_compatible()?
> >
> > Do you mean adding a variable like " const char *anatop_compat " in
> > imx8_soc_date structure, then initialize it according to SoC type, and
> > in imx8mm_soc_revision(), get to soc_data's anatio_compat to find the
> > anatop node? If yes, we have to add some code to get the soc_data in this
> function, or maybe we can pass anatop compatible name as .soc_revision's
> parameter?
> >
> > static const struct imx8_soc_data imx8mn_soc_data = {
> >          .name = "i.MX8MN",
> >          .soc_revision = imx8mm_soc_revision,
> >          .anatop_compat = "fsl,imx8mn-anatop", };
> 
> Okay, just realized that we only want to handle imx8mn with imx8mm
> function.  It makes less sense to add anatop compatible into imx8_soc_data
> just for that.
> 
> So it looks like that imx8mn is highly compatible with imx8mm, including
> anatop block?  If that's the case, maybe we can have compatible of imx8mn
> anatop like below, so that we can save above changes?
> 
> 	compatible = "fsl,imx8mn-anatop", "fsl,imx8mm-anatop";

Make sense, I just sent out V2 with this approach, and will add the "fsl,imx8mm-anatop"
as i.MX8MN ANATOP fallback compatible when I need to resend the i.MX8MN DT patch series.

Thanks,
Anson

> 
> Shawn
diff mbox series

Patch

diff --git a/drivers/soc/imx/soc-imx8.c b/drivers/soc/imx/soc-imx8.c
index 3842d09..02309a2 100644
--- a/drivers/soc/imx/soc-imx8.c
+++ b/drivers/soc/imx/soc-imx8.c
@@ -55,7 +55,12 @@  static u32 __init imx8mm_soc_revision(void)
 	void __iomem *anatop_base;
 	u32 rev;
 
-	np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-anatop");
+	if (of_machine_is_compatible("fsl,imx8mm"))
+		np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-anatop");
+	else if (of_machine_is_compatible("fsl,imx8mn"))
+		np = of_find_compatible_node(NULL, NULL, "fsl,imx8mn-anatop");
+	else
+		np = NULL;
 	if (!np)
 		return 0;
 
@@ -79,9 +84,15 @@  static const struct imx8_soc_data imx8mm_soc_data = {
 	.soc_revision = imx8mm_soc_revision,
 };
 
+static const struct imx8_soc_data imx8mn_soc_data = {
+	.name = "i.MX8MN",
+	.soc_revision = imx8mm_soc_revision,
+};
+
 static const struct of_device_id imx8_soc_match[] = {
 	{ .compatible = "fsl,imx8mq", .data = &imx8mq_soc_data, },
 	{ .compatible = "fsl,imx8mm", .data = &imx8mm_soc_data, },
+	{ .compatible = "fsl,imx8mn", .data = &imx8mn_soc_data, },
 	{ }
 };