linux/drivers/iio/gyro
Jonathan Cameron 26aec6e1b7 iio:gyro:mpu3050 Treat otp value as a __le64 and use FIELD_GET() to break up
Inspired by Andy Shevchenko's proposal to use get_unaligned_leXX().

The whole one time programable memory is treated as a single 64bit
little endian value.  Thus we can avoid a lot of messy handling
of fields overlapping byte boundaries by just loading and manipulating
it as an __le64 converted to a u64.  That lets us just use FIELD_GET()
and GENMASK() to extract the values desired.

Note only build tested. We need to use GENMASK_ULL and %llX formatters
to account for the larger types used in computing the various fields.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Tested-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20201128185156.428327-1-jic23@kernel.org
Link: https://lore.kernel.org/r/20201129184459.647538-1-jic23@kernel.org
2020-12-03 19:40:29 +00:00
..
adis16080.c
adis16130.c
adis16136.c
adis16260.c
adxrs290.c
adxrs450.c
bmg160.h
bmg160_core.c
bmg160_i2c.c
bmg160_spi.c
fxas21002c.h
fxas21002c_core.c
fxas21002c_i2c.c
fxas21002c_spi.c
hid-sensor-gyro-3d.c
itg3200_buffer.c
itg3200_core.c
Kconfig
Makefile
mpu3050-core.c
mpu3050-i2c.c
mpu3050.h
ssp_gyro_sensor.c
st_gyro.h
st_gyro_buffer.c
st_gyro_core.c
st_gyro_i2c.c
st_gyro_spi.c