staging:iio:scan element types: introduce endian description to the data format.
If not set in chan_spec, cpu endianness used. Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>wifi-calibration
parent
a37b549ec6
commit
8310b86c3c
|
@ -80,6 +80,12 @@ enum iio_chan_info_enum {
|
||||||
IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW_SEPARATE,
|
IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW_SEPARATE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum iio_endian {
|
||||||
|
IIO_CPU,
|
||||||
|
IIO_BE,
|
||||||
|
IIO_LE,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct iio_chan_spec - specification of a single channel
|
* struct iio_chan_spec - specification of a single channel
|
||||||
* @type: What type of measurement is the channel making.
|
* @type: What type of measurement is the channel making.
|
||||||
|
@ -95,6 +101,7 @@ enum iio_chan_info_enum {
|
||||||
* storage_bits: Realbits + padding
|
* storage_bits: Realbits + padding
|
||||||
* shift: Shift right by this before masking out
|
* shift: Shift right by this before masking out
|
||||||
* realbits.
|
* realbits.
|
||||||
|
* endianness: little or big endian
|
||||||
* @info_mask: What information is to be exported about this channel.
|
* @info_mask: What information is to be exported about this channel.
|
||||||
* This includes calibbias, scale etc.
|
* This includes calibbias, scale etc.
|
||||||
* @event_mask: What events can this channel produce.
|
* @event_mask: What events can this channel produce.
|
||||||
|
@ -123,6 +130,7 @@ struct iio_chan_spec {
|
||||||
u8 realbits;
|
u8 realbits;
|
||||||
u8 storagebits;
|
u8 storagebits;
|
||||||
u8 shift;
|
u8 shift;
|
||||||
|
enum iio_endian endianness;
|
||||||
} scan_type;
|
} scan_type;
|
||||||
long info_mask;
|
long info_mask;
|
||||||
long event_mask;
|
long event_mask;
|
||||||
|
|
|
@ -25,6 +25,10 @@
|
||||||
#include "sysfs.h"
|
#include "sysfs.h"
|
||||||
#include "ring_generic.h"
|
#include "ring_generic.h"
|
||||||
|
|
||||||
|
static const char * const iio_endian_prefix[] = {
|
||||||
|
[IIO_BE] = "be",
|
||||||
|
[IIO_LE] = "le",
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* iio_ring_read_first_n_outer() - chrdev read for ring buffer access
|
* iio_ring_read_first_n_outer() - chrdev read for ring buffer access
|
||||||
|
@ -96,7 +100,16 @@ static ssize_t iio_show_fixed_type(struct device *dev,
|
||||||
char *buf)
|
char *buf)
|
||||||
{
|
{
|
||||||
struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
|
struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
|
||||||
return sprintf(buf, "%c%d/%d>>%u\n",
|
u8 type = this_attr->c->scan_type.endianness;
|
||||||
|
|
||||||
|
if (type == IIO_CPU) {
|
||||||
|
if (__LITTLE_ENDIAN)
|
||||||
|
type = IIO_LE;
|
||||||
|
else
|
||||||
|
type = IIO_BE;
|
||||||
|
}
|
||||||
|
return sprintf(buf, "%s:%c%d/%d>>%u\n",
|
||||||
|
iio_endian_prefix[type],
|
||||||
this_attr->c->scan_type.sign,
|
this_attr->c->scan_type.sign,
|
||||||
this_attr->c->scan_type.realbits,
|
this_attr->c->scan_type.realbits,
|
||||||
this_attr->c->scan_type.storagebits,
|
this_attr->c->scan_type.storagebits,
|
||||||
|
|
Loading…
Reference in New Issue