boot_on regulator constraint vs. regulator-boot-on DT property
Liam, Mark,
I've spotted what seems like a slight inconsistency between the documentation for the boot_on regulator constraint, and the regulator-boot-on DT property documentation.
include/linux/regulator/machine.h says:
Quoted 4 lines
* @boot_on: Set if the regulator is enabled when the system is initially
* started. If the regulator is not enabled by the hardware or * bootloader then it will be enabled when the constraints are * applied.
Documentation/devicetree/bindings/regulator/regulator.txt says:
Quoted 1 line
- regulator-boot-on: bootloader/firmware enabled regulator
... and of_regulator.c sets the boot_on constraint based on this property.
The former quote implies that this is a flag to tell Linux to turn on the regulator when it's first registered, whereas the latter quote implies that it's guaranteeing the state that previous SW placed the regulator into already.
I assume the documentation from machine.h is correct, and I should send a patch to make regulator.txt match it?
Thanks.
Quoted 13 lines · Stephen Warren
include/linux/regulator/machine.hsays:Quoted 4 lines
* @boot_on: Set if the regulator is enabled when the system is initially
* started. If the regulator is not enabled by the hardware or * bootloader then it will be enabled when the constraints are * applied.
Documentation/devicetree/bindings/regulator/regulator.txtsays:Quoted 1 line
- regulator-boot-on: bootloader/firmware enabled regulator
... and
of_regulator.csets theboot_onconstraint based on this property.
Quoted 7 lines
The former quote implies that this is a flag to tell Linux to turn on the regulator when it's first registered, whereas the latter quote implies that it's guaranteeing the state that previous SW placed the regulator into already.
I assume the documentation from
machine.his correct, and I should send a patch to make regulator.txt match it?
There's no great inconsistency between the two, this is only supposed to be used for supplies which are already enabled on boot but if the supply is not already enabled then currently the API will try to make it so since probably there's some reason for that. Generally it's supposed to be used as a crutch to keep hotplug going.
I'm not sure we should clarify this since I'm not sure that for DT setups which (as we were discussing in the other thread) are supposed to be usable over many software versions it's something that should really be used. We ought to in the endgame be able to have DT systems turn on full constraints and that probably breaks anything relying too much on boot-on, I'd expect they either need the regulator to be always on or some more consumers.
Quoted 21 lines · Mark Brown
Quoted 18 lines · Stephen Warren
include/linux/regulator/machine.hsays:Quoted 4 lines
* @boot_on: Set if the regulator is enabled when the system is
initially * started. If the regulator is not enabled
by the hardware or * bootloader then it will be
enabled when the constraints are * applied.
Documentation/devicetree/bindings/regulator/regulator.txtsays:Quoted 1 line
- regulator-boot-on: bootloader/firmware enabled regulator
... and
of_regulator.csets theboot_onconstraint based on this property.The former quote implies that this is a flag to tell Linux to turn on the regulator when it's first registered, whereas the latter quote implies that it's guaranteeing the state that previous SW placed the regulator into already.
Quoted 5 lines
Quoted 2 lines
I assume the documentation from
machine.his correct, and I should send a patch to make regulator.txt match it?There's no great inconsistency between the two, this is only supposed to be used for supplies which are already enabled on boot
Hmm. Perhaps I was misreading machine.h, and "when the system is initially started" refers to the first firmware start, rather than when /Linux/ starts. If so, then yes I can see it isn't really inconsistent.
Quoted 9 lines · Stephen Warren
Quoted 2 lines · Mark Brown
There's no great inconsistency between the two, this is only supposed to be used for supplies which are already enabled on boot
Hmm. Perhaps I was misreading
machine.h, and "when the system is initially started" refers to the first firmware start, rather than when /Linux/ starts. If so, then yes I can see it isn't really inconsistent.
Yes, that's the idea - it's for telling the core that everything has been done on the basis that the initial power up state of the system (possibly after some intervention by the bootloader) should be whatever, it's not supposed to be an instruction to Linux itself. Linux should be using consumers or always on.