On Fri, Nov 13, 2020 at 06:55:27PM +0300, Dmitry Osipenko wrote:
13.11.2020 17:29, Mark Brown пишет:
It's not clear if it matters - it's more a policy decision on the part of the driver about what it thinks safe error handling is. If it's not
If regulator_get() returns a dummy regulator, then this means that regulator isn't specified in a device-tree. But then the only way for a consumer driver to check whether regulator is dummy, is to check presence of the supply property in a device-tree.
My point here is that the driver shouldn't be checking for a dummy regulator, the driver should be checking the features that are provided to it by the regulator and handling those. It doesn't matter if this is a dummy regulator or an actual regulator with limited features, the effect is the same and the handling should be the same. If the driver is doing anything to handle dummy regulators explicitly as dummy regulators it is doing it wrong.
We want to emit error messages when something goes wrong, for example when regulator voltage fails to change. It's fine that voltage changes are failing for a dummy regulator, but then consumer driver shouldn't recognize it as a error condition.
If you're fine with that you should also be fine with any other regulator for which you failed to enumerate any voltages which you can set.
The regulator_get_optional() provides a more consistent and straightforward way for consumer drivers to check presence of a physical voltage regulator in comparison to dealing with a regulator_get(). The dummy regulator is nice to use when there is no need to change regulator's voltage, which doesn't work for a dummy regulator.
To repeat you should *only* be using regulator_get_optional() in the case where the supply may be physically absent which is not the case here.