2019-10-22 04:59:30

by Anson Huang

[permalink] [raw]
Subject: [PATCH] cpufreq: imx-cpufreq-dt: Correct i.MX8MN's default speed grade value

i.MX8MN has different speed grade definition compared to
i.MX8MQ/i.MX8MM, when fuses are NOT written, the default
speed_grade should be set to minimum available OPP defined
in DT which is 1.2GHz, the corresponding speed_grade value
should be 0xb.

Fixes: 5b8010ba70d5 ("cpufreq: imx-cpufreq-dt: Add i.MX8MN support")
Signed-off-by: Anson Huang <[email protected]>
---
drivers/cpufreq/imx-cpufreq-dt.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/cpufreq/imx-cpufreq-dt.c b/drivers/cpufreq/imx-cpufreq-dt.c
index 35db14c..26531f0 100644
--- a/drivers/cpufreq/imx-cpufreq-dt.c
+++ b/drivers/cpufreq/imx-cpufreq-dt.c
@@ -44,19 +44,19 @@ static int imx_cpufreq_dt_probe(struct platform_device *pdev)
mkt_segment = (cell_value & OCOTP_CFG3_MKT_SEGMENT_MASK) >> OCOTP_CFG3_MKT_SEGMENT_SHIFT;

/*
- * Early samples without fuses written report "0 0" which means
- * consumer segment and minimum speed grading.
- *
- * According to datasheet minimum speed grading is not supported for
- * consumer parts so clamp to 1 to avoid warning for "no OPPs"
+ * Early samples without fuses written report "0 0" which may NOT
+ * match any OPP defined in DT. So clamp to minimum OPP defined in
+ * DT to avoid warning for "no OPPs".
*
* Applies to i.MX8M series SoCs.
*/
- if (mkt_segment == 0 && speed_grade == 0 && (
- of_machine_is_compatible("fsl,imx8mm") ||
- of_machine_is_compatible("fsl,imx8mn") ||
- of_machine_is_compatible("fsl,imx8mq")))
- speed_grade = 1;
+ if (mkt_segment == 0 && speed_grade == 0) {
+ if (of_machine_is_compatible("fsl,imx8mm") ||
+ of_machine_is_compatible("fsl,imx8mq"))
+ speed_grade = 1;
+ if (of_machine_is_compatible("fsl,imx8mn"))
+ speed_grade = 0xb;
+ }

supported_hw[0] = BIT(speed_grade);
supported_hw[1] = BIT(mkt_segment);
--
2.7.4


2019-10-22 08:26:17

by Viresh Kumar

[permalink] [raw]
Subject: Re: [PATCH] cpufreq: imx-cpufreq-dt: Correct i.MX8MN's default speed grade value

On 22-10-19, 12:39, Anson Huang wrote:
> i.MX8MN has different speed grade definition compared to
> i.MX8MQ/i.MX8MM, when fuses are NOT written, the default
> speed_grade should be set to minimum available OPP defined
> in DT which is 1.2GHz, the corresponding speed_grade value
> should be 0xb.
>
> Fixes: 5b8010ba70d5 ("cpufreq: imx-cpufreq-dt: Add i.MX8MN support")
> Signed-off-by: Anson Huang <[email protected]>
> ---
> drivers/cpufreq/imx-cpufreq-dt.c | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/cpufreq/imx-cpufreq-dt.c b/drivers/cpufreq/imx-cpufreq-dt.c
> index 35db14c..26531f0 100644
> --- a/drivers/cpufreq/imx-cpufreq-dt.c
> +++ b/drivers/cpufreq/imx-cpufreq-dt.c
> @@ -44,19 +44,19 @@ static int imx_cpufreq_dt_probe(struct platform_device *pdev)
> mkt_segment = (cell_value & OCOTP_CFG3_MKT_SEGMENT_MASK) >> OCOTP_CFG3_MKT_SEGMENT_SHIFT;
>
> /*
> - * Early samples without fuses written report "0 0" which means
> - * consumer segment and minimum speed grading.
> - *
> - * According to datasheet minimum speed grading is not supported for
> - * consumer parts so clamp to 1 to avoid warning for "no OPPs"
> + * Early samples without fuses written report "0 0" which may NOT
> + * match any OPP defined in DT. So clamp to minimum OPP defined in
> + * DT to avoid warning for "no OPPs".
> *
> * Applies to i.MX8M series SoCs.
> */
> - if (mkt_segment == 0 && speed_grade == 0 && (
> - of_machine_is_compatible("fsl,imx8mm") ||
> - of_machine_is_compatible("fsl,imx8mn") ||
> - of_machine_is_compatible("fsl,imx8mq")))
> - speed_grade = 1;
> + if (mkt_segment == 0 && speed_grade == 0) {
> + if (of_machine_is_compatible("fsl,imx8mm") ||
> + of_machine_is_compatible("fsl,imx8mq"))

of_machine_is_compatible should come right below the above
of_machine_is_compatible here, instead of a leading tab.

> + speed_grade = 1;
> + if (of_machine_is_compatible("fsl,imx8mn"))
> + speed_grade = 0xb;
> + }
>
> supported_hw[0] = BIT(speed_grade);
> supported_hw[1] = BIT(mkt_segment);
> --
> 2.7.4

