From: Jonathan Cameron <jic23@kernel.org>
To: Peter Meerwald <pmeerw@pmeerw.net>, linux-iio@vger.kernel.org
Subject: Re: [PATCH v4 07/11] staging:iio:hmc5843: Reorganize _set_meas_conf()
Date: Thu, 17 Oct 2013 23:51:21 +0100 [thread overview]
Message-ID: <526069E9.4000605@kernel.org> (raw)
In-Reply-To: <1381961954-25596-8-git-send-email-pmeerw@pmeerw.net>
On 10/16/13 23:19, Peter Meerwald wrote:
> move locking inside _set() function
>
> Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Applied to the togreg branch of iio.git
Thanks
> ---
> drivers/staging/iio/magnetometer/hmc5843.c | 45 +++++++++++++-----------------
> 1 file changed, 20 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/staging/iio/magnetometer/hmc5843.c b/drivers/staging/iio/magnetometer/hmc5843.c
> index d7ace70..bd13984 100644
> --- a/drivers/staging/iio/magnetometer/hmc5843.c
> +++ b/drivers/staging/iio/magnetometer/hmc5843.c
> @@ -73,7 +73,6 @@ enum hmc5843_ids {
> #define HMC5843_MEAS_CONF_NORMAL 0x00
> #define HMC5843_MEAS_CONF_POSITIVE_BIAS 0x01
> #define HMC5843_MEAS_CONF_NEGATIVE_BIAS 0x02
> -#define HMC5843_MEAS_CONF_NOT_USED 0x03
> #define HMC5843_MEAS_CONF_MASK 0x03
>
> /* Scaling factors: 10000000/Gain */
> @@ -211,19 +210,24 @@ static int hmc5843_read_measurement(struct hmc5843_data *data,
> */
> static s32 hmc5843_set_meas_conf(struct hmc5843_data *data, u8 meas_conf)
> {
> - u8 reg_val;
> - reg_val = (meas_conf & HMC5843_MEAS_CONF_MASK) |
> - (data->rate << HMC5843_RATE_OFFSET);
> - return i2c_smbus_write_byte_data(data->client, HMC5843_CONFIG_REG_A,
> - reg_val);
> + int ret;
> +
> + mutex_lock(&data->lock);
> + ret = i2c_smbus_write_byte_data(data->client, HMC5843_CONFIG_REG_A,
> + (meas_conf & HMC5843_MEAS_CONF_MASK) |
> + (data->rate << HMC5843_RATE_OFFSET));
> + if (ret >= 0)
> + data->meas_conf = meas_conf;
> + mutex_unlock(&data->lock);
> +
> + return ret;
> }
>
> static ssize_t hmc5843_show_measurement_configuration(struct device *dev,
> struct device_attribute *attr,
> char *buf)
> {
> - struct iio_dev *indio_dev = dev_to_iio_dev(dev);
> - struct hmc5843_data *data = iio_priv(indio_dev);
> + struct hmc5843_data *data = iio_priv(dev_to_iio_dev(dev));
> return sprintf(buf, "%d\n", data->meas_conf);
> }
>
> @@ -232,28 +236,19 @@ static ssize_t hmc5843_set_measurement_configuration(struct device *dev,
> const char *buf,
> size_t count)
> {
> - struct iio_dev *indio_dev = dev_to_iio_dev(dev);
> - struct hmc5843_data *data = iio_priv(indio_dev);
> + struct hmc5843_data *data = iio_priv(dev_to_iio_dev(dev));
> unsigned long meas_conf = 0;
> - int error;
> + int ret;
>
> - error = kstrtoul(buf, 10, &meas_conf);
> - if (error)
> - return error;
> - if (meas_conf >= HMC5843_MEAS_CONF_NOT_USED)
> + ret = kstrtoul(buf, 10, &meas_conf);
> + if (ret)
> + return ret;
> + if (meas_conf >= HMC5843_MEAS_CONF_MASK)
> return -EINVAL;
>
> - mutex_lock(&data->lock);
> - dev_dbg(dev, "set measurement configuration to %lu\n", meas_conf);
> - if (hmc5843_set_meas_conf(data, meas_conf)) {
> - count = -EINVAL;
> - goto exit;
> - }
> - data->meas_conf = meas_conf;
> + ret = hmc5843_set_meas_conf(data, meas_conf);
>
> -exit:
> - mutex_unlock(&data->lock);
> - return count;
> + return (ret < 0) ? ret : count;
> }
>
> static IIO_DEVICE_ATTR(meas_conf,
>
next prev parent reply other threads:[~2013-10-17 21:50 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-16 22:19 [PATCH v4 00/11] hmc5843 cleanup Peter Meerwald
2013-10-16 22:19 ` [PATCH v4 01/11] staging:iio:hmc5843: Use SCALE instead of magn_range Peter Meerwald
2013-10-17 22:46 ` Jonathan Cameron
2013-10-16 22:19 ` [PATCH v4 02/11] staging:iio:hmc5843: Rename _check_samp_freq to get_samp_freq_index Peter Meerwald
2013-10-17 22:47 ` Jonathan Cameron
2013-10-16 22:19 ` [PATCH v4 03/11] staging:iio:hmc5843: Always read all channels values otherwise no updates Peter Meerwald
2013-10-17 22:49 ` Jonathan Cameron
2013-10-16 22:19 ` [PATCH v4 04/11] staging:iio:hmc5843: Add trigger handling Peter Meerwald
2013-10-17 22:49 ` Jonathan Cameron
2013-10-16 22:19 ` [PATCH v4 05/11] staging:iio:hmc5843: Remove ability to change operating mode Peter Meerwald
2013-10-17 22:50 ` Jonathan Cameron
2013-10-16 22:19 ` [PATCH v4 06/11] staging:iio:hmc5843: Rename _configure() to _set_mode() Peter Meerwald
2013-10-17 22:50 ` Jonathan Cameron
2013-10-16 22:19 ` [PATCH v4 07/11] staging:iio:hmc5843: Reorganize _set_meas_conf() Peter Meerwald
2013-10-17 22:51 ` Jonathan Cameron [this message]
2013-10-16 22:19 ` [PATCH v4 08/11] staging:iio:hmc5843: Rename _set_rate() to _set_samp_freq() Peter Meerwald
2013-10-17 22:52 ` Jonathan Cameron
2013-10-16 22:19 ` [PATCH v4 09/11] staging:iio:hmc5843: Introduce _set_range_gain() Peter Meerwald
2013-10-17 22:52 ` Jonathan Cameron
2013-10-16 22:19 ` [PATCH v4 10/11] staging:iio:hmc5843: Check initialization and chip identifier Peter Meerwald
2013-10-17 22:52 ` Jonathan Cameron
2013-10-16 22:19 ` [PATCH v4 11/11] staging:iio:hmc5843: Trivial cleanup Peter Meerwald
2013-10-17 22:53 ` 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=526069E9.4000605@kernel.org \
--to=jic23@kernel.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.