C++程序  |  240行  |  6.58 KB

/****************************************************************************
 ****************************************************************************
 ***
 ***   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_CAM_SENSOR_H__
#define __UAPI_CAM_SENSOR_H__
#include <linux/types.h>
#include <linux/ioctl.h>
#include <media/cam_defs.h>
#define CAM_SENSOR_PROBE_CMD (CAM_COMMON_OPCODE_MAX + 1)
#define CAM_FLASH_MAX_LED_TRIGGERS 3
#define MAX_OIS_NAME_SIZE 32
#define CAM_CSIPHY_SECURE_MODE_ENABLED 1
#define MAX_RAINBOW_CONFIG_SIZE 32
enum rainbow_op_type {
  RAINBOW_SEQ_READ,
  RAINBOW_RANDOM_READ,
  RAINBOW_SEQ_WRITE,
  RAINBOW_RANDOM_WRITE
};
struct rainbow_config {
  enum rainbow_op_type operation;
  uint32_t size;
  uint32_t reg_addr[MAX_RAINBOW_CONFIG_SIZE];
  uint32_t reg_data[MAX_RAINBOW_CONFIG_SIZE];
} __attribute__((packed));
#define RAINBOW_CONFIG _IOWR('R', 1, struct rainbow_config)
struct cam_sensor_query_cap {
  uint32_t slot_info;
  uint32_t secure_camera;
  uint32_t pos_pitch;
  uint32_t pos_roll;
  uint32_t pos_yaw;
  uint32_t actuator_slot_id;
  uint32_t eeprom_slot_id;
  uint32_t ois_slot_id;
  uint32_t flash_slot_id;
  uint32_t csiphy_slot_id;
} __attribute__((packed));
struct cam_csiphy_query_cap {
  uint32_t slot_info;
  uint32_t version;
  uint32_t clk_lane;
  uint32_t reserved;
} __attribute__((packed));
struct cam_actuator_query_cap {
  uint32_t slot_info;
  uint32_t reserved;
} __attribute__((packed));
struct cam_eeprom_query_cap_t {
  uint32_t slot_info;
  uint16_t eeprom_kernel_probe;
  uint16_t reserved;
} __attribute__((packed));
struct cam_ois_query_cap_t {
  uint32_t slot_info;
  uint16_t reserved;
} __attribute__((packed));
struct cam_cmd_i2c_info {
  uint16_t slave_addr;
  uint8_t i2c_freq_mode;
  uint8_t cmd_type;
} __attribute__((packed));
struct cam_cmd_get_ois_data {
  uint32_t reg_addr;
  uint32_t reg_data;
  uint64_t query_size_handle;
  uint64_t query_data_handle;
} __attribute__((packed));
struct cam_ois_shift {
  int16_t ois_shift_x;
  int16_t ois_shift_y;
  int64_t time_readout;
} __attribute__((packed));
struct cam_ois_opcode {
  uint32_t prog;
  uint32_t coeff;
  uint32_t pheripheral;
  uint32_t memory;
} __attribute__((packed));
struct cam_cmd_ois_info {
  uint16_t slave_addr;
  uint8_t i2c_freq_mode;
  uint8_t cmd_type;
  uint8_t ois_fw_flag;
  uint8_t is_ois_calib;
  char ois_name[MAX_OIS_NAME_SIZE];
  struct cam_ois_opcode opcode;
} __attribute__((packed));
struct cam_cmd_probe {
  uint8_t data_type;
  uint8_t addr_type;
  uint8_t op_code;
  uint8_t cmd_type;
  uint32_t reg_addr;
  uint32_t expected_data;
  uint32_t data_mask;
  uint16_t camera_id;
  uint8_t fw_update_flag;
  uint16_t reserved;
} __attribute__((packed));
struct cam_power_settings {
  uint16_t power_seq_type;
  uint16_t reserved;
  uint32_t config_val_low;
  uint32_t config_val_high;
} __attribute__((packed));
struct cam_cmd_power {
  uint16_t count;
  uint8_t reserved;
  uint8_t cmd_type;
  struct cam_power_settings power_settings[1];
} __attribute__((packed));
struct i2c_rdwr_header {
  uint16_t count;
  uint8_t op_code;
  uint8_t cmd_type;
  uint8_t data_type;
  uint8_t addr_type;
  uint16_t slave_addr;
} __attribute__((packed));
struct i2c_random_wr_payload {
  uint32_t reg_addr;
  uint32_t reg_data;
} __attribute__((packed));
struct cam_cmd_i2c_random_wr {
  struct i2c_rdwr_header header;
  struct i2c_random_wr_payload random_wr_payload[1];
} __attribute__((packed));
struct cam_cmd_read {
  uint32_t reg_data;
  uint32_t reserved;
} __attribute__((packed));
struct cam_cmd_i2c_continuous_wr {
  struct i2c_rdwr_header header;
  uint32_t reg_addr;
  struct cam_cmd_read data_read[1];
} __attribute__((packed));
struct cam_cmd_i2c_random_rd {
  struct i2c_rdwr_header header;
  struct cam_cmd_read data_read[1];
} __attribute__((packed));
struct cam_cmd_i2c_continuous_rd {
  struct i2c_rdwr_header header;
  uint32_t reg_addr;
} __attribute__((packed));
struct cam_cmd_conditional_wait {
  uint8_t data_type;
  uint8_t addr_type;
  uint8_t op_code;
  uint8_t cmd_type;
  uint16_t timeout;
  uint16_t reserved;
  uint32_t reg_addr;
  uint32_t reg_data;
  uint32_t data_mask;
} __attribute__((packed));
struct cam_cmd_unconditional_wait {
  int16_t delay;
  uint8_t op_code;
  uint8_t cmd_type;
} __attribute__((packed));
struct cam_csiphy_info {
  uint16_t lane_mask;
  uint16_t lane_assign;
  uint8_t csiphy_3phase;
  uint8_t combo_mode;
  uint8_t lane_cnt;
  uint8_t secure_mode;
  uint64_t settle_time;
  uint64_t data_rate;
} __attribute__((packed));
struct cam_csiphy_acquire_dev_info {
  uint32_t combo_mode;
  uint32_t reserved;
} __attribute__((packed));
struct cam_sensor_acquire_dev {
  uint32_t session_handle;
  uint32_t device_handle;
  uint32_t handle_type;
  uint32_t reserved;
  uint64_t info_handle;
} __attribute__((packed));
struct cam_sensor_streamon_dev {
  uint32_t session_handle;
  uint32_t device_handle;
  uint32_t handle_type;
  uint32_t reserved;
  uint64_t info_handle;
} __attribute__((packed));
struct cam_flash_init {
  uint8_t flash_type;
  uint16_t reserved;
  uint8_t cmd_type;
} __attribute__((packed));
struct cam_flash_set_rer {
  uint16_t count;
  uint8_t opcode;
  uint8_t cmd_type;
  uint16_t num_iteration;
  uint16_t reserved;
  uint32_t led_on_delay_ms;
  uint32_t led_off_delay_ms;
  uint32_t led_current_ma[CAM_FLASH_MAX_LED_TRIGGERS];
} __attribute__((packed));
struct cam_flash_set_on_off {
  uint16_t count;
  uint8_t opcode;
  uint8_t cmd_type;
  uint32_t led_current_ma[CAM_FLASH_MAX_LED_TRIGGERS];
} __attribute__((packed));
struct cam_flash_query_curr {
  uint16_t reserved;
  uint8_t opcode;
  uint8_t cmd_type;
  uint32_t query_current_ma;
} __attribute__((packed));
struct cam_flash_query_cap_info {
  uint32_t slot_info;
  uint32_t max_current_flash[CAM_FLASH_MAX_LED_TRIGGERS];
  uint32_t max_duration_flash[CAM_FLASH_MAX_LED_TRIGGERS];
  uint32_t max_current_torch[CAM_FLASH_MAX_LED_TRIGGERS];
} __attribute__((packed));
#endif