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

Commit 2afe669a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull IIO fixes from Greg KH:
 "Here are a few small IIO fixes for 4.8-rc6.

  Nothing major, full details are in the shortlog, all of these have
  been in linux-next with no reported issues"

* tag 'staging-4.8-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  iio:core: fix IIO_VAL_FRACTIONAL sign handling
  iio: ensure ret is initialized to zero before entering do loop
  iio: accel: kxsd9: Fix scaling bug
  iio: accel: bmc150: reset chip at init time
  iio: fix pressure data output unit in hid-sensor-attributes
  tools:iio:iio_generic_buffer: fix trigger-less mode
parents 61c3dae6 72d508ad
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -67,6 +67,9 @@
#define BMC150_ACCEL_REG_PMU_BW		0x10
#define BMC150_ACCEL_REG_PMU_BW		0x10
#define BMC150_ACCEL_DEF_BW			125
#define BMC150_ACCEL_DEF_BW			125


#define BMC150_ACCEL_REG_RESET			0x14
#define BMC150_ACCEL_RESET_VAL			0xB6

#define BMC150_ACCEL_REG_INT_MAP_0		0x19
#define BMC150_ACCEL_REG_INT_MAP_0		0x19
#define BMC150_ACCEL_INT_MAP_0_BIT_SLOPE	BIT(2)
#define BMC150_ACCEL_INT_MAP_0_BIT_SLOPE	BIT(2)


@@ -1497,6 +1500,14 @@ static int bmc150_accel_chip_init(struct bmc150_accel_data *data)
	int ret, i;
	int ret, i;
	unsigned int val;
	unsigned int val;


	/*
	 * Reset chip to get it in a known good state. A delay of 1.8ms after
	 * reset is required according to the data sheets of supported chips.
	 */
	regmap_write(data->regmap, BMC150_ACCEL_REG_RESET,
		     BMC150_ACCEL_RESET_VAL);
	usleep_range(1800, 2500);

	ret = regmap_read(data->regmap, BMC150_ACCEL_REG_CHIP_ID, &val);
	ret = regmap_read(data->regmap, BMC150_ACCEL_REG_CHIP_ID, &val);
	if (ret < 0) {
	if (ret < 0) {
		dev_err(dev, "Error: Reading chip id\n");
		dev_err(dev, "Error: Reading chip id\n");
+1 −0
Original line number Original line Diff line number Diff line
@@ -166,6 +166,7 @@ static int kxsd9_read_raw(struct iio_dev *indio_dev,
		ret = spi_w8r8(st->us, KXSD9_READ(KXSD9_REG_CTRL_C));
		ret = spi_w8r8(st->us, KXSD9_READ(KXSD9_REG_CTRL_C));
		if (ret < 0)
		if (ret < 0)
			goto error_ret;
			goto error_ret;
		*val = 0;
		*val2 = kxsd9_micro_scales[ret & KXSD9_FS_MASK];
		*val2 = kxsd9_micro_scales[ret & KXSD9_FS_MASK];
		ret = IIO_VAL_INT_PLUS_MICRO;
		ret = IIO_VAL_INT_PLUS_MICRO;
		break;
		break;
+2 −2
Original line number Original line Diff line number Diff line
@@ -56,8 +56,8 @@ static struct {
	{HID_USAGE_SENSOR_ALS, 0, 1, 0},
	{HID_USAGE_SENSOR_ALS, 0, 1, 0},
	{HID_USAGE_SENSOR_ALS, HID_USAGE_SENSOR_UNITS_LUX, 1, 0},
	{HID_USAGE_SENSOR_ALS, HID_USAGE_SENSOR_UNITS_LUX, 1, 0},


	{HID_USAGE_SENSOR_PRESSURE, 0, 100000, 0},
	{HID_USAGE_SENSOR_PRESSURE, 0, 100, 0},
	{HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 1, 0},
	{HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000},
};
};


static int pow_10(unsigned power)
static int pow_10(unsigned power)
+2 −2
Original line number Original line Diff line number Diff line
@@ -110,7 +110,7 @@ ssize_t iio_buffer_read_first_n_outer(struct file *filp, char __user *buf,
	DEFINE_WAIT_FUNC(wait, woken_wake_function);
	DEFINE_WAIT_FUNC(wait, woken_wake_function);
	size_t datum_size;
	size_t datum_size;
	size_t to_wait;
	size_t to_wait;
	int ret;
	int ret = 0;


	if (!indio_dev->info)
	if (!indio_dev->info)
		return -ENODEV;
		return -ENODEV;
+2 −3
Original line number Original line Diff line number Diff line
@@ -613,9 +613,8 @@ ssize_t iio_format_value(char *buf, unsigned int type, int size, int *vals)
			return sprintf(buf, "%d.%09u\n", vals[0], vals[1]);
			return sprintf(buf, "%d.%09u\n", vals[0], vals[1]);
	case IIO_VAL_FRACTIONAL:
	case IIO_VAL_FRACTIONAL:
		tmp = div_s64((s64)vals[0] * 1000000000LL, vals[1]);
		tmp = div_s64((s64)vals[0] * 1000000000LL, vals[1]);
		vals[1] = do_div(tmp, 1000000000LL);
		vals[0] = (int)div_s64_rem(tmp, 1000000000, &vals[1]);
		vals[0] = tmp;
		return sprintf(buf, "%d.%09u\n", vals[0], abs(vals[1]));
		return sprintf(buf, "%d.%09u\n", vals[0], vals[1]);
	case IIO_VAL_FRACTIONAL_LOG2:
	case IIO_VAL_FRACTIONAL_LOG2:
		tmp = (s64)vals[0] * 1000000000LL >> vals[1];
		tmp = (s64)vals[0] * 1000000000LL >> vals[1];
		vals[1] = do_div(tmp, 1000000000LL);
		vals[1] = do_div(tmp, 1000000000LL);
Loading