Commit 02c34ccc authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge tag 'iio-for-4.5c' of...

Merge tag 'iio-for-4.5c' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next

Jonathan writes:

Third set of new stuff for IIO in the 4.5 cycle.

New driver features
- us5182
  * Add interrupt support and rising / falling threshold events.

Cleanups / fixes to new stuff / minor additions
* Expose the IIO value formatting function for drivers to
  make use of internally.
- ina2xx
   * Fix wrong channel order
   * Fix incorrect reporting of endianness
   * Adding documentation of ABI unique to this device
- mma8452
  * Drop an unused register description
  * Use an enum for the channel index to aid readability
- sca3000
  * Use standard NULL comparison style
- us5182
  * fix an inconsistency in status of enable (a bug with no real effect until
    above patches are applied)
  * refactor the read_raw function to improve maintainability / readability.
parents 35ea984d e8aab48b
What: /sys/bus/iio/devices/iio:deviceX/in_allow_async_readout
Date: December 2015
KernelVersion: 4.4
Contact: linux-iio@vger.kernel.org
Description:
By default (value '0'), the capture thread checks for the Conversion
Ready Flag to being set prior to committing a new value to the sample
buffer. This synchronizes the in-chip conversion rate with the
in-driver readout rate at the cost of an additional register read.
Writing '1' will remove the polling for the Conversion Ready Flags to
save the additional i2c transaction, which will improve the bandwidth
available for reading data. However, samples can be occasionally skipped
or repeated, depending on the beat between the capture and conversion
rates.
What: /sys/bus/iio/devices/iio:deviceX/in_shunt_resistor
Date: December 2015
KernelVersion: 4.4
Contact: linux-iio@vger.kernel.org
Description:
The value of the shunt resistor may be known only at runtime fom an
eeprom content read by a client application. This attribute allows to
set its value in ohms.
...@@ -58,7 +58,6 @@ ...@@ -58,7 +58,6 @@
#define MMA8452_FF_MT_COUNT 0x18 #define MMA8452_FF_MT_COUNT 0x18
#define MMA8452_TRANSIENT_CFG 0x1d #define MMA8452_TRANSIENT_CFG 0x1d
#define MMA8452_TRANSIENT_CFG_HPF_BYP BIT(0) #define MMA8452_TRANSIENT_CFG_HPF_BYP BIT(0)
#define MMA8452_TRANSIENT_CFG_CHAN(chan) BIT(chan + 1)
#define MMA8452_TRANSIENT_CFG_ELE BIT(4) #define MMA8452_TRANSIENT_CFG_ELE BIT(4)
#define MMA8452_TRANSIENT_SRC 0x1e #define MMA8452_TRANSIENT_SRC 0x1e
#define MMA8452_TRANSIENT_SRC_XTRANSE BIT(1) #define MMA8452_TRANSIENT_SRC_XTRANSE BIT(1)
...@@ -144,6 +143,13 @@ struct mma_chip_info { ...@@ -144,6 +143,13 @@ struct mma_chip_info {
u8 ev_count; u8 ev_count;
}; };
enum {
idx_x,
idx_y,
idx_z,
idx_ts,
};
static int mma8452_drdy(struct mma8452_data *data) static int mma8452_drdy(struct mma8452_data *data)
{ {
int tries = 150; int tries = 150;
...@@ -817,31 +823,31 @@ static struct attribute_group mma8452_event_attribute_group = { ...@@ -817,31 +823,31 @@ static struct attribute_group mma8452_event_attribute_group = {
} }
static const struct iio_chan_spec mma8452_channels[] = { static const struct iio_chan_spec mma8452_channels[] = {
MMA8452_CHANNEL(X, 0, 12), MMA8452_CHANNEL(X, idx_x, 12),
MMA8452_CHANNEL(Y, 1, 12), MMA8452_CHANNEL(Y, idx_y, 12),
MMA8452_CHANNEL(Z, 2, 12), MMA8452_CHANNEL(Z, idx_z, 12),
IIO_CHAN_SOFT_TIMESTAMP(3), IIO_CHAN_SOFT_TIMESTAMP(idx_ts),
}; };
static const struct iio_chan_spec mma8453_channels[] = { static const struct iio_chan_spec mma8453_channels[] = {
MMA8452_CHANNEL(X, 0, 10), MMA8452_CHANNEL(X, idx_x, 10),
MMA8452_CHANNEL(Y, 1, 10), MMA8452_CHANNEL(Y, idx_y, 10),
MMA8452_CHANNEL(Z, 2, 10), MMA8452_CHANNEL(Z, idx_z, 10),
IIO_CHAN_SOFT_TIMESTAMP(3), IIO_CHAN_SOFT_TIMESTAMP(idx_ts),
}; };
static const struct iio_chan_spec mma8652_channels[] = { static const struct iio_chan_spec mma8652_channels[] = {
MMA8652_CHANNEL(X, 0, 12), MMA8652_CHANNEL(X, idx_x, 12),
MMA8652_CHANNEL(Y, 1, 12), MMA8652_CHANNEL(Y, idx_y, 12),
MMA8652_CHANNEL(Z, 2, 12), MMA8652_CHANNEL(Z, idx_z, 12),
IIO_CHAN_SOFT_TIMESTAMP(3), IIO_CHAN_SOFT_TIMESTAMP(idx_ts),
}; };
static const struct iio_chan_spec mma8653_channels[] = { static const struct iio_chan_spec mma8653_channels[] = {
MMA8652_CHANNEL(X, 0, 10), MMA8652_CHANNEL(X, idx_x, 10),
MMA8652_CHANNEL(Y, 1, 10), MMA8652_CHANNEL(Y, idx_y, 10),
MMA8652_CHANNEL(Z, 2, 10), MMA8652_CHANNEL(Z, idx_z, 10),
IIO_CHAN_SOFT_TIMESTAMP(3), IIO_CHAN_SOFT_TIMESTAMP(idx_ts),
}; };
enum { enum {
......
...@@ -400,7 +400,7 @@ static ssize_t ina2xx_shunt_resistor_store(struct device *dev, ...@@ -400,7 +400,7 @@ static ssize_t ina2xx_shunt_resistor_store(struct device *dev,
.sign = 'u', \ .sign = 'u', \
.realbits = 16, \ .realbits = 16, \
.storagebits = 16, \ .storagebits = 16, \
.endianness = IIO_LE, \ .endianness = IIO_CPU, \
} \ } \
} }
...@@ -428,8 +428,8 @@ static ssize_t ina2xx_shunt_resistor_store(struct device *dev, ...@@ -428,8 +428,8 @@ static ssize_t ina2xx_shunt_resistor_store(struct device *dev,
static const struct iio_chan_spec ina2xx_channels[] = { static const struct iio_chan_spec ina2xx_channels[] = {
INA2XX_CHAN_VOLTAGE(0, INA2XX_SHUNT_VOLTAGE), INA2XX_CHAN_VOLTAGE(0, INA2XX_SHUNT_VOLTAGE),
INA2XX_CHAN_VOLTAGE(1, INA2XX_BUS_VOLTAGE), INA2XX_CHAN_VOLTAGE(1, INA2XX_BUS_VOLTAGE),
INA2XX_CHAN(IIO_CURRENT, 2, INA2XX_CURRENT), INA2XX_CHAN(IIO_POWER, 2, INA2XX_POWER),
INA2XX_CHAN(IIO_POWER, 3, INA2XX_POWER), INA2XX_CHAN(IIO_CURRENT, 3, INA2XX_CURRENT),
IIO_CHAN_SOFT_TIMESTAMP(4), IIO_CHAN_SOFT_TIMESTAMP(4),
}; };
......
...@@ -470,6 +470,7 @@ ssize_t iio_format_value(char *buf, unsigned int type, int size, int *vals) ...@@ -470,6 +470,7 @@ ssize_t iio_format_value(char *buf, unsigned int type, int size, int *vals)
return 0; return 0;
} }
} }
EXPORT_SYMBOL_GPL(iio_format_value);
static ssize_t iio_read_channel_info(struct device *dev, static ssize_t iio_read_channel_info(struct device *dev,
struct device_attribute *attr, struct device_attribute *attr,
......
This diff is collapsed.
...@@ -48,7 +48,7 @@ static int sca3000_read_data(struct sca3000_state *st, ...@@ -48,7 +48,7 @@ static int sca3000_read_data(struct sca3000_state *st,
} }
}; };
*rx_p = kmalloc(len, GFP_KERNEL); *rx_p = kmalloc(len, GFP_KERNEL);
if (*rx_p == NULL) { if (!*rx_p) {
ret = -ENOMEM; ret = -ENOMEM;
goto error_ret; goto error_ret;
} }
......
...@@ -636,6 +636,8 @@ static inline struct dentry *iio_get_debugfs_dentry(struct iio_dev *indio_dev) ...@@ -636,6 +636,8 @@ static inline struct dentry *iio_get_debugfs_dentry(struct iio_dev *indio_dev)
} }
#endif #endif
ssize_t iio_format_value(char *buf, unsigned int type, int size, int *vals);
int iio_str_to_fixpoint(const char *str, int fract_mult, int *integer, int iio_str_to_fixpoint(const char *str, int fract_mult, int *integer,
int *fract); int *fract);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment