From: Anson Huang <[email protected]>
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 <[email protected]>
---
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");
+ 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
On Tue, Jun 11, 2019 at 09:31:25AM +0800, [email protected] wrote:
> From: Anson Huang <[email protected]>
>
> 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 <[email protected]>
> ---
> 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
>
Hi, Shawn
> -----Original Message-----
> From: Shawn Guo <[email protected]>
> Sent: Tuesday, June 18, 2019 3:04 PM
> To: Anson Huang <[email protected]>
> Cc: [email protected]; [email protected]; [email protected];
> Leonard Crestez <[email protected]>; [email protected];
> Abel Vesa <[email protected]>; [email protected];
> [email protected]; dl-linux-imx <[email protected]>
> Subject: Re: [PATCH] soc: imx: Add i.MX8MN SoC driver support
>
> On Tue, Jun 11, 2019 at 09:31:25AM +0800, [email protected] wrote:
> > From: Anson Huang <[email protected]>
> >
> > 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 <[email protected]>
> > ---
> > 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
> >
On Tue, Jun 18, 2019 at 08:24:59AM +0000, Anson Huang wrote:
> Hi, Shawn
>
> > -----Original Message-----
> > From: Shawn Guo <[email protected]>
> > Sent: Tuesday, June 18, 2019 3:04 PM
> > To: Anson Huang <[email protected]>
> > Cc: [email protected]; [email protected]; [email protected];
> > Leonard Crestez <[email protected]>; [email protected];
> > Abel Vesa <[email protected]>; [email protected];
> > [email protected]; dl-linux-imx <[email protected]>
> > Subject: Re: [PATCH] soc: imx: Add i.MX8MN SoC driver support
> >
> > On Tue, Jun 11, 2019 at 09:31:25AM +0800, [email protected] wrote:
> > > From: Anson Huang <[email protected]>
> > >
> > > 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 <[email protected]>
> > > ---
> > > 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
Hi, Shawn
> -----Original Message-----
> From: Shawn Guo <[email protected]>
> Sent: Tuesday, June 18, 2019 8:59 PM
> To: Anson Huang <[email protected]>
> Cc: [email protected]; [email protected]; [email protected];
> Leonard Crestez <[email protected]>; [email protected];
> Abel Vesa <[email protected]>; [email protected];
> [email protected]; dl-linux-imx <[email protected]>
> 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 <[email protected]>
> > > Sent: Tuesday, June 18, 2019 3:04 PM
> > > To: Anson Huang <[email protected]>
> > > Cc: [email protected]; [email protected];
> > > [email protected]; Leonard Crestez <[email protected]>;
> > > [email protected]; Abel Vesa <[email protected]>;
> > > [email protected];
> > > [email protected]; dl-linux-imx <[email protected]>
> > > Subject: Re: [PATCH] soc: imx: Add i.MX8MN SoC driver support
> > >
> > > On Tue, Jun 11, 2019 at 09:31:25AM +0800, [email protected]
> wrote:
> > > > From: Anson Huang <[email protected]>
> > > >
> > > > 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 <[email protected]>
> > > > ---
> > > > 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