Merge "Add scsi/ufs kernel headers." into nyc-mr1-dev
am: 7a162b4

* commit '7a162b488f478f078030f9c4ed80a6cec00e6fc4':
  Add scsi/ufs kernel headers.

Change-Id: Iaa3956fc985ec4c053d24048092e48970f757b96
diff --git a/kernel-headers/scsi/ufs/ioctl.h b/kernel-headers/scsi/ufs/ioctl.h
new file mode 100644
index 0000000..3445b75
--- /dev/null
+++ b/kernel-headers/scsi/ufs/ioctl.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef UAPI_UFS_IOCTL_H_
+#define UAPI_UFS_IOCTL_H_
+#include <linux/types.h>
+#define UFS_IOCTL_QUERY 0x5388
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct ufs_ioctl_query_data {
+  __u32 opcode;
+  __u8 idn;
+  __u16 buf_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u8 buffer[0];
+};
+#endif
diff --git a/kernel-headers/scsi/ufs/ufs.h b/kernel-headers/scsi/ufs/ufs.h
new file mode 100644
index 0000000..7334c73
--- /dev/null
+++ b/kernel-headers/scsi/ufs/ufs.h
@@ -0,0 +1,90 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef UAPI_UFS_H_
+#define UAPI_UFS_H_
+enum flag_idn {
+  QUERY_FLAG_IDN_FDEVICEINIT = 0x01,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  QUERY_FLAG_IDN_PERMANENT_WPE = 0x02,
+  QUERY_FLAG_IDN_PWR_ON_WPE = 0x03,
+  QUERY_FLAG_IDN_BKOPS_EN = 0x04,
+  QUERY_FLAG_IDN_RESERVED1 = 0x05,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  QUERY_FLAG_IDN_PURGE_ENABLE = 0x06,
+  QUERY_FLAG_IDN_RESERVED2 = 0x07,
+  QUERY_FLAG_IDN_FPHYRESOURCEREMOVAL = 0x08,
+  QUERY_FLAG_IDN_BUSY_RTC = 0x09,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum attr_idn {
+  QUERY_ATTR_IDN_BOOT_LU_EN = 0x00,
+  QUERY_ATTR_IDN_RESERVED = 0x01,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  QUERY_ATTR_IDN_POWER_MODE = 0x02,
+  QUERY_ATTR_IDN_ACTIVE_ICC_LVL = 0x03,
+  QUERY_ATTR_IDN_OOO_DATA_EN = 0x04,
+  QUERY_ATTR_IDN_BKOPS_STATUS = 0x05,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  QUERY_ATTR_IDN_PURGE_STATUS = 0x06,
+  QUERY_ATTR_IDN_MAX_DATA_IN = 0x07,
+  QUERY_ATTR_IDN_MAX_DATA_OUT = 0x08,
+  QUERY_ATTR_IDN_DYN_CAP_NEEDED = 0x09,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  QUERY_ATTR_IDN_REF_CLK_FREQ = 0x0A,
+  QUERY_ATTR_IDN_CONF_DESC_LOCK = 0x0B,
+  QUERY_ATTR_IDN_MAX_NUM_OF_RTT = 0x0C,
+  QUERY_ATTR_IDN_EE_CONTROL = 0x0D,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  QUERY_ATTR_IDN_EE_STATUS = 0x0E,
+  QUERY_ATTR_IDN_SECONDS_PASSED = 0x0F,
+  QUERY_ATTR_IDN_CNTX_CONF = 0x10,
+  QUERY_ATTR_IDN_CORR_PRG_BLK_NUM = 0x11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum desc_idn {
+  QUERY_DESC_IDN_DEVICE = 0x0,
+  QUERY_DESC_IDN_CONFIGURAION = 0x1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  QUERY_DESC_IDN_UNIT = 0x2,
+  QUERY_DESC_IDN_RFU_0 = 0x3,
+  QUERY_DESC_IDN_INTERCONNECT = 0x4,
+  QUERY_DESC_IDN_STRING = 0x5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  QUERY_DESC_IDN_RFU_1 = 0x6,
+  QUERY_DESC_IDN_GEOMETRY = 0x7,
+  QUERY_DESC_IDN_POWER = 0x8,
+  QUERY_DESC_IDN_RFU_2 = 0x9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  QUERY_DESC_IDN_MAX,
+};
+enum query_opcode {
+  UPIU_QUERY_OPCODE_NOP = 0x0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  UPIU_QUERY_OPCODE_READ_DESC = 0x1,
+  UPIU_QUERY_OPCODE_WRITE_DESC = 0x2,
+  UPIU_QUERY_OPCODE_READ_ATTR = 0x3,
+  UPIU_QUERY_OPCODE_WRITE_ATTR = 0x4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  UPIU_QUERY_OPCODE_READ_FLAG = 0x5,
+  UPIU_QUERY_OPCODE_SET_FLAG = 0x6,
+  UPIU_QUERY_OPCODE_CLEAR_FLAG = 0x7,
+  UPIU_QUERY_OPCODE_TOGGLE_FLAG = 0x8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#endif
diff --git a/original-kernel-headers/scsi/ufs/ioctl.h b/original-kernel-headers/scsi/ufs/ioctl.h
new file mode 100644
index 0000000..f7a6718
--- /dev/null
+++ b/original-kernel-headers/scsi/ufs/ioctl.h
@@ -0,0 +1,57 @@
+#ifndef UAPI_UFS_IOCTL_H_
+#define UAPI_UFS_IOCTL_H_
+
+#include <linux/types.h>
+
+/*
+ *  IOCTL opcode for ufs queries has the following opcode after
+ *  SCSI_IOCTL_GET_PCI
+ */
+#define UFS_IOCTL_QUERY			0x5388
+
+/**
+ * struct ufs_ioctl_query_data - used to transfer data to and from user via ioctl
+ * @opcode: type of data to query (descriptor/attribute/flag)
+ * @idn: id of the data structure
+ * @buf_size: number of allocated bytes/data size on return
+ * @buffer: data location
+ *
+ * Received: buffer and buf_size (available space for transfered data)
+ * Submitted: opcode, idn, length, buf_size
+ */
+struct ufs_ioctl_query_data {
+	/*
+	 * User should select one of the opcode defined in "enum query_opcode".
+	 * Please check include/uapi/scsi/ufs/ufs.h for the definition of it.
+	 * Note that only UPIU_QUERY_OPCODE_READ_DESC,
+	 * UPIU_QUERY_OPCODE_READ_ATTR & UPIU_QUERY_OPCODE_READ_FLAG are
+	 * supported as of now. All other query_opcode would be considered
+	 * invalid.
+	 * As of now only read query operations are supported.
+	 */
+	__u32 opcode;
+	/*
+	 * User should select one of the idn from "enum flag_idn" or "enum
+	 * attr_idn" or "enum desc_idn" based on whether opcode above is
+	 * attribute, flag or descriptor.
+	 * Please check include/uapi/scsi/ufs/ufs.h for the definition of it.
+	 */
+	__u8 idn;
+	/*
+	 * User should specify the size of the buffer (buffer[0] below) where
+	 * it wants to read the query data (attribute/flag/descriptor).
+	 * As we might end up reading less data then what is specified in
+	 * buf_size. So we are updating buf_size to what exactly we have read.
+	 */
+	__u16 buf_size;
+	/*
+	 * placeholder for the start of the data buffer where kernel will copy
+	 * the query data (attribute/flag/descriptor) read from the UFS device
+	 * Note:
+	 * For Read Attribute you will have to allocate 4 bytes
+	 * For Read Flag you will have to allocate 1 byte
+	 */
+	__u8 buffer[0];
+};
+
+#endif /* UAPI_UFS_IOCTL_H_ */
diff --git a/original-kernel-headers/scsi/ufs/ufs.h b/original-kernel-headers/scsi/ufs/ufs.h
new file mode 100644
index 0000000..894ea45
--- /dev/null
+++ b/original-kernel-headers/scsi/ufs/ufs.h
@@ -0,0 +1,66 @@
+#ifndef UAPI_UFS_H_
+#define UAPI_UFS_H_
+
+/* Flag idn for Query Requests*/
+enum flag_idn {
+	QUERY_FLAG_IDN_FDEVICEINIT		= 0x01,
+	QUERY_FLAG_IDN_PERMANENT_WPE		= 0x02,
+	QUERY_FLAG_IDN_PWR_ON_WPE		= 0x03,
+	QUERY_FLAG_IDN_BKOPS_EN			= 0x04,
+	QUERY_FLAG_IDN_RESERVED1		= 0x05,
+	QUERY_FLAG_IDN_PURGE_ENABLE		= 0x06,
+	QUERY_FLAG_IDN_RESERVED2		= 0x07,
+	QUERY_FLAG_IDN_FPHYRESOURCEREMOVAL      = 0x08,
+	QUERY_FLAG_IDN_BUSY_RTC			= 0x09,
+};
+
+/* Attribute idn for Query requests */
+enum attr_idn {
+	QUERY_ATTR_IDN_BOOT_LU_EN		= 0x00,
+	QUERY_ATTR_IDN_RESERVED			= 0x01,
+	QUERY_ATTR_IDN_POWER_MODE		= 0x02,
+	QUERY_ATTR_IDN_ACTIVE_ICC_LVL		= 0x03,
+	QUERY_ATTR_IDN_OOO_DATA_EN		= 0x04,
+	QUERY_ATTR_IDN_BKOPS_STATUS		= 0x05,
+	QUERY_ATTR_IDN_PURGE_STATUS		= 0x06,
+	QUERY_ATTR_IDN_MAX_DATA_IN		= 0x07,
+	QUERY_ATTR_IDN_MAX_DATA_OUT		= 0x08,
+	QUERY_ATTR_IDN_DYN_CAP_NEEDED		= 0x09,
+	QUERY_ATTR_IDN_REF_CLK_FREQ		= 0x0A,
+	QUERY_ATTR_IDN_CONF_DESC_LOCK		= 0x0B,
+	QUERY_ATTR_IDN_MAX_NUM_OF_RTT		= 0x0C,
+	QUERY_ATTR_IDN_EE_CONTROL		= 0x0D,
+	QUERY_ATTR_IDN_EE_STATUS		= 0x0E,
+	QUERY_ATTR_IDN_SECONDS_PASSED		= 0x0F,
+	QUERY_ATTR_IDN_CNTX_CONF		= 0x10,
+	QUERY_ATTR_IDN_CORR_PRG_BLK_NUM		= 0x11,
+};
+
+/* Descriptor idn for Query requests */
+enum desc_idn {
+	QUERY_DESC_IDN_DEVICE		= 0x0,
+	QUERY_DESC_IDN_CONFIGURAION	= 0x1,
+	QUERY_DESC_IDN_UNIT		= 0x2,
+	QUERY_DESC_IDN_RFU_0		= 0x3,
+	QUERY_DESC_IDN_INTERCONNECT	= 0x4,
+	QUERY_DESC_IDN_STRING		= 0x5,
+	QUERY_DESC_IDN_RFU_1		= 0x6,
+	QUERY_DESC_IDN_GEOMETRY		= 0x7,
+	QUERY_DESC_IDN_POWER		= 0x8,
+	QUERY_DESC_IDN_RFU_2		= 0x9,
+	QUERY_DESC_IDN_MAX,
+};
+
+/* UTP QUERY Transaction Specific Fields OpCode */
+enum query_opcode {
+	UPIU_QUERY_OPCODE_NOP		= 0x0,
+	UPIU_QUERY_OPCODE_READ_DESC	= 0x1,
+	UPIU_QUERY_OPCODE_WRITE_DESC	= 0x2,
+	UPIU_QUERY_OPCODE_READ_ATTR	= 0x3,
+	UPIU_QUERY_OPCODE_WRITE_ATTR	= 0x4,
+	UPIU_QUERY_OPCODE_READ_FLAG	= 0x5,
+	UPIU_QUERY_OPCODE_SET_FLAG	= 0x6,
+	UPIU_QUERY_OPCODE_CLEAR_FLAG	= 0x7,
+	UPIU_QUERY_OPCODE_TOGGLE_FLAG	= 0x8,
+};
+#endif /* UAPI_UFS_H_ */