This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP4460 : SmartReflex Problem

Hi,

We are using OMAP4460 (1.2GHz) for one of the custom board. Our software developments are based on 4AI.1.4 OMAP4 Icecream Sandwich Release.  We are facing peculiar SmartReflex problem in our boards.

If we enable the smart reflex in the kernel then few of the boards will struck while booting without any crash log. But if we disable the smart reflex in the kernel then board will boot without any crash or freeze.

In some of the boards we don't see any crash or freeze even when we enabled SmartReflex.

We found when we enable the SmartReflex, CORE and MPU voltages are going low while booting, and this is the point where OMAP stops responding and will fail to boot. We have measured the MPU and CORE voltages in two different cases and please find the below MPU and CORE voltage values measure when SmartReflex is enabled,

VDD_MPU - 0.939V

VDD_IVA - 0.853V

VDD_CORE - 0.892V

Please find the MPU and CORE voltages when SmartReflex disabled

VDD_MPU - 1.046V

VDD_IVA - 0.972V

VDD_CORE - 0.972V

We didn't find any miscellaneous voltages spikes or the drop on the voltage rails in non-working boards(When SmartReflex enabled).

SmartReflex changes CORE and MPU voltages less than 1V. Is this voltage too Low than recommended ? Are we seeing any deviation from the standard SmartReflex operation?  Any suggestion to debug this issue will be appreciated.

Thanks and Regards,

Dinesh Guni

  • Hello Dinesh,

    Having SmartReflex calibrate CORE and MPU to below 1V for a low OPP is not unusual.

    There may be a voltage drop occuring with the custom board which could lead to the crash. There is a parameter you can adjust in arch/arm/mach-omap2/opp4xxx_data.c which offsets the smartreflex-calibrated value for that particular OPP.
    Looking at the omap446x_vdd_mpu_volt_data[] struct, the second parameter of each VOLT_DATA_DEFINE is the increased offset (in uV) to the calibrated value.

    struct omap_volt_data omap446x_vdd_mpu_volt_data[] = {
    VOLT_DATA_DEFINE(OMAP4460_VDD_MPU_OPP50_UV, 10000, OMAP44XX_CONTROL_FUSE_MPU_OPP50, 0xf4, 0x0c, OMAP_ABB_NOM
    VOLT_DATA_DEFINE(OMAP4460_VDD_MPU_OPP100_UV, 0, OMAP44XX_CONTROL_FUSE_MPU_OPP100, 0xf9, 0x16, OMAP_ABB_NOMIN
    VOLT_DATA_DEFINE(OMAP4460_VDD_MPU_OPPTURBO_UV, 0, OMAP44XX_CONTROL_FUSE_MPU_OPPTURBO, 0xfa, 0x23, OMAP_ABB_N
    VOLT_DATA_DEFINE(OMAP4460_VDD_MPU_OPPNITRO_UV, 0, OMAP44XX_CONTROL_FUSE_MPU_OPPNITRO, 0xfa, 0x27, OMAP_ABB_F
    VOLT_DATA_DEFINE(OMAP4460_VDD_MPU_OPPNITROSB_UV, 0, OMAP44XX_CONTROL_FUSE_MPU_OPPNITROSB, 0xfa, 0x27, OMAP_A
    VOLT_DATA_DEFINE(0, 0, 0, 0, 0, 0),
    };

    You could try adding offsets to OPPs and see if the problem goes away.

    Regards,
    Alex Trinh

  • hello alex,

    i also met the problem with smartreflex, i have two same board. and i have porting android on them and works well. But i found that when i am play film, the one work smoothly, but the other one will be wait a few seconds. I measure the voltage is about 7.605, others is about 8.301. i don't know why. Can you help me! Thanks!