I understand your point of view, but I think that the framework (as it is currently implemented) expects to get the requested mode of the regulator in this case, not the actual mode (in the shared mode register).The alternative could be to change the framework in some way.I guess what you don't like with the current approach is that the driverI got your point now.
returns REGULATOR_MODE_IDLE in some cases where the mode register is set to
LP. But I think, with patch applied, the control may be wrong in some cases
because the regulator framework will call get_mode and see that the mode is
already correct and not call set_mode so lp_mode_req will not get updated. I
My point is get_mode() should always return "correct" status by
reading register value.
And as you mentioned, regulator_set_mode() did check current mode and won't call
set_mode callback if current mode is the same as the target mode.
And that is why this patch won't work.
However, Make get_mode() return "incorrect" status to avoid above
issue looks wrong to me.