aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2013-03-08 15:36:33 -0800
committerBen Cheng <bccheng@google.com>2013-03-08 15:36:33 -0800
commit09529052b5d43a42bd0862262cbd4ee9e41ae4fe (patch)
tree2f31932d19ebeacab3e315da9631a77eee6959da
parentebdb3f93522726b6ea846621bb0c14a2cbba68ee (diff)
downloadvalgrind-09529052b5d43a42bd0862262cbd4ee9e41ae4fe.tar.gz
Add missing ioctl used by N4 camera.
Change-Id: I9604881edc7e5266e5903fe8c655d51ccc4c5832
-rw-r--r--main/Android.mk2
-rw-r--r--main/coregrind/m_syswrap/syswrap-linux.c18
-rw-r--r--main/include/vki/vki-linux.h17
3 files changed, 37 insertions, 0 deletions
diff --git a/main/Android.mk b/main/Android.mk
index 08db43ce7..8ac1d800a 100644
--- a/main/Android.mk
+++ b/main/Android.mk
@@ -46,6 +46,8 @@ ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),manta)
ANDROID_HARDWARE := ANDROID_HARDWARE_nexus_10
else ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),grouper)
ANDROID_HARDWARE := ANDROID_HARDWARE_nexus_7
+else ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),MAKO)
+ANDROID_HARDWARE := ANDROID_HARDWARE_nexus_4
endif
else
diff --git a/main/coregrind/m_syswrap/syswrap-linux.c b/main/coregrind/m_syswrap/syswrap-linux.c
index 7c4a7901d..8e2ec0f67 100644
--- a/main/coregrind/m_syswrap/syswrap-linux.c
+++ b/main/coregrind/m_syswrap/syswrap-linux.c
@@ -4308,6 +4308,8 @@ PRE(sys_ioctl)
case 0x7231:
case 0x4004e901: /* used by NFC */
return;
+# elif defined(ANDROID_HARDWARE_nexus_4)
+
# endif
default:
@@ -5558,6 +5560,13 @@ PRE(sys_ioctl)
case VKI_EVIOCSSUSPENDBLOCK:
break;
+ case VKI_MEDIA_IOC_DEVICE_INFO:
+ if (ARG3) {
+ PRE_MEM_WRITE("ioctl(MEDIA_IOC_DEVICE_INFO)", ARG3,
+ sizeof(struct vki_media_device_info));
+ }
+ break;
+
default:
/* EVIOC* are variable length and return size written on success */
switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
@@ -5675,6 +5684,8 @@ POST(sys_ioctl)
# elif defined(ANDROID_HARDWARE_nexus_7)
+# elif defined(ANDROID_HARDWARE_nexus_4)
+
# else /* no ANDROID_HARDWARE_anything defined */
# warning ""
@@ -5685,6 +5696,7 @@ POST(sys_ioctl)
# warning " ANDROID_HARDWARE_nexus_s Samsung Nexus S"
# warning " ANDROID_HARDWARE_nexus_10 Samsung Nexus 10"
# warning " ANDROID_HARDWARE_nexus_7 ASUS Nexus 7"
+# warning " ANDROID_HARDWARE_nexus_4 LG Nexus 4"
# warning " ANDROID_HARDWARE_generic Generic device (eg, Pandaboard)"
# warning " ANDROID_HARDWARE_emulator x86 or arm emulator"
# warning ""
@@ -6571,6 +6583,12 @@ POST(sys_ioctl)
POST_MEM_WRITE( ARG3, sizeof(int) );
break;
+ case VKI_MEDIA_IOC_DEVICE_INFO:
+ if (ARG3) {
+ POST_MEM_WRITE(ARG3, sizeof(struct vki_media_device_info));
+ }
+ 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 8cefd8f63..214a6269e 100644
--- a/main/include/vki/vki-linux.h
+++ b/main/include/vki/vki-linux.h
@@ -3011,6 +3011,23 @@ struct vki_hwtstamp_config {
#define VKI_UI_SET_SWBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 109, int)
#define VKI_UI_SET_PROPBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 110, int)
+//----------------------------------------------------------------------
+// From include/linux/media.h
+//----------------------------------------------------------------------
+
+struct vki_media_device_info {
+ char driver[16];
+ char model[32];
+ char serial[40];
+ char bus_info[32];
+ __vki_u32 media_version;
+ __vki_u32 hw_revision;
+ __vki_u32 driver_version;
+ __vki_u32 reserved[31];
+};
+
+#define VKI_MEDIA_IOC_DEVICE_INFO _VKI_IOWR('|', 0x00, struct vki_media_device_info)
+
#endif // __VKI_LINUX_H
/*--------------------------------------------------------------------*/