[U-Boot] [PATCH 1/3] mx7: Fix speed grade entry

According to the MX7D fuse map the speed grade of the parts, which return '1' is 500MHz instead of 850MHz, so fix it accordingly.
Signed-off-by: Fabio Estevam fabio.estevam@nxp.com --- arch/arm/cpu/armv7/mx7/soc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/cpu/armv7/mx7/soc.c b/arch/arm/cpu/armv7/mx7/soc.c index dead1d3..b9fb97b 100644 --- a/arch/arm/cpu/armv7/mx7/soc.c +++ b/arch/arm/cpu/armv7/mx7/soc.c @@ -103,7 +103,7 @@ struct imx_sec_config_fuse_t const imx_sec_config_fuse = { */ #define OCOTP_TESTER3_SPEED_SHIFT 8 #define OCOTP_TESTER3_SPEED_800MHZ 0 -#define OCOTP_TESTER3_SPEED_850MHZ 1 +#define OCOTP_TESTER3_SPEED_500MHZ 1 #define OCOTP_TESTER3_SPEED_1GHZ 2
u32 get_cpu_speed_grade_hz(void) @@ -121,8 +121,8 @@ u32 get_cpu_speed_grade_hz(void) switch(val) { case OCOTP_TESTER3_SPEED_800MHZ: return 792000000; - case OCOTP_TESTER3_SPEED_850MHZ: - return 852000000; + case OCOTP_TESTER3_SPEED_500MHZ: + return 500000000; case OCOTP_TESTER3_SPEED_1GHZ: return 996000000; }

According to the MX7D fuse map the following speed grades are available:
800 MHz 500 MHz 1000 MHz 1200 MHz
So simply return the real frequency that corresponds to the speed grade.
With this change we see on boot:
CPU: Freescale i.MX7D rev1.2 1000 MHz (running at 792 MHz)
Signed-off-by: Fabio Estevam fabio.estevam@nxp.com --- arch/arm/cpu/armv7/mx7/soc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/cpu/armv7/mx7/soc.c b/arch/arm/cpu/armv7/mx7/soc.c index b9fb97b..8cde77b 100644 --- a/arch/arm/cpu/armv7/mx7/soc.c +++ b/arch/arm/cpu/armv7/mx7/soc.c @@ -120,11 +120,11 @@ u32 get_cpu_speed_grade_hz(void)
switch(val) { case OCOTP_TESTER3_SPEED_800MHZ: - return 792000000; + return 800000000; case OCOTP_TESTER3_SPEED_500MHZ: return 500000000; case OCOTP_TESTER3_SPEED_1GHZ: - return 996000000; + return 1000000000; } return 0; }

On 22/02/2017 16:43, Fabio Estevam wrote:
According to the MX7D fuse map the following speed grades are available:
800 MHz 500 MHz 1000 MHz 1200 MHz
So simply return the real frequency that corresponds to the speed grade.
With this change we see on boot:
CPU: Freescale i.MX7D rev1.2 1000 MHz (running at 792 MHz)
Signed-off-by: Fabio Estevam fabio.estevam@nxp.com
arch/arm/cpu/armv7/mx7/soc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/cpu/armv7/mx7/soc.c b/arch/arm/cpu/armv7/mx7/soc.c index b9fb97b..8cde77b 100644 --- a/arch/arm/cpu/armv7/mx7/soc.c +++ b/arch/arm/cpu/armv7/mx7/soc.c @@ -120,11 +120,11 @@ u32 get_cpu_speed_grade_hz(void)
switch(val) { case OCOTP_TESTER3_SPEED_800MHZ:
return 792000000;
case OCOTP_TESTER3_SPEED_500MHZ: return 500000000; case OCOTP_TESTER3_SPEED_1GHZ:return 800000000;
return 996000000;
} return 0;return 1000000000;
}
Applied to u-boot-imx, thanks !
Best regards, Stefano Babic

