diff --git a/kernel-headers/media/msm_cam_sensor.h b/kernel-headers/media/msm_cam_sensor.h
index d6cce65..0c95ee8 100644
--- a/kernel-headers/media/msm_cam_sensor.h
+++ b/kernel-headers/media/msm_cam_sensor.h
@@ -16,594 +16,590 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef __LINUX_MSM_CAM_SENSOR_H
-#define __LINUX_MSM_CAM_SENSOR_H
-#ifdef MSM_CAMERA_BIONIC
-#include <sys/types.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#endif
+#ifndef __UAPI_LINUX_MSM_CAM_SENSOR_H
+#define __UAPI_LINUX_MSM_CAM_SENSOR_H
 #include <linux/v4l2-mediabus.h>
 #include <media/msm_camsensor_sdk.h>
-#include <linux/types.h>
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/types.h>
 #include <linux/i2c.h>
 #define I2C_SEQ_REG_SETTING_MAX 5
 #define MSM_SENSOR_MCLK_8HZ 8000000
-#define MSM_SENSOR_MCLK_16HZ 16000000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSM_SENSOR_MCLK_16HZ 16000000
 #define MSM_SENSOR_MCLK_24HZ 24000000
 #define MAX_SENSOR_NAME 32
 #define MAX_ACTUATOR_AF_TOTAL_STEPS 1024
-#define MAX_OIS_MOD_NAME_SIZE 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAX_OIS_MOD_NAME_SIZE 32
 #define MAX_OIS_NAME_SIZE 32
 #define MAX_OIS_REG_SETTINGS 800
 #define MOVE_NEAR 0
-#define MOVE_FAR 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MOVE_FAR 1
 #define MSM_ACTUATOR_MOVE_SIGNED_FAR - 1
 #define MSM_ACTUATOR_MOVE_SIGNED_NEAR 1
 #define MAX_ACTUATOR_REGION 5
-#define MAX_EEPROM_NAME 32
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAX_EEPROM_NAME 32
 #define MAX_AF_ITERATIONS 3
 #define MAX_NUMBER_OF_STEPS 47
 #define MAX_REGULATOR 5
-#define MSM_V4L2_PIX_FMT_META v4l2_fourcc('M', 'E', 'T', 'A')
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSM_V4L2_PIX_FMT_META v4l2_fourcc('M', 'E', 'T', 'A')
 #define MSM_V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4')
 #define MSM_V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4')
 #define MSM_V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('B', 'A', '1', '4')
