regulator: Check status before disabling
When disabling regulator when they are unused, check before is they are enabled. While here don't check the enable_cnt on the regulator entry as it is checked by regnode_stop. This solve the panic on any board using a fixed regulator that is driven by a gpio when the regulator is unused. Tested On: OrangePi One Pointy Hat to: myself Reported by: kevans, Milan Obuch (freebsd-arm@dino.sk)
This commit is contained in:
parent
c712135a32
commit
bfeb2bd7ca
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=332843
@ -166,17 +166,19 @@ static void
|
||||
regulator_shutdown(void *dummy)
|
||||
{
|
||||
struct regnode *entry;
|
||||
int status, ret;
|
||||
int disable = 1;
|
||||
|
||||
REG_TOPO_SLOCK();
|
||||
TUNABLE_INT_FETCH("hw.regulator.disable_unused", &disable);
|
||||
TAILQ_FOREACH(entry, ®node_list, reglist_link) {
|
||||
if (entry->enable_cnt == 0 &&
|
||||
entry->std_param.always_on == 0 && disable) {
|
||||
if (entry->std_param.always_on == 0 && disable) {
|
||||
if (bootverbose)
|
||||
printf("regulator: shuting down %s\n",
|
||||
entry->name);
|
||||
regnode_stop(entry, 0);
|
||||
ret = regnode_status(entry, &status);
|
||||
if (ret == 0 && status == REGULATOR_STATUS_ENABLED)
|
||||
regnode_stop(entry, 0);
|
||||
}
|
||||
}
|
||||
REG_TOPO_UNLOCK();
|
||||
|
Loading…
Reference in New Issue
Block a user