From: Michael Hennerich Date: Fri, 29 Apr 2011 12:17:01 +0000 (+0200) Subject: IIO: GYRO: ADXRS450: Add missing parity bit generation X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=232b1648e5d54b1e3f73463b0b26348889f12ae3;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git IIO: GYRO: ADXRS450: Add missing parity bit generation Add missing parity bit generation. Failure to add the parity bit caused half of the register accesses to fail. Signed-off-by: Michael Hennerich Acked-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/iio/gyro/adxrs450_core.c b/drivers/staging/iio/gyro/adxrs450_core.c index c02e3ef40a0f..5671276580f0 100644 --- a/drivers/staging/iio/gyro/adxrs450_core.c +++ b/drivers/staging/iio/gyro/adxrs450_core.c @@ -59,6 +59,9 @@ static int adxrs450_spi_read_reg_16(struct device *dev, st->tx[2] = 0; st->tx[3] = 0; + 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); @@ -103,6 +106,10 @@ static int adxrs450_spi_write_reg_16(struct device *dev, st->tx[1] = reg_address << 1 | val >> 15; st->tx[2] = val >> 7; st->tx[3] = val << 1; + + if (!(hweight32(be32_to_cpu(*(u32 *)st->tx)) & 1)) + st->tx[3] |= ADXRS450_P; + spi_message_init(&msg); spi_message_add_tail(&xfers, &msg); ret = spi_sync(st->us, &msg);