Read MSC_TIMESTAMP from evdev and pass along

This CL passes along MSC_TIMESTAMP if the device reports it.  We will
use this in the touchpad gesture library for more accurate time deltas,
particularly for lux/hammer.

BUG=b:65041115
TEST=Deploy to device which supports MSC_TIMESTAMP: values are
succesfully passed.  Deploy to device without MSC_TIMESTAMP support: no
problems.

Change-Id: Ib7c6431d11f593eb10481de6cc6348f837aee05c
Reviewed-on: https://chromium-review.googlesource.com/742488
Commit-Ready: Sean O'Brien <seobrien@chromium.org>
Tested-by: Sean O'Brien <seobrien@chromium.org>
Reviewed-by: Michael Spang <spang@chromium.org>
Reviewed-by: Sean O'Brien <seobrien@chromium.org>
diff --git a/src/libevdev.c b/src/libevdev.c
index e920a02..1b4d52e 100644
--- a/src/libevdev.c
+++ b/src/libevdev.c
@@ -160,6 +160,20 @@
                     Event_To_String(EV_KEY, i));
   }
 
+  len = ioctl(fd, EVIOCGBIT(EV_MSC, sizeof(info->msc_bitmask)),
+              info->msc_bitmask);
+  if (len < 0) {
+      LOG_ERROR(device, "ioctl EVIOCGBIT(EV_MSC) failed: %s\n",
+                strerror(errno));
+      return !Success;
+  }
+  for (i = 0; i < len*8; i++) {
+      if (TestBit(i, info->msc_bitmask)) {
+          LOG_DEBUG(device, "Has MSC[%d] = %s\n", i,
+                    Event_To_String(EV_MSC, i));
+      }
+  }
+
   len = ioctl(fd, EVIOCGBIT(EV_LED, sizeof(info->led_bitmask)),
               info->led_bitmask);
   if (len < 0) {