RE: [PATCH] soc: imx: Add i.MX8MN SoC driver support

From: Anson Huang
Date: Tue Jun 18 2019 - 04:30:46 EST


Hi, Shawn

> -----Original Message-----
> From: Shawn Guo <shawnguo@xxxxxxxxxx>
> Sent: Tuesday, June 18, 2019 3:04 PM
> To: Anson Huang <anson.huang@xxxxxxx>
> Cc: s.hauer@xxxxxxxxxxxxxx; kernel@xxxxxxxxxxxxxx; festevam@xxxxxxxxx;
> Leonard Crestez <leonard.crestez@xxxxxxx>; viresh.kumar@xxxxxxxxxx;
> Abel Vesa <abel.vesa@xxxxxxx>; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
> linux-kernel@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>
> Subject: Re: [PATCH] soc: imx: Add i.MX8MN SoC driver support
>
> On Tue, Jun 11, 2019 at 09:31:25AM +0800, Anson.Huang@xxxxxxx wrote:
> > From: Anson Huang <Anson.Huang@xxxxxxx>
> >
> > 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@xxxxxxx>
> > ---
> > 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
> >