Commit abea9c62c32fabb9f712f01cbf12ce24694eca88
Committed by
Jonathan Cameron
1 parent
2a96540a5c
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
iio: hid-sensor-magn-3d: Add support for rotation from north
Add the HID usage attribute ID's and IIO channel info for rotation from north support. Signed-off-by: Reyad Attiyat <reyad.attiyat@gmail.com> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Showing 1 changed file with 52 additions and 1 deletions Side-by-side Diff
drivers/iio/magnetometer/hid-sensor-magn-3d.c
... | ... | @@ -35,6 +35,10 @@ |
35 | 35 | CHANNEL_SCAN_INDEX_X, |
36 | 36 | CHANNEL_SCAN_INDEX_Y, |
37 | 37 | CHANNEL_SCAN_INDEX_Z, |
38 | + CHANNEL_SCAN_INDEX_NORTH_MAGN_TILT_COMP, | |
39 | + CHANNEL_SCAN_INDEX_NORTH_TRUE_TILT_COMP, | |
40 | + CHANNEL_SCAN_INDEX_NORTH_MAGN, | |
41 | + CHANNEL_SCAN_INDEX_NORTH_TRUE, | |
38 | 42 | MAGN_3D_CHANNEL_MAX, |
39 | 43 | }; |
40 | 44 | |
... | ... | @@ -57,7 +61,11 @@ |
57 | 61 | static const u32 magn_3d_addresses[MAGN_3D_CHANNEL_MAX] = { |
58 | 62 | HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_X_AXIS, |
59 | 63 | HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_Y_AXIS, |
60 | - HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_Z_AXIS | |
64 | + HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_Z_AXIS, | |
65 | + HID_USAGE_SENSOR_ORIENT_COMP_MAGN_NORTH, | |
66 | + HID_USAGE_SENSOR_ORIENT_COMP_TRUE_NORTH, | |
67 | + HID_USAGE_SENSOR_ORIENT_MAGN_NORTH, | |
68 | + HID_USAGE_SENSOR_ORIENT_TRUE_NORTH, | |
61 | 69 | }; |
62 | 70 | |
63 | 71 | /* Channel definitions */ |
... | ... | @@ -89,6 +97,42 @@ |
89 | 97 | BIT(IIO_CHAN_INFO_SCALE) | |
90 | 98 | BIT(IIO_CHAN_INFO_SAMP_FREQ) | |
91 | 99 | BIT(IIO_CHAN_INFO_HYSTERESIS), |
100 | + }, { | |
101 | + .type = IIO_ROT, | |
102 | + .modified = 1, | |
103 | + .channel2 = IIO_MOD_NORTH_MAGN_TILT_COMP, | |
104 | + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | |
105 | + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) | | |
106 | + BIT(IIO_CHAN_INFO_SCALE) | | |
107 | + BIT(IIO_CHAN_INFO_SAMP_FREQ) | | |
108 | + BIT(IIO_CHAN_INFO_HYSTERESIS), | |
109 | + }, { | |
110 | + .type = IIO_ROT, | |
111 | + .modified = 1, | |
112 | + .channel2 = IIO_MOD_NORTH_TRUE_TILT_COMP, | |
113 | + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | |
114 | + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) | | |
115 | + BIT(IIO_CHAN_INFO_SCALE) | | |
116 | + BIT(IIO_CHAN_INFO_SAMP_FREQ) | | |
117 | + BIT(IIO_CHAN_INFO_HYSTERESIS), | |
118 | + }, { | |
119 | + .type = IIO_ROT, | |
120 | + .modified = 1, | |
121 | + .channel2 = IIO_MOD_NORTH_MAGN, | |
122 | + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | |
123 | + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) | | |
124 | + BIT(IIO_CHAN_INFO_SCALE) | | |
125 | + BIT(IIO_CHAN_INFO_SAMP_FREQ) | | |
126 | + BIT(IIO_CHAN_INFO_HYSTERESIS), | |
127 | + }, { | |
128 | + .type = IIO_ROT, | |
129 | + .modified = 1, | |
130 | + .channel2 = IIO_MOD_NORTH_TRUE, | |
131 | + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | |
132 | + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) | | |
133 | + BIT(IIO_CHAN_INFO_SCALE) | | |
134 | + BIT(IIO_CHAN_INFO_SAMP_FREQ) | | |
135 | + BIT(IIO_CHAN_INFO_HYSTERESIS), | |
92 | 136 | } |
93 | 137 | }; |
94 | 138 | |
... | ... | @@ -247,6 +291,13 @@ |
247 | 291 | case HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_Z_AXIS: |
248 | 292 | offset = (usage_id - HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_X_AXIS) |
249 | 293 | + CHANNEL_SCAN_INDEX_X; |
294 | + break; | |
295 | + case HID_USAGE_SENSOR_ORIENT_COMP_MAGN_NORTH: | |
296 | + case HID_USAGE_SENSOR_ORIENT_COMP_TRUE_NORTH: | |
297 | + case HID_USAGE_SENSOR_ORIENT_MAGN_NORTH: | |
298 | + case HID_USAGE_SENSOR_ORIENT_TRUE_NORTH: | |
299 | + offset = (usage_id - HID_USAGE_SENSOR_ORIENT_COMP_MAGN_NORTH) | |
300 | + + CHANNEL_SCAN_INDEX_NORTH_MAGN_TILT_COMP; | |
250 | 301 | break; |
251 | 302 | default: |
252 | 303 | return -EINVAL; |