Merge "Manta: NFC: Don't generate RF field notification events." into jb-mr1-dev
diff --git a/dumpstate/dumpstate.c b/dumpstate/dumpstate.c
index 777fc93..c459f8d 100644
--- a/dumpstate/dumpstate.c
+++ b/dumpstate/dumpstate.c
@@ -35,4 +35,7 @@
     dump_file("ds2784 fuel gauge regs", "/d/ds2784");
     dump_file("bus traffic shaper", "/d/bts_dev_status");
     dump_file("display controller", "/d/s3c-fb");
+    dump_file("ion system heap", "/d/ion/ion_noncontig_heap");
+    dump_file("ion exynos noncontig heap", "/d/ion/exynos_noncontig_heap");
+    dump_file("ion exynos contig heap", "/d/ion/exynos_contig_heap");
 };
diff --git a/kernel b/kernel
index 47223f2..0280c6a 100644
--- a/kernel
+++ b/kernel
Binary files differ
diff --git a/libsensors/sensors.cpp b/libsensors/sensors.cpp
index c972707..33853eb 100644
--- a/libsensors/sensors.cpp
+++ b/libsensors/sensors.cpp
@@ -56,6 +56,7 @@
 #define SENSORS_LINEAR_ACCEL_HANDLE     (ID_LA)
 #define SENSORS_GRAVITY_HANDLE          (ID_GR)
 #define SENSORS_GYROSCOPE_HANDLE        (ID_GY)
+#define SENSORS_RAW_GYROSCOPE_HANDLE    (ID_RG)
 #define SENSORS_ACCELERATION_HANDLE     (ID_A)
 #define SENSORS_MAGNETIC_FIELD_HANDLE   (ID_M)
 #define SENSORS_ORIENTATION_HANDLE      (ID_O)
@@ -149,6 +150,7 @@
             case ID_LA:
             case ID_GR:
             case ID_GY:
+            case ID_RG:
             case ID_A:
             case ID_M:
             case ID_O:
@@ -231,6 +233,7 @@
 int sensors_poll_context_t::activate(int handle, int enabled)
 {
     FUNC_LOG;
+    if (!mInitialized) return -EINVAL;
     int index = handleToDriver(handle);
     if (index < 0) return index;
     int err =  mSensors[index]->enable(handle, enabled);
@@ -260,7 +263,7 @@
         for (int i=0 ; count && i<numSensorDrivers ; i++) {
             SensorBase* const sensor(mSensors[i]);
             // See if we have some pending events from the last poll()
-            if ((mPollFds[i].revents & POLLIN) || (sensor->hasPendingEvents())) {
+            if ((mPollFds[i].revents & (POLLIN | POLLPRI)) || (sensor->hasPendingEvents())) {
                 int nb;
                 if (i == compass) {
                     /* result is hardcoded to 0 */
@@ -271,6 +274,7 @@
                     /* result is hardcoded to 0 */
                     sensor->readEvents(NULL, count);
                     nb = ((MPLSensor*) mSensors[mpl])->executeOnData(data, count);
+                    mPollFds[i].revents = 0;
                 }
                 else {
                     nb = sensor->readEvents(data, count);
@@ -292,7 +296,7 @@
                 ALOGE("poll() failed (%s)", strerror(errno));
                 return -errno;
             }
-            if (mPollFds[wake].revents & POLLIN) {
+            if (mPollFds[wake].revents & (POLLIN | POLLPRI)) {
                 char msg;
                 int result = read(mPollFds[wake].fd, &msg, 1);
                 ALOGE_IF(result<0, "error reading from wake pipe (%s)", strerror(errno));