-#define MSM_V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4')
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSM_V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4')
 enum flash_type {
   LED_FLASH = 1,
   STROBE_FLASH,
-  GPIO_FLASH
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  GPIO_FLASH
 };
 enum msm_sensor_resolution_t {
   MSM_SENSOR_RES_FULL,
-  MSM_SENSOR_RES_QTR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_SENSOR_RES_QTR,
   MSM_SENSOR_RES_2,
   MSM_SENSOR_RES_3,
   MSM_SENSOR_RES_4,
-  MSM_SENSOR_RES_5,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_SENSOR_RES_5,
   MSM_SENSOR_RES_6,
   MSM_SENSOR_RES_7,
   MSM_SENSOR_INVALID_RES,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 enum msm_camera_stream_type_t {
   MSM_CAMERA_STREAM_PREVIEW,
   MSM_CAMERA_STREAM_SNAPSHOT,
-  MSM_CAMERA_STREAM_VIDEO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_STREAM_VIDEO,
   MSM_CAMERA_STREAM_INVALID,
 };
 enum sensor_sub_module_t {
-  SUB_MODULE_SENSOR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SUB_MODULE_SENSOR,
   SUB_MODULE_CHROMATIX,
   SUB_MODULE_ACTUATOR,
   SUB_MODULE_EEPROM,
-  SUB_MODULE_LED_FLASH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SUB_MODULE_LED_FLASH,
   SUB_MODULE_STROBE_FLASH,
   SUB_MODULE_CSID,
   SUB_MODULE_CSID_3D,
-  SUB_MODULE_CSIPHY,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SUB_MODULE_CSIPHY,
   SUB_MODULE_CSIPHY_3D,
   SUB_MODULE_OIS,
   SUB_MODULE_EXT,
-  SUB_MODULE_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SUB_MODULE_MAX,
 };
 enum {
   MSM_CAMERA_EFFECT_MODE_OFF,
-  MSM_CAMERA_EFFECT_MODE_MONO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_EFFECT_MODE_MONO,
   MSM_CAMERA_EFFECT_MODE_NEGATIVE,
   MSM_CAMERA_EFFECT_MODE_SOLARIZE,
   MSM_CAMERA_EFFECT_MODE_SEPIA,
-  MSM_CAMERA_EFFECT_MODE_POSTERIZE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_EFFECT_MODE_POSTERIZE,
   MSM_CAMERA_EFFECT_MODE_WHITEBOARD,
   MSM_CAMERA_EFFECT_MODE_BLACKBOARD,
   MSM_CAMERA_EFFECT_MODE_AQUA,
-  MSM_CAMERA_EFFECT_MODE_EMBOSS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_EFFECT_MODE_EMBOSS,
   MSM_CAMERA_EFFECT_MODE_SKETCH,
   MSM_CAMERA_EFFECT_MODE_NEON,
   MSM_CAMERA_EFFECT_MODE_MAX
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 enum {
   MSM_CAMERA_WB_MODE_AUTO,
   MSM_CAMERA_WB_MODE_CUSTOM,
-  MSM_CAMERA_WB_MODE_INCANDESCENT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_WB_MODE_INCANDESCENT,
   MSM_CAMERA_WB_MODE_FLUORESCENT,
   MSM_CAMERA_WB_MODE_WARM_FLUORESCENT,
   MSM_CAMERA_WB_MODE_DAYLIGHT,
-  MSM_CAMERA_WB_MODE_CLOUDY_DAYLIGHT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_WB_MODE_CLOUDY_DAYLIGHT,
   MSM_CAMERA_WB_MODE_TWILIGHT,
   MSM_CAMERA_WB_MODE_SHADE,
   MSM_CAMERA_WB_MODE_OFF,
-  MSM_CAMERA_WB_MODE_MAX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_WB_MODE_MAX
 };
 enum {
   MSM_CAMERA_SCENE_MODE_OFF,
-  MSM_CAMERA_SCENE_MODE_AUTO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_SCENE_MODE_AUTO,
   MSM_CAMERA_SCENE_MODE_LANDSCAPE,
   MSM_CAMERA_SCENE_MODE_SNOW,
   MSM_CAMERA_SCENE_MODE_BEACH,
-  MSM_CAMERA_SCENE_MODE_SUNSET,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_SCENE_MODE_SUNSET,
   MSM_CAMERA_SCENE_MODE_NIGHT,
   MSM_CAMERA_SCENE_MODE_PORTRAIT,
   MSM_CAMERA_SCENE_MODE_BACKLIGHT,
-  MSM_CAMERA_SCENE_MODE_SPORTS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_SCENE_MODE_SPORTS,
   MSM_CAMERA_SCENE_MODE_ANTISHAKE,
   MSM_CAMERA_SCENE_MODE_FLOWERS,
   MSM_CAMERA_SCENE_MODE_CANDLELIGHT,
-  MSM_CAMERA_SCENE_MODE_FIREWORKS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_SCENE_MODE_FIREWORKS,
   MSM_CAMERA_SCENE_MODE_PARTY,
   MSM_CAMERA_SCENE_MODE_NIGHT_PORTRAIT,
   MSM_CAMERA_SCENE_MODE_THEATRE,
-  MSM_CAMERA_SCENE_MODE_ACTION,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_SCENE_MODE_ACTION,
   MSM_CAMERA_SCENE_MODE_AR,
   MSM_CAMERA_SCENE_MODE_FACE_PRIORITY,
   MSM_CAMERA_SCENE_MODE_BARCODE,
-  MSM_CAMERA_SCENE_MODE_HDR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_SCENE_MODE_HDR,
   MSM_CAMERA_SCENE_MODE_MAX
 };
 enum csid_cfg_type_t {
-  CSID_INIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CSID_INIT,
   CSID_CFG,
   CSID_TESTMODE_CFG,
   CSID_RELEASE,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 enum csiphy_cfg_type_t {
   CSIPHY_INIT,
   CSIPHY_CFG,
-  CSIPHY_RELEASE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CSIPHY_RELEASE,
 };
 enum camera_vreg_type {
   VREG_TYPE_DEFAULT,
-  VREG_TYPE_CUSTOM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  VREG_TYPE_CUSTOM,
 };
 enum sensor_af_t {
   SENSOR_AF_FOCUSSED,
-  SENSOR_AF_NOT_FOCUSSED,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SENSOR_AF_NOT_FOCUSSED,
 };
 enum cci_i2c_master_t {
   MASTER_0,
-  MASTER_1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MASTER_1,
   MASTER_MAX,
 };
 struct msm_camera_i2c_array_write_config {
-  struct msm_camera_i2c_reg_setting conf_array;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct msm_camera_i2c_reg_setting conf_array;
   uint16_t slave_addr;
 };
 struct msm_camera_i2c_read_config {
-  uint16_t slave_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t slave_addr;
   uint16_t reg_addr;
   enum msm_camera_i2c_reg_addr_type addr_type;
   enum msm_camera_i2c_data_type data_type;
-  uint16_t data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t data;
 };
 struct msm_camera_csi2_params {
   struct msm_camera_csid_params csid_params;
-  struct msm_camera_csiphy_params csiphy_params;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct msm_camera_csiphy_params csiphy_params;
   uint8_t csi_clk_scale_enable;
 };
 struct msm_camera_csi_lane_params {
-  uint16_t csi_lane_assign;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t csi_lane_assign;
   uint16_t csi_lane_mask;
 };
 struct csi_lane_params_t {
-  uint16_t csi_lane_assign;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t csi_lane_assign;
   uint8_t csi_lane_mask;
   uint8_t csi_if;
   int8_t csid_core[2];
-  uint8_t csi_phy_sel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint8_t csi_phy_sel;
 };
 struct msm_sensor_info_t {
   char sensor_name[MAX_SENSOR_NAME];
-  uint32_t session_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t session_id;
   int32_t subdev_id[SUB_MODULE_MAX];
   int32_t subdev_intf[SUB_MODULE_MAX];
   uint8_t is_mount_angle_valid;
-  uint32_t sensor_mount_angle;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t sensor_mount_angle;
   int modes_supported;
   enum camb_position_t position;
 };
-struct camera_vreg_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct camera_vreg_t {
   const char * reg_name;
   int min_voltage;
   int max_voltage;
-  int op_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int op_mode;
   uint32_t delay;
   const char * custom_vreg_name;
   enum camera_vreg_type type;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct sensorb_cfg_data {
   int cfgtype;
   union {
-    struct msm_sensor_info_t sensor_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct msm_sensor_info_t sensor_info;
     struct msm_sensor_init_params sensor_init_params;
     void * setting;
     struct msm_sensor_i2c_sync_params sensor_i2c_sync_params;
-  } cfg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } cfg;
 };
 struct csid_cfg_data {
   enum csid_cfg_type_t cfgtype;
-  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union {
     uint32_t csid_version;
     struct msm_camera_csid_params * csid_params;
     struct msm_camera_csid_testmode_parms * csid_testmode_params;
-  } cfg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } cfg;
 };
 struct csiphy_cfg_data {
   enum csiphy_cfg_type_t cfgtype;
-  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union {
     struct msm_camera_csiphy_params * csiphy_params;
     struct msm_camera_csi_lane_params * csi_lane_params;
   } cfg;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 enum eeprom_cfg_type_t {
   CFG_EEPROM_GET_INFO,
   CFG_EEPROM_GET_CAL_DATA,
-  CFG_EEPROM_READ_CAL_DATA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_EEPROM_READ_CAL_DATA,
   CFG_EEPROM_WRITE_DATA,
   CFG_EEPROM_GET_MM_INFO,
   CFG_EEPROM_INIT,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct eeprom_get_t {
   uint32_t num_bytes;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct eeprom_read_t {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   uint8_t * dbuffer;
   uint32_t num_bytes;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct eeprom_write_t {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   uint8_t * dbuffer;
   uint32_t num_bytes;
 };
-struct eeprom_get_cmm_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct eeprom_get_cmm_t {
   uint32_t cmm_support;
   uint32_t cmm_compression;
   uint32_t cmm_size;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_eeprom_info_t {
   struct msm_sensor_power_setting_array * power_setting_array;
   enum i2c_freq_mode_t i2c_freq_mode;
-  struct msm_eeprom_memory_map_array * mem_map_array;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct msm_eeprom_memory_map_array * mem_map_array;
 };
 struct msm_eeprom_cfg_data {
   enum eeprom_cfg_type_t cfgtype;
-  uint8_t is_supported;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint8_t is_supported;
   union {
     char eeprom_name[MAX_SENSOR_NAME];
     struct eeprom_get_t get_data;
-    struct eeprom_read_t read_data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct eeprom_read_t read_data;
     struct eeprom_write_t write_data;
     struct eeprom_get_cmm_t get_cmm_data;
     struct msm_eeprom_info_t eeprom_info;
-  } cfg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } cfg;
 };
 enum msm_sensor_cfg_type_t {
   CFG_SET_SLAVE_INFO,
-  CFG_SLAVE_READ_I2C,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_SLAVE_READ_I2C,
   CFG_WRITE_I2C_ARRAY,
   CFG_SLAVE_WRITE_I2C_ARRAY,
   CFG_WRITE_I2C_SEQ_ARRAY,
-  CFG_POWER_UP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_POWER_UP,
   CFG_POWER_DOWN,
   CFG_SET_STOP_STREAM_SETTING,
   CFG_GET_SENSOR_INFO,
-  CFG_GET_SENSOR_INIT_PARAMS,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_GET_SENSOR_INIT_PARAMS,
   CFG_SET_INIT_SETTING,
   CFG_SET_RESOLUTION,
   CFG_SET_STOP_STREAM,
-  CFG_SET_START_STREAM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_SET_START_STREAM,
   CFG_SET_SATURATION,
   CFG_SET_CONTRAST,
   CFG_SET_SHARPNESS,
-  CFG_SET_ISO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_SET_ISO,
   CFG_SET_EXPOSURE_COMPENSATION,
   CFG_SET_ANTIBANDING,
   CFG_SET_BESTSHOT_MODE,
-  CFG_SET_EFFECT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_SET_EFFECT,
   CFG_SET_WHITE_BALANCE,
   CFG_SET_AUTOFOCUS,
   CFG_CANCEL_AUTOFOCUS,
-  CFG_SET_STREAM_TYPE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_SET_STREAM_TYPE,
   CFG_SET_I2C_SYNC_PARAM,
   CFG_WRITE_I2C_ARRAY_ASYNC,
   CFG_WRITE_I2C_ARRAY_SYNC,
-  CFG_WRITE_I2C_ARRAY_SYNC_BLOCK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_WRITE_I2C_ARRAY_SYNC_BLOCK,
 };
 enum msm_actuator_cfg_type_t {
   CFG_GET_ACTUATOR_INFO,
-  CFG_SET_ACTUATOR_INFO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_SET_ACTUATOR_INFO,
   CFG_SET_DEFAULT_FOCUS,
   CFG_MOVE_FOCUS,
   CFG_SET_POSITION,
-  CFG_ACTUATOR_POWERDOWN,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_ACTUATOR_POWERDOWN,
   CFG_ACTUATOR_POWERUP,
   CFG_ACTUATOR_INIT,
 };
-enum msm_ois_cfg_type_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum msm_ois_cfg_type_t {
   CFG_OIS_INIT,
   CFG_OIS_POWERDOWN,
   CFG_OIS_POWERUP,
-  CFG_OIS_CONTROL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_OIS_CONTROL,
   CFG_OIS_I2C_WRITE_SEQ_TABLE,
 };
 enum msm_ois_i2c_operation {
-  MSM_OIS_WRITE = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_OIS_WRITE = 0,
   MSM_OIS_POLL,
 };
 struct reg_settings_ois_t {
-  uint16_t reg_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t reg_addr;
   enum msm_camera_i2c_reg_addr_type addr_type;
   uint32_t reg_data;
   enum msm_camera_i2c_data_type data_type;
-  enum msm_ois_i2c_operation i2c_operation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  enum msm_ois_i2c_operation i2c_operation;
   uint32_t delay;
 };
 struct msm_ois_params_t {
-  uint16_t data_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t data_size;
   uint16_t setting_size;
   uint32_t i2c_addr;
   enum i2c_freq_mode_t i2c_freq_mode;
-  enum msm_camera_i2c_reg_addr_type i2c_addr_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  enum msm_camera_i2c_reg_addr_type i2c_addr_type;
   enum msm_camera_i2c_data_type i2c_data_type;
   struct reg_settings_ois_t * settings;
 };
-struct msm_ois_set_info_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct msm_ois_set_info_t {
   struct msm_ois_params_t ois_params;
 };
 struct msm_actuator_move_params_t {
-  int8_t dir;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int8_t dir;
   int8_t sign_dir;
   int16_t dest_step_pos;
   int32_t num_steps;
-  uint16_t curr_lens_pos;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t curr_lens_pos;
   struct damping_params_t * ringing_params;
 };
 struct msm_actuator_tuning_params_t {
-  int16_t initial_code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int16_t initial_code;
   uint16_t pwd_step;
   uint16_t region_size;
   uint32_t total_steps;
-  struct region_params_t * region_params;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct region_params_t * region_params;
 };
 struct park_lens_data_t {
   uint32_t damping_step;
-  uint32_t damping_delay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t damping_delay;
   uint32_t hw_params;
   uint32_t max_step;
 };
-struct msm_actuator_params_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct msm_actuator_params_t {
   enum actuator_type act_type;
   uint8_t reg_tbl_size;
   uint16_t data_size;
-  uint16_t init_setting_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t init_setting_size;
   uint32_t i2c_addr;
   enum i2c_freq_mode_t i2c_freq_mode;
   enum msm_actuator_addr_type i2c_addr_type;
-  enum msm_actuator_data_type i2c_data_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  enum msm_actuator_data_type i2c_data_type;
   struct msm_actuator_reg_params_t * reg_tbl_params;
   struct reg_settings_t * init_settings;
   struct park_lens_data_t park_lens;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_actuator_set_info_t {
   struct msm_actuator_params_t actuator_params;
   struct msm_actuator_tuning_params_t af_tuning_params;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_actuator_get_info_t {
   uint32_t focal_length_num;
   uint32_t focal_length_den;
-  uint32_t f_number_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t f_number_num;
   uint32_t f_number_den;
   uint32_t f_pix_num;
   uint32_t f_pix_den;
-  uint32_t total_f_dist_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t total_f_dist_num;
   uint32_t total_f_dist_den;
   uint32_t hor_view_angle_num;
   uint32_t hor_view_angle_den;
-  uint32_t ver_view_angle_num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t ver_view_angle_num;
   uint32_t ver_view_angle_den;
 };
 enum af_camera_name {
-  ACTUATOR_MAIN_CAM_0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ACTUATOR_MAIN_CAM_0,
   ACTUATOR_MAIN_CAM_1,
   ACTUATOR_MAIN_CAM_2,
   ACTUATOR_MAIN_CAM_3,
-  ACTUATOR_MAIN_CAM_4,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ACTUATOR_MAIN_CAM_4,
   ACTUATOR_MAIN_CAM_5,
   ACTUATOR_WEB_CAM_0,
   ACTUATOR_WEB_CAM_1,
-  ACTUATOR_WEB_CAM_2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ACTUATOR_WEB_CAM_2,
 };
 struct msm_ois_cfg_data {
   int cfgtype;
-  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union {
     struct msm_ois_set_info_t set_info;
     struct msm_camera_i2c_seq_reg_setting * settings;
   } cfg;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_actuator_set_position_t {
   uint16_t number_of_steps;
   uint32_t hw_params;
-  uint16_t pos[MAX_NUMBER_OF_STEPS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t pos[MAX_NUMBER_OF_STEPS];
   uint16_t delay[MAX_NUMBER_OF_STEPS];
 };
 struct msm_actuator_cfg_data {
-  int cfgtype;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int cfgtype;
   uint8_t is_af_supported;
   union {
     struct msm_actuator_move_params_t move;
-    struct msm_actuator_set_info_t set_info;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct msm_actuator_set_info_t set_info;
     struct msm_actuator_get_info_t get_info;
     struct msm_actuator_set_position_t setpos;
     enum af_camera_name cam_name;
-  } cfg;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } cfg;
 };
 enum msm_camera_led_config_t {
   MSM_CAMERA_LED_OFF,
-  MSM_CAMERA_LED_LOW,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_LED_LOW,
   MSM_CAMERA_LED_HIGH,
   MSM_CAMERA_LED_INIT,
   MSM_CAMERA_LED_RELEASE,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_camera_led_cfg_t {
   enum msm_camera_led_config_t cfgtype;
   int32_t torch_current[MAX_LED_TRIGGERS];
-  int32_t flash_current[MAX_LED_TRIGGERS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int32_t flash_current[MAX_LED_TRIGGERS];
   int32_t flash_duration[MAX_LED_TRIGGERS];
 };
 struct msm_flash_init_info_t {
-  enum msm_flash_driver_type flash_driver_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  enum msm_flash_driver_type flash_driver_type;
   uint32_t slave_addr;
   enum i2c_freq_mode_t i2c_freq_mode;
   struct msm_sensor_power_setting_array * power_setting_array;
-  struct msm_camera_i2c_reg_setting_array * settings;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct msm_camera_i2c_reg_setting_array * settings;
 };
 struct msm_flash_cfg_data_t {
   enum msm_flash_cfg_type_t cfg_type;
-  int32_t flash_current[MAX_LED_TRIGGERS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int32_t flash_current[MAX_LED_TRIGGERS];
   int32_t flash_duration[MAX_LED_TRIGGERS];
   union {
     struct msm_flash_init_info_t * flash_init_info;
-    struct msm_camera_i2c_reg_setting_array * settings;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct msm_camera_i2c_reg_setting_array * settings;
   } cfg;
 };
 enum msm_sensor_init_cfg_type_t {
-  CFG_SINIT_PROBE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_SINIT_PROBE,
   CFG_SINIT_PROBE_DONE,
   CFG_SINIT_PROBE_WAIT_DONE,
 };
-struct sensor_init_cfg_data {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sensor_init_cfg_data {
   enum msm_sensor_init_cfg_type_t cfgtype;
   struct msm_sensor_info_t probed_info;
   char entity_name[MAX_SENSOR_NAME];
-  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  union {
     void * setting;
   } cfg;
 };
-#define VIDIOC_MSM_SENSOR_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct sensorb_cfg_data)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_MSM_SENSOR_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct sensorb_cfg_data)
 #define VIDIOC_MSM_SENSOR_RELEASE _IO('V', BASE_VIDIOC_PRIVATE + 2)
 #define VIDIOC_MSM_SENSOR_GET_SUBDEV_ID _IOWR('V', BASE_VIDIOC_PRIVATE + 3, uint32_t)
 #define VIDIOC_MSM_CSIPHY_IO_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct csiphy_cfg_data)
-#define VIDIOC_MSM_CSID_IO_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct csid_cfg_data)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_MSM_CSID_IO_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct csid_cfg_data)
 #define VIDIOC_MSM_ACTUATOR_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct msm_actuator_cfg_data)
 #define VIDIOC_MSM_FLASH_LED_DATA_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 7, struct msm_camera_led_cfg_t)
 #define VIDIOC_MSM_EEPROM_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 8, struct msm_eeprom_cfg_data)
-#define VIDIOC_MSM_SENSOR_GET_AF_STATUS _IOWR('V', BASE_VIDIOC_PRIVATE + 9, uint32_t)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VIDIOC_MSM_SENSOR_GET_AF_STATUS _IOWR('V', BASE_VIDIOC_PRIVATE + 9, uint32_t)
 #define VIDIOC_MSM_SENSOR_INIT_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 10, struct sensor_init_cfg_data)
 #define VIDIOC_MSM_OIS_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 11, struct msm_ois_cfg_data)
 #define VIDIOC_MSM_FLASH_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 13, struct msm_flash_cfg_data_t)
-#endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
 
diff --git a/kernel-headers/media/msm_camsensor_sdk.h b/kernel-headers/media/msm_camsensor_sdk.h
index d2c4cd4..71e1a10 100644
--- a/kernel-headers/media/msm_camsensor_sdk.h
+++ b/kernel-headers/media/msm_camsensor_sdk.h
@@ -16,405 +16,406 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef __LINUX_MSM_CAMSENSOR_SDK_H
-#define __LINUX_MSM_CAMSENSOR_SDK_H
+#ifndef __UAPI_LINUX_MSM_CAMSENSOR_SDK_H
+#define __UAPI_LINUX_MSM_CAMSENSOR_SDK_H
+#include <linux/videodev2.h>
 #define KVERSION 0x1
-#define MAX_POWER_CONFIG 12
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAX_POWER_CONFIG 12
 #define GPIO_OUT_LOW (0 << 1)
 #define GPIO_OUT_HIGH (1 << 1)
 #define CSI_EMBED_DATA 0x12
-#define CSI_RESERVED_DATA_0 0x13
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CSI_RESERVED_DATA_0 0x13
 #define CSI_YUV422_8 0x1E
 #define CSI_RAW8 0x2A
 #define CSI_RAW10 0x2B
-#define CSI_RAW12 0x2C
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CSI_RAW12 0x2C
 #define CSI_DECODE_6BIT 0
 #define CSI_DECODE_8BIT 1
 #define CSI_DECODE_10BIT 2
-#define CSI_DECODE_12BIT 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CSI_DECODE_12BIT 3
 #define CSI_DECODE_DPCM_10_8_10 5
 #define MAX_CID 16
 #define I2C_SEQ_REG_DATA_MAX 1024
-#define I2C_REG_DATA_MAX (8 * 1024)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I2C_REG_DATA_MAX (8 * 1024)
 #define MSM_V4L2_PIX_FMT_META v4l2_fourcc('M', 'E', 'T', 'A')
 #define MSM_V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4')
 #define MSM_V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4')
-#define MSM_V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('B', 'A', '1', '4')
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSM_V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('B', 'A', '1', '4')
 #define MSM_V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4')
 #define MAX_ACTUATOR_REG_TBL_SIZE 8
 #define MAX_ACTUATOR_REGION 5
-#define NUM_ACTUATOR_DIR 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NUM_ACTUATOR_DIR 2
 #define MAX_ACTUATOR_SCENARIO 8
 #define MAX_ACT_MOD_NAME_SIZE 32
 #define MAX_ACT_NAME_SIZE 32
-#define MAX_ACTUATOR_INIT_SET 120
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAX_ACTUATOR_INIT_SET 120
 #define MAX_I2C_REG_SET 12
 #define MAX_LED_TRIGGERS 3
 #define MSM_EEPROM_MEMORY_MAP_MAX_SIZE 80
-#define MSM_EEPROM_MAX_MEM_MAP_CNT 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSM_EEPROM_MAX_MEM_MAP_CNT 8
 enum msm_sensor_camera_id_t {
   CAMERA_0,
   CAMERA_1,
-  CAMERA_2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CAMERA_2,
   CAMERA_3,
   MAX_CAMERAS,
 };
-enum i2c_freq_mode_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum i2c_freq_mode_t {
   I2C_STANDARD_MODE,
   I2C_FAST_MODE,
   I2C_CUSTOM_MODE,
-  I2C_FAST_PLUS_MODE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  I2C_FAST_PLUS_MODE,
   I2C_MAX_MODES,
 };
 enum camb_position_t {
-  BACK_CAMERA_B,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  BACK_CAMERA_B,
   FRONT_CAMERA_B,
   AUX_CAMERA_B = 0x100,
   INVALID_CAMERA_B,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 enum msm_sensor_power_seq_type_t {
   SENSOR_CLK,
   SENSOR_GPIO,
-  SENSOR_VREG,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SENSOR_VREG,
   SENSOR_I2C_MUX,
   SENSOR_I2C,
 };
-enum msm_camera_i2c_reg_addr_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum msm_camera_i2c_reg_addr_type {
   MSM_CAMERA_I2C_BYTE_ADDR = 1,
   MSM_CAMERA_I2C_WORD_ADDR,
   MSM_CAMERA_I2C_3B_ADDR,
-  MSM_CAMERA_I2C_ADDR_TYPE_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_I2C_ADDR_TYPE_MAX,
 };
 enum msm_camera_i2c_data_type {
   MSM_CAMERA_I2C_BYTE_DATA = 1,
-  MSM_CAMERA_I2C_WORD_DATA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_I2C_WORD_DATA,
   MSM_CAMERA_I2C_DWORD_DATA,
   MSM_CAMERA_I2C_SET_BYTE_MASK,
   MSM_CAMERA_I2C_UNSET_BYTE_MASK,
-  MSM_CAMERA_I2C_SET_WORD_MASK,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAMERA_I2C_SET_WORD_MASK,
   MSM_CAMERA_I2C_UNSET_WORD_MASK,
   MSM_CAMERA_I2C_SET_BYTE_WRITE_MASK_DATA,
   MSM_CAMERA_I2C_DATA_TYPE_MAX,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 enum msm_sensor_power_seq_gpio_t {
   SENSOR_GPIO_RESET,
   SENSOR_GPIO_STANDBY,
-  SENSOR_GPIO_AF_PWDM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SENSOR_GPIO_AF_PWDM,
   SENSOR_GPIO_VIO,
   SENSOR_GPIO_VANA,
   SENSOR_GPIO_VDIG,
-  SENSOR_GPIO_VAF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SENSOR_GPIO_VAF,
   SENSOR_GPIO_FL_EN,
   SENSOR_GPIO_FL_NOW,
   SENSOR_GPIO_FL_RESET,
-  SENSOR_GPIO_CUSTOM1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SENSOR_GPIO_CUSTOM1,
   SENSOR_GPIO_CUSTOM2,
   SENSOR_GPIO_MAX,
 };
-enum msm_camera_vreg_name_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum msm_camera_vreg_name_t {
   CAM_VDIG,
   CAM_VIO,
   CAM_VANA,
-  CAM_VAF,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CAM_VAF,
   CAM_V_CUSTOM1,
   CAM_V_CUSTOM2,
   CAM_VREG_MAX,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 enum msm_sensor_clk_type_t {
   SENSOR_CAM_MCLK,
   SENSOR_CAM_CLK,
-  SENSOR_CAM_CLK_MAX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SENSOR_CAM_CLK_MAX,
 };
 enum camerab_mode_t {
   CAMERA_MODE_2D_B = (1 << 0),
-  CAMERA_MODE_3D_B = (1 << 1),
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CAMERA_MODE_3D_B = (1 << 1),
   CAMERA_MODE_INVALID = (1 << 2),
 };
 enum msm_actuator_data_type {
-  MSM_ACTUATOR_BYTE_DATA = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_ACTUATOR_BYTE_DATA = 1,
   MSM_ACTUATOR_WORD_DATA,
 };
 enum msm_actuator_addr_type {
-  MSM_ACTUATOR_BYTE_ADDR = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_ACTUATOR_BYTE_ADDR = 1,
   MSM_ACTUATOR_WORD_ADDR,
 };
 enum msm_actuator_write_type {
-  MSM_ACTUATOR_WRITE_HW_DAMP,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_ACTUATOR_WRITE_HW_DAMP,
   MSM_ACTUATOR_WRITE_DAC,
   MSM_ACTUATOR_WRITE,
   MSM_ACTUATOR_WRITE_DIR_REG,
-  MSM_ACTUATOR_POLL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_ACTUATOR_POLL,
   MSM_ACTUATOR_READ_WRITE,
 };
 enum msm_actuator_i2c_operation {
-  MSM_ACT_WRITE = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_ACT_WRITE = 0,
   MSM_ACT_POLL,
 };
 enum actuator_type {
-  ACTUATOR_VCM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  ACTUATOR_VCM,
   ACTUATOR_PIEZO,
   ACTUATOR_HVCM,
   ACTUATOR_BIVCM,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 enum msm_flash_driver_type {
   FLASH_DRIVER_PMIC,
   FLASH_DRIVER_I2C,
-  FLASH_DRIVER_GPIO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  FLASH_DRIVER_GPIO,
   FLASH_DRIVER_DEFAULT
 };
 enum msm_flash_cfg_type_t {
-  CFG_FLASH_INIT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_FLASH_INIT,
   CFG_FLASH_RELEASE,
   CFG_FLASH_OFF,
   CFG_FLASH_LOW,
-  CFG_FLASH_HIGH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  CFG_FLASH_HIGH,
 };
 enum msm_sensor_output_format_t {
   MSM_SENSOR_BAYER,
-  MSM_SENSOR_YCBCR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_SENSOR_YCBCR,
   MSM_SENSOR_META,
 };
 struct msm_sensor_power_setting {
-  enum msm_sensor_power_seq_type_t seq_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  enum msm_sensor_power_seq_type_t seq_type;
   unsigned short seq_val;
   long config_val;
   unsigned short delay;
-  void * data[10];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  void * data[10];
 };
 struct msm_sensor_power_setting_array {
   struct msm_sensor_power_setting power_setting_a[MAX_POWER_CONFIG];
-  struct msm_sensor_power_setting * power_setting;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct msm_sensor_power_setting * power_setting;
   unsigned short size;
   struct msm_sensor_power_setting power_down_setting_a[MAX_POWER_CONFIG];
   struct msm_sensor_power_setting * power_down_setting;
-  unsigned short size_down;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned short size_down;
 };
 enum msm_camera_i2c_operation {
   MSM_CAM_WRITE = 0,
-  MSM_CAM_POLL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  MSM_CAM_POLL,
   MSM_CAM_READ,
 };
 struct msm_sensor_i2c_sync_params {
-  unsigned int cid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int cid;
   int csid;
   unsigned short line;
   unsigned short delay;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_camera_reg_settings_t {
   uint16_t reg_addr;
   enum msm_camera_i2c_reg_addr_type addr_type;
-  uint16_t reg_data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint16_t reg_data;
   enum msm_camera_i2c_data_type data_type;
   enum msm_camera_i2c_operation i2c_operation;
   uint16_t delay;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_eeprom_mem_map_t {
   int slave_addr;
   struct msm_camera_reg_settings_t mem_settings[MSM_EEPROM_MEMORY_MAP_MAX_SIZE];
-  int memory_map_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int memory_map_size;
 };
 struct msm_eeprom_memory_map_array {
   struct msm_eeprom_mem_map_t memory_map[MSM_EEPROM_MAX_MEM_MAP_CNT];
-  uint32_t msm_size_of_max_mappings;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  uint32_t msm_size_of_max_mappings;
 };
 struct msm_sensor_init_params {
   int modes_supported;
-  enum camb_position_t position;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  enum camb_position_t position;
   unsigned int sensor_mount_angle;
 };
 struct msm_sensor_id_info_t {
-  unsigned short sensor_id_reg_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned short sensor_id_reg_addr;
   unsigned short sensor_id;
   unsigned short sensor_id_mask;
 };
-struct msm_camera_sensor_slave_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct msm_camera_sensor_slave_info {
   char sensor_name[32];
   char eeprom_name[32];
   char actuator_name[32];
-  char ois_name[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char ois_name[32];
   char flash_name[32];
   enum msm_sensor_camera_id_t camera_id;
   unsigned short slave_addr;
-  enum i2c_freq_mode_t i2c_freq_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  enum i2c_freq_mode_t i2c_freq_mode;
   enum msm_camera_i2c_reg_addr_type addr_type;
   struct msm_sensor_id_info_t sensor_id_info;
   struct msm_sensor_power_setting_array power_setting_array;
-  unsigned char is_init_params_valid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char is_init_params_valid;
   struct msm_sensor_init_params sensor_init_params;
   enum msm_sensor_output_format_t output_format;
 };
-struct msm_camera_i2c_reg_array {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct msm_camera_i2c_reg_array {
   unsigned short reg_addr;
   unsigned short reg_data;
   unsigned int delay;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_camera_i2c_reg_setting {
   struct msm_camera_i2c_reg_array * reg_setting;
   unsigned short size;
-  enum msm_camera_i2c_reg_addr_type addr_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  enum msm_camera_i2c_reg_addr_type addr_type;
   enum msm_camera_i2c_data_type data_type;
   unsigned short delay;
 };
-struct msm_camera_csid_vc_cfg {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct msm_camera_csid_vc_cfg {
   unsigned char cid;
   unsigned char dt;
   unsigned char decode_format;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_camera_csid_lut_params {
   unsigned char num_cid;
   struct msm_camera_csid_vc_cfg vc_cfg_a[MAX_CID];
-  struct msm_camera_csid_vc_cfg * vc_cfg[MAX_CID];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct msm_camera_csid_vc_cfg * vc_cfg[MAX_CID];
 };
 struct msm_camera_csid_params {
   unsigned char lane_cnt;
-  unsigned short lane_assign;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned short lane_assign;
   unsigned char phy_sel;
   unsigned int csi_clk;
   struct msm_camera_csid_lut_params lut_params;
-  unsigned char csi_3p_sel;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char csi_3p_sel;
 };
 struct msm_camera_csid_testmode_parms {
   unsigned int num_bytes_per_line;
-  unsigned int num_lines;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int num_lines;
   unsigned int h_blanking_count;
   unsigned int v_blanking_count;
   unsigned int payload_mode;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_camera_csiphy_params {
   unsigned char lane_cnt;
   unsigned char settle_cnt;
-  unsigned short lane_mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned short lane_mask;
   unsigned char combo_mode;
   unsigned char csid_core;
   unsigned int csiphy_clk;
-  unsigned char csi_3phase;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char csi_3phase;
 };
 struct msm_camera_i2c_seq_reg_array {
   unsigned short reg_addr;
-  unsigned char reg_data[I2C_SEQ_REG_DATA_MAX];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char reg_data[I2C_SEQ_REG_DATA_MAX];
   unsigned short reg_data_size;
 };
 struct msm_camera_i2c_seq_reg_setting {
-  struct msm_camera_i2c_seq_reg_array * reg_setting;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct msm_camera_i2c_seq_reg_array * reg_setting;
   unsigned short size;
   enum msm_camera_i2c_reg_addr_type addr_type;
   unsigned short delay;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct msm_actuator_reg_params_t {
   enum msm_actuator_write_type reg_write_type;
   unsigned int hw_mask;
-  unsigned short reg_addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned short reg_addr;
   unsigned short hw_shift;
   unsigned short data_shift;
   unsigned short data_type;
-  unsigned short addr_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned short addr_type;
   unsigned short reg_data;
   unsigned short delay;
 };
-struct damping_params_t {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct damping_params_t {
   unsigned int damping_step;
   unsigned int damping_delay;
   unsigned int hw_params;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct region_params_t {
   unsigned short step_bound[2];
   unsigned short code_per_step;
-  unsigned int qvalue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int qvalue;
 };
 struct reg_settings_t {
   unsigned short reg_addr;
-  enum msm_actuator_addr_type addr_type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  enum msm_actuator_addr_type addr_type;
   unsigned short reg_data;
   enum msm_actuator_data_type data_type;
   enum msm_actuator_i2c_operation i2c_operation;
-  unsigned int delay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int delay;
 };
 struct msm_camera_i2c_reg_setting_array {
   struct msm_camera_i2c_reg_array reg_setting_a[MAX_I2C_REG_SET];
-  unsigned short size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned short size;
   enum msm_camera_i2c_reg_addr_type addr_type;
   enum msm_camera_i2c_data_type data_type;
   unsigned short delay;
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #endif
 
diff --git a/original-kernel-headers/media/msm_cam_sensor.h b/original-kernel-headers/media/msm_cam_sensor.h
index c62c862..c534911 100644
--- a/original-kernel-headers/media/msm_cam_sensor.h
+++ b/original-kernel-headers/media/msm_cam_sensor.h
@@ -1,18 +1,11 @@
-#ifndef __LINUX_MSM_CAM_SENSOR_H
-#define __LINUX_MSM_CAM_SENSOR_H
-
-#ifdef MSM_CAMERA_BIONIC
-#include <sys/types.h>
-#endif
+#ifndef __UAPI_LINUX_MSM_CAM_SENSOR_H
+#define __UAPI_LINUX_MSM_CAM_SENSOR_H
 
 #include <linux/v4l2-mediabus.h>
 #include <media/msm_camsensor_sdk.h>
 
 #include <linux/types.h>
 #include <linux/i2c.h>
-#ifdef CONFIG_COMPAT
-#include <linux/compat.h>
-#endif
 
 #define I2C_SEQ_REG_SETTING_MAX   5
 
@@ -305,108 +298,6 @@
 	} cfg;
 };
 
-#ifdef CONFIG_COMPAT
-struct msm_sensor_power_setting32 {
-	enum msm_sensor_power_seq_type_t seq_type;
-	uint16_t seq_val;
-	compat_uint_t config_val;
-	uint16_t delay;
-	compat_uptr_t data[10];
-};
-
-struct msm_sensor_power_setting_array32 {
-	struct msm_sensor_power_setting32 power_setting_a[MAX_POWER_CONFIG];
-	compat_uptr_t power_setting;
-	uint16_t size;
-	struct msm_sensor_power_setting32
-		power_down_setting_a[MAX_POWER_CONFIG];
-	compat_uptr_t power_down_setting;
-	uint16_t size_down;
-};
-
-struct msm_camera_sensor_slave_info32 {
-	char sensor_name[32];
-	char eeprom_name[32];
-	char actuator_name[32];
-	char ois_name[32];
-	char flash_name[32];
-	enum msm_sensor_camera_id_t camera_id;
-	uint16_t slave_addr;
-	enum i2c_freq_mode_t i2c_freq_mode;
-	enum msm_camera_i2c_reg_addr_type addr_type;
-	struct msm_sensor_id_info_t sensor_id_info;
-	struct msm_sensor_power_setting_array32 power_setting_array;
-	uint8_t  is_init_params_valid;
-	struct msm_sensor_init_params sensor_init_params;
-	enum msm_sensor_output_format_t output_format;
-};
-
-struct msm_camera_csid_lut_params32 {
-	uint8_t num_cid;
-	struct msm_camera_csid_vc_cfg vc_cfg_a[MAX_CID];
-	compat_uptr_t vc_cfg[MAX_CID];
-};
-
-struct msm_camera_csid_params32 {
-	uint8_t lane_cnt;
-	uint16_t lane_assign;
-	uint8_t phy_sel;
-	uint32_t csi_clk;
-	struct msm_camera_csid_lut_params32 lut_params;
-	uint8_t csi_3p_sel;
-};
-
-struct msm_camera_csi2_params32 {
-	struct msm_camera_csid_params32 csid_params;
-	struct msm_camera_csiphy_params csiphy_params;
-	uint8_t csi_clk_scale_enable;
-};
-
-struct csid_cfg_data32 {
-	enum csid_cfg_type_t cfgtype;
-	union {
-		uint32_t csid_version;
-		compat_uptr_t csid_params;
-		compat_uptr_t csid_testmode_params;
-	} cfg;
-};
-
-struct eeprom_read_t32 {
-	compat_uptr_t dbuffer;
-	uint32_t num_bytes;
-};
-
-struct eeprom_write_t32 {
-	compat_uptr_t dbuffer;
-	uint32_t num_bytes;
-};
-
-struct msm_eeprom_info_t32 {
-	compat_uptr_t power_setting_array;
-	enum i2c_freq_mode_t i2c_freq_mode;
-	compat_uptr_t mem_map_array;
-};
-
-struct msm_eeprom_cfg_data32 {
-	enum eeprom_cfg_type_t cfgtype;
-	uint8_t is_supported;
-	union {
-		char eeprom_name[MAX_SENSOR_NAME];
-		struct eeprom_get_t get_data;
-		struct eeprom_read_t32 read_data;
-		struct eeprom_write_t32 write_data;
-		struct msm_eeprom_info_t32 eeprom_info;
-	} cfg;
-};
-
-struct msm_camera_i2c_seq_reg_setting32 {
-	compat_uptr_t reg_setting;
-	uint16_t size;
-	enum msm_camera_i2c_reg_addr_type addr_type;
-	uint16_t delay;
-};
-#endif
-
 enum msm_sensor_cfg_type_t {
 	CFG_SET_SLAVE_INFO,
 	CFG_SLAVE_READ_I2C,
@@ -669,158 +560,5 @@
 #define VIDIOC_MSM_FLASH_CFG \
 	_IOWR('V', BASE_VIDIOC_PRIVATE + 13, struct msm_flash_cfg_data_t)
 
-#ifdef CONFIG_COMPAT
-struct msm_camera_i2c_reg_setting32 {
-	compat_uptr_t reg_setting;
-	uint16_t size;
-	enum msm_camera_i2c_reg_addr_type addr_type;
-	enum msm_camera_i2c_data_type data_type;
-	uint16_t delay;
-};
-
-struct msm_camera_i2c_array_write_config32 {
-	struct msm_camera_i2c_reg_setting32 conf_array;
-	uint16_t slave_addr;
-};
-
-struct msm_actuator_tuning_params_t32 {
-	int16_t initial_code;
-	uint16_t pwd_step;
-	uint16_t region_size;
-	uint32_t total_steps;
-	compat_uptr_t region_params;
-};
-
-struct msm_actuator_params_t32 {
-	enum actuator_type act_type;
-	uint8_t reg_tbl_size;
-	uint16_t data_size;
-	uint16_t init_setting_size;
-	uint32_t i2c_addr;
-	enum i2c_freq_mode_t i2c_freq_mode;
-	enum msm_actuator_addr_type i2c_addr_type;
-	enum msm_actuator_data_type i2c_data_type;
-	compat_uptr_t reg_tbl_params;
-	compat_uptr_t init_settings;
-	struct park_lens_data_t park_lens;
-};
-
-struct msm_actuator_set_info_t32 {
-	struct msm_actuator_params_t32 actuator_params;
-	struct msm_actuator_tuning_params_t32 af_tuning_params;
-};
-
-struct sensor_init_cfg_data32 {
-	enum msm_sensor_init_cfg_type_t cfgtype;
-	struct msm_sensor_info_t        probed_info;
-	char                            entity_name[MAX_SENSOR_NAME];
-	union {
-		compat_uptr_t setting;
-	} cfg;
-};
-
-struct msm_actuator_move_params_t32 {
-	int8_t dir;
-	int8_t sign_dir;
-	int16_t dest_step_pos;
-	int32_t num_steps;
-	uint16_t curr_lens_pos;
-	compat_uptr_t ringing_params;
-};
-
-struct msm_actuator_cfg_data32 {
-	int cfgtype;
-	uint8_t is_af_supported;
-	union {
-		struct msm_actuator_move_params_t32 move;
-		struct msm_actuator_set_info_t32 set_info;
-		struct msm_actuator_get_info_t get_info;
-		struct msm_actuator_set_position_t setpos;
-		enum af_camera_name cam_name;
-	} cfg;
-};
-
-struct csiphy_cfg_data32 {
-	enum csiphy_cfg_type_t cfgtype;
-	union {
-		compat_uptr_t csiphy_params;
-		compat_uptr_t csi_lane_params;
-	} cfg;
-};
-
-struct sensorb_cfg_data32 {
-	int cfgtype;
-	union {
-		struct msm_sensor_info_t      sensor_info;
-		struct msm_sensor_init_params sensor_init_params;
-		compat_uptr_t                 setting;
-		struct msm_sensor_i2c_sync_params sensor_i2c_sync_params;
-	} cfg;
-};
-
-struct msm_ois_params_t32 {
-	uint16_t data_size;
-	uint16_t setting_size;
-	uint32_t i2c_addr;
-	enum i2c_freq_mode_t i2c_freq_mode;
-	enum msm_camera_i2c_reg_addr_type i2c_addr_type;
-	enum msm_camera_i2c_data_type i2c_data_type;
-	compat_uptr_t settings;
-};
-
-struct msm_ois_set_info_t32 {
-	struct msm_ois_params_t32 ois_params;
-};
-
-struct msm_ois_cfg_data32 {
-	int cfgtype;
-	union {
-		struct msm_ois_set_info_t32 set_info;
-		compat_uptr_t settings;
-	} cfg;
-};
-
-struct msm_flash_init_info_t32 {
-	enum msm_flash_driver_type flash_driver_type;
-	uint32_t slave_addr;
-	enum i2c_freq_mode_t i2c_freq_mode;
-	compat_uptr_t power_setting_array;
-	compat_uptr_t settings;
-};
-
-struct msm_flash_cfg_data_t32 {
-	enum msm_flash_cfg_type_t cfg_type;
-	int32_t flash_current[MAX_LED_TRIGGERS];
-	int32_t flash_duration[MAX_LED_TRIGGERS];
-	union {
-		compat_uptr_t flash_init_info;
-		compat_uptr_t settings;
-	} cfg;
-};
-
-#define VIDIOC_MSM_ACTUATOR_CFG32 \
-	_IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct msm_actuator_cfg_data32)
-
-#define VIDIOC_MSM_SENSOR_INIT_CFG32 \
-	_IOWR('V', BASE_VIDIOC_PRIVATE + 10, struct sensor_init_cfg_data32)
-
-#define VIDIOC_MSM_CSIPHY_IO_CFG32 \
-	_IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct csiphy_cfg_data32)
-
-#define VIDIOC_MSM_SENSOR_CFG32 \
-	_IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct sensorb_cfg_data32)
-
-#define VIDIOC_MSM_EEPROM_CFG32 \
-	_IOWR('V', BASE_VIDIOC_PRIVATE + 8, struct msm_eeprom_cfg_data32)
-
-#define VIDIOC_MSM_OIS_CFG32 \
-	_IOWR('V', BASE_VIDIOC_PRIVATE + 11, struct msm_ois_cfg_data32)
-
-#define VIDIOC_MSM_CSID_IO_CFG32 \
-	_IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct csid_cfg_data32)
-
-#define VIDIOC_MSM_FLASH_CFG32 \
-	_IOWR('V', BASE_VIDIOC_PRIVATE + 13, struct msm_flash_cfg_data_t32)
 #endif
 
-#endif /* __LINUX_MSM_CAM_SENSOR_H */
diff --git a/original-kernel-headers/media/msm_camsensor_sdk.h b/original-kernel-headers/media/msm_camsensor_sdk.h
index 3d9e7a2..eab853b 100644
--- a/original-kernel-headers/media/msm_camsensor_sdk.h
+++ b/original-kernel-headers/media/msm_camsensor_sdk.h
@@ -1,5 +1,7 @@
-#ifndef __LINUX_MSM_CAMSENSOR_SDK_H
-#define __LINUX_MSM_CAMSENSOR_SDK_H
+#ifndef __UAPI_LINUX_MSM_CAMSENSOR_SDK_H
+#define __UAPI_LINUX_MSM_CAMSENSOR_SDK_H
+
+#include <linux/videodev2.h>
 
 #define KVERSION 0x1
 
@@ -379,4 +381,5 @@
 	enum msm_camera_i2c_data_type data_type;
 	unsigned short delay;
 };
-#endif /* __LINUX_MSM_CAM_SENSOR_H */
+
+#endif
