mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 14:02:06 -04:00
iio:core: mounting matrix support
Expose a rotation matrix to indicate userspace the chip placement with respect to the overall hardware system. This is needed to adjust coordinates sampled from a sensor chip when its position deviates from the main hardware system. Final coordinates computation is delegated to userspace since: * computation may involve floating point arithmetics ; * it allows an application to combine adjustments with arbitrary transformations. This 3 dimentional space rotation matrix is expressed as 3x3 array of strings to support floating point numbers. It may be retrieved from a "[<dir>_][<type>_]mount_matrix" sysfs attribute file. It is declared into a device / driver specific DTS property or platform data. Signed-off-by: Gregor Boirie <gregor.boirie@parrot.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
committed by
Jonathan Cameron
parent
dc2c57153e
commit
dfc57732ad
@@ -147,6 +147,37 @@ ssize_t iio_enum_write(struct iio_dev *indio_dev,
|
||||
.private = (uintptr_t)(_e), \
|
||||
}
|
||||
|
||||
/**
|
||||
* struct iio_mount_matrix - iio mounting matrix
|
||||
* @rotation: 3 dimensional space rotation matrix defining sensor alignment with
|
||||
* main hardware
|
||||
*/
|
||||
struct iio_mount_matrix {
|
||||
const char *rotation[9];
|
||||
};
|
||||
|
||||
ssize_t iio_show_mount_matrix(struct iio_dev *indio_dev, uintptr_t priv,
|
||||
const struct iio_chan_spec *chan, char *buf);
|
||||
int of_iio_read_mount_matrix(const struct device *dev, const char *propname,
|
||||
struct iio_mount_matrix *matrix);
|
||||
|
||||
typedef const struct iio_mount_matrix *
|
||||
(iio_get_mount_matrix_t)(const struct iio_dev *indio_dev,
|
||||
const struct iio_chan_spec *chan);
|
||||
|
||||
/**
|
||||
* IIO_MOUNT_MATRIX() - Initialize mount matrix extended channel attribute
|
||||
* @_shared: Whether the attribute is shared between all channels
|
||||
* @_get: Pointer to an iio_get_mount_matrix_t accessor
|
||||
*/
|
||||
#define IIO_MOUNT_MATRIX(_shared, _get) \
|
||||
{ \
|
||||
.name = "mount_matrix", \
|
||||
.shared = (_shared), \
|
||||
.read = iio_show_mount_matrix, \
|
||||
.private = (uintptr_t)(_get), \
|
||||
}
|
||||
|
||||
/**
|
||||
* struct iio_event_spec - specification for a channel event
|
||||
* @type: Type of the event
|
||||
|
||||
Reference in New Issue
Block a user