All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Hennerich <michael.hennerich@analog.com>
To: Jonathan Cameron <jic23@cam.ac.uk>
Cc: "linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	"ldewangan@nvidia.com" <ldewangan@nvidia.com>,
	"shubhrajyoti@ti.com" <shubhrajyoti@ti.com>,
	"device-drivers-devel@blackfin.uclinux.org"
	<device-drivers-devel@blackfin.uclinux.org>
Subject: Re: [Device-drivers-devel] [PATCH 04/24] staging:iio:gyro:adxrs450 make	more use of spi_read and spi_write.
Date: Thu, 30 Jun 2011 16:10:51 +0200	[thread overview]
Message-ID: <4E0C83EB.6060308@analog.com> (raw)
In-Reply-To: <1309348316-7699-5-git-send-email-jic23@cam.ac.uk>

On 06/29/2011 01:51 PM, Jonathan Cameron wrote:
> This needs confirmation that the devices is happy if another part is
> talked to in between the request for a register and the read back.
I don't see a reason why this could break.

Acked-by: Michael Hennerich <michael.hennerich@analog.com>

> Signed-off-by: Jonathan Cameron<jic23@cam.ac.uk>
> ---
>   drivers/staging/iio/gyro/adxrs450_core.c |   63 ++++++++----------------------
>   1 files changed, 17 insertions(+), 46 deletions(-)
>
> diff --git a/drivers/staging/iio/gyro/adxrs450_core.c b/drivers/staging/iio/gyro/adxrs450_core.c
> index a756262..2d2916c 100644
> --- a/drivers/staging/iio/gyro/adxrs450_core.c
> +++ b/drivers/staging/iio/gyro/adxrs450_core.c
> @@ -35,21 +35,8 @@ static int adxrs450_spi_read_reg_16(struct iio_dev *indio_dev,
>   				    u8 reg_address,
>   				    u16 *val)
>   {
> -	struct spi_message msg;
>   	struct adxrs450_state *st = iio_priv(indio_dev);
>   	int ret;
> -	struct spi_transfer xfers[] = {
> -		{
> -			.tx_buf = st->tx,
> -			.bits_per_word = 8,
> -			.len = 4,
> -			.cs_change = 1,
> -		}, {
> -			.rx_buf = st->rx,
> -			.bits_per_word = 8,
> -			.len = 4,
> -		},
> -	};
>
>   	mutex_lock(&st->buf_lock);
>   	st->tx[0] = ADXRS450_READ_DATA | (reg_address>>  7);
> @@ -60,10 +47,13 @@ static int adxrs450_spi_read_reg_16(struct iio_dev *indio_dev,
>   	if (!(hweight32(be32_to_cpu(*(u32 *)st->tx))&  1))
>   		st->tx[3]  |= ADXRS450_P;
>
> -	spi_message_init(&msg);
> -	spi_message_add_tail(&xfers[0],&msg);
> -	spi_message_add_tail(&xfers[1],&msg);
> -	ret = spi_sync(st->us,&msg);
> +	ret = spi_write(st->us, st->tx, 4);
> +	if (ret) {
> +		dev_err(&st->us->dev, "problem while reading 16 bit register 0x%02x\n",
> +			reg_address);
> +		goto error_ret;
> +	}
> +	ret = spi_read(st->us, st->rx, 4);
>   	if (ret) {
>   		dev_err(&st->us->dev, "problem while reading 16 bit register 0x%02x\n",
>   				reg_address);
> @@ -88,15 +78,8 @@ static int adxrs450_spi_write_reg_16(struct iio_dev *indio_dev,
>   				     u8 reg_address,
>   				     u16 val)
>   {
> -	struct spi_message msg;
>   	struct adxrs450_state *st = iio_priv(indio_dev);
>   	int ret;
> -	struct spi_transfer xfers = {
> -		.tx_buf = st->tx,
> -		.rx_buf = st->rx,
> -		.bits_per_word = 8,
> -		.len = 4,
> -	};
>
>   	mutex_lock(&st->buf_lock);
>   	st->tx[0] = ADXRS450_WRITE_DATA | reg_address>>  7;
> @@ -105,14 +88,12 @@ static int adxrs450_spi_write_reg_16(struct iio_dev *indio_dev,
>   	st->tx[3] = val<<  1;
>
>   	if (!(hweight32(be32_to_cpu(*(u32 *)st->tx))&  1))
> -		st->tx[3]  |= ADXRS450_P;
> +		st->tx[3] |= ADXRS450_P;
>
> -	spi_message_init(&msg);
> -	spi_message_add_tail(&xfers,&msg);
> -	ret = spi_sync(st->us,&msg);
> +	ret = spi_write(st->us, st->tx, 4);
>   	if (ret)
>   		dev_err(&st->us->dev, "problem while writing 16 bit register 0x%02x\n",
> -				reg_address);
> +			reg_address);
>   	msleep(1); /* enforce sequential transfer delay 0.1ms */
>   	mutex_unlock(&st->buf_lock);
>   	return ret;
> @@ -125,21 +106,8 @@ static int adxrs450_spi_write_reg_16(struct iio_dev *indio_dev,
>    **/
>   static int adxrs450_spi_sensor_data(struct iio_dev *indio_dev, s16 *val)
>   {
> -	struct spi_message msg;
>   	struct adxrs450_state *st = iio_priv(indio_dev);
>   	int ret;
> -	struct spi_transfer xfers[] = {
> -		{
> -			.tx_buf = st->tx,
> -			.bits_per_word = 8,
> -			.len = 4,
> -			.cs_change = 1,
> -		}, {
> -			.rx_buf = st->rx,
> -			.bits_per_word = 8,
> -			.len = 4,
> -		},
> -	};
>
>   	mutex_lock(&st->buf_lock);
>   	st->tx[0] = ADXRS450_SENSOR_DATA;
> @@ -147,10 +115,13 @@ static int adxrs450_spi_sensor_data(struct iio_dev *indio_dev, s16 *val)
>   	st->tx[2] = 0;
>   	st->tx[3] = 0;
>
> -	spi_message_init(&msg);
> -	spi_message_add_tail(&xfers[0],&msg);
> -	spi_message_add_tail(&xfers[1],&msg);
> -	ret = spi_sync(st->us,&msg);
> +	ret = spi_write(st->us, st->tx, 4);
> +	if (ret) {
> +		dev_err(&st->us->dev, "Problem while reading sensor data\n");
> +		goto error_ret;
> +	}
> +
> +	ret = spi_read(st->us, st->rx, 4);
>   	if (ret) {
>   		dev_err(&st->us->dev, "Problem while reading sensor data\n");
>   		goto error_ret;


-- 
Greetings,
Michael

--
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin,
Margaret Seif



  reply	other threads:[~2011-06-30 14:20 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-29 11:51 [PATCH 00/24] staging:iio: move chan_spec conversions and general cleanup Jonathan Cameron
2011-06-29 11:51 ` [PATCH 01/24] staging:iio:accel:kxsd9 cleanup and conversion to iio_chan_spec Jonathan Cameron
2011-06-29 11:51 ` [PATCH 02/24] staging:iio: add quadrature correction to chan info types Jonathan Cameron
2011-06-29 11:51 ` [PATCH 03/24] staging:iio:gyro:adxrs450 move to iio_chan_spec registration Jonathan Cameron
2011-06-29 11:51 ` [PATCH 04/24] staging:iio:gyro:adxrs450 make more use of spi_read and spi_write Jonathan Cameron
2011-06-30 14:10   ` Michael Hennerich [this message]
2011-06-29 11:51 ` [PATCH 05/24] staging:iio:gyro:adxrs450 squish some trivial single call point wrappers functions Jonathan Cameron
2011-06-29 11:51 ` [PATCH 06/24] staging:iio:gyro:adis16080 convert to iio_chan_spec Jonathan Cameron
2011-06-29 11:51 ` [PATCH 07/24] staging:iio:gyro:adis16260 remove some unused headers Jonathan Cameron
2011-06-29 11:51 ` [PATCH 08/24] staging:iio:imu:adis16400 remove " Jonathan Cameron
2011-06-29 11:51 ` [PATCH 09/24] staging:iio:magnetometer:ak8975 convert to iio_chan_spec + cleanups Jonathan Cameron
2011-06-29 11:51 ` [PATCH 10/24] staging:iio:magnetometer:hmc5843 iio_chan_spec conversion Jonathan Cameron
2011-06-29 11:51 ` [PATCH 11/24] staging:iio:magnetometer: remove unused header magnet.h Jonathan Cameron
2011-06-29 11:51 ` [PATCH 12/24] staging:iio:gyro:adis16130 fix adis16130_spi_read which was never selecting the channel Jonathan Cameron
2011-06-29 11:51 ` [PATCH 13/24] staging:iio:gyro:adis16130 drop control of adc resolution Jonathan Cameron
2011-06-29 11:51 ` [PATCH 14/24] staging:iio:gyro:adis16130 move to iio_chan_spec registration Jonathan Cameron
2011-06-29 11:51 ` [PATCH 15/24] staging:iio:gyro:adis16060 convert to iio_chan_spec Jonathan Cameron
2011-06-29 11:51 ` [PATCH 16/24] staging:iio:gyro: remove gyro.h Jonathan Cameron
2011-06-29 11:51 ` [PATCH 17/24] staging:iio:accel: usused header removals Jonathan Cameron
2011-06-29 11:51 ` [PATCH 18/24] staging:iio:inclinometer.h remove as now unused Jonathan Cameron
2011-06-29 11:51 ` [PATCH 19/24] staging:iio:adc: unused header removals Jonathan Cameron
2011-06-29 11:51 ` [PATCH 20/24] staging:iio:various header includes that should never have been Jonathan Cameron
2011-06-29 11:51 ` [PATCH 21/24] staging:iio:accel:adis16204: use peak_raw info_mask element + push some defs down from header Jonathan Cameron
2011-06-29 11:51 ` [PATCH 22/24] staging:iio:accel:adis16220 iio_chan_spec conversion Jonathan Cameron
2011-06-29 11:51 ` [PATCH 23/24] staging:iio:accel remove unused accel.h header Jonathan Cameron
2011-06-29 11:51 ` [PATCH 24/24] staging:iio:adc remove unused adc.h Jonathan Cameron
2011-06-30 14:53 ` [PATCH 00/24] staging:iio: move chan_spec conversions and general cleanup 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=4E0C83EB.6060308@analog.com \
    --to=michael.hennerich@analog.com \
    --cc=device-drivers-devel@blackfin.uclinux.org \
    --cc=jic23@cam.ac.uk \
    --cc=ldewangan@nvidia.com \
    --cc=linux-iio@vger.kernel.org \
    --cc=shubhrajyoti@ti.com \
    /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.