All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Linus Walleij <linus.walleij@linaro.org>,
	Lee Jones <lee.jones@linaro.org>,
	Jonathan Cameron <jic23@kernel.org>,
	linux-iio@vger.kernel.org, Hartmut Knaack <knaack.h@gmx.de>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Peter Meerwald-Stadler <pmeerw@pmeerw.net>
Cc: Mboumba Cedric Madianga <cedric.madianga@gmail.com>
Subject: Re: [PATCH 4/7 v4] hwmon: ab8500: convert to IIO ADC
Date: Fri, 11 Oct 2019 06:13:30 -0700	[thread overview]
Message-ID: <b192d50a-3bcf-6d4b-f2f5-2d6276601cf4@roeck-us.net> (raw)
In-Reply-To: <20191011071805.5554-5-linus.walleij@linaro.org>

On 10/11/19 12:18 AM, Linus Walleij wrote:
> This switches the AB8500 hardware monitor driver to using
> the standard IIO ADC channel lookup and conversion routines.
> 
> Acked-by: Guenter Roeck <linux@roeck-us.net>
> Acked-by: Jonathan Cameron <jic23@kernel.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> ChangeLog v3->v4:
> - No changes just resending
> ChangeLog v2->v3:
> - Depend on (IIO = y) since we are bool and need it compiled
>    in.
> - Rebased on v5.4-rc1
> ChangeLog v1->v2:
> - Collected ACKs.
> - Rebased on v5.3-rc5
> - Add a Kconfig dependency on IIO
> - Fix some whitespace issues
> 
> This should not be applied to the hwmon tree right now, it
> will be applied along with the other changes in ARM SoC.

I assume this is still true ?

Guenter

