diff --git a/main/Android.mk b/main/Android.mk
index a19668b..744b6ed 100644
--- a/main/Android.mk
+++ b/main/Android.mk
@@ -14,8 +14,6 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-ANDROID_HARDWARE := ANDROID_HARDWARE_generic
-
 ifneq ($(filter arm x86,$(TARGET_ARCH)),)
 
 common_cflags := \
@@ -28,7 +26,8 @@
 	-DVGPV_$(TARGET_ARCH)_linux_android=1 \
 	-DVG_PLATFORM=\"$(TARGET_ARCH)-linux\" \
 	-DVG_LIBDIR=\"/system/lib/valgrind\" \
-	-DANDROID_SYMBOLS_DIR=\"/data/local/symbols\"
+	-DANDROID_SYMBOLS_DIR=\"/data/local/symbols\" \
+	-DANDROID_HARDWARE_nexus_s
 
 common_includes := \
 	external/valgrind/main \
@@ -40,18 +39,10 @@
 
 ifeq ($(TARGET_ARCH),arm)
 tool_ldflags := -static -Wl,--build-id=none,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start
-
-# ioctl/syscall wrappers are device dependent
-ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),manta)
-ANDROID_HARDWARE := ANDROID_HARDWARE_nexus_10
-endif
-
 else
 tool_ldflags := -static -Wl,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start
 endif
 
-common_cflags += -D$(ANDROID_HARDWARE)
-
 preload_ldflags := -nodefaultlibs -Wl,-z,interpose,-z,initfirst
 # Remove this when the all toolchains are GCC 4.4
 ifeq ($(TARGET_ARCH),arm)
diff --git a/main/coregrind/m_syswrap/syswrap-linux.c b/main/coregrind/m_syswrap/syswrap-linux.c
index 74c5201..2f1155f 100644
--- a/main/coregrind/m_syswrap/syswrap-linux.c
+++ b/main/coregrind/m_syswrap/syswrap-linux.c
@@ -4295,13 +4295,6 @@
                     unsigned int, fd, unsigned int, request);
       return;
 
-#  if defined(ANDROID_HARDWARE_nexus_10)
-   /* undocumented ioctl ids noted on the device */
-   case 0x4d07:
-   case 0x6101:
-      return;
-#  endif
-
    default:
       PRINT("sys_ioctl ( %ld, 0x%lx, 0x%lx )",ARG1,ARG2,ARG3);
       PRE_REG_READ3(long, "ioctl",
@@ -4309,18 +4302,6 @@
       break;
    }
 
-
-#  if defined(ANDROID_HARDWARE_nexus_10)
-
-   /* undocumented ioctl ids noted on the device */
-   if (ARG2 >= 0xc0108000 && ARG2 <= 0xc1e8820b && ARG3 != 0) {
-       int size = (ARG2 >> 16) & 0x3fff;
-       PRE_MEM_WRITE("ioctl(GL_UNDOCUMENTED)", (Addr)ARG3,  size);
-       return;
-   }
-
-#  endif
-
    // We now handle those that do look at ARG3 (and unknown ones fall into
    // this category).  Nb: some of these may well belong in the
    // doesn't-use-ARG3 switch above.
@@ -5524,7 +5505,6 @@
            PRE_FIELD_WRITE("ioctl(BINDER_VERSION)", bv->protocol_version);
        }
        break;
-
 #  endif /* defined(VGPV_*_linux_android) */
 
    case VKI_HCIINQUIRY:
@@ -5547,9 +5527,6 @@
    case VKI_KVM_RUN:
       break;
 
-   case VKI_EVIOCSSUSPENDBLOCK:
-      break;
-
    default:
       /* EVIOC* are variable length and return size written on success */
       switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
@@ -5657,15 +5634,6 @@
    /* END generic/emulator specific ioctls */
 
 
-#  elif defined(ANDROID_HARDWARE_nexus_10)
-
-   /* undocumented ioctl ids noted on the device */
-   if (ARG2 >= 0xc0108000 && ARG2 <= 0xc1e8820b && ARG3 != 0) {
-      int size = (ARG2 >> 16) & 0x3fff;
-      POST_MEM_WRITE(ARG3, size);
-   }
-
-
 #  else /* no ANDROID_HARDWARE_anything defined */
 
 #   warning ""
@@ -5674,7 +5642,6 @@
 #   warning "building for.  Currently known values are"
 #   warning ""
 #   warning "   ANDROID_HARDWARE_nexus_s       Samsung Nexus S"
-#   warning "   ANDROID_HARDWARE_nexus_10      Samsung Nexus 10"
 #   warning "   ANDROID_HARDWARE_generic       Generic device (eg, Pandaboard)"
 #   warning "   ANDROID_HARDWARE_emulator      x86 or arm emulator"
 #   warning ""
@@ -6557,10 +6524,6 @@
    case VKI_KVM_S390_INITIAL_RESET:
       break;
 
-   case VKI_EVIOCSSUSPENDBLOCK:
-      POST_MEM_WRITE( ARG3, sizeof(int) );
-      break;
-
    default:
       /* EVIOC* are variable length and return size written on success */
       switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
diff --git a/main/include/vki/vki-linux.h b/main/include/vki/vki-linux.h
index 8cefd8f..c18195e 100644
--- a/main/include/vki/vki-linux.h
+++ b/main/include/vki/vki-linux.h
@@ -2813,8 +2813,6 @@
 
 #define VKI_EVIOCGBIT(ev,len)	_VKI_IOC(_VKI_IOC_READ, 'E', 0x20 + ev, len)	/* get event bits */
 
-#define VKI_EVIOCSSUSPENDBLOCK	_VKI_IOW('E', 0x91, int)	/* set suspend block enable */
-
 /*
  * Event types
  */