--
viresh

2019-10-22 08:38:09

by Anson Huang

[permalink] [raw]
Subject: RE: [PATCH] cpufreq: imx-cpufreq-dt: Correct i.MX8MN's default speed grade value

Hi, Viresh

> On 22-10-19, 12:39, Anson Huang wrote:
> > i.MX8MN has different speed grade definition compared to
> > i.MX8MQ/i.MX8MM, when fuses are NOT written, the default speed_grade
> > should be set to minimum available OPP defined in DT which is 1.2GHz,
> > the corresponding speed_grade value should be 0xb.
> >
> > Fixes: 5b8010ba70d5 ("cpufreq: imx-cpufreq-dt: Add i.MX8MN support")
> > Signed-off-by: Anson Huang <[email protected]>
> > ---
> > drivers/cpufreq/imx-cpufreq-dt.c | 20 ++++++++++----------
> > 1 file changed, 10 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/cpufreq/imx-cpufreq-dt.c
> > b/drivers/cpufreq/imx-cpufreq-dt.c
> > index 35db14c..26531f0 100644
> > --- a/drivers/cpufreq/imx-cpufreq-dt.c
> > +++ b/drivers/cpufreq/imx-cpufreq-dt.c
> > @@ -44,19 +44,19 @@ static int imx_cpufreq_dt_probe(struct
> platform_device *pdev)
> > mkt_segment = (cell_value & OCOTP_CFG3_MKT_SEGMENT_MASK) >>
> > OCOTP_CFG3_MKT_SEGMENT_SHIFT;
> >
> > /*
> > - * Early samples without fuses written report "0 0" which means
> > - * consumer segment and minimum speed grading.
> > - *
> > - * According to datasheet minimum speed grading is not supported
> for
> > - * consumer parts so clamp to 1 to avoid warning for "no OPPs"
> > + * Early samples without fuses written report "0 0" which may NOT
> > + * match any OPP defined in DT. So clamp to minimum OPP defined
> in
> > + * DT to avoid warning for "no OPPs".
> > *
> > * Applies to i.MX8M series SoCs.
> > */
> > - if (mkt_segment == 0 && speed_grade == 0 && (
> > - of_machine_is_compatible("fsl,imx8mm") ||
> > - of_machine_is_compatible("fsl,imx8mn") ||
> > - of_machine_is_compatible("fsl,imx8mq")))
> > - speed_grade = 1;
> > + if (mkt_segment == 0 && speed_grade == 0) {
> > + if (of_machine_is_compatible("fsl,imx8mm") ||
> > + of_machine_is_compatible("fsl,imx8mq"))
>
> of_machine_is_compatible should come right below the above
> of_machine_is_compatible here, instead of a leading tab.

Ah, yes, fixed in V2.

Thanks,
Anson