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: <1249327967.4248.144.camel@vega.slimlogic.co.uk>
Date:	Mon, 03 Aug 2009 20:32:47 +0100
From:	Liam Girdwood <lrg@...mlogic.co.uk>
To:	Roger Quadros <quadros.roger@...il.com>
Cc:	broonie@...ena.org.uk, philipp.zabel@...il.com,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH v4] regulator: Add GPIO enable control to fixed voltage
 regulator driver

On Mon, 2009-08-03 at 20:15 +0300, Roger Quadros wrote:
> From: Roger Quadros <ext-roger.quadros@...ia.com>
> 
> Now fixed regulators that have their enable pin connected to a GPIO line
> can use the fixed regulator driver for regulator enable/disable control.
> The GPIO number and polarity information is passed through platform data.
> GPIO enable control is achieved using gpiolib.
> 
> Signed-off-by: Roger Quadros <ext-roger.quadros@...ia.com>
> ---
>  drivers/regulator/fixed.c       |   78 ++++++++++++++++++++++++++++++++++++++-
>  include/linux/regulator/fixed.h |   21 ++++++++++
>  2 files changed, 97 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
> index cdc674f..6cea02c 100644
> --- a/drivers/regulator/fixed.c
> +++ b/drivers/regulator/fixed.c
> @@ -5,6 +5,9 @@
>   *
>   * Author: Mark Brown <broonie@...nsource.wolfsonmicro.com>
>   *
> + * Copyright (c) 2009 Nokia Corporation
> + * Roger Quadros <ext-roger.quadros@...ia.com>
> + *
>   * This program is free software; you can redistribute it and/or
>   * modify it under the terms of the GNU General Public License as
>   * published by the Free Software Foundation; either version 2 of the
> @@ -20,20 +23,45 @@
>  #include <linux/platform_device.h>
>  #include <linux/regulator/driver.h>
>  #include <linux/regulator/fixed.h>
> +#include <linux/gpio.h>
>  
>  struct fixed_voltage_data {
>  	struct regulator_desc desc;
>  	struct regulator_dev *dev;
>  	int microvolts;
> +	int gpio;
> +	unsigned enable_high:1;
> +	unsigned is_enabled:1;
>  };
>  
>  static int fixed_voltage_is_enabled(struct regulator_dev *dev)
>  {
> -	return 1;
> +	struct fixed_voltage_data *data = rdev_get_drvdata(dev);
> +
> +	return data->is_enabled;
>  }
>  
>  static int fixed_voltage_enable(struct regulator_dev *dev)
>  {
> +	struct fixed_voltage_data *data = rdev_get_drvdata(dev);
> +
> +	if (gpio_is_valid(data->gpio)) {
> +		gpio_set_value_cansleep(data->gpio, data->enable_high);
> +		data->is_enabled = 1;
> +	}
> +
> +	return 0;
> +}
> +
> +static int fixed_voltage_disable(struct regulator_dev *dev)
> +{
> +	struct fixed_voltage_data *data = rdev_get_drvdata(dev);
> +
> +	if (gpio_is_valid(data->gpio)) {
> +		gpio_set_value_cansleep(data->gpio, !data->enable_high);
> +		data->is_enabled = 0;
> +	}
> +
>  	return 0;
>  }
>  
> @@ -58,6 +86,7 @@ static int fixed_voltage_list_voltage(struct regulator_dev *dev,
>  static struct regulator_ops fixed_voltage_ops = {
>  	.is_enabled = fixed_voltage_is_enabled,
>  	.enable = fixed_voltage_enable,
> +	.disable = fixed_voltage_disable,
>  	.get_voltage = fixed_voltage_get_voltage,
>  	.list_voltage = fixed_voltage_list_voltage,
>  };
> @@ -85,12 +114,51 @@ static int regulator_fixed_voltage_probe(struct platform_device *pdev)
>  	drvdata->desc.n_voltages = 1;
>  
>  	drvdata->microvolts = config->microvolts;
> +	drvdata->gpio = config->gpio;
> +
> +	if (gpio_is_valid(config->gpio)) {
> +		drvdata->enable_high = config->enable_high;
> +
> +		/* FIXME: Remove this print warning */

Sorry to nitpick. Please describe the reason for this warning in the
comment and when it will likely be removed. Obvious from email thread
but not by someone looking at code.

Thanks

Liam

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