Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7ad00c0 authored by Sergey Larin's avatar Sergey Larin Committed by Greg Kroah-Hartman
Browse files

iio: gyro: mpu3050: fix chip ID reading



commit 409a51e0a4a5f908763191fae2c29008632eb712 upstream.

According to the datasheet, the last bit of CHIP_ID register controls
I2C bus, and the first one is unused. Handle this correctly.

Note that there are chips out there that have a value such that
the id check currently fails.

Signed-off-by: default avatarSergey Larin <cerg2010cerg2010@mail.ru>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Cc: <Stable@vger.kernel.org>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 63aafa65
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -29,7 +29,8 @@

#include "mpu3050.h"

#define MPU3050_CHIP_ID		0x69
#define MPU3050_CHIP_ID		0x68
#define MPU3050_CHIP_ID_MASK	0x7E

/*
 * Register map: anything suffixed *_H is a big-endian high byte and always
@@ -1178,8 +1179,9 @@ int mpu3050_common_probe(struct device *dev,
		goto err_power_down;
	}

	if (val != MPU3050_CHIP_ID) {
		dev_err(dev, "unsupported chip id %02x\n", (u8)val);
	if ((val & MPU3050_CHIP_ID_MASK) != MPU3050_CHIP_ID) {
		dev_err(dev, "unsupported chip id %02x\n",
				(u8)(val & MPU3050_CHIP_ID_MASK));
		ret = -ENODEV;
		goto err_power_down;
	}