Re: [PATCH v6 4/4] iio: hid-sensor-magn-3d: Add support for rotation from north

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 20/07/14 00:27, Srinivas Pandruvada wrote:

On 07/17/2014 11:18 AM, Reyad Attiyat wrote:
Add the HID usage attribute ID's and IIO channel info for rotation
from north support.

Signed-off-by: Reyad Attiyat <reyad.attiyat@xxxxxxxxx>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>
Applied to the togreg branch of iio.git.  This will be initially pushed out
as testing for the autobuilders to play with.

Thanks,
---
  drivers/iio/magnetometer/hid-sensor-magn-3d.c | 53 ++++++++++++++++++++++++++-
  1 file changed, 52 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/magnetometer/hid-sensor-magn-3d.c b/drivers/iio/magnetometer/hid-sensor-magn-3d.c
index d3b9114..3ec777a 100644
--- a/drivers/iio/magnetometer/hid-sensor-magn-3d.c
+++ b/drivers/iio/magnetometer/hid-sensor-magn-3d.c
@@ -35,6 +35,10 @@ enum magn_3d_channel {
      CHANNEL_SCAN_INDEX_X,
      CHANNEL_SCAN_INDEX_Y,
      CHANNEL_SCAN_INDEX_Z,
+    CHANNEL_SCAN_INDEX_NORTH_MAGN_TILT_COMP,
+    CHANNEL_SCAN_INDEX_NORTH_TRUE_TILT_COMP,
+    CHANNEL_SCAN_INDEX_NORTH_MAGN,
+    CHANNEL_SCAN_INDEX_NORTH_TRUE,
      MAGN_3D_CHANNEL_MAX,
  };
@@ -57,7 +61,11 @@ struct magn_3d_state {
  static const u32 magn_3d_addresses[MAGN_3D_CHANNEL_MAX] = {
      HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_X_AXIS,
      HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_Y_AXIS,
-    HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_Z_AXIS
+    HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_Z_AXIS,
+    HID_USAGE_SENSOR_ORIENT_COMP_MAGN_NORTH,
+    HID_USAGE_SENSOR_ORIENT_COMP_TRUE_NORTH,
+    HID_USAGE_SENSOR_ORIENT_MAGN_NORTH,
+    HID_USAGE_SENSOR_ORIENT_TRUE_NORTH,
  };
  /* Channel definitions */
@@ -89,6 +97,42 @@ static const struct iio_chan_spec magn_3d_channels[] = {
          BIT(IIO_CHAN_INFO_SCALE) |
          BIT(IIO_CHAN_INFO_SAMP_FREQ) |
          BIT(IIO_CHAN_INFO_HYSTERESIS),
+    }, {
+        .type = IIO_ROT,
+        .modified = 1,
+        .channel2 = IIO_MOD_NORTH_MAGN_TILT_COMP,
+        .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+        .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+        BIT(IIO_CHAN_INFO_SCALE) |
+        BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+        BIT(IIO_CHAN_INFO_HYSTERESIS),
+    }, {
+        .type = IIO_ROT,
+        .modified = 1,
+        .channel2 = IIO_MOD_NORTH_TRUE_TILT_COMP,
+        .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+        .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+        BIT(IIO_CHAN_INFO_SCALE) |
+        BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+        BIT(IIO_CHAN_INFO_HYSTERESIS),
+    }, {
+        .type = IIO_ROT,
+        .modified = 1,
+        .channel2 = IIO_MOD_NORTH_MAGN,
+        .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+        .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+        BIT(IIO_CHAN_INFO_SCALE) |
+        BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+        BIT(IIO_CHAN_INFO_HYSTERESIS),
+    }, {
+        .type = IIO_ROT,
+        .modified = 1,
+        .channel2 = IIO_MOD_NORTH_TRUE,
+        .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+        .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+        BIT(IIO_CHAN_INFO_SCALE) |
+        BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+        BIT(IIO_CHAN_INFO_HYSTERESIS),
      }
  };
@@ -245,6 +289,13 @@ static int magn_3d_capture_sample(struct hid_sensor_hub_device *hsdev,
          offset = (usage_id - HID_USAGE_SENSOR_ORIENT_MAGN_FLUX_X_AXIS)
                  + CHANNEL_SCAN_INDEX_X;
      break;
+    case HID_USAGE_SENSOR_ORIENT_COMP_MAGN_NORTH:
+    case HID_USAGE_SENSOR_ORIENT_COMP_TRUE_NORTH:
+    case HID_USAGE_SENSOR_ORIENT_MAGN_NORTH:
+    case HID_USAGE_SENSOR_ORIENT_TRUE_NORTH:
+        offset = (usage_id - HID_USAGE_SENSOR_ORIENT_COMP_MAGN_NORTH)
+                + CHANNEL_SCAN_INDEX_NORTH_MAGN_TILT_COMP;
+    break;
      default:
          return -EINVAL;
      }

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux