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] [day] [month] [year] [list]
Message-ID: <4D77345F.8040706@compulab.co.il>
Date:	Wed, 09 Mar 2011 10:03:43 +0200
From:	Igor Grinberg <grinberg@...pulab.co.il>
To:	MyungJoo Ham <myungjoo.ham@...sung.com>
CC:	linux-kernel@...r.kernel.org, Liam Girdwood <lrg@...mlogic.co.uk>,
	Mark Brown <broonie@...nsource.wolfsonmicro.com>,
	kyungmin.park@...sung.com, myungjoo.ham@...il.com
Subject: Re: [PATCH v2] Regulator: add suspend-finish API for regulator core.

Hi,


just a minor comment issue...


On 03/09/11 04:37, MyungJoo Ham wrote:

> The regulator core had suspend-prepare that turns off the regulators
> when entering a system-wide suspend. However, it did not have
> suspend-finish that pairs with suspend-prepare and the regulator core
> has assumed that the regulator devices and their drivers support
> autonomous recover at resume.
>
> This patch adds regulator_suspend_finish that pairs with the
> previously-existed regulator_suspend_prepare. The function
> regulator_suspend_finish turns on the regulators that have always_on set
> or positive use_count so that we can reset the regulator states
> appropriately at resume.
>
> In regulator_suspend_finish, if has_full_constraints, it disables
> unnecessary regulators.
>
> Signed-off-by: MyungJoo Ham <myungjoo.ham@...sung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@...sung.com>
> ---
>  drivers/regulator/core.c          |   40 +++++++++++++++++++++++++++++++++++++
>  include/linux/regulator/machine.h |    1 +
>  2 files changed, 41 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
> index 9fa2095..4d34cc0 100644
> --- a/drivers/regulator/core.c
> +++ b/drivers/regulator/core.c
> @@ -2653,6 +2653,46 @@ out:
>  EXPORT_SYMBOL_GPL(regulator_suspend_prepare);
>  
>  /**
> + * regulator_suspend_prepare - resume regulators from system wide suspend

s/prepare/finish/

> + *
> + * Turn on regulators that might be turned off by regulator_suspend_prepare.
> + */
> +int regulator_suspend_finish(void)
> +{
> +	struct regulator_dev *rdev;
> +	int ret = 0, error;
> +
> +	mutex_lock(&regulator_list_mutex);
> +	list_for_each_entry(rdev, &regulator_list, list) {
> +		struct regulator_ops *ops = rdev->desc->ops;
> +
> +		mutex_lock(&rdev->mutex);
> +		if ((rdev->use_count > 0  || rdev->constraints->always_on) &&
> +				ops->enable) {
> +			error = ops->enable(rdev);
> +			if (error)
> +				ret = error;
> +		} else {
> +			if (!has_full_constraints)
> +				goto unlock;
> +			if (!ops->disable)
> +				goto unlock;
> +			if (ops->is_enabled && !ops->is_enabled(rdev))
> +				goto unlock;
> +
> +			error = ops->disable(rdev);
> +			if (error)
> +				ret = error;
> +		}
> +unlock:
> +		mutex_unlock(&rdev->mutex);
> +	}
> +	mutex_unlock(&regulator_list_mutex);
> +	return ret;
> +}
> +EXPORT_SYMBOL_GPL(regulator_suspend_finish);
> +
> +/**
>   * regulator_has_full_constraints - the system has fully specified constraints
>   *
>   * Calling this function will cause the regulator API to disable all
> diff --git a/include/linux/regulator/machine.h b/include/linux/regulator/machine.h
> index 761c745..c4c4fc4 100644
> --- a/include/linux/regulator/machine.h
> +++ b/include/linux/regulator/machine.h
> @@ -186,6 +186,7 @@ struct regulator_init_data {
>  };
>  
>  int regulator_suspend_prepare(suspend_state_t state);
> +int regulator_suspend_finish(void);
>  
>  #ifdef CONFIG_REGULATOR
>  void regulator_has_full_constraints(void);

-- 
Regards,
Igor.

--
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