Re: [PATCH] regulator: core: Add option to prevent disabling unused regulators

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 10/28/23 03:24, Javier Martinez Canillas wrote:
> This may be useful for debugging and develompent purposes, when there are
> drivers that depend on regulators to be enabled but do not request them.
> 
> It is inspired from the clk_ignore_unused and pd_ignore_unused parameters,
> that are used to keep firmware-enabled clocks and power domains on even if
> these are not used by drivers.
> 
> The parameter is not expected to be used in normal cases and should not be
> needed on a platform with proper driver support.
> 
> Signed-off-by: Javier Martinez Canillas <javierm@xxxxxxxxxx>
> ---
> 
>  Documentation/admin-guide/kernel-parameters.txt |  7 +++++++
>  drivers/regulator/core.c                        | 17 +++++++++++++++++
>  2 files changed, 24 insertions(+)
> 
> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> index 0a1731a0f0ef..91b58d767c2c 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -5461,6 +5461,13 @@
>  			print every Nth verbose statement, where N is the value
>  			specified.
>  
> +	regulator_ignore_unused
> +			[REGULATOR]
> +			Prevents the regulator framework to disable regulators

			                                 from disabling regulators

> +			that are unused due not driver claiming them. This may

			                    no driver claiming them.

> +			be useful for debug and development, but should not be
> +			needed on a platform with proper driver support.
> +
>  	relax_domain_level=
>  			[KNL, SMP] Set scheduler's default relax_domain_level.
>  			See Documentation/admin-guide/cgroup-v1/cpusets.rst.
> diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
> index 3137e40fcd3e..220034ff0273 100644
> --- a/drivers/regulator/core.c
> +++ b/drivers/regulator/core.c
> @@ -6234,6 +6234,14 @@ static int regulator_late_cleanup(struct device *dev, void *data)
>  	return 0;
>  }
>  
> +static bool regulator_ignore_unused;
> +static int __init regulator_ignore_unused_setup(char *__unused)
> +{
> +	regulator_ignore_unused = true;
> +	return 1;
> +}
> +__setup("regulator_ignore_unused", regulator_ignore_unused_setup);
> +
>  static void regulator_init_complete_work_function(struct work_struct *work)
>  {
>  	/*
> @@ -6246,6 +6254,15 @@ static void regulator_init_complete_work_function(struct work_struct *work)
>  	class_for_each_device(&regulator_class, NULL, NULL,
>  			      regulator_register_resolve_supply);
>  
> +	/*
> +	 * For debugging purposes, it may be useful to prevent unused
> +	 * regulators to be disabled.

	              from being disabled.

> +	 */
> +	if (regulator_ignore_unused) {
> +		pr_warn("regulator: Not disabling unused regulators\n");
> +		return;
> +	}
> +
>  	/* If we have a full configuration then disable any regulators
>  	 * we have permission to change the status for and which are
>  	 * not in use or always_on.  This is effectively the default

HTH.
-- 
~Randy




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux