We have a imx6q customer board ( imx6q, pf0100 pmic) which runs android 4.4.3 bsp (kernel 3.10.53) . After integrate wifi+bt module (rtl8723bs, sdio wifi+ uart BT), we found the android can't power off any more ( through android power menu , the pm_on_req will not become low).
After some measurement, we found
1. If module removed, the system can power off, pm_power_off is executed. if module is installed, I can't see pm_power_off excuted. so I move pm_power_off to early stage, the result is same, set snvs off bit will not make pm_on_req to low
2. Force Wifi/BT module to off first, system still can't power off.
3. Some SD signals (Sdio2) and the BT (uart4) signals are remain high during power off progress, force all bus signal to gpio low and shutdown module power, system can powered off "sometimes".
4. Force NVCC_ENET to low (uart4 power domain), system can power off, sure uart4 signals are low because nvcc_enet gone.
5. when power off fail, at this time we shutdown pmic by press and hold power button for 4 seconds, although system can power on again, but pmic will not work normal anymore ( can never powered off by press and hold power button) , seems pm_on_req low is a flag to restart pmic.
So my question are,
1. what is the possible root cause can block pm_on_req to low? uart sdio bus signal are high?
2. How to avoid this issue? by modiy uart/sd driver, of pm_power_off? how?
3. Are there any register to gate-off nvcc_xxx power domain?