include/uapi/linux/oculus/minisensor.h (65 lines of code) (raw):

#ifndef __UAPI_MINI_SENSOR__ #define __UAPI_MINI_SENSOR__ #include <linux/types.h> #ifdef __KERNEL__ #include <linux/ioctl.h> #else #include <sys/ioctl.h> #endif #define LSM6DSL_REG_BANK_A_FLAG 0x100 enum minisensor_event_type { minisensor_event_data = 0, minisensor_event_pm_suspend_fence = 1, minisensor_event_pm_resume_fence = 2, }; struct minisensor_event { __u64 timestamp; __u32 type; /*1 of enum minisensor_event_type */ __u32 len; __u32 fifo_status; __u8 data[]; } __attribute__((packed)); struct minisensor_reg_operation { __u16 reg; __u32 len; __u32 delay_us; void __user *buf; }; enum minisensor_interrupt_mode { MINI_SENSOR_INTR_DISABLED, MINI_SENSOR_INTR_READ_FIXED_RANGE, MINI_SENSOR_INTR_READ_FIFO, }; struct minisensor_interrupt_config { enum minisensor_interrupt_mode mode; union { struct { __u16 reg; __u32 len; } range; struct { __u16 status_reg; __u8 len_mask; __u8 len_right_shift; __u8 len_multiplier; __u16 data_reg; } fifo; }; }; struct minisensor_pm_config { __u32 num_ops; struct minisensor_reg_operation __user *ops; }; #define MINI_SENSOR_IOC_REG_READ \ _IOWR('L', 0x01, struct minisensor_reg_operation) #define MINI_SENSOR_IOC_REG_WRITE \ _IOW('L', 0x02, struct minisensor_reg_operation) #define MINI_SENSOR_IOC_INTR_GET_CFG \ _IOR('L', 0x03, struct minisensor_interrupt_config) #define MINI_SENSOR_IOC_INTR_SET_CFG \ _IOW('L', 0x04, struct minisensor_interrupt_config) #define MINI_SENSOR_IOC_PM_SET_SUSPEND \ _IOW('L', 0x05, struct minisensor_pm_config) #define MINI_SENSOR_IOC_PM_SET_RESUME \ _IOW('L', 0x06, struct minisensor_pm_config) #endif /* __UAPI_MINI_SENSOR__*/