There are recent MX7 parts that have a 1.2GHz speed grade.
Add support for it.
Signed-off-by: Fabio Estevam fabio.estevam@nxp.com --- arch/arm/cpu/armv7/mx7/soc.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/arch/arm/cpu/armv7/mx7/soc.c b/arch/arm/cpu/armv7/mx7/soc.c index 8cde77b..8422f24 100644 --- a/arch/arm/cpu/armv7/mx7/soc.c +++ b/arch/arm/cpu/armv7/mx7/soc.c @@ -105,6 +105,7 @@ struct imx_sec_config_fuse_t const imx_sec_config_fuse = { #define OCOTP_TESTER3_SPEED_800MHZ 0 #define OCOTP_TESTER3_SPEED_500MHZ 1 #define OCOTP_TESTER3_SPEED_1GHZ 2 +#define OCOTP_TESTER3_SPEED_1P2GHZ 3
u32 get_cpu_speed_grade_hz(void) { @@ -125,6 +126,8 @@ u32 get_cpu_speed_grade_hz(void) return 500000000; case OCOTP_TESTER3_SPEED_1GHZ: return 1000000000; + case OCOTP_TESTER3_SPEED_1P2GHZ: + return 1200000000; } return 0; }

On 22/02/2017 16:43, Fabio Estevam wrote:
There are recent MX7 parts that have a 1.2GHz speed grade.
Add support for it.
Signed-off-by: Fabio Estevam fabio.estevam@nxp.com
arch/arm/cpu/armv7/mx7/soc.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/arch/arm/cpu/armv7/mx7/soc.c b/arch/arm/cpu/armv7/mx7/soc.c index 8cde77b..8422f24 100644 --- a/arch/arm/cpu/armv7/mx7/soc.c +++ b/arch/arm/cpu/armv7/mx7/soc.c @@ -105,6 +105,7 @@ struct imx_sec_config_fuse_t const imx_sec_config_fuse = { #define OCOTP_TESTER3_SPEED_800MHZ 0 #define OCOTP_TESTER3_SPEED_500MHZ 1 #define OCOTP_TESTER3_SPEED_1GHZ 2 +#define OCOTP_TESTER3_SPEED_1P2GHZ 3
u32 get_cpu_speed_grade_hz(void) { @@ -125,6 +126,8 @@ u32 get_cpu_speed_grade_hz(void) return 500000000; case OCOTP_TESTER3_SPEED_1GHZ: return 1000000000;
- case OCOTP_TESTER3_SPEED_1P2GHZ:
} return 0;return 1200000000;
}
Applied to u-boot-imx, thanks !
Best regards, Stefano Babic

On 22/02/2017 16:43, Fabio Estevam wrote:
According to the MX7D fuse map the speed grade of the parts, which return '1' is 500MHz instead of 850MHz, so fix it accordingly.
Signed-off-by: Fabio Estevam fabio.estevam@nxp.com
arch/arm/cpu/armv7/mx7/soc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/cpu/armv7/mx7/soc.c b/arch/arm/cpu/armv7/mx7/soc.c index dead1d3..b9fb97b 100644 --- a/arch/arm/cpu/armv7/mx7/soc.c +++ b/arch/arm/cpu/armv7/mx7/soc.c @@ -103,7 +103,7 @@ struct imx_sec_config_fuse_t const imx_sec_config_fuse = { */ #define OCOTP_TESTER3_SPEED_SHIFT 8 #define OCOTP_TESTER3_SPEED_800MHZ 0 -#define OCOTP_TESTER3_SPEED_850MHZ 1 +#define OCOTP_TESTER3_SPEED_500MHZ 1 #define OCOTP_TESTER3_SPEED_1GHZ 2
u32 get_cpu_speed_grade_hz(void) @@ -121,8 +121,8 @@ u32 get_cpu_speed_grade_hz(void) switch(val) { case OCOTP_TESTER3_SPEED_800MHZ: return 792000000;
- case OCOTP_TESTER3_SPEED_850MHZ:
return 852000000;
- case OCOTP_TESTER3_SPEED_500MHZ:
case OCOTP_TESTER3_SPEED_1GHZ: return 996000000; }return 500000000;
Applied to u-boot-imx, thanks !
Best regards, Stefano Babic
participants (2)
-
Fabio Estevam
-
Stefano Babic