We're using i.MX287 on custom boards. In some of them core voltage isn't updated after writing new value into register.
We use ddi_power_SetVddd function, which implemets loop of 100mV steps for large changes.
It seems first step from default 1,2V to 1,3V do work, but other don't (target is about 1,5V) and we stuck at 1,3V.
I can see that loop do work, but writes into register doesn't change voltage, even during long time (more than 15 seconds of nop delay).
Sometimes it needs other functionalities to be used (e.g. reads/writes DDR helps) to make core voltage change.
I measured with voltmeter, o-scope and with internal LRADC, same results.
if I disable stepping (set this bit), the value really change after each write into register.
One of possible explanations is a DCDC load problem, but then setting disable_stepping shouldn't change behaviour, right?
I also don't think that core running 400MHz could be too weak load of DCDC.
have You ever heard of similar problems?
can You explain how default stepping algorithm works and under what conditions it could fail?