Hi,
Again we measured the total board current for low power states. This time we kept M4 core in active state. The measured values are given below.
Table 1: M4 is active
| active | freeze | standby | mem |
| 330 | 329 | 277 | 275 |
Table 2: M4 is inactive
| active | freeze | standby | mem |
| 322 | 323 | 270 | 310 |
From the table we can clearly see the difference between the current values for mem state. When M4 is active, the total board current for mem is less(more or less equal) than that of standby. But when M4 is inactive, the total board current for mem is greater than that of standby.
When we looked into linux kernel, we found that the following lines under the function imx_gpcv2_pre_suspend() in arch/arm/mach-imx/gpcv2.c
----------------------------------------------------------------------------------------------
.......
if ((!imx_src_is_m4_enabled()) ||
(imx_src_is_m4_enabled() && imx_mu_is_m4_in_stop()))
imx_gpcv2_mf_mix_off();;
........
---------------------------------------------------------------------------------------------------
From the code we can see that imx_gpcv2_mf_mix_off() will be called when M4 core is disabled or in STOP mode.
So calling this function increases the total current value. This is confirmed by commenting the function call and measured the current value while M4 core is inactive. The measured value is given below.
Table 3: M4 is inactive and commented imx_gpcv2_mf_mix_off() function call
| active | freeze | standby | mem |
| 322 | 323 | 270 | 267 |
The question is why the current value is increasing instead of decreasing while powering down the Fastmix/Megamix domain. Is that a bug ? or are we missing anything?