* [PATCH 28/31] iio: gyro: use parity32 in adxrs450.c
[not found] <1458788612-4367-1-git-send-email-zhaoxiu.zeng@gmail.com>
@ 2016-03-27 7:42 ` zhaoxiu.zeng
2016-03-28 8:35 ` Jonathan Cameron
0 siblings, 1 reply; 3+ messages in thread
From: zhaoxiu.zeng @ 2016-03-27 7:42 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
Hartmut Knaack, Peter Meerwald
Cc: linux-kernel, linux-iio
From: Zeng Zhaoxiu <zhaoxiu.zeng@gmail.com>
Signed-off-by: Zeng Zhaoxiu <zhaoxiu.zeng@gmail.com>
---
drivers/iio/gyro/adxrs450.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/iio/gyro/adxrs450.c b/drivers/iio/gyro/adxrs450.c
index a330d42..f1f19fc20 100644
--- a/drivers/iio/gyro/adxrs450.c
+++ b/drivers/iio/gyro/adxrs450.c
@@ -108,9 +108,7 @@ static int adxrs450_spi_read_reg_16(struct iio_dev *indio_dev,
mutex_lock(&st->buf_lock);
tx = ADXRS450_READ_DATA | (reg_address << 17);
-
- if (!(hweight32(tx) & 1))
- tx |= ADXRS450_P;
+ tx |= !parity32(tx) * ADXRS450_P;
st->tx = cpu_to_be32(tx);
ret = spi_sync_transfer(st->us, xfers, ARRAY_SIZE(xfers));
@@ -144,9 +142,7 @@ static int adxrs450_spi_write_reg_16(struct iio_dev *indio_dev,
mutex_lock(&st->buf_lock);
tx = ADXRS450_WRITE_DATA | (reg_address << 17) | (val << 1);
-
- if (!(hweight32(tx) & 1))
- tx |= ADXRS450_P;
+ tx |= !parity32(tx) * ADXRS450_P;
st->tx = cpu_to_be32(tx);
ret = spi_write(st->us, &st->tx, sizeof(st->tx));
--
2.5.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 28/31] iio: gyro: use parity32 in adxrs450.c
2016-03-27 7:42 ` [PATCH 28/31] iio: gyro: use parity32 in adxrs450.c zhaoxiu.zeng
@ 2016-03-28 8:35 ` Jonathan Cameron
2016-03-28 8:50 ` Lars-Peter Clausen
0 siblings, 1 reply; 3+ messages in thread
From: Jonathan Cameron @ 2016-03-28 8:35 UTC (permalink / raw)
To: zhaoxiu.zeng, Lars-Peter Clausen, Michael Hennerich,
Hartmut Knaack, Peter Meerwald
Cc: linux-kernel, linux-iio
On 27/03/16 08:42, zhaoxiu.zeng wrote:
> From: Zeng Zhaoxiu <zhaoxiu.zeng@gmail.com>
>
> Signed-off-by: Zeng Zhaoxiu <zhaoxiu.zeng@gmail.com>
Interesting. Whilst obviously correct I wonder if this obscures the
intent of the code a little. Lars, what do you think?
Jonathan
> ---
> drivers/iio/gyro/adxrs450.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iio/gyro/adxrs450.c b/drivers/iio/gyro/adxrs450.c
> index a330d42..f1f19fc20 100644
> --- a/drivers/iio/gyro/adxrs450.c
> +++ b/drivers/iio/gyro/adxrs450.c
> @@ -108,9 +108,7 @@ static int adxrs450_spi_read_reg_16(struct iio_dev *indio_dev,
>
> mutex_lock(&st->buf_lock);
> tx = ADXRS450_READ_DATA | (reg_address << 17);
> -
> - if (!(hweight32(tx) & 1))
> - tx |= ADXRS450_P;
> + tx |= !parity32(tx) * ADXRS450_P;
>
> st->tx = cpu_to_be32(tx);
> ret = spi_sync_transfer(st->us, xfers, ARRAY_SIZE(xfers));
> @@ -144,9 +142,7 @@ static int adxrs450_spi_write_reg_16(struct iio_dev *indio_dev,
>
> mutex_lock(&st->buf_lock);
> tx = ADXRS450_WRITE_DATA | (reg_address << 17) | (val << 1);
> -
> - if (!(hweight32(tx) & 1))
> - tx |= ADXRS450_P;
> + tx |= !parity32(tx) * ADXRS450_P;
>
> st->tx = cpu_to_be32(tx);
> ret = spi_write(st->us, &st->tx, sizeof(st->tx));
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 28/31] iio: gyro: use parity32 in adxrs450.c
2016-03-28 8:35 ` Jonathan Cameron
@ 2016-03-28 8:50 ` Lars-Peter Clausen
0 siblings, 0 replies; 3+ messages in thread
From: Lars-Peter Clausen @ 2016-03-28 8:50 UTC (permalink / raw)
To: Jonathan Cameron, zhaoxiu.zeng, Michael Hennerich, Hartmut Knaack,
Peter Meerwald
Cc: linux-kernel, linux-iio
On 03/28/2016 10:35 AM, Jonathan Cameron wrote:
> On 27/03/16 08:42, zhaoxiu.zeng wrote:
>> From: Zeng Zhaoxiu <zhaoxiu.zeng@gmail.com>
>>
>> Signed-off-by: Zeng Zhaoxiu <zhaoxiu.zeng@gmail.com>
> Interesting. Whilst obviously correct I wonder if this obscures the
> intent of the code a little. Lars, what do you think?
The parity function is newly introduced in this series and can be more
efficient that just hw_weight() & 1 on certain architectures. Since the
result is the same using it is certainly an improvement. But ...
[...]
>> - if (!(hweight32(tx) & 1))
>> - tx |= ADXRS450_P;
>> + tx |= !parity32(tx) * ADXRS450_P;
... this should still be
if (!parity32(tx))
tx |= ADXRS450_P;
Otherwise it's a bit too much obfuscated for my taste. Just leave it to the
compiler to optimize it as it sees it fit.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-03-28 8:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1458788612-4367-1-git-send-email-zhaoxiu.zeng@gmail.com>
2016-03-27 7:42 ` [PATCH 28/31] iio: gyro: use parity32 in adxrs450.c zhaoxiu.zeng
2016-03-28 8:35 ` Jonathan Cameron
2016-03-28 8:50 ` Lars-Peter Clausen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).