lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 6 Oct 2010 06:09:17 +0200
From:	Marek Vasut <marek.vasut@...il.com>
To:	Mark Brown <broonie@...nsource.wolfsonmicro.com>
Cc:	Liam Girdwood <lrg@...mlogic.co.uk>, linux-kernel@...r.kernel.org,
	Igor Grinberg <grinberg@...pulab.co.il>,
	Dmitry Torokhov <dmitry.torokhov@...il.com>,
	Alan Cox <alan@...rguk.ukuu.org.uk>,
	Linus Walleij <linus.ml.walleij@...il.com>
Subject: Re: [PATCH] regulator: Add option for machine drivers to enable the dummy regulator

Dne St 6. října 2010 04:18:32 Mark Brown napsal(a):
> Allow machine drivers to explicitly enable the use of the dummy regulator,
> enabling simpler support for systems with only a few specific supplies
> visible to software.
> 
> It is strongly recommended that this is not used on systems with
> substantial software control over their PMICs, for maximum functionality
> constrints should be as fully specified as possible.

This still solves nothing ... This leaves boards broken and the granularity is 
too big. Consider there are boards that use regulator for MMC, but not for 
ADS7846 for example.

Cheers
> 
> Signed-off-by: Mark Brown <broonie@...nsource.wolfsonmicro.com>
> ---
>  drivers/regulator/Makefile        |    3 +--
>  drivers/regulator/core.c          |   22 ++++++++++++++++++++++
>  include/linux/regulator/machine.h |    5 +++++
>  3 files changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
> index 8285fd8..f58bfdb 100644
> --- a/drivers/regulator/Makefile
> +++ b/drivers/regulator/Makefile
> @@ -3,14 +3,13 @@
>  #
> 
> 
> -obj-$(CONFIG_REGULATOR) += core.o
> +obj-$(CONFIG_REGULATOR) += core.o dummy.o
>  obj-$(CONFIG_REGULATOR_FIXED_VOLTAGE) += fixed.o
>  obj-$(CONFIG_REGULATOR_VIRTUAL_CONSUMER) += virtual.o
>  obj-$(CONFIG_REGULATOR_USERSPACE_CONSUMER) += userspace-consumer.o
> 
>  obj-$(CONFIG_REGULATOR_AD5398) += ad5398.o
>  obj-$(CONFIG_REGULATOR_BQ24022) += bq24022.o
> -obj-$(CONFIG_REGULATOR_DUMMY) += dummy.o
>  obj-$(CONFIG_REGULATOR_LP3971) += lp3971.o
>  obj-$(CONFIG_REGULATOR_MAX1586) += max1586.o
>  obj-$(CONFIG_REGULATOR_TWL4030) += twl-regulator.o
> diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
> index 422a709..bf82d01 100644
> --- a/drivers/regulator/core.c
> +++ b/drivers/regulator/core.c
> @@ -33,6 +33,7 @@ static DEFINE_MUTEX(regulator_list_mutex);
>  static LIST_HEAD(regulator_list);
>  static LIST_HEAD(regulator_map_list);
>  static int has_full_constraints;
> +static bool board_wants_dummy_regulator;
> 
>  /*
>   * struct regulator_map
> @@ -1108,6 +1109,11 @@ static struct regulator *_regulator_get(struct
> device *dev, const char *id, }
>  	}
> 
> +	if (board_wants_dummy_regulator) {
> +		rdev = dummy_regulator_rdev;
> +		goto found;
> +	}
> +
>  #ifdef CONFIG_REGULATOR_DUMMY
>  	if (!devname)
>  		devname = "deviceless";
> @@ -2461,6 +2467,22 @@ void regulator_has_full_constraints(void)
>  EXPORT_SYMBOL_GPL(regulator_has_full_constraints);
> 
>  /**
> + * regulator_use_dummy_regulator - Provide a dummy regulator when none is
> found + *
> + * Calling this function will cause the regulator API to provide a
> + * dummy regulator to consumers if no physical regulator is found,
> + * allowing most consumers to proceed as though a regulator were
> + * configured.  This allows systems such as those with software
> + * controllable regulators for the CPU core only to be brought up more
> + * readily.
> + */
> +void regulator_use_dummy_regulator(void)
> +{
> +	board_wants_dummy_regulator = true;
> +}
> +EXPORT_SYMBOL_GPL(regulator_use_dummy_regulator);
> +
> +/**
>   * rdev_get_drvdata - get rdev regulator driver data
>   * @rdev: regulator
>   *
> diff --git a/include/linux/regulator/machine.h
> b/include/linux/regulator/machine.h index e298028..761c745 100644
> --- a/include/linux/regulator/machine.h
> +++ b/include/linux/regulator/machine.h
> @@ -189,10 +189,15 @@ int regulator_suspend_prepare(suspend_state_t state);
> 
>  #ifdef CONFIG_REGULATOR
>  void regulator_has_full_constraints(void);
> +void regulator_use_dummy_regulator(void);
>  #else
>  static inline void regulator_has_full_constraints(void)
>  {
>  }
> +
> +static inline void regulator_use_dummy_regulator(void)
> +{
> +}
>  #endif
> 
>  #endif
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