#ifndef __AD5816G_H__ #define __AD5816G_H__ #include #include #include #define AD5816G_VCM_ADDR 0x0e /* ad5816g device structure */ struct ad5816g_device { const struct camera_af_platform_data *platform_data; struct timespec timestamp_t_focus_abs; struct timespec focus_time; /* Time when focus was last time set */ s32 focus; /* Current focus value */ s16 number_of_steps; }; #define AD5816G_INVALID_CONFIG 0xffffffff #define AD5816G_MAX_FOCUS_POS 1023 #define DELAY_PER_STEP_NS 1000000 #define DELAY_MAX_PER_STEP_NS (1000000 * 1023) /* Register Definitions */ #define AD5816G_IC_INFO 0x00 #define AD5816G_IC_VERSION 0x01 #define AD5816G_CONTROL 0x02 #define AD5816G_VCM_CODE_MSB 0x03 #define AD5816G_VCM_CODE_LSB 0x04 #define AD5816G_STATUS 0x05 #define AD5816G_MODE 0x06 #define AD5816G_VCM_FREQ 0x07 #define AD5816G_VCM_THRESHOLD 0x08 /* ARC MODE ENABLE */ #define AD5816G_ARC_EN 0x02 /* ARC RES2 MODE */ #define AD5816G_ARC_RES2 0x01 /* ARC VCM FREQ - 78.1Hz */ #define AD5816G_DEF_FREQ 0x7a /* ARC VCM THRESHOLD - 0x08 << 1 */ #define AD5816G_DEF_THRESHOLD 0x64 #define AD5816G_ID 0x24 #define VCM_CODE_MASK 0x03ff #define AD5816G_MODE_2_5M_SWITCH_CLOCK 0x14 #endif