diff options
| -rw-r--r-- | drivers/regulator/core.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 9a09f3cdbabb..e3cb9b66731f 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -3819,8 +3819,9 @@ static int __init regulator_init_complete(void)  	mutex_lock(®ulator_list_mutex);  	/* If we have a full configuration then disable any regulators -	 * which are not in use or always_on.  This will become the -	 * default behaviour in the future. +	 * we have permission to change the status for and which are +	 * not in use or always_on.  This is effectively the default +	 * for DT and ACPI as they have full constraints.  	 */  	list_for_each_entry(rdev, ®ulator_list, list) {  		ops = rdev->desc->ops; @@ -3829,6 +3830,9 @@ static int __init regulator_init_complete(void)  		if (c && c->always_on)  			continue; +		if (c && !(c->valid_ops_mask & REGULATOR_CHANGE_STATUS)) +			continue; +  		mutex_lock(&rdev->mutex);  		if (rdev->use_count)  | 