> ---
>   drivers/hwmon/Kconfig  |  3 +-
>   drivers/hwmon/ab8500.c | 65 ++++++++++++++++++++++++++----------------
>   2 files changed, 43 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
> index 13a6b4afb4b3..5308c59d7001 100644
> --- a/drivers/hwmon/Kconfig
> +++ b/drivers/hwmon/Kconfig
> @@ -40,7 +40,8 @@ comment "Native drivers"
>   
>   config SENSORS_AB8500
>   	tristate "AB8500 thermal monitoring"
> -	depends on AB8500_GPADC && AB8500_BM
> +	depends on AB8500_GPADC && AB8500_BM && (IIO = y)
> +	default n
>   	help
>   	  If you say yes here you get support for the thermal sensor part
>   	  of the AB8500 chip. The driver includes thermal management for
> diff --git a/drivers/hwmon/ab8500.c b/drivers/hwmon/ab8500.c
> index 207f77f85a40..53f3379d799d 100644
> --- a/drivers/hwmon/ab8500.c
> +++ b/drivers/hwmon/ab8500.c
> @@ -17,20 +17,24 @@
>   #include <linux/hwmon-sysfs.h>
>   #include <linux/mfd/abx500.h>
>   #include <linux/mfd/abx500/ab8500-bm.h>
> -#include <linux/mfd/abx500/ab8500-gpadc.h>
>   #include <linux/module.h>
>   #include <linux/platform_device.h>
>   #include <linux/power/ab8500.h>
>   #include <linux/reboot.h>
>   #include <linux/slab.h>
>   #include <linux/sysfs.h>
> +#include <linux/iio/consumer.h>
>   #include "abx500.h"
>   
>   #define DEFAULT_POWER_OFF_DELAY	(HZ * 10)
>   #define THERMAL_VCC		1800
>   #define PULL_UP_RESISTOR	47000
> -/* Number of monitored sensors should not greater than NUM_SENSORS */
> -#define NUM_MONITORED_SENSORS	4
> +
> +#define AB8500_SENSOR_AUX1		0
> +#define AB8500_SENSOR_AUX2		1
> +#define AB8500_SENSOR_BTEMP_BALL	2
> +#define AB8500_SENSOR_BAT_CTRL		3
> +#define NUM_MONITORED_SENSORS		4
>   
>   struct ab8500_gpadc_cfg {
>   	const struct abx500_res_to_temp *temp_tbl;
> @@ -40,7 +44,8 @@ struct ab8500_gpadc_cfg {
>   };
>   
>   struct ab8500_temp {
> -	struct ab8500_gpadc *gpadc;
> +	struct iio_channel *aux1;
> +	struct iio_channel *aux2;
>   	struct ab8500_btemp *btemp;
>   	struct delayed_work power_off_work;
>   	struct ab8500_gpadc_cfg cfg;
> @@ -82,15 +87,21 @@ static int ab8500_read_sensor(struct abx500_temp *data, u8 sensor, int *temp)
>   	int voltage, ret;
>   	struct ab8500_temp *ab8500_data = data->plat_data;
>   
> -	if (sensor == BAT_CTRL) {
> -		*temp = ab8500_btemp_get_batctrl_temp(ab8500_data->btemp);
> -	} else if (sensor == BTEMP_BALL) {
> +	if (sensor == AB8500_SENSOR_BTEMP_BALL) {
>   		*temp = ab8500_btemp_get_temp(ab8500_data->btemp);
> -	} else {
> -		voltage = ab8500_gpadc_convert(ab8500_data->gpadc, sensor);
> -		if (voltage < 0)
> -			return voltage;
> -
> +	} else if (sensor == AB8500_SENSOR_BAT_CTRL) {
> +		*temp = ab8500_btemp_get_batctrl_temp(ab8500_data->btemp);
> +	} else if (sensor == AB8500_SENSOR_AUX1) {
> +		ret = iio_read_channel_processed(ab8500_data->aux1, &voltage);
> +		if (ret < 0)
> +			return ret;
> +		ret = ab8500_voltage_to_temp(&ab8500_data->cfg, voltage, temp);
> +		if (ret < 0)
> +			return ret;
> +	} else if (sensor == AB8500_SENSOR_AUX2) {
> +		ret = iio_read_channel_processed(ab8500_data->aux2, &voltage);
> +		if (ret < 0)
> +			return ret;
>   		ret = ab8500_voltage_to_temp(&ab8500_data->cfg, voltage, temp);
>   		if (ret < 0)
>   			return ret;
> @@ -164,10 +175,6 @@ int abx500_hwmon_init(struct abx500_temp *data)
>   	if (!ab8500_data)
>   		return -ENOMEM;
>   
> -	ab8500_data->gpadc = ab8500_gpadc_get("ab8500-gpadc.0");
> -	if (IS_ERR(ab8500_data->gpadc))
> -		return PTR_ERR(ab8500_data->gpadc);
> -
>   	ab8500_data->btemp = ab8500_btemp_get();
>   	if (IS_ERR(ab8500_data->btemp))
>   		return PTR_ERR(ab8500_data->btemp);
> @@ -181,15 +188,25 @@ int abx500_hwmon_init(struct abx500_temp *data)
>   	ab8500_data->cfg.tbl_sz = ab8500_temp_tbl_a_size;
>   
>   	data->plat_data = ab8500_data;
> +	ab8500_data->aux1 = devm_iio_channel_get(&data->pdev->dev, "aux1");
> +	if (IS_ERR(ab8500_data->aux1)) {
> +		if (PTR_ERR(ab8500_data->aux1) == -ENODEV)
> +			return -EPROBE_DEFER;
> +		dev_err(&data->pdev->dev, "failed to get AUX1 ADC channel\n");
> +		return PTR_ERR(ab8500_data->aux1);
> +	}
> +	ab8500_data->aux2 = devm_iio_channel_get(&data->pdev->dev, "aux2");
> +	if (IS_ERR(ab8500_data->aux2)) {
> +		if (PTR_ERR(ab8500_data->aux2) == -ENODEV)
> +			return -EPROBE_DEFER;
> +		dev_err(&data->pdev->dev, "failed to get AUX2 ADC channel\n");
> +		return PTR_ERR(ab8500_data->aux2);
> +	}
>   
> -	/*
> -	 * ADC_AUX1 and ADC_AUX2, connected to external NTC
> -	 * BTEMP_BALL and BAT_CTRL, fixed usage
> -	 */
> -	data->gpadc_addr[0] = ADC_AUX1;
> -	data->gpadc_addr[1] = ADC_AUX2;
> -	data->gpadc_addr[2] = BTEMP_BALL;
> -	data->gpadc_addr[3] = BAT_CTRL;
> +	data->gpadc_addr[0] = AB8500_SENSOR_AUX1;
> +	data->gpadc_addr[1] = AB8500_SENSOR_AUX2;
> +	data->gpadc_addr[2] = AB8500_SENSOR_BTEMP_BALL;
> +	data->gpadc_addr[3] = AB8500_SENSOR_BAT_CTRL;
>   	data->monitored_sensors = NUM_MONITORED_SENSORS;
>   
>   	data->ops.read_sensor = ab8500_read_sensor;
> 


  reply	other threads:[~2019-10-11 13:13 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-11  7:17 [PATCH 0/7 v4] AB8500 GPADC MFD to IIO conversion Linus Walleij
2019-10-11  7:17 ` [PATCH 1/7 v4] power: supply: ab8500_btemp: convert to IIO ADC Linus Walleij
2019-10-11  7:18 ` [PATCH 2/7 v4] power: supply: ab8500_charger: " Linus Walleij
2019-10-11  7:18 ` [PATCH 3/7 v4] power: supply: ab8500_fg: " Linus Walleij
2019-10-11  7:18 ` [PATCH 4/7 v4] hwmon: ab8500: " Linus Walleij
2019-10-11 13:13   ` Guenter Roeck [this message]
2019-10-11 20:48     ` Linus Walleij
2019-10-17 21:08       ` Jonathan Cameron
2019-10-11  7:18 ` [PATCH 5/7 v4] mfd: ab8500: augment DT bindings Linus Walleij
2019-10-11 13:44   ` Rob Herring
2019-10-17 21:22     ` Jonathan Cameron
2019-10-18  7:29       ` Lee Jones
2019-10-18  7:48         ` Linus Walleij
2019-10-18 13:24           ` Jonathan Cameron
2019-10-11  7:18 ` [PATCH 6/7 v4] iio: adc: New driver for the AB8500 GPADC Linus Walleij
2019-10-11  7:18 ` [PATCH 7/7 v4] mfd: Switch the AB8500 GPADC to IIO Linus Walleij
2019-10-17 21:27 ` [PATCH 0/7 v4] AB8500 GPADC MFD to IIO conversion Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b192d50a-3bcf-6d4b-f2f5-2d6276601cf4@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=cedric.madianga@gmail.com \
    --cc=jic23@kernel.org \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=lee.jones@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=pmeerw@pmeerw.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.