From: Jonathan Cameron <jic23@kernel.org>
To: Sebastian Reichel <sre@debian.org>,
Sebastian Reichel <sre@ring0.de>,
Marek Belisko <marek@goldelico.com>
Cc: Lee Jones <lee.jones@linaro.org>,
Samuel Ortiz <sameo@linux.intel.com>,
Lars-Peter Clausen <lars@metafoo.de>,
Rob Herring <robh+dt@kernel.org>, Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Kumar Gala <galak@codeaurora.org>,
Grant Likely <grant.likely@linaro.org>,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-iio@vger.kernel.org
Subject: Re: [RFCv4 3/7] mfd: twl4030-madc: Cleanup driver
Date: Sat, 01 Mar 2014 11:41:07 +0000 [thread overview]
Message-ID: <5311C753.7020006@kernel.org> (raw)
In-Reply-To: <1393444990-28140-4-git-send-email-sre@debian.org>
On 26/02/14 20:03, Sebastian Reichel wrote:
> Some style fixes in twl4030-madc driver.
>
> Reported-by: Jonathan Cameron <jic23@kernel.org>
> Signed-off-by: Sebastian Reichel <sre@debian.org>
Good stuff, but would be nice to hammer the comments into proper kernel-doc
style rather than going part of the way. Also, the ARRAY_SIZE bit
that both Lee and I picked up on in the previous patch snuck into
this one instead. Please move it back one patch.
> ---
> drivers/mfd/twl4030-madc.c | 106 ++++++++++++++++++---------------------
> include/linux/i2c/twl4030-madc.h | 2 +-
> 2 files changed, 51 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/mfd/twl4030-madc.c b/drivers/mfd/twl4030-madc.c
> index 37cb3ad..c90013e 100644
> --- a/drivers/mfd/twl4030-madc.c
> +++ b/drivers/mfd/twl4030-madc.c
> @@ -49,7 +49,7 @@
>
> #include <linux/iio/iio.h>
>
> -/*
> +/**
> * struct twl4030_madc_data - a container for madc info
@dev: for kerneldoc.
> * @dev - pointer to device structure for madc
> * @lock - mutex protecting this data structure
> @@ -63,8 +63,8 @@ struct twl4030_madc_data {
> struct mutex lock; /* mutex protecting this data structure */
> struct twl4030_madc_request requests[TWL4030_MADC_NUM_METHODS];
> bool use_second_irq;
> - int imr;
> - int isr;
> + u8 imr;
> + u8 isr;
> };
>
> static int twl4030_madc_read(struct iio_dev *iio_dev,
> @@ -157,17 +157,16 @@ twl4030_divider_ratios[16] = {
> };
>
>
> -/*
> - * Conversion table from -3 to 55 degree Celcius
> - */
> -static int therm_tbl[] = {
> -30800, 29500, 28300, 27100,
> -26000, 24900, 23900, 22900, 22000, 21100, 20300, 19400, 18700, 17900,
> -17200, 16500, 15900, 15300, 14700, 14100, 13600, 13100, 12600, 12100,
> -11600, 11200, 10800, 10400, 10000, 9630, 9280, 8950, 8620, 8310,
> -8020, 7730, 7460, 7200, 6950, 6710, 6470, 6250, 6040, 5830,
> -5640, 5450, 5260, 5090, 4920, 4760, 4600, 4450, 4310, 4170,
> -4040, 3910, 3790, 3670, 3550
> +/* Conversion table from -3 to 55 degrees Celcius */
> +static int twl4030_therm_tbl[] = {
> + 30800, 29500, 28300, 27100,
> + 26000, 24900, 23900, 22900, 22000, 21100, 20300, 19400, 18700,
> + 17900, 17200, 16500, 15900, 15300, 14700, 14100, 13600, 13100,
> + 12600, 12100, 11600, 11200, 10800, 10400, 10000, 9630, 9280,
> + 8950, 8620, 8310, 8020, 7730, 7460, 7200, 6950, 6710,
> + 6470, 6250, 6040, 5830, 5640, 5450, 5260, 5090, 4920,
> + 4760, 4600, 4450, 4310, 4170, 4040, 3910, 3790, 3670,
> + 3550
> };
>
> /*
> @@ -199,7 +198,7 @@ const struct twl4030_madc_conversion_method twl4030_conversion_methods[] = {
> },
> };
>
> -/*
> +/**
Whilst better - these are still not in kernel doc. Please read the nano howto
and fix them up.
> * Function to read a particular channel value.
> * @madc - pointer to struct twl4030_madc_data
> * @reg - lsb of ADC Channel
> @@ -229,7 +228,7 @@ static int twl4030_madc_channel_raw_read(struct twl4030_madc_data *madc, u8 reg)
> }
>
> /*
> - * Return battery temperature
> + * Return battery temperature in degrees Celsius
> * Or < 0 on failure.
> */
> static int twl4030battery_temperature(int raw_volt)
> @@ -238,18 +237,18 @@ static int twl4030battery_temperature(int raw_volt)
> int temp, curr, volt, res, ret;
>
> volt = (raw_volt * TEMP_STEP_SIZE) / TEMP_PSR_R;
> - /* Getting and calculating the supply current in micro ampers */
> + /* Getting and calculating the supply current in micro amperes */
> ret = twl_i2c_read_u8(TWL_MODULE_MAIN_CHARGE, &val,
> REG_BCICTL2);
> if (ret < 0)
> return ret;
> +
> curr = ((val & TWL4030_BCI_ITHEN) + 1) * 10;
> /* Getting and calculating the thermistor resistance in ohms */
> res = volt * 1000 / curr;
> /* calculating temperature */
> for (temp = 58; temp >= 0; temp--) {
> - int actual = therm_tbl[temp];
> -
> + int actual = twl4030_therm_tbl[temp];
> if ((actual - res) >= 0)
> break;
> }
> @@ -271,11 +270,12 @@ static int twl4030battery_current(int raw_volt)
> else /* slope of 0.88 mV/mA */
> return (raw_volt * CURR_STEP_SIZE) / CURR_PSR_R2;
> }
> +
> /*
> * Function to read channel values
> * @madc - pointer to twl4030_madc_data struct
> * @reg_base - Base address of the first channel
> - * @Channels - 16 bit bitmap. If the bit is set, channel value is read
> + * @Channels - 16 bit bitmap. If the bit is set, channel's value is read
> * @buf - The channel values are stored here. if read fails error
> * @raw - Return raw values without conversion
> * value is stored
> @@ -286,17 +286,17 @@ static int twl4030_madc_read_channels(struct twl4030_madc_data *madc,
> long channels, int *buf,
> bool raw)
> {
> - int count = 0, count_req = 0, i;
> + int count = 0;
> + int i;
> u8 reg;
>
> for_each_set_bit(i, &channels, TWL4030_MADC_MAX_CHANNELS) {
> - reg = reg_base + 2 * i;
> + u8 reg = reg_base + (2 * i);
Precedence means the brackets aren't needed. I don't suppose they do
much harm though if you want to keep them.
> buf[i] = twl4030_madc_channel_raw_read(madc, reg);
> if (buf[i] < 0) {
> - dev_err(madc->dev,
> - "Unable to read register 0x%X\n", reg);
> - count_req++;
> - continue;
> + dev_err(madc->dev, "Unable to read register 0x%X\n",
> + reg);
> + return buf[i];
> }
> if (raw) {
> count++;
> @@ -307,7 +307,7 @@ static int twl4030_madc_read_channels(struct twl4030_madc_data *madc,
> buf[i] = twl4030battery_current(buf[i]);
> if (buf[i] < 0) {
> dev_err(madc->dev, "err reading current\n");
> - count_req++;
> + return buf[i];
> } else {
> count++;
> buf[i] = buf[i] - 750;
> @@ -317,7 +317,7 @@ static int twl4030_madc_read_channels(struct twl4030_madc_data *madc,
> buf[i] = twl4030battery_temperature(buf[i]);
> if (buf[i] < 0) {
> dev_err(madc->dev, "err reading temperature\n");
> - count_req++;
> + return buf[i];
> } else {
> buf[i] -= 3;
> count++;
> @@ -338,8 +338,6 @@ static int twl4030_madc_read_channels(struct twl4030_madc_data *madc,
> twl4030_divider_ratios[i].numerator);
> }
> }
> - if (count_req)
> - dev_err(madc->dev, "%d channel conversion failed\n", count_req);
>
> return count;
> }
> @@ -363,13 +361,13 @@ static int twl4030_madc_enable_irq(struct twl4030_madc_data *madc, u8 id)
> madc->imr);
> return ret;
> }
> +
> val &= ~(1 << id);
> ret = twl_i2c_write_u8(TWL4030_MODULE_MADC, val, madc->imr);
> if (ret) {
> dev_err(madc->dev,
> "unable to write imr register 0x%X\n", madc->imr);
> return ret;
> -
> }
>
> return 0;
> @@ -432,7 +430,7 @@ static irqreturn_t twl4030_madc_threaded_irq_handler(int irq, void *_madc)
> continue;
> ret = twl4030_madc_disable_irq(madc, i);
> if (ret < 0)
> - dev_dbg(madc->dev, "Disable interrupt failed%d\n", i);
> + dev_dbg(madc->dev, "Disable interrupt failed %d\n", i);
> madc->requests[i].result_pending = 1;
> }
> for (i = 0; i < TWL4030_MADC_NUM_METHODS; i++) {
> @@ -514,21 +512,17 @@ static int twl4030_madc_start_conversion(struct twl4030_madc_data *madc,
> {
> const struct twl4030_madc_conversion_method *method;
> int ret = 0;
> +
> + if (conv_method != TWL4030_MADC_SW1 && conv_method != TWL4030_MADC_SW2)
> + return -ENOTSUPP;
> +
> method = &twl4030_conversion_methods[conv_method];
> - switch (conv_method) {
> - case TWL4030_MADC_SW1:
> - case TWL4030_MADC_SW2:
> - ret = twl_i2c_write_u8(TWL4030_MODULE_MADC,
> - TWL4030_MADC_SW_START, method->ctrl);
> - if (ret) {
> - dev_err(madc->dev,
> - "unable to write ctrl register 0x%X\n",
> - method->ctrl);
> - return ret;
> - }
> - break;
> - default:
> - break;
> + ret = twl_i2c_write_u8(TWL4030_MODULE_MADC, TWL4030_MADC_SW_START,
> + method->ctrl);
> + if (ret) {
> + dev_err(madc->dev, "unable to write ctrl register 0x%X\n",
> + method->ctrl);
> + return ret;
> }
>
> return 0;
> @@ -625,8 +619,8 @@ int twl4030_madc_conversion(struct twl4030_madc_request *req)
> ch_lsb, method->avg);
> if (ret) {
> dev_err(twl4030_madc->dev,
> - "unable to write sel reg 0x%X\n",
> - method->sel + 1);
> + "unable to write avg reg 0x%X\n",
> + method->avg);
> goto out;
> }
> }
> @@ -667,10 +661,6 @@ out:
> }
> EXPORT_SYMBOL_GPL(twl4030_madc_conversion);
>
> -/*
> - * Return channel value
> - * Or < 0 on failure.
> - */
> int twl4030_get_madc_conversion(int channel_no)
> {
> struct twl4030_madc_request req;
> @@ -705,6 +695,7 @@ static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc,
> int chan, int on)
> {
> int ret;
> + int regmask;
> u8 regval;
>
> ret = twl_i2c_read_u8(TWL_MODULE_MAIN_CHARGE,
> @@ -714,10 +705,13 @@ static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc,
> TWL4030_BCI_BCICTL1);
> return ret;
> }
> +
> + regmask = chan ? TWL4030_BCI_ITHEN : TWL4030_BCI_TYPEN;
> if (on)
> - regval |= chan ? TWL4030_BCI_ITHEN : TWL4030_BCI_TYPEN;
> + regval |= regmask;
> else
> - regval &= chan ? ~TWL4030_BCI_ITHEN : ~TWL4030_BCI_TYPEN;
> + regval &= ~regmask;
> +
> ret = twl_i2c_write_u8(TWL_MODULE_MAIN_CHARGE,
> regval, TWL4030_BCI_BCICTL1);
> if (ret) {
> @@ -732,7 +726,7 @@ static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc,
> /*
> * Function that sets MADC software power on bit to enable MADC
> * @madc - pointer to twl4030_madc_data struct
> - * @on - Enable or disable MADC software powen on bit.
> + * @on - Enable or disable MADC software power on bit.
> * returns error if i2c read/write fails else 0
> */
> static int twl4030_madc_set_power(struct twl4030_madc_data *madc, int on)
> @@ -795,7 +789,7 @@ static int twl4030_madc_probe(struct platform_device *pdev)
> iio_dev->info = &twl4030_madc_iio_info;
> iio_dev->modes = INDIO_DIRECT_MODE;
> iio_dev->channels = twl4030_madc_iio_channels;
> - iio_dev->num_channels = 16;
> + iio_dev->num_channels = ARRAY_SIZE(twl4030_madc_iio_channels);
Move this back into the previous patch please. We like to pretend that within
a series we got everything right first time ;)
>
> /*
> * Phoenix provides 2 interrupt lines. The first one is connected to
> diff --git a/include/linux/i2c/twl4030-madc.h b/include/linux/i2c/twl4030-madc.h
> index 01f5951..1c0134d 100644
> --- a/include/linux/i2c/twl4030-madc.h
> +++ b/include/linux/i2c/twl4030-madc.h
> @@ -44,7 +44,7 @@ struct twl4030_madc_conversion_method {
>
> struct twl4030_madc_request {
> unsigned long channels;
> - u16 do_avg;
> + bool do_avg;
> u16 method;
> u16 type;
> bool active;
>
WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: Sebastian Reichel <sre-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>,
Sebastian Reichel <sre-GFxCN5SEZAc@public.gmane.org>,
Marek Belisko <marek-xXXSsgcRVICgSpxsJD1C4w@public.gmane.org>
Cc: Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Samuel Ortiz <sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>,
Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
Ian Campbell
<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
Grant Likely
<grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [RFCv4 3/7] mfd: twl4030-madc: Cleanup driver
Date: Sat, 01 Mar 2014 11:41:07 +0000 [thread overview]
Message-ID: <5311C753.7020006@kernel.org> (raw)
In-Reply-To: <1393444990-28140-4-git-send-email-sre-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>
On 26/02/14 20:03, Sebastian Reichel wrote:
> Some style fixes in twl4030-madc driver.
>
> Reported-by: Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Signed-off-by: Sebastian Reichel <sre-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>
Good stuff, but would be nice to hammer the comments into proper kernel-doc
style rather than going part of the way. Also, the ARRAY_SIZE bit
that both Lee and I picked up on in the previous patch snuck into
this one instead. Please move it back one patch.
> ---
> drivers/mfd/twl4030-madc.c | 106 ++++++++++++++++++---------------------
> include/linux/i2c/twl4030-madc.h | 2 +-
> 2 files changed, 51 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/mfd/twl4030-madc.c b/drivers/mfd/twl4030-madc.c
> index 37cb3ad..c90013e 100644
> --- a/drivers/mfd/twl4030-madc.c
> +++ b/drivers/mfd/twl4030-madc.c
> @@ -49,7 +49,7 @@
>
> #include <linux/iio/iio.h>
>
> -/*
> +/**
> * struct twl4030_madc_data - a container for madc info
@dev: for kerneldoc.
> * @dev - pointer to device structure for madc
> * @lock - mutex protecting this data structure
> @@ -63,8 +63,8 @@ struct twl4030_madc_data {
> struct mutex lock; /* mutex protecting this data structure */
> struct twl4030_madc_request requests[TWL4030_MADC_NUM_METHODS];
> bool use_second_irq;
> - int imr;
> - int isr;
> + u8 imr;
> + u8 isr;
> };
>
> static int twl4030_madc_read(struct iio_dev *iio_dev,
> @@ -157,17 +157,16 @@ twl4030_divider_ratios[16] = {
> };
>
>
> -/*
> - * Conversion table from -3 to 55 degree Celcius
> - */
> -static int therm_tbl[] = {
> -30800, 29500, 28300, 27100,
> -26000, 24900, 23900, 22900, 22000, 21100, 20300, 19400, 18700, 17900,
> -17200, 16500, 15900, 15300, 14700, 14100, 13600, 13100, 12600, 12100,
> -11600, 11200, 10800, 10400, 10000, 9630, 9280, 8950, 8620, 8310,
> -8020, 7730, 7460, 7200, 6950, 6710, 6470, 6250, 6040, 5830,
> -5640, 5450, 5260, 5090, 4920, 4760, 4600, 4450, 4310, 4170,
> -4040, 3910, 3790, 3670, 3550
> +/* Conversion table from -3 to 55 degrees Celcius */
> +static int twl4030_therm_tbl[] = {
> + 30800, 29500, 28300, 27100,
> + 26000, 24900, 23900, 22900, 22000, 21100, 20300, 19400, 18700,
> + 17900, 17200, 16500, 15900, 15300, 14700, 14100, 13600, 13100,
> + 12600, 12100, 11600, 11200, 10800, 10400, 10000, 9630, 9280,
> + 8950, 8620, 8310, 8020, 7730, 7460, 7200, 6950, 6710,
> + 6470, 6250, 6040, 5830, 5640, 5450, 5260, 5090, 4920,
> + 4760, 4600, 4450, 4310, 4170, 4040, 3910, 3790, 3670,
> + 3550
> };
>
> /*
> @@ -199,7 +198,7 @@ const struct twl4030_madc_conversion_method twl4030_conversion_methods[] = {
> },
> };
>
> -/*
> +/**
Whilst better - these are still not in kernel doc. Please read the nano howto
and fix them up.
> * Function to read a particular channel value.
> * @madc - pointer to struct twl4030_madc_data
> * @reg - lsb of ADC Channel
> @@ -229,7 +228,7 @@ static int twl4030_madc_channel_raw_read(struct twl4030_madc_data *madc, u8 reg)
> }
>
> /*
> - * Return battery temperature
> + * Return battery temperature in degrees Celsius
> * Or < 0 on failure.
> */
> static int twl4030battery_temperature(int raw_volt)
> @@ -238,18 +237,18 @@ static int twl4030battery_temperature(int raw_volt)
> int temp, curr, volt, res, ret;
>
> volt = (raw_volt * TEMP_STEP_SIZE) / TEMP_PSR_R;
> - /* Getting and calculating the supply current in micro ampers */
> + /* Getting and calculating the supply current in micro amperes */
> ret = twl_i2c_read_u8(TWL_MODULE_MAIN_CHARGE, &val,
> REG_BCICTL2);
> if (ret < 0)
> return ret;
> +
> curr = ((val & TWL4030_BCI_ITHEN) + 1) * 10;
> /* Getting and calculating the thermistor resistance in ohms */
> res = volt * 1000 / curr;
> /* calculating temperature */
> for (temp = 58; temp >= 0; temp--) {
> - int actual = therm_tbl[temp];
> -
> + int actual = twl4030_therm_tbl[temp];
> if ((actual - res) >= 0)
> break;
> }
> @@ -271,11 +270,12 @@ static int twl4030battery_current(int raw_volt)
> else /* slope of 0.88 mV/mA */
> return (raw_volt * CURR_STEP_SIZE) / CURR_PSR_R2;
> }
> +
> /*
> * Function to read channel values
> * @madc - pointer to twl4030_madc_data struct
> * @reg_base - Base address of the first channel
> - * @Channels - 16 bit bitmap. If the bit is set, channel value is read
> + * @Channels - 16 bit bitmap. If the bit is set, channel's value is read
> * @buf - The channel values are stored here. if read fails error
> * @raw - Return raw values without conversion
> * value is stored
> @@ -286,17 +286,17 @@ static int twl4030_madc_read_channels(struct twl4030_madc_data *madc,
> long channels, int *buf,
> bool raw)
> {
> - int count = 0, count_req = 0, i;
> + int count = 0;
> + int i;
> u8 reg;
>
> for_each_set_bit(i, &channels, TWL4030_MADC_MAX_CHANNELS) {
> - reg = reg_base + 2 * i;
> + u8 reg = reg_base + (2 * i);
Precedence means the brackets aren't needed. I don't suppose they do
much harm though if you want to keep them.
> buf[i] = twl4030_madc_channel_raw_read(madc, reg);
> if (buf[i] < 0) {
> - dev_err(madc->dev,
> - "Unable to read register 0x%X\n", reg);
> - count_req++;
> - continue;
> + dev_err(madc->dev, "Unable to read register 0x%X\n",
> + reg);
> + return buf[i];
> }
> if (raw) {
> count++;
> @@ -307,7 +307,7 @@ static int twl4030_madc_read_channels(struct twl4030_madc_data *madc,
> buf[i] = twl4030battery_current(buf[i]);
> if (buf[i] < 0) {
> dev_err(madc->dev, "err reading current\n");
> - count_req++;
> + return buf[i];
> } else {
> count++;
> buf[i] = buf[i] - 750;
> @@ -317,7 +317,7 @@ static int twl4030_madc_read_channels(struct twl4030_madc_data *madc,
> buf[i] = twl4030battery_temperature(buf[i]);
> if (buf[i] < 0) {
> dev_err(madc->dev, "err reading temperature\n");
> - count_req++;
> + return buf[i];
> } else {
> buf[i] -= 3;
> count++;
> @@ -338,8 +338,6 @@ static int twl4030_madc_read_channels(struct twl4030_madc_data *madc,
> twl4030_divider_ratios[i].numerator);
> }
> }
> - if (count_req)
> - dev_err(madc->dev, "%d channel conversion failed\n", count_req);
>
> return count;
> }
> @@ -363,13 +361,13 @@ static int twl4030_madc_enable_irq(struct twl4030_madc_data *madc, u8 id)
> madc->imr);
> return ret;
> }
> +
> val &= ~(1 << id);
> ret = twl_i2c_write_u8(TWL4030_MODULE_MADC, val, madc->imr);
> if (ret) {
> dev_err(madc->dev,
> "unable to write imr register 0x%X\n", madc->imr);
> return ret;
> -
> }
>
> return 0;
> @@ -432,7 +430,7 @@ static irqreturn_t twl4030_madc_threaded_irq_handler(int irq, void *_madc)
> continue;
> ret = twl4030_madc_disable_irq(madc, i);
> if (ret < 0)
> - dev_dbg(madc->dev, "Disable interrupt failed%d\n", i);
> + dev_dbg(madc->dev, "Disable interrupt failed %d\n", i);
> madc->requests[i].result_pending = 1;
> }
> for (i = 0; i < TWL4030_MADC_NUM_METHODS; i++) {
> @@ -514,21 +512,17 @@ static int twl4030_madc_start_conversion(struct twl4030_madc_data *madc,
> {
> const struct twl4030_madc_conversion_method *method;
> int ret = 0;
> +
> + if (conv_method != TWL4030_MADC_SW1 && conv_method != TWL4030_MADC_SW2)
> + return -ENOTSUPP;
> +
> method = &twl4030_conversion_methods[conv_method];
> - switch (conv_method) {
> - case TWL4030_MADC_SW1:
> - case TWL4030_MADC_SW2:
> - ret = twl_i2c_write_u8(TWL4030_MODULE_MADC,
> - TWL4030_MADC_SW_START, method->ctrl);
> - if (ret) {
> - dev_err(madc->dev,
> - "unable to write ctrl register 0x%X\n",
> - method->ctrl);
> - return ret;
> - }
> - break;
> - default:
> - break;
> + ret = twl_i2c_write_u8(TWL4030_MODULE_MADC, TWL4030_MADC_SW_START,
> + method->ctrl);
> + if (ret) {
> + dev_err(madc->dev, "unable to write ctrl register 0x%X\n",
> + method->ctrl);
> + return ret;
> }
>
> return 0;
> @@ -625,8 +619,8 @@ int twl4030_madc_conversion(struct twl4030_madc_request *req)
> ch_lsb, method->avg);
> if (ret) {
> dev_err(twl4030_madc->dev,
> - "unable to write sel reg 0x%X\n",
> - method->sel + 1);
> + "unable to write avg reg 0x%X\n",
> + method->avg);
> goto out;
> }
> }
> @@ -667,10 +661,6 @@ out:
> }
> EXPORT_SYMBOL_GPL(twl4030_madc_conversion);
>
> -/*
> - * Return channel value
> - * Or < 0 on failure.
> - */
> int twl4030_get_madc_conversion(int channel_no)
> {
> struct twl4030_madc_request req;
> @@ -705,6 +695,7 @@ static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc,
> int chan, int on)
> {
> int ret;
> + int regmask;
> u8 regval;
>
> ret = twl_i2c_read_u8(TWL_MODULE_MAIN_CHARGE,
> @@ -714,10 +705,13 @@ static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc,
> TWL4030_BCI_BCICTL1);
> return ret;
> }
> +
> + regmask = chan ? TWL4030_BCI_ITHEN : TWL4030_BCI_TYPEN;
> if (on)
> - regval |= chan ? TWL4030_BCI_ITHEN : TWL4030_BCI_TYPEN;
> + regval |= regmask;
> else
> - regval &= chan ? ~TWL4030_BCI_ITHEN : ~TWL4030_BCI_TYPEN;
> + regval &= ~regmask;
> +
> ret = twl_i2c_write_u8(TWL_MODULE_MAIN_CHARGE,
> regval, TWL4030_BCI_BCICTL1);
> if (ret) {
> @@ -732,7 +726,7 @@ static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc,
> /*
> * Function that sets MADC software power on bit to enable MADC
> * @madc - pointer to twl4030_madc_data struct
> - * @on - Enable or disable MADC software powen on bit.
> + * @on - Enable or disable MADC software power on bit.
> * returns error if i2c read/write fails else 0
> */
> static int twl4030_madc_set_power(struct twl4030_madc_data *madc, int on)
> @@ -795,7 +789,7 @@ static int twl4030_madc_probe(struct platform_device *pdev)
> iio_dev->info = &twl4030_madc_iio_info;
> iio_dev->modes = INDIO_DIRECT_MODE;
> iio_dev->channels = twl4030_madc_iio_channels;
> - iio_dev->num_channels = 16;
> + iio_dev->num_channels = ARRAY_SIZE(twl4030_madc_iio_channels);
Move this back into the previous patch please. We like to pretend that within
a series we got everything right first time ;)
>
> /*
> * Phoenix provides 2 interrupt lines. The first one is connected to
> diff --git a/include/linux/i2c/twl4030-madc.h b/include/linux/i2c/twl4030-madc.h
> index 01f5951..1c0134d 100644
> --- a/include/linux/i2c/twl4030-madc.h
> +++ b/include/linux/i2c/twl4030-madc.h
> @@ -44,7 +44,7 @@ struct twl4030_madc_conversion_method {
>
> struct twl4030_madc_request {
> unsigned long channels;
> - u16 do_avg;
> + bool do_avg;
> u16 method;
> u16 type;
> bool active;
>
next prev parent reply other threads:[~2014-03-01 11:40 UTC|newest]
Thread overview: 145+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-14 13:17 [PATCH 1/2] mfd: twl4030-madc: Add devicetree support Marek Belisko
2014-02-14 13:17 ` Marek Belisko
2014-02-14 13:17 ` [PATCH 2/2] ARM: dts: twl4030: Add twl4030-madc node Marek Belisko
2014-02-14 13:17 ` Marek Belisko
2014-02-14 13:48 ` [PATCH 1/2] mfd: twl4030-madc: Add devicetree support Lee Jones
2014-02-14 13:48 ` Lee Jones
2014-02-14 14:53 ` Belisko Marek
2014-02-14 14:53 ` Belisko Marek
2014-02-14 14:53 ` Belisko Marek
2014-02-14 15:28 ` Lee Jones
2014-02-14 15:28 ` Lee Jones
2014-02-14 15:28 ` Lee Jones
2014-02-14 17:40 ` Sebastian Reichel
2014-02-14 17:40 ` Sebastian Reichel
2014-02-14 18:46 ` [RFCv1 1/4] mfd: twl4030-madc: Use managed resources Sebastian Reichel
2014-02-14 18:46 ` [RFCv1 2/4] mfd: twl4030-madc: Add DT support and convert to IIO framework Sebastian Reichel
2014-02-15 13:31 ` Belisko Marek
2014-02-15 13:31 ` Belisko Marek
2014-02-16 9:02 ` Sebastian Reichel
2014-02-16 9:02 ` Sebastian Reichel
2014-02-14 18:46 ` [RFCv1 3/4] Documentation: DT: Document twl4030-madc binding Sebastian Reichel
2014-02-14 18:46 ` [RFCv1 4/4] mfd: twl4030-madc: Move driver to drivers/iio/adc Sebastian Reichel
2014-02-22 12:47 ` Jonathan Cameron
2014-02-22 12:47 ` Jonathan Cameron
2014-02-23 0:35 ` Sebastian Reichel
2014-02-23 0:35 ` Sebastian Reichel
2014-02-23 11:02 ` Jonathan Cameron
2014-02-23 11:02 ` Jonathan Cameron
2014-02-23 22:01 ` Sebastian Reichel
2014-02-23 22:01 ` Sebastian Reichel
2014-02-23 22:07 ` [RFCv2 0/5] Convert twl4030-madc to IIO API Sebastian Reichel
2014-02-23 22:07 ` Sebastian Reichel
2014-02-23 22:07 ` [RFCv2 1/5] mfd: twl4030-madc: Use managed resources Sebastian Reichel
2014-02-23 22:07 ` [RFCv2 2/5] mfd: twl4030-madc: Add DT support and convert to IIO framework Sebastian Reichel
2014-02-23 22:07 ` [RFCv2 3/5] mfd: twl4030-madc: Cleanup driver Sebastian Reichel
2014-02-23 22:07 ` [RFCv2 4/5] Documentation: DT: Document twl4030-madc binding Sebastian Reichel
2014-02-23 22:07 ` [RFCv2 5/5] mfd: twl4030-madc: Move driver to drivers/iio/adc Sebastian Reichel
2014-02-23 22:07 ` Sebastian Reichel
2014-02-23 22:15 ` Joe Perches
2014-02-24 9:20 ` Peter Meerwald
2014-02-24 9:20 ` Peter Meerwald
2014-02-26 0:24 ` [RFCv3 0/7] Convert twl4030-madc to IIO API and add DT support Sebastian Reichel
2014-02-26 0:24 ` Sebastian Reichel
2014-02-26 0:24 ` [RFCv3 1/7] mfd: twl4030-madc: Use managed resources Sebastian Reichel
2014-02-26 0:24 ` [RFCv3 2/7] mfd: twl4030-madc: Add DT support and convert to IIO framework Sebastian Reichel
2014-02-26 9:26 ` Lee Jones
2014-02-26 9:26 ` Lee Jones
2014-02-26 0:24 ` [RFCv3 3/7] mfd: twl4030-madc: Cleanup driver Sebastian Reichel
2014-02-26 8:29 ` Lee Jones
2014-02-26 8:29 ` Lee Jones
2014-02-26 0:24 ` [RFCv3 4/7] mfd: twl-core: Add twl_i2c_read/write_u16 Sebastian Reichel
2014-02-26 0:24 ` Sebastian Reichel
2014-02-26 8:15 ` Lee Jones
2014-02-26 8:15 ` Lee Jones
2014-02-26 0:24 ` [RFCv3 5/7] mfd: twl4030-madc: Use twl_i2c_read/write_u16 for 16 bit registers Sebastian Reichel
2014-02-26 0:24 ` Sebastian Reichel
2014-02-26 8:02 ` Lee Jones
2014-02-26 0:24 ` [RFCv3 6/7] Documentation: DT: Document twl4030-madc binding Sebastian Reichel
2014-02-26 0:24 ` [RFCv3 7/7] mfd: twl4030-madc: Move driver to drivers/iio/adc Sebastian Reichel
2014-02-26 11:42 ` [RFCv3 0/7] Convert twl4030-madc to IIO API and add DT support Belisko Marek
2014-02-26 11:42 ` Belisko Marek
2014-02-26 20:03 ` [RFCv4 " Sebastian Reichel
2014-02-26 20:03 ` Sebastian Reichel
2014-02-26 20:03 ` [RFCv4 1/7] mfd: twl4030-madc: Use managed resources Sebastian Reichel
2014-02-26 20:03 ` [RFCv4 2/7] mfd: twl4030-madc: Add DT support and convert to IIO framework Sebastian Reichel
2014-02-27 8:23 ` Lee Jones
2014-02-27 8:23 ` Lee Jones
2014-03-01 11:33 ` Jonathan Cameron
2014-03-01 11:33 ` Jonathan Cameron
2014-02-26 20:03 ` [RFCv4 3/7] mfd: twl4030-madc: Cleanup driver Sebastian Reichel
2014-02-27 8:03 ` Lee Jones
2014-02-27 8:03 ` Lee Jones
2014-03-01 11:41 ` Jonathan Cameron [this message]
2014-03-01 11:41 ` Jonathan Cameron
2014-02-26 20:03 ` [RFCv4 4/7] mfd: twl-core: Add twl_i2c_read/write_u16 Sebastian Reichel
2014-03-01 11:48 ` Jonathan Cameron
2014-03-01 11:48 ` Jonathan Cameron
2014-02-26 20:03 ` [RFCv4 5/7] mfd: twl4030-madc: Use twl_i2c_read/write_u16 for 16 bit registers Sebastian Reichel
2014-03-01 11:49 ` Jonathan Cameron
2014-03-01 11:49 ` Jonathan Cameron
2014-02-26 20:03 ` [RFCv4 6/7] Documentation: DT: Document twl4030-madc binding Sebastian Reichel
2014-03-01 11:50 ` Jonathan Cameron
2014-03-01 11:50 ` Jonathan Cameron
2014-02-26 20:03 ` [RFCv4 7/7] mfd: twl4030-madc: Move driver to drivers/iio/adc Sebastian Reichel
2014-02-26 20:03 ` Sebastian Reichel
2014-03-01 11:51 ` Jonathan Cameron
2014-03-01 11:51 ` Jonathan Cameron
2014-03-01 11:52 ` [RFCv4 0/7] Convert twl4030-madc to IIO API and add DT support Jonathan Cameron
2014-03-01 11:52 ` Jonathan Cameron
2014-03-01 17:12 ` Sebastian Reichel
2014-03-01 17:12 ` Sebastian Reichel
2014-03-03 8:00 ` Lee Jones
2014-03-03 8:00 ` Lee Jones
2014-03-01 19:32 ` [PATCHv1 0/9] " Sebastian Reichel
2014-03-01 19:32 ` Sebastian Reichel
2014-03-01 19:32 ` [PATCHv1 1/9] mfd: twl4030-madc: Use managed resources Sebastian Reichel
2014-03-01 19:32 ` [PATCHv1 2/9] mfd: twl4030-madc: Add DT support and convert to IIO framework Sebastian Reichel
2014-03-01 19:32 ` [PATCHv1 3/9] mfd: twl4030-madc: Cleanup driver Sebastian Reichel
2014-03-01 19:32 ` [PATCHv1 4/9] mfd: twl-core: Add twl_i2c_read/write_u16 Sebastian Reichel
2014-03-01 19:32 ` [PATCHv1 5/9] mfd: twl4030-madc: Use twl_i2c_read/write_u16 for 16 bit registers Sebastian Reichel
2014-03-01 19:32 ` [PATCHv1 6/9] Documentation: DT: Document twl4030-madc binding Sebastian Reichel
2014-03-01 19:32 ` Sebastian Reichel
2014-03-01 19:32 ` [PATCHv1 7/9] mfd: twl4030-madc: Move driver to drivers/iio/adc Sebastian Reichel
2014-03-01 19:32 ` [PATCHv1 8/9] iio: documentation: Add ABI documentation for *_mean_raw Sebastian Reichel
2014-03-01 19:32 ` [PATCHv1 9/9] iio: inkern: add iio_read_channel_average_raw Sebastian Reichel
2014-03-04 22:05 ` [PATCHv2 0/9] Convert twl4030-madc to IIO API and add DT support Sebastian Reichel
2014-03-04 22:05 ` Sebastian Reichel
2014-03-04 22:05 ` [PATCHv2 1/9] mfd: twl4030-madc: Use managed resources Sebastian Reichel
2014-03-15 15:19 ` Jonathan Cameron
2014-03-15 15:19 ` Jonathan Cameron
2014-04-20 15:51 ` Pavel Machek
2014-04-20 15:51 ` Pavel Machek
2014-03-04 22:05 ` [PATCHv2 2/9] mfd: twl4030-madc: Add DT support and convert to IIO framework Sebastian Reichel
2014-03-05 1:40 ` Lee Jones
2014-03-05 1:40 ` Lee Jones
2014-03-15 15:23 ` Jonathan Cameron
2014-04-20 15:52 ` Pavel Machek
2014-03-04 22:05 ` [PATCHv2 3/9] mfd: twl4030-madc: Cleanup driver Sebastian Reichel
2014-03-15 15:25 ` Jonathan Cameron
2014-03-15 15:25 ` Jonathan Cameron
2014-04-20 15:54 ` Pavel Machek
2014-04-20 15:54 ` Pavel Machek
2014-03-04 22:05 ` [PATCHv2 4/9] mfd: twl-core: Add twl_i2c_read/write_u16 Sebastian Reichel
2014-03-04 22:05 ` Sebastian Reichel
2014-03-04 22:05 ` [PATCHv2 5/9] mfd: twl4030-madc: Use twl_i2c_read/write_u16 for 16 bit registers Sebastian Reichel
2014-03-04 22:05 ` [PATCHv2 6/9] Documentation: DT: Document twl4030-madc binding Sebastian Reichel
2014-03-15 15:27 ` Jonathan Cameron
2014-03-15 15:27 ` Jonathan Cameron
2014-03-04 22:05 ` [PATCHv2 7/9] mfd: twl4030-madc: Move driver to drivers/iio/adc Sebastian Reichel
2014-03-04 22:05 ` [PATCHv2 8/9] iio: documentation: Add ABI documentation for *_mean_raw Sebastian Reichel
2014-03-15 15:28 ` Jonathan Cameron
2014-03-15 15:28 ` Jonathan Cameron
2014-03-04 22:05 ` [PATCHv2 9/9] iio: inkern: add iio_read_channel_average_raw Sebastian Reichel
2014-03-15 15:30 ` Jonathan Cameron
2014-03-15 15:30 ` Jonathan Cameron
2014-03-05 21:00 ` [PATCHv2 0/9] Convert twl4030-madc to IIO API and add DT support Belisko Marek
2014-03-10 10:43 ` Lee Jones
2014-03-10 11:15 ` Sebastian Reichel
2014-03-10 11:15 ` Sebastian Reichel
2014-02-24 16:05 ` [RFCv1 4/4] mfd: twl4030-madc: Move driver to drivers/iio/adc Lee Jones
2014-02-24 16:05 ` Lee Jones
2014-02-24 16:04 ` [RFCv1 1/4] mfd: twl4030-madc: Use managed resources Lee Jones
2014-02-24 16:04 ` Lee Jones
2014-02-15 13:37 ` [PATCH 1/2] mfd: twl4030-madc: Add devicetree support Belisko Marek
2014-02-15 13:37 ` Belisko Marek
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=5311C753.7020006@kernel.org \
--to=jic23@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=grant.likely@linaro.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=lars@metafoo.de \
--cc=lee.jones@linaro.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marek@goldelico.com \
--cc=mark.rutland@arm.com \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=sameo@linux.intel.com \
--cc=sre@debian.org \
--cc=sre@ring0.de \
/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.