Skip to content

: imx: mx6: use OTP for temperature grade and freq grade

Nikolay Dimitrov u-boot 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest0 of 4 patches 0 repliesNew

Patches in v1 No applies recorded yet

None of the 4 patches the cover letter announces are in this archive.

Reviews trailers per patch

PatchNikolay Dimitrov
SeriesT-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [U-Boot] [PATCH 0/4]: imx: mx6: use OTP for temperature grade and freq grade

Hi Tim,

Quoted 49 lines · Tim Harvey
Quoted 2 lines · Markus Niebel

Hello Tim,

<snip>

Quoted 17 lines
Quoted 17 lines
Quoted 17 lines

IMX6Q automotive (1GHz capable) powering up at 800MHz:
- before:
CPU: Freescale i.MX6Q rev1.2 at 792 MHz
- after Patch 1/4:
CPU: Freescale i.MX6Q rev1.2 996 MHz (at 792 MHz)
- after Patch 3/4 (if CONFIG_IMX6_THERMAL defined)
CPU: Freescale i.MX6Q rev1.2 automotive (-40C to 125C) 996 MHz (at 792 MHz)

IMX6S industrial (800MHz capable) powering up at 800MHz:
- before:
CPU: Freescale i.MX6SOLO rev1.2 at 792 MHz
- after Patch 1/4: (max speed == cur speed)
CPU: Freescale i.MX6SOLO rev1.2 792 MHz
- after Patch 3/4 (if CONFIG_IMX6_THERMAL defined)
CPU: Freescale i.MX6SOLO rev1.2 industrial (-40C to 105C) 792 MHz

<snip>

Quoted 9 lines

Where do get the speed grade ant temperature grade information from i.MX6SOLO / DL from? The fusemap in the reference manual says nothing about these info for SOLO / DL and a Freescale FAE stated that these information is not present in the fuses for SOLO / DL.

Regards,

Markus

Markus,

Your right - There is no indication in the IMX6SDLRM that OTP indicates either temperature grade 'or' speed grade, however my testing looks like they implement the same OTP settings for this as the IMX6DUAL/IMX6QUAD as indicated in the IMX6DQRM.

I have tested these patches with the following SoC's I have available:
- MCIMX6S7CVM08AC (IMX6S r1.2, Industrial temp, 800MHz) - shows 'industrial (-40C to 105C) 792 MHz' (correct)
- MCIMX6S5EVM10AC (IMX6S r1.2, Extended Commercial temp, 1GHz) - shows 'extended commercial (-20C to 105C) 996 MHz (at 792 MHz)' (correct)
- MCIMX6U7CVM08AB (IMX6DL r1.1, Industrial temp, 800MHz) - shows 'industrial (-40C to 105C) 792 MHz' (correct)
- MCIMX6Q6AVT10AC (IMX6Q r1.2. Automotive temp, 1GHz) - shows 'automotive (-40C to 125C) 996 MHz (at 792 MHz)' (correct)

Quoted 8 lines

I'll send our FAE a question to verify - perhaps your FAE simply answered the questions based on the reference manual (which is notoriously lacking info and in some cases wrong).

I encourage anyone with additional parts to test these patches and report if they show accurate information. If anyone has any IMX6SX I would appreciate removing the check that ignores the OTP for that and seeing if the results make sense.

Here are the results from riotboard (imx6s) testing with your patches against Stefano's tree:

Before:
CPU: Freescale i.MX6SOLO rev1.1 at 792 MHz

After patch 1:
CPU: Freescale i.MX6SOLO rev1.1 996 MHz (at 792 MHz)

After patch 2:
CPU: Freescale i.MX6SOLO rev1.1 996 MHz (at 792 MHz)

After patch 3:
CPU: Freescale i.MX6SOLO rev1.1 // No idea why I lost the MHz values

After patch 4:
CPU: Freescale i.MX6SOLO rev1.1

MHz values are missing after patch 3, and looking diagonally at the code I don't see a reason. Next, riotboard doesn't have CONFIG_IMX6_THERMAL by default. When added, I get this:

$ make u-boot.imx
...
   OBJCOPY examples/standalone/hello_world.bin
   LDS     u-boot.lds
   LD      u-boot
arch/arm/imx-common/built-in.o: In function `print_cpuinfo':
/home/picmaster/work/u-boot-imx/arch/arm/imx-common/cpu.c:196: undefined 
reference to `uclass_get_device'
/home/picmaster/work/u-boot-imx/arch/arm/imx-common/cpu.c:198: undefined 
reference to `thermal_get_temp'
drivers/built-in.o: In function `imx_thermal_probe':
/home/picmaster/work/u-boot-imx/drivers/thermal/imx_thermal.c:155: 
undefined reference to `dev_get_platdata'
/home/picmaster/work/u-boot-imx/drivers/thermal/imx_thermal.c:156: 
undefined reference to `dev_get_priv'
drivers/built-in.o: In function `read_cpu_temperature':
/home/picmaster/work/u-boot-imx/drivers/thermal/imx_thermal.c:46: 
undefined reference to `dev_get_platdata'
/home/picmaster/work/u-boot-imx/drivers/thermal/imx_thermal.c:48: 
undefined reference to `dev_get_priv'
drivers/built-in.o: In function `imx_thermal_get_temp':
/home/picmaster/work/u-boot-imx/drivers/thermal/imx_thermal.c:127: 
undefined reference to `dev_get_priv'
ld.bfd: BFD (GNU Binutils for Debian) 2.22 assertion fail 
../../bfd/elf32-arm.c:7498
ld.bfd: BFD (GNU Binutils for Debian) 2.22 assertion fail 
../../bfd/elf32-arm.c:7498
ld.bfd: BFD (GNU Binutils for Debian) 2.22 assertion fail 
../../bfd/elf32-arm.c:7498
ld.bfd: BFD (GNU Binutils for Debian) 2.22 assertion fail 
../../bfd/elf32-arm.c:7498
ld.bfd: BFD (GNU Binutils for Debian) 2.22 assertion fail 
../../bfd/elf32-arm.c:13830
Segmentation fault
make: *** [u-boot] Error 139

Are there additional CONFIG dependencies?

Regards,
Nikolay