├── README.md ├── af_lib ├── AVAccessEnvType.h ├── Makefile ├── lib │ ├── lib_hiaf.a │ └── lib_hiaf.so ├── ls_af_adp.c ├── ls_af_adp.h ├── ls_af_algorithm.c ├── ls_af_algorithm.h ├── ls_af_fv.c ├── ls_af_fv.h ├── ls_af_ptz.c ├── ls_af_ptz.h ├── ls_af_visca.h ├── obj │ ├── ls_af_adp.o │ ├── ls_af_algorithm.o │ ├── ls_af_fv.o │ └── ls_af_ptz.o └── sys_env_type.h ├── cal_dat ├── 18_Section │ ├── lens_cal.bak │ └── lens_cal.dat ├── 21_Section │ ├── lens_cal.bak │ └── lens_cal.dat └── 21_Section_2 │ ├── lens_cal.bak │ └── lens_cal.dat ├── len_drv ├── .lens_drv.ko.cmd ├── .lens_drv.mod.o.cmd ├── .lens_drv.o.cmd ├── .ls_lens_41908.o.cmd ├── .ls_lens_drv.o.cmd ├── .ls_lens_pwm.o.cmd ├── .ls_lens_spi.o.cmd ├── .ls_lens_timer.o.cmd ├── .tmp_versions │ └── lens_drv.mod ├── Makefile ├── lens_drv.ko ├── lens_test ├── ls_lens_41908.c ├── ls_lens_41908.h ├── ls_lens_drv.c ├── ls_lens_drv.h ├── ls_lens_pwm.c ├── ls_lens_pwm.h ├── ls_lens_spi.c ├── ls_lens_spi.h ├── ls_lens_test.c ├── ls_lens_timer.c ├── ls_lens_timer.h └── ls_lens_types.h ├── prj ├── spd.IAB ├── spd.IAD ├── spd.IMB ├── spd.IMD ├── spd.PFI ├── spd.PO ├── spd.PR ├── spd.PRI ├── spd.PS └── spd.WK3 └── sample_venc.c /README.md: -------------------------------------------------------------------------------- 1 | # AF-algorithm 2 | AF algorithm on hi3516 3 | -------------------------------------------------------------------------------- /af_lib/AVAccessEnvType.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef AV_ACCESS_ENV_TYPE_H_INCLUDE 3 | #define AV_ACCESS_ENV_TYPE_H_INCLUDE 4 | 5 | #include 6 | 7 | typedef enum _AVAccessErrorCode 8 | { 9 | AVACCESS_OK = 0, 10 | AVACCESS_UNKNOWN = 201, 11 | AVACCESS_NOINIT, 12 | AVACCESS_VIDEO_NOOPEN, 13 | AVACCESS_PARAM_ERROR, 14 | AVACCESS_PARAM_NULL, 15 | AVACCESS_ERRORCODE_END 16 | } AVAccessErrorCode; 17 | 18 | #ifdef FISHEYE_MULTI_CHANNEL_SUPPORT 19 | typedef enum _AVAccessVideoType 20 | { 21 | AVACCESS_1ST_STREAM = 0, 22 | AVACCESS_2ND_STREAM = 1, 23 | AVACCESS_3RD_STREAM = 2, 24 | AVACCESS_4TH_STREAM = 3, 25 | AVACCESS_5TH_STREAM = 4, 26 | AVACCESS_6TH_STREAM = 5, 27 | AVACCESS_7TH_STREAM = 6, 28 | AVACCESS_8TH_STREAM = 7, 29 | AVACCESS_9TH_STREAM = 8, 30 | AVACCESS_10TH_STREAM = 9, 31 | AVACCESS_11TH_STREAM = 10, 32 | AVACCESS_12TH_STREAM = 11, 33 | AVACCESS_13TH_STREAM = 12, 34 | AVACCESS_14TH_STREAM = 13, 35 | AVACCESS_15TH_STREAM = 14, 36 | AVACCESS_MAX_VIDEO_STREAM 37 | } AVAccessVideoType; 38 | #else 39 | typedef enum _AVAccessVideoType 40 | { 41 | AVACCESS_1ST_STREAM = 0, 42 | AVACCESS_2ND_STREAM = 1, 43 | AVACCESS_3RD_STREAM = 2, 44 | AVACCESS_MAX_VIDEO_STREAM 45 | } AVAccessVideoType; 46 | #endif 47 | 48 | typedef enum _AVAccessVideoInversionType 49 | { 50 | AVACCESS_VIDEO_INVERSION_NORMAL = 0, 51 | AVACCESS_VIDEO_INVERSION_MIRROR = 1, 52 | AVACCESS_VIDEO_INVERSION_FLIP = 2, 53 | AVACCESS_VIDEO_INVERSION_BOTH = 3, 54 | } AVAccessVideoInversionType; 55 | 56 | typedef enum _AVAccessVideoStatus 57 | { 58 | AVACCESS_VIDEO_STATUS_NOUSE = 0, 59 | AVACCESS_VIDEO_STATUS_USE = 1, 60 | AVACCESS_VIDEO_STATUS_END 61 | } AVAccessVideoStatus; 62 | 63 | 64 | typedef struct _AVAccessAVSysInfo 65 | { 66 | AVAccessVideoStatus VideoStatus[AVACCESS_MAX_VIDEO_STREAM]; 67 | AVAccessVideoStatus AudioEncodeStatus; 68 | pthread_t VideoThreadId[AVACCESS_MAX_VIDEO_STREAM]; 69 | pthread_t AudioThreadId; 70 | } AVAccessAVSysInfo; 71 | 72 | 73 | typedef struct __AVAccessPtzOption 74 | { 75 | unsigned char ucCh; 76 | unsigned char ucCmd; 77 | unsigned char ucPresetPointIndex; 78 | unsigned char ucCruiseLineIndex; 79 | 80 | unsigned char ucRes[12]; 81 | }AVAccessPtzOption; 82 | 83 | 84 | typedef enum _AVAccessAbnormalEventType 85 | { 86 | AVACCESS_ABNORMAL_EVNENT_NULL = 0, 87 | AVACCESS_ABNORMAL_EVNENT_NETLINKDOWN = 1, 88 | AVACCESS_ABNORMAL_EVNENT_IPCONFLICT = 2, 89 | 90 | } AVAccessAbnormalEventType; 91 | 92 | 93 | #endif 94 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /af_lib/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # isp firmware Makefile 3 | # 4 | 5 | SDK_PATH := /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.5.0 6 | #SDK_PATH := /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0 7 | 8 | ifeq ($(PARAM_FILE), ) 9 | PARAM_FILE:=$(SDK_PATH)/mpp/Makefile.param 10 | include $(PARAM_FILE) 11 | endif 12 | 13 | ISP_PATH := $(SDK_PATH)/mpp/component/isp 14 | LIBPATH = ./lib 15 | OBJPATH = ./obj 16 | 17 | 3A_INC := $(ISP_PATH)/3a/include 18 | VREG_INC := $(ISP_PATH)/firmware/vreg 19 | 20 | #tmp, delete in the future 21 | SRC_INC := $(ISP_PATH)/firmware/src/main 22 | ISP_INC := $(ISP_PATH)/include 23 | 24 | ifeq ($(MPP_BUILD), y) 25 | EXT_PATH := $(SDK_PATH)/mpp/$(EXTDRV) 26 | else 27 | EXT_PATH := $(SDK_PATH)/mpp/extdrv 28 | endif 29 | 30 | BUS_DIR := $(EXT_PATH)/pwm 31 | 32 | ARFLAGS = rcv 33 | CFLAGS = -Wall -fPIC 34 | 35 | ifeq ($(HIGDB),HI_GDB) 36 | CFLAGS += -g 37 | endif 38 | ifeq ($(CONFIG_JPEGEDCF), y) 39 | CFLAGS += -D ENABLE_JPEGEDCF 40 | endif 41 | CFLAGS += -O2 42 | CFLAGS += $(LIBS_CFLAGS) 43 | DFLAGS := -DEXT_REG 44 | 45 | INC := -I$(REL_INC) -I$(ISP_INC) -I$(BUS_DIR) -I$(3A_INC) -I$(SRC_INC) -I$(VREG_INC) -I$(VREG_INC)/arch/$(HIARCH) 46 | 47 | COMPILE = $(CC) $(CFLAGS) $(DFLAGS) -lm 48 | 49 | $(OBJPATH)/%.o: ./%.c 50 | @(echo "compiling $< ...") 51 | @[ -e $(LIBPATH) ] || mkdir $(LIBPATH) 52 | @[ -e $(OBJPATH) ] || mkdir $(OBJPATH) 53 | @($(COMPILE) -o $@ -c $< $(INC)) 54 | 55 | SRCS = $(wildcard ./*.c) 56 | OBJS = $(SRCS:%.c=%.o) 57 | OBJS := $(OBJS:./%=obj/%) 58 | 59 | LIB_A := $(LIBPATH)/lib_hiaf.a 60 | LIB_S := $(LIBPATH)/lib_hiaf.so 61 | 62 | all:$(OBJS) 63 | @($(AR) $(ARFLAGS) $(LIB_A) $(OBJS)) 64 | @($(CC) $(LIBS_LD_CFLAGS) -shared -fPIC -o $(LIB_S) $(OBJS)) 65 | @(cp lib/lib_hiaf.so lib/lib_hiaf.a ../../hi3516_mpp/mpp/lib/18PTZ) 66 | 67 | clean: 68 | @$(RM) -rf $(LIB_A) $(LIB_S) $(OBJS) 69 | @$(RM) -rf $(LIBPATH) $(OBJPATH) 70 | -------------------------------------------------------------------------------- /af_lib/lib/lib_hiaf.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/af_lib/lib/lib_hiaf.a -------------------------------------------------------------------------------- /af_lib/lib/lib_hiaf.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/af_lib/lib/lib_hiaf.so -------------------------------------------------------------------------------- /af_lib/ls_af_adp.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | 5 | #include "hi_comm_3a.h" 6 | #include "hi_type.h" 7 | #include "mpi_isp.h" 8 | 9 | #include "ls_af_adp.h" 10 | #include "ls_af_fv.h" 11 | #include "ls_af_ptz.h" 12 | #include "ls_af_algorithm.h" 13 | 14 | 15 | static HI_BOOL st_flag = HI_FALSE; 16 | static HI_BOOL af_flag = HI_FALSE; 17 | static HI_BOOL cal_gate= HI_FALSE; 18 | 19 | HI_S32 AF_IRCUT(void) 20 | { 21 | printf("AF_IRCUT......\n"); 22 | 23 | if (st_flag != HI_TRUE) return -1; 24 | if (af_flag == HI_TRUE) return -1; 25 | 26 | af_flag = HI_TRUE; 27 | sleep(3); 28 | CMD_OneKeyFocus(); 29 | af_flag = HI_FALSE; 30 | 31 | return 0; 32 | } 33 | 34 | HI_S32 AF_Init(HI_S32 s32Handle, const ISP_AF_PARAM_S *pstAfParam) 35 | { 36 | printf("AF_Init......\n"); 37 | 38 | FV_Init(); 39 | AFAlgInit(); 40 | PtzInit(PROTOCOL_PELCO_D, UART_BAUD_RATE_9600, 0x1); 41 | 42 | // if (CMD_LensInit() != 0) //tzq@20160622 by low frame black screen 43 | // { 44 | // af_flag = HI_TRUE; 45 | // } 46 | 47 | return HI_SUCCESS; 48 | } 49 | 50 | HI_S32 AF_Run(HI_S32 s32Handle, 51 | const ISP_AF_INFO_S *pstAfInfo, 52 | ISP_AF_RESULT_S *pstAfResult, 53 | HI_S32 s32Rsv) 54 | { 55 | int ret = 0; 56 | 57 | if (HI_FALSE == st_flag) 58 | { 59 | if (pstAfInfo->u32FrameCnt <= 500) return HI_SUCCESS; 60 | } 61 | 62 | if (HI_TRUE == af_flag) return HI_SUCCESS; 63 | 64 | if (HI_FALSE == st_flag) 65 | { 66 | st_flag = HI_TRUE; 67 | af_flag = HI_TRUE; 68 | /* 69 | ret = CMD_LensInit(); // tzq@20160622 by low frame black screen 70 | if (ret != 0) 71 | { 72 | printf("CMD_LensInit failed!\n"); 73 | return HI_FAILURE; // exit AF_Run 74 | } 75 | ret = ReadZoomData(); 76 | if (ret < 0) 77 | { 78 | printf("ReadZoomData failed!\n"); 79 | return HI_FAILURE; // exit AF_RUN 80 | } 81 | sleep(1); // tzq@20170121 add for lens lost step problem 82 | CMD_SetZoomPoint(ret); 83 | */ 84 | ret = CMD_LensResume(); 85 | if (ret != 0) 86 | { 87 | printf("CMD_LensResume failed!\n"); 88 | return HI_FAILURE; // exit AF_Run 89 | } 90 | 91 | sleep(1); 92 | CMD_OneKeyFocus(); 93 | CreatePtzThread(); 94 | af_flag = HI_FALSE; 95 | 96 | return HI_SUCCESS; 97 | } 98 | /* 99 | if (PtzCtrl() == 0) return HI_SUCCESS; 100 | 101 | if (pstAfInfo->u32FrameCnt % 2) 102 | { 103 | if (HI_TRUE == CheckFrame()) 104 | { 105 | af_flag = HI_TRUE; 106 | CMD_OneKeyFocus(); 107 | af_flag = HI_FALSE; 108 | } 109 | } 110 | else 111 | { 112 | FV_MapISO(); 113 | } 114 | */ 115 | return HI_SUCCESS; 116 | } 117 | 118 | HI_S32 AF_Ctrl(HI_S32 s32Handle, HI_U32 u32Cmd, HI_VOID *pValue) 119 | { 120 | printf("AF_Ctrl......\n"); 121 | if (PTZ_CMD_LENS_CORRECTION == u32Cmd) 122 | { 123 | if (HI_FALSE == cal_gate) 124 | { 125 | printf("Cal in...\n"); 126 | cal_gate = HI_TRUE; 127 | SetPtzCmd(u32Cmd, pValue); 128 | return HI_SUCCESS; 129 | } 130 | else 131 | { 132 | printf("Cal do...\n"); 133 | if (HI_FALSE == GetCalResult()) 134 | { 135 | return HI_FAILURE; 136 | } 137 | else 138 | { 139 | return HI_SUCCESS; 140 | } 141 | } 142 | } 143 | else 144 | { 145 | SetPtzCmd(u32Cmd, pValue); 146 | } 147 | 148 | return HI_SUCCESS; 149 | } 150 | 151 | HI_S32 AF_Exit(HI_S32 s32Handle) 152 | { 153 | printf("AF_Exit......\n"); 154 | 155 | return HI_SUCCESS; 156 | } 157 | 158 | HI_S32 HI_MPI_AF_Register(ISP_DEV IspDev, ALG_LIB_S *pstAfLib) 159 | { 160 | ISP_AF_REGISTER_S stRegister; 161 | HI_S32 s32Ret = HI_SUCCESS; 162 | 163 | AF_CHECK_DEV(IspDev); 164 | AF_CHECK_POINTER(pstAfLib); 165 | AF_CHECK_HANDLE_ID(pstAfLib->s32Id); 166 | AF_CHECK_LIB_NAME(pstAfLib->acLibName); 167 | 168 | stRegister.stAfExpFunc.pfn_af_init = AF_Init; 169 | stRegister.stAfExpFunc.pfn_af_run = AF_Run; 170 | stRegister.stAfExpFunc.pfn_af_ctrl = AF_Ctrl; 171 | stRegister.stAfExpFunc.pfn_af_exit = AF_Exit; 172 | s32Ret = HI_MPI_ISP_AFLibRegCallBack(IspDev, pstAfLib, &stRegister); 173 | if (HI_SUCCESS != s32Ret) 174 | { 175 | printf("Hi_af register failed!\n"); 176 | } 177 | 178 | return s32Ret; 179 | } 180 | 181 | HI_S32 HI_MPI_AF_UnRegister(ISP_DEV IspDev, ALG_LIB_S *pstAfLib) 182 | { 183 | HI_S32 s32Ret = HI_SUCCESS; 184 | 185 | AF_CHECK_DEV(IspDev); 186 | AF_CHECK_POINTER(pstAfLib); 187 | AF_CHECK_HANDLE_ID(pstAfLib->s32Id); 188 | AF_CHECK_LIB_NAME(pstAfLib->acLibName); 189 | 190 | s32Ret = HI_MPI_ISP_AFLibUnRegCallBack(IspDev, pstAfLib); 191 | if (HI_SUCCESS != s32Ret) 192 | { 193 | printf("Hi_af unregister failed!\n"); 194 | } 195 | 196 | return s32Ret; 197 | } 198 | 199 | -------------------------------------------------------------------------------- /af_lib/ls_af_adp.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_af_adp.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/05/10 10 | Description : 11 | History : 12 | 13 | Date : 2016/05/10 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_AF_ADP_H__ 20 | #define __LS_AF_ADP_H__ 21 | 22 | #include 23 | #include "hi_type.h" 24 | #include "hi_comm_3a.h" 25 | #include "hi_af_comm.h" 26 | 27 | #ifdef __cplusplus 28 | #if __cplusplus 29 | extern "C"{ 30 | #endif 31 | #endif /* End of #ifdef __cplusplus */ 32 | 33 | #define MAX_AF_LIB_NUM 2 34 | 35 | #define AF_CHECK_HANDLE_ID(s32Handle)\ 36 | do {\ 37 | if (((s32Handle) < 0) || ((s32Handle) >= MAX_AF_LIB_NUM))\ 38 | {\ 39 | printf("Illegal handle id %d in %s!\n", (s32Handle), __FUNCTION__);\ 40 | return HI_FAILURE;\ 41 | }\ 42 | }while(0) 43 | 44 | #define AF_CHECK_LIB_NAME(acName)\ 45 | do {\ 46 | if (0 != strcmp((acName), HI_AF_LIB_NAME))\ 47 | {\ 48 | printf("Illegal lib name %s in %s!\n", (acName), __FUNCTION__);\ 49 | return HI_FAILURE;\ 50 | }\ 51 | }while(0) 52 | 53 | #define AF_CHECK_POINTER(ptr)\ 54 | do {\ 55 | if (HI_NULL == ptr)\ 56 | {\ 57 | printf("Null Pointer in %s!\n", __FUNCTION__);\ 58 | return HI_FAILURE;\ 59 | }\ 60 | }while(0) 61 | 62 | 63 | #define AF_CHECK_DEV(dev)\ 64 | do {\ 65 | if (0 != dev)\ 66 | {\ 67 | ISP_TRACE(HI_DBG_ERR, "Err AF dev %d in %s!\n", dev, __FUNCTION__);\ 68 | return HI_ERR_ISP_ILLEGAL_PARAM;\ 69 | }\ 70 | }while(0) 71 | 72 | 73 | #ifdef __cplusplus 74 | #if __cplusplus 75 | } 76 | #endif 77 | #endif /* End of #ifdef __cplusplus */ 78 | 79 | #endif /* __LS_AF_ADP_H__ */ 80 | 81 | -------------------------------------------------------------------------------- /af_lib/ls_af_algorithm.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include "hi_type.h" 14 | 15 | #include "ls_af_algorithm.h" 16 | #include "ls_af_fv.h" 17 | 18 | static const char *dev_name = "/dev/lslens"; 19 | static const char *zoom_name= "/param/lens_zoom.dat"; 20 | static const char *cal_name = "/param/lens_cal.dat"; 21 | static const char *cor_name = "/param/lens_cal.bak"; 22 | 23 | typedef struct _AF_ALG 24 | { 25 | HI_BOOL af_gate; 26 | 27 | unsigned int fv_num; 28 | unsigned int best_pos; 29 | HI_U32 FV_PEAK[2]; 30 | }AF_ALG_S; 31 | 32 | static AF_ALG_S sAF = {0}; 33 | static unsigned int foc_cal_tbl[ZOOM_POINT_MAX] = {0}; 34 | static unsigned int foc_cal_tbl_base[ZOOM_POINT_MAX] = {0}; 35 | 36 | void AFAlgInit(void) 37 | { 38 | sAF.af_gate = HI_TRUE; 39 | 40 | sAF.fv_num = 1; 41 | sAF.best_pos = 0; 42 | sAF.FV_PEAK[0] = 0; 43 | sAF.FV_PEAK[1] = 0; 44 | } 45 | 46 | int ReadZoomData(void) 47 | { 48 | FILE *fp; 49 | unsigned int zp = 0; 50 | 51 | fp = fopen(zoom_name, "a+"); 52 | if (fp == NULL) 53 | { 54 | printf("open %s failed!\n", zoom_name); 55 | return -1; 56 | } 57 | 58 | fread(&zp, 4, 1, fp); 59 | if ( zp > ZOOM_POINT_MAX-1) 60 | { 61 | printf("read zoom data failed!\n"); 62 | return -1; 63 | } 64 | printf("read zp is %d\n", zp); 65 | fclose(fp); 66 | 67 | return zp; 68 | } 69 | 70 | int WriteZoomData(unsigned int zp) 71 | { 72 | FILE *fp; 73 | 74 | fp = fopen(zoom_name, "w+"); 75 | if (fp == NULL) 76 | { 77 | printf("open %s failed!\n", zoom_name); 78 | return -1; 79 | } 80 | 81 | fwrite(&zp, 4, 1, fp); 82 | fclose(fp); 83 | 84 | return 0; 85 | } 86 | 87 | static int ReadCalData(const char *f_name) 88 | { 89 | FILE *fp; 90 | unsigned int i=0; 91 | 92 | fp = fopen(f_name, "r"); 93 | if (fp == NULL) 94 | { 95 | printf("open %s failed!\n", f_name); 96 | return -1; 97 | } 98 | 99 | for (i=0; i<=ZOOM_POINT_MAX-1; i++) 100 | { 101 | fread(&foc_cal_tbl[i], 4, 1, fp); 102 | if ( (foc_cal_tbl[i] < FOC_POS_MIN) || (foc_cal_tbl[i] > FOC_POS_MAX) ) 103 | { 104 | printf("cal data outoff range!\n"); 105 | return -1; 106 | } 107 | printf("read %2d data is %d\n", i, foc_cal_tbl[i]); 108 | } 109 | fclose(fp); 110 | 111 | memcpy(foc_cal_tbl_base, foc_cal_tbl, sizeof(foc_cal_tbl)); 112 | 113 | return 0; 114 | } 115 | 116 | static int WriteCalData(void) 117 | { 118 | FILE *fp; 119 | unsigned int i = 0; 120 | 121 | fp = fopen(cal_name, "w+"); 122 | if (fp == NULL) 123 | { 124 | printf("open %s failed!\n", cal_name); 125 | return -1; 126 | } 127 | 128 | for (i=0; i<=ZOOM_POINT_MAX-1; i++) 129 | { 130 | fwrite(&foc_cal_tbl[i], 4, 1, fp); 131 | } 132 | fclose(fp); 133 | 134 | return 0; 135 | } 136 | 137 | static int FV_Test(void) 138 | { 139 | int i; 140 | HI_U32 FV_P[2]; 141 | 142 | printf("FV_Test......\n"); 143 | for (i=0; i<5; i++) 144 | { 145 | FV_GetValue(FV_P); 146 | printf("Adjust--->FV_P=%4d\n", FV_P[1]); 147 | FV_GetVD(); 148 | } 149 | 150 | return 0; 151 | } 152 | 153 | static int AdjustCalData(unsigned int zp) 154 | { 155 | int i, ret, fd; 156 | float k = 1.0; 157 | unsigned int pos; 158 | MOTOR_DIR_E dir; 159 | HI_U32 FV_P[2], FV_N[2]; 160 | 161 | if ( (zp != 7) && (zp != 9) && (zp != 11) && (zp != 13) && 162 | (zp != 15) && (zp != 17) && (zp != 18) && (zp != 19) ) 163 | //if ( (zp < 7) || (zp == 20)) 164 | { 165 | return 0; 166 | } 167 | 168 | fd = open(dev_name, O_RDWR); 169 | if (fd < 0) 170 | { 171 | printf("open %s failed!\n", dev_name); 172 | return -1; 173 | } 174 | 175 | pos = FOC_INT_TBL[zp]*2; 176 | for (i=0; i<4; i++) 177 | { 178 | FV_GetValue(FV_P); 179 | printf("Adjust--->FV_P=%4d\n", FV_P[1]); 180 | FV_GetVD(); 181 | } 182 | //usleep(150*1000); 183 | //FV_GetValue(FV_P); 184 | ioctl(fd, LENS_IOC_SETFOCPOS, &pos); 185 | ioctl(fd, LENS_IOC_GETFOCDIR, &dir); 186 | for (i=0; i<4; i++) 187 | { 188 | FV_GetValue(FV_N); 189 | printf("Adjust--->FV_N=%4d\n", FV_N[1]); 190 | FV_GetVD(); 191 | } 192 | //FV_GetVD(); 193 | //usleep(150*1000); 194 | //FV_GetValue(FV_N); 195 | if (FV_P[1] != 0) 196 | { 197 | k = (float)FV_N[1] / (float)FV_P[1]; 198 | } 199 | printf("Adjust--->zp=%d k=%f FV_P=%4d FV_N=%4d\n", zp, k, FV_P[1], FV_N[1]); 200 | 201 | if ( ((dir == MOTOR_REV) && ((int)(FV_N[1] - FV_P[1]) > 10) ) || 202 | ((dir == MOTOR_FWD) && ((int)(FV_P[1] - FV_N[1]) > 10) ) ) 203 | { 204 | for (i=6; i<=ZOOM_POINT_MAX-1; i++) 205 | { 206 | if ( (foc_cal_tbl[i] + FOC_ADJ_TBL[i]) <= (foc_cal_tbl_base[i] + FOC_INF_TBL[i]) ) 207 | { 208 | if ( (k < 1.15) && (k > 0.85) ) 209 | { 210 | foc_cal_tbl[i] += FOC_ADJ_TBL[i]*2; 211 | } 212 | else 213 | { 214 | foc_cal_tbl[i] += FOC_ADJ_TBL[i]; 215 | } 216 | } 217 | } 218 | } 219 | else if ( ((dir == MOTOR_FWD) && ((int)(FV_N[1] - FV_P[1]) > 10) ) || 220 | ((dir == MOTOR_REV) && ((int)(FV_P[1] - FV_N[1]) > 10) ) ) 221 | { 222 | for (i=6; i<=ZOOM_POINT_MAX-1; i++) 223 | { 224 | if ( (foc_cal_tbl[i] - FOC_ADJ_TBL[i]) >= (foc_cal_tbl_base[i] - FOC_INF_TBL[i]) ) 225 | { 226 | if ( (k < 1.15) && (k > 0.85) ) 227 | { 228 | foc_cal_tbl[i] -= FOC_ADJ_TBL[i]*2; 229 | } 230 | else 231 | { 232 | foc_cal_tbl[i] -= FOC_ADJ_TBL[i]; 233 | } 234 | } 235 | } 236 | } 237 | 238 | for (i=0; i<=ZOOM_POINT_MAX-1; i++) 239 | { 240 | printf("Adjust %2d data is %d\n", i, foc_cal_tbl[i]); 241 | } 242 | 243 | ret = write(fd, (unsigned char *)foc_cal_tbl, sizeof(foc_cal_tbl)); 244 | if (ret != sizeof(foc_cal_tbl)) 245 | { 246 | printf("write cal data failed!\n"); 247 | return -1; 248 | } 249 | 250 | return 0; 251 | } 252 | 253 | static int AdjustLensData(void) 254 | { 255 | int i, ret, fd; 256 | int diff=0; 257 | float k=1.0; 258 | unsigned int zp=0; 259 | 260 | fd = open(dev_name, O_RDWR); 261 | if (fd < 0) 262 | { 263 | printf("open %s failed!\n", dev_name); 264 | return -1; 265 | } 266 | 267 | ioctl(fd, LENS_IOC_GETZOOMPOINT, &zp); 268 | if (zp < 7) return 0; 269 | 270 | diff = sAF.best_pos - foc_cal_tbl_base[zp]; 271 | printf("diff=%d, best_pos=%4d\n", diff, sAF.best_pos); 272 | for (i=7; i<=ZOOM_POINT_MAX-1; i++) 273 | { 274 | k = (float)FOC_CVR_TBL[i] / (float)FOC_CVR_TBL[zp]; 275 | foc_cal_tbl[i] = foc_cal_tbl_base[i] + k * diff; 276 | printf("Adjust %2d %f data is %d\n", i, k, foc_cal_tbl[i]); 277 | } 278 | 279 | ret = write(fd, (unsigned char *)foc_cal_tbl, sizeof(foc_cal_tbl)); 280 | if (ret != sizeof(foc_cal_tbl)) 281 | { 282 | printf("write cal data failed!\n"); 283 | return -1; 284 | } 285 | 286 | return 0; 287 | } 288 | /* 289 | static int FocusRangeConfig(int fd) 290 | { 291 | int ret = -1; 292 | unsigned int zp = 0; 293 | unsigned int pos = 0; 294 | 295 | ret = ioctl(fd, LENS_IOC_GETFOCPOS, &pos); 296 | ret |= ioctl(fd, LENS_IOC_GETZOOMPOINT, &zp); 297 | 298 | //if (abs((focus_tbl[zp] + FOCUS_HOME_POS) - pos) > focus_sch_tbl[zp] ) 299 | if (abs(foc_cal_tbl[zp] - pos) > 120 ) 300 | { 301 | return -1; 302 | } 303 | if ( (pos <= FOCUS_POS_MIN) || (pos >= FOCUS_POS_MAX) ) 304 | { 305 | return -1; 306 | } 307 | 308 | return 0; 309 | } 310 | */ 311 | int CMD_LensInit(void) 312 | { 313 | int fd = -1; 314 | int ret = -1; 315 | 316 | fd = open(dev_name, O_RDWR); 317 | if (fd < 0) 318 | { 319 | printf("open %s failed!\n", dev_name); 320 | return -1; 321 | } 322 | 323 | ret = ReadCalData(cal_name); 324 | if (ret < 0 ) 325 | { 326 | printf("read cal data failed!\n"); 327 | return -1; 328 | } 329 | ret = write(fd, (unsigned char *)foc_cal_tbl, sizeof(foc_cal_tbl)); 330 | if (ret != sizeof(foc_cal_tbl)) 331 | { 332 | printf("write cal data failed!\n"); 333 | return -1; 334 | } 335 | 336 | ret = ioctl(fd, LENS_IOC_INIT); 337 | if (ret < 0) 338 | { 339 | printf("ioctl LENS_IOC_INIT failed!\n"); 340 | } 341 | close(fd); 342 | 343 | return ret; 344 | } 345 | 346 | int CMD_LensResume(void) 347 | { 348 | int fd = -1; 349 | int ret = -1; 350 | int i,zp = 0; 351 | 352 | fd = open(dev_name, O_RDWR); 353 | if (fd < 0) 354 | { 355 | printf("open %s failed!\n", dev_name); 356 | return -1; 357 | } 358 | 359 | ret = ReadCalData(cal_name); 360 | if (ret < 0 ) 361 | { 362 | printf("read cal data failed!\n"); 363 | return -1; 364 | } 365 | ret = write(fd, (unsigned char *)foc_cal_tbl, sizeof(foc_cal_tbl)); 366 | if (ret != sizeof(foc_cal_tbl)) 367 | { 368 | printf("write cal data failed!\n"); 369 | return -1; 370 | } 371 | 372 | ret = ioctl(fd, LENS_IOC_INIT); 373 | if (ret < 0) 374 | { 375 | printf("ioctl LENS_IOC_INIT failed!\n"); 376 | goto err; 377 | } 378 | sleep(1); // tzq@20170110 add for init no complete will lost step 379 | 380 | zp = ReadZoomData(); 381 | if (zp < 0) 382 | { 383 | printf("ReadZoomData failed!\n"); 384 | goto err; 385 | } 386 | for (i=1; i<=zp; i++) 387 | { 388 | ioctl(fd, LENS_IOC_SETZOOMPOINT, &i); 389 | usleep(10000); 390 | } 391 | 392 | close(fd); 393 | return 0; 394 | 395 | err: 396 | close(fd); 397 | return -1; 398 | } 399 | 400 | int CMD_LensFocPlus(unsigned int pos) 401 | { 402 | int fd = -1; 403 | int ret = -1; 404 | unsigned int zp = 0; 405 | unsigned int fp = 0; 406 | 407 | fd = open(dev_name, O_RDWR); 408 | if (fd < 0) 409 | { 410 | printf("open %s failed!\n", dev_name); 411 | return -1; 412 | } 413 | 414 | ret = ioctl(fd, LENS_IOC_GETFOCPOS, &fp); 415 | ret = ioctl(fd, LENS_IOC_GETZOOMPOINT, &zp); 416 | //if (FocusRangeConfig(fd) != 0) 417 | if ( ((int)(fp - foc_cal_tbl[zp]) > (int)FOC_SCH_TBL[zp]) || (fp >= FOC_POS_MAX) ) 418 | { 419 | printf("Lens in max focus!\n"); 420 | return -1; 421 | } 422 | //FV_Test(); 423 | 424 | ret = ioctl(fd, LENS_IOC_FOCPLUS, &pos); 425 | if (ret < 0) 426 | { 427 | printf("ioctl LENS_IOC_FOCPLUS failed!\n"); 428 | } 429 | close(fd); 430 | 431 | return ret; 432 | } 433 | 434 | int CMD_LensFocMinus(unsigned int pos) 435 | { 436 | int fd = -1; 437 | int ret = -1; 438 | unsigned int zp = 0; 439 | unsigned int fp = 0; 440 | 441 | fd = open(dev_name, O_RDWR); 442 | if (fd < 0) 443 | { 444 | printf("open %s failed!\n", dev_name); 445 | return -1; 446 | } 447 | 448 | ret = ioctl(fd, LENS_IOC_GETFOCPOS, &fp); 449 | ret = ioctl(fd, LENS_IOC_GETZOOMPOINT, &zp); 450 | //if (FocusRangeConfig(fd) != 0) 451 | if ( ((int)(foc_cal_tbl[zp] - fp) > (int)FOC_SCH_TBL[zp]) || (fp <= FOC_POS_MIN) ) 452 | { 453 | printf("Lens in minus focus!\n"); 454 | return -1; 455 | } 456 | 457 | ret = ioctl(fd, LENS_IOC_FOCMINUS, &pos); 458 | if (ret < 0) 459 | { 460 | printf("ioctl LENS_IOC_ZOOMPLUS failed!\n"); 461 | } 462 | close(fd); 463 | 464 | return ret; 465 | } 466 | 467 | int CMD_LensZoomPlus(void) 468 | { 469 | int fd = -1; 470 | int ret = -1; 471 | unsigned int zp = 0; 472 | 473 | fd = open(dev_name, O_RDWR); 474 | if (fd < 0) 475 | { 476 | printf("open %s failed!\n", dev_name); 477 | return -1; 478 | } 479 | 480 | ret = ioctl(fd, LENS_IOC_GETZOOMPOINT, &zp); 481 | if (zp >= ZOOM_POINT_MAX-1) 482 | { 483 | printf("Lens in max zoom!\n"); 484 | close(fd); 485 | return -1; 486 | } 487 | //AdjustCalData(zp); 488 | 489 | ret = ioctl(fd, LENS_IOC_ZOOMPLUS); 490 | if (ret < 0) 491 | { 492 | printf("ioctl LENS_IOC_ZOOMPLUS failed!\n"); 493 | } 494 | close(fd); 495 | 496 | return ret; 497 | } 498 | 499 | int CMD_LensZoomMinus(void) 500 | { 501 | int fd = -1; 502 | int ret = -1; 503 | unsigned int zp = 0; 504 | 505 | fd = open(dev_name, O_RDWR); 506 | if (fd < 0) 507 | { 508 | printf("open %s failed!\n", dev_name); 509 | return -1; 510 | } 511 | 512 | ret = ioctl(fd, LENS_IOC_GETZOOMPOINT, &zp); 513 | if (zp <= 0) 514 | { 515 | printf("Lens in less zoom!\n"); 516 | close(fd); 517 | return -1; 518 | } 519 | //AdjustCalData(zp); 520 | 521 | ret |= ioctl(fd, LENS_IOC_ZOOMMINUS); 522 | if (ret < 0) 523 | { 524 | printf("ioctl LENS_IOC_ZOOMMINUS failed!\n"); 525 | } 526 | close(fd); 527 | 528 | return ret; 529 | } 530 | 531 | int CMD_OneKeyFocus(void) 532 | { 533 | HI_BOOL bRet = HI_FALSE; 534 | 535 | bRet = doAF(); 536 | 537 | return bRet; 538 | } 539 | 540 | int CMD_GetZoomPoint(void) 541 | { 542 | int fd = -1; 543 | int ret = -1; 544 | unsigned int zp = 0; 545 | 546 | fd = open(dev_name, O_RDWR); 547 | if (fd < 0) 548 | { 549 | printf("open %s failed!\n", dev_name); 550 | return -1; 551 | } 552 | 553 | ret = ioctl(fd, LENS_IOC_GETZOOMPOINT, &zp); 554 | if (ret < 0) 555 | { 556 | printf("ioctl LENS_IOC_GETZOOMPOINT failed!\n"); 557 | return ret; 558 | } 559 | close(fd); 560 | 561 | return zp; 562 | } 563 | /* 564 | int CMD_SetZoomPoint(unsigned int zp) 565 | { 566 | int fd = -1; 567 | int ret = -1; 568 | 569 | fd = open(dev_name, O_RDWR); 570 | if (fd < 0) 571 | { 572 | printf("open %s failed!\n", dev_name); 573 | return -1; 574 | } 575 | 576 | ret = ioctl(fd, LENS_IOC_SETZOOMPOINT, &zp); 577 | if (ret < 0) 578 | { 579 | printf("ioctl LENS_IOC_SETZOOMPOINT failed!\n"); 580 | return ret; 581 | } 582 | close(fd); 583 | 584 | return 0; 585 | } 586 | */ 587 | HI_BOOL GetAFGate(void) 588 | { 589 | return sAF.af_gate; 590 | } 591 | 592 | void SetAFGate(HI_BOOL af_gate) 593 | { 594 | sAF.af_gate = af_gate; 595 | } 596 | 597 | HI_BOOL CheckFrmChange(void) 598 | { 599 | HI_U32 FV[2]; 600 | static HI_U32 u32ChgCnt = 0; 601 | 602 | FV_GetValue(FV); 603 | if (abs(FV[sAF.fv_num]-sAF.FV_PEAK[sAF.fv_num]) > sAF.FV_PEAK[sAF.fv_num]*FV_CHN_RATIO) 604 | { 605 | u32ChgCnt++; 606 | printf("u32ChgCnt=%d\n", u32ChgCnt); 607 | printf("FV=%4d, FV_PEAK=%4d\n", FV[sAF.fv_num], sAF.FV_PEAK[sAF.fv_num]); 608 | } 609 | else 610 | { 611 | u32ChgCnt = 0; 612 | return HI_FALSE; 613 | } 614 | 615 | if (u32ChgCnt >= 30) 616 | { 617 | u32ChgCnt = 0; 618 | return HI_TRUE; 619 | } 620 | 621 | return HI_FALSE; 622 | } 623 | 624 | HI_BOOL CheckFrmStable(void) 625 | { 626 | HI_U32 FV_N[2]; 627 | static HI_U32 FV_P[2]; 628 | static HI_U32 u32StbCnt = 0; 629 | 630 | FV_GetValue(FV_N); 631 | if (abs(FV_P[sAF.fv_num]-FV_N[sAF.fv_num]) < FV_P[sAF.fv_num]*FV_STB_RATIO) 632 | { 633 | u32StbCnt++; 634 | //printf("u32StbCnt=%d\n", u32StbCnt); 635 | } 636 | else 637 | { 638 | u32StbCnt = 0; 639 | } 640 | memcpy(FV_P, FV_N, sizeof(HI_U32)*2); 641 | 642 | if (u32StbCnt >= 15) 643 | { 644 | u32StbCnt = 0; 645 | return HI_TRUE; 646 | } 647 | 648 | return HI_FALSE; 649 | } 650 | 651 | HI_BOOL CheckFrame(void) 652 | { 653 | HI_BOOL bRet; 654 | static HI_BOOL bChgFlag = HI_FALSE; 655 | static HI_U32 unStbCnt = 0; 656 | 657 | if (HI_FALSE == bChgFlag) 658 | { 659 | bChgFlag = CheckFrmChange(); 660 | } 661 | 662 | if (HI_TRUE == bChgFlag) 663 | { 664 | bRet = CheckFrmStable(); 665 | if (HI_TRUE == bRet) 666 | { 667 | unStbCnt = 0; 668 | bChgFlag = HI_FALSE; 669 | return HI_TRUE; 670 | } 671 | else //trraffic has no stable 672 | { 673 | unStbCnt++; 674 | if (unStbCnt >= 300) 675 | { 676 | unStbCnt = 0; 677 | bChgFlag = HI_FALSE; 678 | } 679 | } 680 | } 681 | 682 | return HI_FALSE; 683 | } 684 | 685 | int CalLensInit(void) 686 | { 687 | int fd = -1; 688 | int ret = -1; 689 | 690 | fd = open(dev_name, O_RDWR); 691 | if (fd < 0) 692 | { 693 | printf("open %s failed!\n", dev_name); 694 | return -1; 695 | } 696 | 697 | ret = ReadCalData(cor_name); 698 | if (ret < 0 ) 699 | { 700 | printf("read cal data failed!\n"); 701 | return -1; 702 | } 703 | ret = write(fd, (unsigned char *)foc_cal_tbl, sizeof(foc_cal_tbl)); 704 | if (ret != sizeof(foc_cal_tbl)) 705 | { 706 | printf("write cal data failed!\n"); 707 | return -1; 708 | } 709 | 710 | ret = ioctl(fd, LENS_IOC_INIT); 711 | if (ret < 0) 712 | { 713 | printf("ioctl LENS_IOC_INIT failed!\n"); 714 | } 715 | close(fd); 716 | 717 | return ret; 718 | } 719 | 720 | HI_BOOL AutoFocus(void) 721 | { 722 | int fd = -1; 723 | int ret = -1; 724 | unsigned int pos = 0; 725 | MOTOR_DIR_E dir=0; 726 | HI_U32 FV_P[2], FV_N[2]; 727 | HI_U32 i, CNT, down_cnt; 728 | 729 | printf("do AutoFocus......\n"); 730 | 731 | fd = open(dev_name, O_RDWR); 732 | if (fd < 0) 733 | { 734 | printf("open %s failed!\n", dev_name); 735 | return HI_FALSE; 736 | } 737 | 738 | i = 30; 739 | pos = 1; 740 | CNT = 4; 741 | down_cnt = 0; 742 | sAF.FV_PEAK[0] = 0; 743 | sAF.FV_PEAK[1] = 0; 744 | FV_GetValue(FV_P); 745 | do 746 | { 747 | ret = ioctl(fd, LENS_IOC_SETFOCPOS, &pos); 748 | if (ret < 0) 749 | { 750 | close(fd); 751 | printf("ioctl: LENS_IOC_SETFOCPOS failed.\n"); 752 | return HI_FALSE; 753 | } 754 | FV_GetVD(); 755 | FV_GetValue(FV_N); 756 | if (FV_N[sAF.fv_num] < FV_P[sAF.fv_num]) 757 | { 758 | down_cnt++; 759 | } 760 | else down_cnt = 0; 761 | memcpy(FV_P, FV_N, sizeof(HI_U32)*2); 762 | 763 | if (FV_N[sAF.fv_num] > sAF.FV_PEAK[sAF.fv_num]) 764 | { 765 | memcpy(sAF.FV_PEAK, FV_N, sizeof(HI_U32)*2); 766 | ioctl(fd, LENS_IOC_GETFOCPOS, &sAF.best_pos); 767 | } 768 | 769 | //printf("FV0=%4d FV1=%4d\n", FV_N[0], FV_N[1]); 770 | //printf("AF i=%3d pos=%d down_cnt=%d\n", i, pos, down_cnt); 771 | if (down_cnt >= CNT) 772 | { 773 | break; 774 | } 775 | if (sAF.af_gate == HI_FALSE) 776 | { 777 | return HI_FALSE; 778 | } 779 | }while(--i); 780 | 781 | //if (i <= 0) 782 | //{ 783 | // close(fd); 784 | // return HI_FALSE; 785 | //} 786 | ioctl(fd, LENS_IOC_GETFOCDIR, &dir); 787 | if (MOTOR_FWD == dir) 788 | { 789 | dir = MOTOR_REV; 790 | ret = ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 791 | } 792 | else 793 | { 794 | dir = MOTOR_FWD; 795 | ret = ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 796 | } 797 | 798 | printf("AF best pos is:%d\n", sAF.best_pos); 799 | ioctl(fd, LENS_IOC_GETFOCPOS, &pos); 800 | pos = abs(pos-sAF.best_pos)+FOC_BACK_RUSH; 801 | ioctl(fd, LENS_IOC_SETFOCPOS, &pos); 802 | dir = (dir == MOTOR_FWD ? MOTOR_REV:MOTOR_FWD); 803 | ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 804 | pos = FOC_BACK_RUSH; 805 | ioctl(fd, LENS_IOC_SETFOCPOS, &pos); 806 | 807 | close(fd); 808 | 809 | return HI_TRUE; 810 | } 811 | 812 | static HI_BOOL SearchConfig(void) 813 | { 814 | int fd = -1; 815 | unsigned int zp = 0; 816 | unsigned int pos = 0; 817 | unsigned int pre_pos = 0; 818 | MOTOR_DIR_E dir; 819 | HI_U32 FV_P[2], FV_N[2]; 820 | HI_U32 i, CNT, up_cnt, down_cnt, peak_cnt; 821 | 822 | fd = open(dev_name, O_RDWR); 823 | if (fd < 0) 824 | { 825 | printf("open %s failed!\n", dev_name); 826 | return -1; 827 | } 828 | 829 | ioctl(fd, LENS_IOC_GETFOCPOS, &pre_pos); 830 | ioctl(fd, LENS_IOC_GETZOOMPOINT, &zp); 831 | printf("ioctl pre_pos is: %d\n", pre_pos); 832 | 833 | if (FOC_INT_TBL[zp] >= 4) 834 | { 835 | CNT = 3; 836 | } 837 | else 838 | { 839 | CNT = 4; 840 | } 841 | 842 | if (pre_pos < foc_cal_tbl_base[zp]) 843 | { 844 | dir = MOTOR_REV; 845 | ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 846 | } 847 | else 848 | { 849 | dir = MOTOR_FWD; 850 | ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 851 | } 852 | /* 853 | pos = abs(foc_cal_tbl[zp] - pos); // do for manul focus 854 | if ( (pos > FOC_SCH_TBL[zp]) || (pos > 12)) 855 | { 856 | ioctl(fd, LENS_IOC_SETFOCPOS, &pos); 857 | } 858 | */ 859 | 860 | printf("\ndo SearchConfig 1......\n\n"); 861 | 862 | //i = 30; 863 | i = FOC_SCH_TBL[zp] / FOC_INT_TBL[zp] + CNT + 1; 864 | up_cnt = 0; 865 | down_cnt = 0; 866 | peak_cnt = 0; 867 | FV_GetValue(FV_P); 868 | do 869 | { 870 | ioctl(fd, LENS_IOC_SETFOCPOS, &FOC_INT_TBL[zp]); 871 | FV_GetVD(); 872 | FV_GetValue(FV_N); 873 | if (FV_N[sAF.fv_num] < FV_P[sAF.fv_num]) 874 | { 875 | up_cnt = 0; 876 | down_cnt++; 877 | } 878 | else 879 | { 880 | down_cnt = 0; 881 | up_cnt++; 882 | } 883 | memcpy(FV_P, FV_N, sizeof(HI_U32)*2); 884 | 885 | printf("FV0=%4d FV1=%4d\n", FV_N[0], FV_N[1]); 886 | printf("AF i=%3d pos=%d down_cnt=%d up_cnt=%d\n", i, FOC_INT_TBL[zp], down_cnt, up_cnt); 887 | if (down_cnt >= CNT) 888 | { 889 | down_cnt = 0; 890 | peak_cnt++; 891 | //i = 30; 892 | i = FOC_SCH_TBL[zp] / FOC_INT_TBL[zp] + CNT + 1; 893 | dir = (dir == MOTOR_FWD ? MOTOR_REV:MOTOR_FWD); 894 | ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 895 | pos = FOC_INT_TBL[zp]*CNT; 896 | ioctl(fd, LENS_IOC_SETFOCPOS, &pos); 897 | //return HI_TRUE; 898 | } 899 | if (up_cnt >= CNT) 900 | { 901 | up_cnt = 0; 902 | peak_cnt = 1; 903 | //return HI_TRUE; 904 | } 905 | if (peak_cnt >= 2) 906 | { 907 | close(fd); 908 | return HI_TRUE; 909 | } 910 | if (sAF.af_gate == HI_FALSE) 911 | { 912 | return HI_FALSE; 913 | } 914 | } while(--i); 915 | 916 | ioctl(fd, LENS_IOC_SETZOOMPOINT, &zp); // while search failed return default pos 917 | usleep(10000); 918 | 919 | if (pre_pos < foc_cal_tbl_base[zp]) 920 | { 921 | dir = MOTOR_FWD; 922 | ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 923 | } 924 | else 925 | { 926 | dir = MOTOR_REV; 927 | ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 928 | } 929 | 930 | printf("\ndo SearchConfig 2......\n\n"); 931 | 932 | //i = 30; 933 | i = FOC_SCH_TBL[zp] / FOC_INT_TBL[zp] + CNT + 1; 934 | up_cnt = 0; 935 | down_cnt = 0; 936 | peak_cnt = 0; 937 | FV_GetValue(FV_P); 938 | do 939 | { 940 | ioctl(fd, LENS_IOC_SETFOCPOS, &FOC_INT_TBL[zp]); 941 | FV_GetVD(); 942 | FV_GetValue(FV_N); 943 | if (FV_N[sAF.fv_num] < FV_P[sAF.fv_num]) 944 | { 945 | up_cnt = 0; 946 | down_cnt++; 947 | } 948 | else 949 | { 950 | down_cnt = 0; 951 | up_cnt++; 952 | } 953 | memcpy(FV_P, FV_N, sizeof(HI_U32)*2); 954 | 955 | printf("FV0=%4d FV1=%4d\n", FV_N[0], FV_N[1]); 956 | printf("AF i=%3d pos=%d down_cnt=%d up_cnt=%d\n", i, FOC_INT_TBL[zp], down_cnt, up_cnt); 957 | if (down_cnt >= CNT) 958 | { 959 | down_cnt = 0; 960 | peak_cnt++; 961 | //i = 30; 962 | i = FOC_SCH_TBL[zp] / FOC_INT_TBL[zp] + CNT + 1; 963 | dir = (dir == MOTOR_FWD ? MOTOR_REV:MOTOR_FWD); 964 | ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 965 | pos = FOC_INT_TBL[zp]*CNT; 966 | ioctl(fd, LENS_IOC_SETFOCPOS, &pos); 967 | //return HI_TRUE; 968 | } 969 | if (up_cnt >= CNT) 970 | { 971 | up_cnt = 0; 972 | peak_cnt = 1; 973 | //return HI_TRUE; 974 | } 975 | if (peak_cnt >= 2) 976 | { 977 | close(fd); 978 | return HI_TRUE; 979 | } 980 | if (sAF.af_gate == HI_FALSE) 981 | { 982 | return HI_FALSE; 983 | } 984 | } while(--i); 985 | 986 | ioctl(fd, LENS_IOC_SETZOOMPOINT, &zp); // while search failed return default pos 987 | close(fd); 988 | 989 | return HI_FALSE; 990 | } 991 | 992 | HI_BOOL doAF(void) 993 | { 994 | HI_BOOL bRet = HI_FALSE; 995 | 996 | bRet = SearchConfig(); 997 | printf("SearchConfig bRet=%d\n", bRet); 998 | if (bRet) 999 | { 1000 | bRet = AutoFocus(); 1001 | if (bRet) 1002 | { 1003 | AdjustLensData(); 1004 | } 1005 | } 1006 | 1007 | return bRet; 1008 | } 1009 | 1010 | static HI_BOOL CalSch(void) 1011 | { 1012 | int fd = -1; 1013 | unsigned int zp = 0; 1014 | unsigned int pos = 0; 1015 | MOTOR_DIR_E dir; 1016 | HI_U32 FV_P[2], FV_N[2]; 1017 | HI_U32 i, CNT, up_cnt, down_cnt, peak_cnt; 1018 | 1019 | fd = open(dev_name, O_RDWR); 1020 | if (fd < 0) 1021 | { 1022 | printf("open %s failed!\n", dev_name); 1023 | return -1; 1024 | } 1025 | 1026 | ioctl(fd, LENS_IOC_GETFOCPOS, &pos); 1027 | ioctl(fd, LENS_IOC_GETZOOMPOINT, &zp); 1028 | printf("ioctl pos is: %d\n", pos); 1029 | 1030 | if (FOC_INT_TBL[zp] >= 4) 1031 | { 1032 | CNT = 3; 1033 | } 1034 | else 1035 | { 1036 | CNT = 4; 1037 | } 1038 | 1039 | if (pos < foc_cal_tbl[zp]) 1040 | { 1041 | dir = MOTOR_REV; 1042 | ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 1043 | } 1044 | else 1045 | { 1046 | dir = MOTOR_FWD; 1047 | ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 1048 | } 1049 | 1050 | i = 100; 1051 | up_cnt = 0; 1052 | down_cnt = 0; 1053 | peak_cnt = 0; 1054 | FV_GetValue(FV_P); 1055 | do 1056 | { 1057 | ioctl(fd, LENS_IOC_SETFOCPOS, &FOC_INT_TBL[zp]); 1058 | FV_GetVD(); 1059 | FV_GetValue(FV_N); 1060 | if (FV_N[sAF.fv_num] < FV_P[sAF.fv_num]) 1061 | { 1062 | up_cnt = 0; 1063 | down_cnt++; 1064 | } 1065 | else 1066 | { 1067 | down_cnt = 0; 1068 | up_cnt++; 1069 | } 1070 | memcpy(FV_P, FV_N, sizeof(HI_U32)*2); 1071 | 1072 | printf("FV0=%4d FV1=%4d\n", FV_N[0], FV_N[1]); 1073 | printf("AF i=%3d pos=%d down_cnt=%d up_cnt=%d\n", i, FOC_INT_TBL[zp], down_cnt, up_cnt); 1074 | if (down_cnt >= CNT) 1075 | { 1076 | down_cnt = 0; 1077 | peak_cnt++; 1078 | i = 100; 1079 | dir = (dir == MOTOR_FWD ? MOTOR_REV:MOTOR_FWD); 1080 | ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 1081 | pos = FOC_INT_TBL[zp]*CNT; 1082 | ioctl(fd, LENS_IOC_SETFOCPOS, &pos); 1083 | //return HI_TRUE; 1084 | } 1085 | if (up_cnt >= CNT) 1086 | { 1087 | up_cnt = 0; 1088 | peak_cnt = 1; 1089 | //return HI_TRUE; 1090 | } 1091 | if (peak_cnt >= 2) 1092 | { 1093 | close(fd); 1094 | return HI_TRUE; 1095 | } 1096 | if (sAF.af_gate == HI_FALSE) 1097 | { 1098 | return HI_FALSE; 1099 | } 1100 | } while(--i); 1101 | 1102 | ioctl(fd, LENS_IOC_SETZOOMPOINT, &zp); // while search failed return default pos 1103 | close(fd); 1104 | 1105 | return HI_FALSE; 1106 | } 1107 | 1108 | static HI_BOOL CalAF(void) 1109 | { 1110 | HI_BOOL bRet = HI_FALSE; 1111 | 1112 | bRet = CalSch(); 1113 | printf("SearchConfig bRet=%d\n", bRet); 1114 | if (bRet) 1115 | { 1116 | bRet = AutoFocus(); 1117 | } 1118 | 1119 | return bRet; 1120 | } 1121 | 1122 | HI_BOOL doCal(void) 1123 | { 1124 | unsigned int i = 0; 1125 | HI_BOOL bRet = HI_FALSE; 1126 | 1127 | if (CalLensInit() != 0) 1128 | { 1129 | printf("CalLensInit failed!\n"); 1130 | return HI_FALSE; 1131 | } 1132 | sleep(1); 1133 | 1134 | for (i=0; i<=ZOOM_POINT_MAX-1; i++) 1135 | { 1136 | bRet = CalAF(); 1137 | if (HI_FALSE == bRet) 1138 | { 1139 | printf("CalAF failed!\n"); 1140 | return HI_FALSE; 1141 | } 1142 | 1143 | printf("ZP=%2d, Pos=%4d FV=%4d\n", i, sAF.best_pos, sAF.FV_PEAK[sAF.fv_num]); 1144 | foc_cal_tbl[i] = sAF.best_pos; 1145 | 1146 | CMD_LensZoomPlus(); 1147 | usleep(100000); 1148 | } 1149 | //CMD_LensInit(); 1150 | if (WriteCalData() != 0) return HI_FALSE; 1151 | 1152 | return HI_TRUE; 1153 | } 1154 | 1155 | -------------------------------------------------------------------------------- /af_lib/ls_af_algorithm.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_af_algorithm.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/05/10 10 | Description : 11 | History : 12 | 13 | Date : 2016/05/10 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_AF_ALGORITHM_H__ 20 | #define __LS_AF_ALGORITHM_H__ 21 | 22 | #define FV_CHN_RATIO 0.12 23 | #define FV_STB_RATIO 0.12 24 | 25 | #include "hi_type.h" 26 | #include "../len_drv/ls_lens_drv.h" 27 | 28 | 29 | void AFAlgInit(void); 30 | 31 | int CMD_LensInit(void); 32 | int CMD_LensResume(void); 33 | int CMD_LensFocPlus(unsigned int pos); 34 | int CMD_LensFocMinus(unsigned int pos); 35 | int CMD_LensZoomPlus(void); 36 | int CMD_LensZoomMinus(void); 37 | int CMD_OneKeyFocus(void); 38 | int CMD_GetZoomPoint(void); 39 | int CMD_SetZoomPoint(unsigned int zp); 40 | 41 | int ReadZoomData(void); 42 | int WriteZoomData(unsigned int zp); 43 | 44 | HI_BOOL GetAFGate(void); 45 | void SetAFGate(HI_BOOL af_gate); 46 | HI_BOOL CheckFrame(void); 47 | HI_BOOL doCal(void); 48 | HI_BOOL doAF(void); 49 | 50 | #endif /* __LS_AF_ALGORITHM_H__ */ 51 | 52 | -------------------------------------------------------------------------------- /af_lib/ls_af_fv.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "ls_af_fv.h" 5 | 6 | #include "hi_type.h" 7 | #include "mpi_isp.h" 8 | #include "mpi_ae.h" 9 | 10 | #define BLEND_SHIFT 6 11 | #define ALPHA 64 12 | #define BELTA 54 13 | 14 | #define AF_BLOCK_8X8 15 | 16 | #ifdef AF_BLOCK_8X8 17 | static int AFWeight[8][8] = { 18 | {1,1,1,1,1,1,1,1,}, 19 | {1,2,2,2,2,2,2,1,}, 20 | {1,2,2,2,2,2,2,1,}, 21 | {1,2,2,2,2,2,2,1,}, 22 | {1,2,2,2,2,2,2,1,}, 23 | {1,2,2,2,2,2,2,1,}, 24 | {1,2,2,2,2,2,2,1,}, 25 | {1,1,1,1,1,1,1,1,}, 26 | }; 27 | #else 28 | static int AFWeight[15][17] = { 29 | {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 30 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 31 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 32 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 33 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 34 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 35 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 36 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 37 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 38 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 39 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 40 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 41 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 42 | {1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}, 43 | {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 44 | }; 45 | #endif 46 | 47 | #ifdef AF_BLOCK_8X8 48 | static ISP_FOCUS_STATISTICS_CFG_S stFocusCfg = { 49 | {1, 8, 8, 1920, 1080, 1, 0}, 50 | {{0, 1, 1}, {188, 0, 0, 414, -165, 400, -164}, {7, 0, 3, 2}, 127}, 51 | {{0, 1, 0}, {200, 0, 0, 200, -55, 0, 0}, {6, 0, 1, 0}, 31}, 52 | {{-6, 12, 22, 12, -6}, 511}, 53 | {{-16, 21, 0, -21, 16}, 10}, 54 | {0, {0, 0}, {3, 2}} 55 | }; 56 | #else 57 | static ISP_FOCUS_STATISTICS_CFG_S stFocusCfg = { 58 | {1, 17, 15, 1920, 1080, 1, 0}, 59 | {{0, 1, 1}, {188, 0, 0, 414, -165, 400, -164}, {7, 0, 3, 2}, 127}, 60 | {{0, 1, 0}, {200, 0, 0, 200, -55, 0, 0}, {6, 0, 1, 0}, 31}, 61 | {{-6, 12, 22, 12, -6}, 511}, 62 | {{-16, 21, 0, -21, 16}, 10}, 63 | {0, {0, 0}, {3, 2}} 64 | } 65 | #endif 66 | 67 | static int MapISO(int iso) 68 | { 69 | int j, i = (iso >= 200); 70 | 71 | i += ( (iso >= (200 << 1)) + (iso >= (400 << 1)) + (iso >= (400 << 2)) + 72 | (iso >= (400 << 3)) + (iso >= (400 << 4)) ); 73 | i += ( (iso >= (400 << 5)) + (iso >= (400 << 6)) + (iso >= (400 << 7)) + 74 | (iso >= (400 << 8)) + (iso >= (400 << 9)) ); 75 | j = ( (iso > (112 << i)) + (iso > (125 << i)) + (iso > (141 << i)) + 76 | (iso > (158 << i)) + (iso > (178 << i)) ); 77 | 78 | return (i * 6 + j + (iso >= 25) + (iso >= 50) + (iso >= 100)); 79 | } 80 | 81 | /* 82 | * step1: set AF static widnow to 8x8 block 83 | */ 84 | int FV_Init(void) 85 | { 86 | HI_S32 s32Ret = HI_SUCCESS; 87 | ISP_DEV IspDev = 0; 88 | ISP_STATISTICS_CFG_S stIspStaticsCfg; 89 | ISP_PUB_ATTR_S stPubattr; 90 | 91 | s32Ret = HI_MPI_ISP_GetStatisticsConfig(IspDev, & stIspStaticsCfg); 92 | s32Ret |= HI_MPI_ISP_GetPubAttr(IspDev, &stPubattr); 93 | if (HI_SUCCESS != s32Ret) 94 | { 95 | printf("HI_MPI_ISP_GetStatisticsConfig error!(s32Ret = 0x%x)\n", s32Ret); 96 | return HI_FAILURE; 97 | } 98 | 99 | stFocusCfg.stConfig.u16Vsize = stPubattr.stWndRect.u32Height; 100 | stFocusCfg.stConfig.u16Hsize = stPubattr.stWndRect.u32Width; 101 | 102 | memcpy(&stIspStaticsCfg.stFocusCfg, &stFocusCfg, sizeof(ISP_FOCUS_STATISTICS_CFG_S)); 103 | s32Ret = HI_MPI_ISP_SetStatisticsConfig(IspDev, & stIspStaticsCfg); 104 | if (HI_SUCCESS != s32Ret) 105 | { 106 | printf("HI_MPI_ISP_SetStatisticsConfig error!(s32Ret = 0x%x)\n", s32Ret); 107 | return HI_FAILURE; 108 | } 109 | //FV_MapISO(); 110 | 111 | return HI_SUCCESS; 112 | } 113 | 114 | int FV_MapISO(void) 115 | { 116 | HI_S32 s32Ret = HI_SUCCESS; 117 | ISP_DEV IspDev = 0; 118 | HI_U32 u32Iso; 119 | ISP_EXP_INFO_S stExpInfo; 120 | ISP_STATISTICS_CFG_S stIspStaticsCfg; 121 | 122 | s32Ret = HI_MPI_ISP_GetStatisticsConfig(IspDev, &stIspStaticsCfg); 123 | HI_MPI_ISP_QueryExposureInfo(IspDev, &stExpInfo); 124 | u32Iso = (HI_U64)stExpInfo.u32AGain * stExpInfo.u32DGain * 125 | stExpInfo.u32ISPDGain * 100 >> 30; 126 | stIspStaticsCfg.stFocusCfg.stHParam_IIR0.u16IIRThd = MapISO(u32Iso) << 3; 127 | s32Ret |= HI_MPI_ISP_SetStatisticsConfig(IspDev, &stIspStaticsCfg); 128 | if (HI_SUCCESS != s32Ret) 129 | { 130 | printf("HI_MPI_ISP_SetStatisticsConfig error!(s32Ret = 0x%x)\n", s32Ret); 131 | return HI_FAILURE; 132 | } 133 | 134 | return HI_SUCCESS; 135 | } 136 | 137 | int FV_GetVD(void) 138 | { 139 | HI_S32 s32Ret = HI_SUCCESS; 140 | ISP_DEV IspDev = 0; 141 | ISP_VD_INFO_S stVdInfo; 142 | 143 | s32Ret = HI_MPI_ISP_GetVDTimeOut(IspDev, &stVdInfo, 5000); 144 | if (HI_SUCCESS != s32Ret) 145 | { 146 | printf("HI_MPI_ISP_GetVDTimeOut error!(s32Ret = 0x%x)\n", s32Ret); 147 | return HI_FAILURE; 148 | } 149 | 150 | return HI_SUCCESS; 151 | } 152 | 153 | int FV_GetValue(HI_U32 FV[2]) 154 | { 155 | HI_S32 s32Ret = HI_SUCCESS; 156 | ISP_DEV IspDev = 0; 157 | ISP_STATISTICS_S stIspStatics; 158 | 159 | s32Ret = HI_MPI_ISP_GetStatistics(IspDev, &stIspStatics); 160 | if (HI_SUCCESS != s32Ret) 161 | { 162 | printf("HI_MPI_ISP_GetStatistics error!(s32Ret = 0x%x)\n", s32Ret); 163 | return HI_FAILURE; 164 | } 165 | 166 | HI_U32 i, j; 167 | HI_U32 u32SumFv1 = 0; 168 | HI_U32 u32SumFv2 = 0; 169 | HI_U32 u32WgtSum = 0; 170 | HI_U32 u32Fv1_n, u32Fv2_n; 171 | for ( i = 0 ; i < stFocusCfg.stConfig.u16Vwnd; i++ ) 172 | { 173 | for ( j = 0 ; j < stFocusCfg.stConfig.u16Hwnd; j++ ) 174 | { 175 | HI_U32 u32H1 = stIspStatics.stFocusStat.stZoneMetrics[i][j].u16h1; 176 | HI_U32 u32H2 = stIspStatics.stFocusStat.stZoneMetrics[i][j].u16h2; 177 | HI_U32 u32V1 = stIspStatics.stFocusStat.stZoneMetrics[i][j].u16v1; 178 | HI_U32 u32V2 = stIspStatics.stFocusStat.stZoneMetrics[i][j].u16v2; 179 | u32Fv1_n = (u32H1 * ALPHA + u32V1 * ((1<> BLEND_SHIFT; 180 | u32Fv2_n = (u32H2 * BELTA + u32V2 * ((1<> BLEND_SHIFT; 181 | u32SumFv1 += AFWeight[i][j] * u32Fv1_n; 182 | u32SumFv2 += AFWeight[i][j] * u32Fv2_n; 183 | u32WgtSum += AFWeight[i][j]; 184 | } 185 | } 186 | FV[0] = u32SumFv1 / u32WgtSum; 187 | FV[1] = u32SumFv2 / u32WgtSum; 188 | //printf("%4d %4d\n", FV[0], FV[1]); 189 | //FV_MapISO(); 190 | 191 | return HI_SUCCESS; 192 | } 193 | 194 | -------------------------------------------------------------------------------- /af_lib/ls_af_fv.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_af_fv.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/05/10 10 | Description : 11 | History : 12 | 13 | Date : 2016/05/10 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_AF_FV_H__ 20 | #define __LS_AF_FV_H__ 21 | 22 | #include "hi_type.h" 23 | 24 | int FV_Init(void); 25 | int FV_MapISO(void); 26 | int FV_GetVD(void); 27 | int FV_GetValue(HI_U32 FV[2]); 28 | 29 | #endif /* __LS_AF_FV_H__ */ 30 | 31 | -------------------------------------------------------------------------------- /af_lib/ls_af_ptz.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_af_ptz.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/08/24 10 | Description : 11 | History : 12 | 13 | Date : 2016/08/24 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_AF_PTZ_H__ 20 | #define __LS_AF_PTZ_H__ 21 | 22 | #include "hi_type.h" 23 | #include "sys_env_type.h" 24 | #include "AVAccessEnvType.h" 25 | 26 | typedef enum 27 | { 28 | UART_BAUD_RATE_110 = 0, 29 | UART_BAUD_RATE_300, 30 | UART_BAUD_RATE_600, 31 | UART_BAUD_RATE_1200, 32 | UART_BAUD_RATE_2400, 33 | UART_BAUD_RATE_4800, 34 | UART_BAUD_RATE_9600, 35 | UART_BAUD_RATE_19200, 36 | UART_BAUD_RATE_38400, 37 | UART_BAUD_RATE_57600, 38 | UART_BAUD_RATE_115200, 39 | UART_BAUD_RATE_230400, 40 | UART_BAUD_RATE_460800, 41 | UART_BAUD_RATE_921600, 42 | } UART_BAUD_RATE_E; 43 | 44 | typedef enum 45 | { 46 | PROTOCOL_PELCO_D = 0, 47 | PROTOCOL_PELCO_P, 48 | } PROTOCOL_PELCO_E; 49 | 50 | typedef enum 51 | { 52 | PTZ_CMD_STOP = 0, 53 | PTZ_CMD_LEFT, 54 | PTZ_CMD_RIGHT, 55 | PTZ_CMD_UP, 56 | PTZ_CMD_DOWN, 57 | PTZ_CMD_LEFTUP, /*向左上*/ 58 | PTZ_CMD_LEFTDOWN, /*向左下*/ 59 | PTZ_CMD_RIGHTUP, /*向右上*/ 60 | PTZ_CMD_RIGHTDOWN, /*向右下*/ 61 | 62 | PTZ_CMD_ZOOM_WIDE = 9, 63 | PTZ_CMD_ZOOM_TELE, 64 | PTZ_CMD_FOCUS_FAR, 65 | PTZ_CMD_FOCUS_NEAR, 66 | PTZ_CMD_FOCUS_STOP, 67 | PTZ_CMD_IRIS_OPEN, //光圈加 68 | PTZ_CMD_IRIS_CLOSE, //光圈减 69 | PTZ_CMD_PRESET_SET, 70 | PTZ_CMD_PRESET_CLEAR, 71 | PTZ_CMD_PRESET_GOTO, 72 | PTZ_CMD_HOME_GOTO, 73 | PTZ_CMD_HOME_SET = 20 , 74 | PTZ_CMD_ONEKEYFOCUS, //一键聚集 75 | PTZ_CMD_INITLENS, //初始化镜头 76 | PTZ_CMD_LENS_CORRECTION, //镜头校正 77 | PTZ_CMD_ZOOM_STOP, 78 | PTZ_CMD_TOUR_START, //开始巡航 79 | PTZ_CMD_TOUR_STOP, //停止巡航 80 | PTZ_CMD_PT, //PT位置值 81 | PTZ_CMD_END 82 | } PtzControlCmd; 83 | 84 | typedef enum 85 | { 86 | AF_OK = 0, 87 | 88 | AF_PTZ_ZOOM_LIMIT = 1, 89 | AF_PTZ_FOCUS_LIMIT = 2, 90 | } AF_ERRCODE_E; 91 | 92 | typedef struct 93 | { 94 | AVAccessPtzOption *pPtzOption; 95 | SysInfo *pSysInfo; 96 | }SysInfo_PtzOption; 97 | 98 | HI_BOOL GetCalResult(void); 99 | 100 | int PtzInit(PROTOCOL_PELCO_E protocal, UART_BAUD_RATE_E baudrate, HI_U8 dev_addr); 101 | int PtzExit(void); 102 | 103 | int SetPtzCmd(HI_U32 cmd, HI_VOID *pValue); 104 | int PtzCtrl(void); 105 | int SendPtzOn(void); 106 | int CreatePtzThread(void); 107 | 108 | #endif /* __LS_AF_PTZ_H__ */ 109 | 110 | -------------------------------------------------------------------------------- /af_lib/ls_af_visca.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_af_visca.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/11/01 10 | Description : 11 | History : 12 | 13 | Date : 2016/11/01 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_AF_VISCA_H_ 20 | #define __LS_AF_VISCA_H_ 21 | 22 | #ifdef __cpusplus 23 | #if __cplusplus 24 | extern "C"{ 25 | #endif 26 | #endif /* End of #ifdef __cplusplus */ 27 | 28 | static const short VISCA_ZOOM_RATIO[40] = 29 | { 30 | 0x0010, // X01 tzq@20170116 change for speed cannot change at 1x 31 | 0x077A, // tzq@20170116 add for zoom point 32 | 0x0EF4, // tzq@20170116 add for zoom point 33 | 0x166F, 34 | 0x1B2F, // tzq@20170116 add for zoom point 35 | 0x1FF0, 36 | 0x257D, 37 | 0x2940, // X05 38 | 0x2C02, 39 | 0x2E2B, 40 | 0x2FEE, 41 | 0x316A, 42 | 0x32B2, // X10 43 | 0x33D4, 44 | 0x34D9, 45 | 0x35C8, 46 | 0x36A4, 47 | 0x3773, // X15 48 | 0x3836, 49 | 0x38F0, 50 | 0x39A0, 51 | 0x3A49, 52 | 0x3AE8, // X20 53 | 0x3B7F, 54 | 0x3C0C, 55 | 0x3C8E, 56 | 0x3D06, 57 | 0x3D73, // X25 58 | 0x3DD4, 59 | 0x3E27, 60 | 0x3E7C, 61 | 0x3EC2, 62 | 0x3F00, // X30 63 | 0x3F38, 64 | 0x3F68, 65 | 0x3F94, 66 | 0x3FBD, 67 | 0x3FDF, 68 | 0x4000, // X40 69 | }; 70 | 71 | static const char VISCA_SET_ZOOM_POS[5] = {0x81, 0x09, 0x04, 0x47, 0xff}; // for hi3516 is set pos 72 | static const char VISCA_GET_ZOOM_POS[9] = {0x81, 0x01, 0x04, 0x47, 0x00, 0x00, 0x00, 0x00, 0xff}; // for hi3516 is get pos 73 | static const char VISCA_AF_TRIGGER[6] = {0x81, 0x01, 0x04, 0x18, 0x01, 0xff}; 74 | static const char VISCA_AUTO_FOCUS[6] = {0x81, 0x01, 0x04, 0x38, 0x02, 0xff}; 75 | static const char VISCA_MANUAL_FOCUS[6] = {0x81, 0x01, 0x04, 0x38, 0x03, 0xff}; 76 | 77 | #ifdef __cplusplus 78 | #if __cplusplus 79 | } 80 | #endif 81 | #endif 82 | 83 | #endif 84 | 85 | -------------------------------------------------------------------------------- /af_lib/obj/ls_af_adp.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/af_lib/obj/ls_af_adp.o -------------------------------------------------------------------------------- /af_lib/obj/ls_af_algorithm.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/af_lib/obj/ls_af_algorithm.o -------------------------------------------------------------------------------- /af_lib/obj/ls_af_fv.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/af_lib/obj/ls_af_fv.o -------------------------------------------------------------------------------- /af_lib/obj/ls_af_ptz.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/af_lib/obj/ls_af_ptz.o -------------------------------------------------------------------------------- /af_lib/sys_env_type.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/af_lib/sys_env_type.h -------------------------------------------------------------------------------- /cal_dat/18_Section/lens_cal.bak: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/cal_dat/18_Section/lens_cal.bak -------------------------------------------------------------------------------- /cal_dat/18_Section/lens_cal.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/cal_dat/18_Section/lens_cal.dat -------------------------------------------------------------------------------- /cal_dat/21_Section/lens_cal.bak: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/cal_dat/21_Section/lens_cal.bak -------------------------------------------------------------------------------- /cal_dat/21_Section/lens_cal.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/cal_dat/21_Section/lens_cal.dat -------------------------------------------------------------------------------- /cal_dat/21_Section_2/lens_cal.bak: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/cal_dat/21_Section_2/lens_cal.bak -------------------------------------------------------------------------------- /cal_dat/21_Section_2/lens_cal.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/cal_dat/21_Section_2/lens_cal.dat -------------------------------------------------------------------------------- /len_drv/.lens_drv.ko.cmd: -------------------------------------------------------------------------------- 1 | cmd_/home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.ko := arm-hisiv300-linux-ld -EL -r -T /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/scripts/module-common.lds --build-id -o /home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.ko /home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.o /home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.mod.o 2 | -------------------------------------------------------------------------------- /len_drv/.lens_drv.mod.o.cmd: -------------------------------------------------------------------------------- 1 | cmd_/home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.mod.o := arm-hisiv300-linux-gcc -Wp,-MD,/home/tan/job/hi3516d/code/speed_dome/len_drv/.lens_drv.mod.o.d -nostdinc -isystem /opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include -I/home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include -Iarch/arm/include/generated -Iinclude -include /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-hi3516a/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -marm -fno-dwarf2-cfi-asm -fno-aggressive-loop-optimizations -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I/home/tan/job/hi3516d/code/speed_dome/len_drv/ -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(lens_drv.mod)" -D"KBUILD_MODNAME=KBUILD_STR(lens_drv)" -DMODULE -c -o /home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.mod.o /home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.mod.c 2 | 3 | source_/home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.mod.o := /home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.mod.c 4 | 5 | deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.mod.o := \ 6 | $(wildcard include/config/module/unload.h) \ 7 | include/linux/module.h \ 8 | $(wildcard include/config/sysfs.h) \ 9 | $(wildcard include/config/modules.h) \ 10 | $(wildcard include/config/unused/symbols.h) \ 11 | $(wildcard include/config/generic/bug.h) \ 12 | $(wildcard include/config/kallsyms.h) \ 13 | $(wildcard include/config/smp.h) \ 14 | $(wildcard include/config/tracepoints.h) \ 15 | $(wildcard include/config/tracing.h) \ 16 | $(wildcard include/config/event/tracing.h) \ 17 | $(wildcard include/config/ftrace/mcount/record.h) \ 18 | $(wildcard include/config/constructors.h) \ 19 | $(wildcard include/config/debug/set/module/ronx.h) \ 20 | include/linux/list.h \ 21 | $(wildcard include/config/debug/list.h) \ 22 | include/linux/types.h \ 23 | $(wildcard include/config/uid16.h) \ 24 | $(wildcard include/config/lbdaf.h) \ 25 | $(wildcard include/config/arch/dma/addr/t/64bit.h) \ 26 | $(wildcard include/config/phys/addr/t/64bit.h) \ 27 | $(wildcard include/config/64bit.h) \ 28 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/types.h \ 29 | include/asm-generic/int-ll64.h \ 30 | arch/arm/include/generated/asm/bitsperlong.h \ 31 | include/asm-generic/bitsperlong.h \ 32 | include/linux/posix_types.h \ 33 | include/linux/stddef.h \ 34 | include/linux/compiler.h \ 35 | $(wildcard include/config/sparse/rcu/pointer.h) \ 36 | $(wildcard include/config/trace/branch/profiling.h) \ 37 | $(wildcard include/config/profile/all/branches.h) \ 38 | $(wildcard include/config/enable/must/check.h) \ 39 | $(wildcard include/config/enable/warn/deprecated.h) \ 40 | include/linux/compiler-gcc.h \ 41 | $(wildcard include/config/arch/supports/optimized/inlining.h) \ 42 | $(wildcard include/config/optimize/inlining.h) \ 43 | include/linux/compiler-gcc4.h \ 44 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/posix_types.h \ 45 | include/asm-generic/posix_types.h \ 46 | include/linux/poison.h \ 47 | $(wildcard include/config/illegal/pointer/value.h) \ 48 | include/linux/const.h \ 49 | include/linux/stat.h \ 50 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/stat.h \ 51 | include/linux/time.h \ 52 | $(wildcard include/config/arch/uses/gettimeoffset.h) \ 53 | include/linux/cache.h \ 54 | $(wildcard include/config/arch/has/cache/line/size.h) \ 55 | include/linux/kernel.h \ 56 | $(wildcard include/config/preempt/voluntary.h) \ 57 | $(wildcard include/config/debug/atomic/sleep.h) \ 58 | $(wildcard include/config/prove/locking.h) \ 59 | $(wildcard include/config/ring/buffer.h) \ 60 | $(wildcard include/config/numa.h) \ 61 | $(wildcard include/config/compaction.h) \ 62 | include/linux/sysinfo.h \ 63 | /opt/hisi-linux/x86-arm/arm-hisiv300-linux/lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include/stdarg.h \ 64 | include/linux/linkage.h \ 65 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/linkage.h \ 66 | include/linux/bitops.h \ 67 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bitops.h \ 68 | include/linux/irqflags.h \ 69 | $(wildcard include/config/trace/irqflags.h) \ 70 | $(wildcard include/config/irqsoff/tracer.h) \ 71 | $(wildcard include/config/preempt/tracer.h) \ 72 | $(wildcard include/config/trace/irqflags/support.h) \ 73 | include/linux/typecheck.h \ 74 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/irqflags.h \ 75 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/ptrace.h \ 76 | $(wildcard include/config/cpu/endian/be8.h) \ 77 | $(wildcard include/config/arm/thumb.h) \ 78 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/hwcap.h \ 79 | include/asm-generic/bitops/non-atomic.h \ 80 | include/asm-generic/bitops/fls64.h \ 81 | include/asm-generic/bitops/sched.h \ 82 | include/asm-generic/bitops/hweight.h \ 83 | include/asm-generic/bitops/arch_hweight.h \ 84 | include/asm-generic/bitops/const_hweight.h \ 85 | include/asm-generic/bitops/lock.h \ 86 | include/asm-generic/bitops/le.h \ 87 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/byteorder.h \ 88 | include/linux/byteorder/little_endian.h \ 89 | include/linux/swab.h \ 90 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/swab.h \ 91 | include/linux/byteorder/generic.h \ 92 | include/asm-generic/bitops/ext2-atomic-setbit.h \ 93 | include/linux/log2.h \ 94 | $(wildcard include/config/arch/has/ilog2/u32.h) \ 95 | $(wildcard include/config/arch/has/ilog2/u64.h) \ 96 | include/linux/printk.h \ 97 | $(wildcard include/config/printk.h) \ 98 | $(wildcard include/config/dynamic/debug.h) \ 99 | include/linux/init.h \ 100 | $(wildcard include/config/hotplug.h) \ 101 | include/linux/dynamic_debug.h \ 102 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/div64.h \ 103 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/compiler.h \ 104 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bug.h \ 105 | $(wildcard include/config/bug.h) \ 106 | $(wildcard include/config/thumb2/kernel.h) \ 107 | $(wildcard include/config/debug/bugverbose.h) \ 108 | $(wildcard include/config/arm/lpae.h) \ 109 | include/asm-generic/bug.h \ 110 | $(wildcard include/config/generic/bug/relative/pointers.h) \ 111 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/cache.h \ 112 | $(wildcard include/config/arm/l1/cache/shift.h) \ 113 | $(wildcard include/config/aeabi.h) \ 114 | include/linux/seqlock.h \ 115 | include/linux/spinlock.h \ 116 | $(wildcard include/config/debug/spinlock.h) \ 117 | $(wildcard include/config/generic/lockbreak.h) \ 118 | $(wildcard include/config/preempt.h) \ 119 | $(wildcard include/config/debug/lock/alloc.h) \ 120 | include/linux/preempt.h \ 121 | $(wildcard include/config/debug/preempt.h) \ 122 | $(wildcard include/config/preempt/count.h) \ 123 | $(wildcard include/config/preempt/notifiers.h) \ 124 | include/linux/thread_info.h \ 125 | $(wildcard include/config/compat.h) \ 126 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/thread_info.h \ 127 | $(wildcard include/config/arm/thumbee.h) \ 128 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/fpstate.h \ 129 | $(wildcard include/config/vfpv3.h) \ 130 | $(wildcard include/config/iwmmxt.h) \ 131 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/domain.h \ 132 | $(wildcard include/config/io/36.h) \ 133 | $(wildcard include/config/cpu/use/domains.h) \ 134 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/barrier.h \ 135 | $(wildcard include/config/cpu/32v6k.h) \ 136 | $(wildcard include/config/cpu/xsc3.h) \ 137 | $(wildcard include/config/cpu/fa526.h) \ 138 | $(wildcard include/config/arch/has/barriers.h) \ 139 | $(wildcard include/config/arm/dma/mem/bufferable.h) \ 140 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/outercache.h \ 141 | $(wildcard include/config/outer/cache/sync.h) \ 142 | $(wildcard include/config/outer/cache.h) \ 143 | include/linux/stringify.h \ 144 | include/linux/bottom_half.h \ 145 | include/linux/spinlock_types.h \ 146 | include/linux/spinlock_types_up.h \ 147 | include/linux/lockdep.h \ 148 | $(wildcard include/config/lockdep.h) \ 149 | $(wildcard include/config/lock/stat.h) \ 150 | $(wildcard include/config/prove/rcu.h) \ 151 | include/linux/rwlock_types.h \ 152 | include/linux/spinlock_up.h \ 153 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/processor.h \ 154 | $(wildcard include/config/have/hw/breakpoint.h) \ 155 | $(wildcard include/config/mmu.h) \ 156 | $(wildcard include/config/arm/errata/754327.h) \ 157 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/hw_breakpoint.h \ 158 | include/linux/rwlock.h \ 159 | include/linux/spinlock_api_up.h \ 160 | include/linux/atomic.h \ 161 | $(wildcard include/config/arch/has/atomic/or.h) \ 162 | $(wildcard include/config/generic/atomic64.h) \ 163 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/atomic.h \ 164 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/cmpxchg.h \ 165 | $(wildcard include/config/cpu/sa1100.h) \ 166 | $(wildcard include/config/cpu/sa110.h) \ 167 | $(wildcard include/config/cpu/v6.h) \ 168 | include/asm-generic/cmpxchg-local.h \ 169 | include/asm-generic/atomic-long.h \ 170 | include/linux/math64.h \ 171 | include/linux/kmod.h \ 172 | $(wildcard include/config/hisi/snapshot/boot.h) \ 173 | include/linux/gfp.h \ 174 | $(wildcard include/config/kmemcheck.h) \ 175 | $(wildcard include/config/highmem.h) \ 176 | $(wildcard include/config/zone/dma.h) \ 177 | $(wildcard include/config/zone/dma32.h) \ 178 | $(wildcard include/config/pm/sleep.h) \ 179 | include/linux/mmzone.h \ 180 | $(wildcard include/config/force/max/zoneorder.h) \ 181 | $(wildcard include/config/memory/hotplug.h) \ 182 | $(wildcard include/config/sparsemem.h) \ 183 | $(wildcard include/config/have/memblock/node/map.h) \ 184 | $(wildcard include/config/discontigmem.h) \ 185 | $(wildcard include/config/flat/node/mem/map.h) \ 186 | $(wildcard include/config/cgroup/mem/res/ctlr.h) \ 187 | $(wildcard include/config/no/bootmem.h) \ 188 | $(wildcard include/config/have/memory/present.h) \ 189 | $(wildcard include/config/have/memoryless/nodes.h) \ 190 | $(wildcard include/config/need/node/memmap/size.h) \ 191 | $(wildcard include/config/have/memblock/node.h) \ 192 | $(wildcard include/config/need/multiple/nodes.h) \ 193 | $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ 194 | $(wildcard include/config/flatmem.h) \ 195 | $(wildcard include/config/sparsemem/extreme.h) \ 196 | $(wildcard include/config/have/arch/pfn/valid.h) \ 197 | $(wildcard include/config/nodes/span/other/nodes.h) \ 198 | $(wildcard include/config/holes/in/zone.h) \ 199 | $(wildcard include/config/arch/has/holes/memorymodel.h) \ 200 | include/linux/wait.h \ 201 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/current.h \ 202 | include/linux/threads.h \ 203 | $(wildcard include/config/nr/cpus.h) \ 204 | $(wildcard include/config/base/small.h) \ 205 | include/linux/numa.h \ 206 | $(wildcard include/config/nodes/shift.h) \ 207 | include/linux/nodemask.h \ 208 | include/linux/bitmap.h \ 209 | include/linux/string.h \ 210 | $(wildcard include/config/binary/printf.h) \ 211 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/string.h \ 212 | include/linux/pageblock-flags.h \ 213 | $(wildcard include/config/hugetlb/page.h) \ 214 | $(wildcard include/config/hugetlb/page/size/variable.h) \ 215 | include/generated/bounds.h \ 216 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/page.h \ 217 | $(wildcard include/config/cpu/copy/v3.h) \ 218 | $(wildcard include/config/cpu/copy/v4wt.h) \ 219 | $(wildcard include/config/cpu/copy/v4wb.h) \ 220 | $(wildcard include/config/cpu/copy/feroceon.h) \ 221 | $(wildcard include/config/cpu/copy/fa.h) \ 222 | $(wildcard include/config/cpu/xscale.h) \ 223 | $(wildcard include/config/cpu/copy/v6.h) \ 224 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/glue.h \ 225 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/pgtable-2level-types.h \ 226 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/memory.h \ 227 | $(wildcard include/config/need/mach/memory/h.h) \ 228 | $(wildcard include/config/page/offset.h) \ 229 | $(wildcard include/config/dram/size.h) \ 230 | $(wildcard include/config/dram/base.h) \ 231 | $(wildcard include/config/have/tcm.h) \ 232 | $(wildcard include/config/arm/patch/phys/virt.h) \ 233 | $(wildcard include/config/phys/offset.h) \ 234 | arch/arm/include/generated/asm/sizes.h \ 235 | include/asm-generic/sizes.h \ 236 | arch/arm/mach-hi3516a/include/mach/memory.h \ 237 | include/asm-generic/memory_model.h \ 238 | $(wildcard include/config/sparsemem/vmemmap.h) \ 239 | include/asm-generic/getorder.h \ 240 | include/linux/memory_hotplug.h \ 241 | $(wildcard include/config/memory/hotremove.h) \ 242 | $(wildcard include/config/have/arch/nodedata/extension.h) \ 243 | include/linux/notifier.h \ 244 | include/linux/errno.h \ 245 | arch/arm/include/generated/asm/errno.h \ 246 | include/asm-generic/errno.h \ 247 | include/asm-generic/errno-base.h \ 248 | include/linux/mutex.h \ 249 | $(wildcard include/config/debug/mutexes.h) \ 250 | $(wildcard include/config/have/arch/mutex/cpu/relax.h) \ 251 | include/linux/mutex-debug.h \ 252 | include/linux/rwsem.h \ 253 | $(wildcard include/config/rwsem/generic/spinlock.h) \ 254 | include/linux/rwsem-spinlock.h \ 255 | include/linux/srcu.h \ 256 | include/linux/rcupdate.h \ 257 | $(wildcard include/config/rcu/torture/test.h) \ 258 | $(wildcard include/config/tree/rcu.h) \ 259 | $(wildcard include/config/tree/preempt/rcu.h) \ 260 | $(wildcard include/config/rcu/trace.h) \ 261 | $(wildcard include/config/preempt/rcu.h) \ 262 | $(wildcard include/config/tiny/rcu.h) \ 263 | $(wildcard include/config/tiny/preempt/rcu.h) \ 264 | $(wildcard include/config/debug/objects/rcu/head.h) \ 265 | $(wildcard include/config/hotplug/cpu.h) \ 266 | $(wildcard include/config/preempt/rt.h) \ 267 | include/linux/cpumask.h \ 268 | $(wildcard include/config/cpumask/offstack.h) \ 269 | $(wildcard include/config/debug/per/cpu/maps.h) \ 270 | $(wildcard include/config/disable/obsolete/cpumask/functions.h) \ 271 | include/linux/bug.h \ 272 | include/linux/completion.h \ 273 | include/linux/debugobjects.h \ 274 | $(wildcard include/config/debug/objects.h) \ 275 | $(wildcard include/config/debug/objects/free.h) \ 276 | include/linux/rcutiny.h \ 277 | include/linux/topology.h \ 278 | $(wildcard include/config/sched/smt.h) \ 279 | $(wildcard include/config/sched/mc.h) \ 280 | $(wildcard include/config/sched/book.h) \ 281 | $(wildcard include/config/use/percpu/numa/node/id.h) \ 282 | include/linux/smp.h \ 283 | $(wildcard include/config/use/generic/smp/helpers.h) \ 284 | include/linux/percpu.h \ 285 | $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ 286 | $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ 287 | $(wildcard include/config/have/setup/per/cpu/area.h) \ 288 | include/linux/pfn.h \ 289 | arch/arm/include/generated/asm/percpu.h \ 290 | include/asm-generic/percpu.h \ 291 | include/linux/percpu-defs.h \ 292 | $(wildcard include/config/debug/force/weak/per/cpu.h) \ 293 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/topology.h \ 294 | $(wildcard include/config/arm/cpu/topology.h) \ 295 | include/asm-generic/topology.h \ 296 | include/linux/mmdebug.h \ 297 | $(wildcard include/config/debug/vm.h) \ 298 | $(wildcard include/config/debug/virtual.h) \ 299 | include/linux/workqueue.h \ 300 | $(wildcard include/config/debug/objects/work.h) \ 301 | $(wildcard include/config/freezer.h) \ 302 | include/linux/timer.h \ 303 | $(wildcard include/config/timer/stats.h) \ 304 | $(wildcard include/config/debug/objects/timers.h) \ 305 | include/linux/ktime.h \ 306 | $(wildcard include/config/ktime/scalar.h) \ 307 | include/linux/jiffies.h \ 308 | include/linux/timex.h \ 309 | include/linux/param.h \ 310 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/param.h \ 311 | $(wildcard include/config/hz.h) \ 312 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/timex.h \ 313 | arch/arm/mach-hi3516a/include/mach/timex.h \ 314 | include/linux/sysctl.h \ 315 | $(wildcard include/config/sysctl.h) \ 316 | include/linux/rbtree.h \ 317 | include/linux/elf.h \ 318 | include/linux/elf-em.h \ 319 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/elf.h \ 320 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/user.h \ 321 | include/linux/kobject.h \ 322 | include/linux/sysfs.h \ 323 | include/linux/kobject_ns.h \ 324 | include/linux/kref.h \ 325 | include/linux/moduleparam.h \ 326 | $(wildcard include/config/alpha.h) \ 327 | $(wildcard include/config/ia64.h) \ 328 | $(wildcard include/config/ppc64.h) \ 329 | include/linux/tracepoint.h \ 330 | include/linux/static_key.h \ 331 | include/linux/jump_label.h \ 332 | $(wildcard include/config/jump/label.h) \ 333 | include/linux/export.h \ 334 | $(wildcard include/config/symbol/prefix.h) \ 335 | $(wildcard include/config/modversions.h) \ 336 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/module.h \ 337 | $(wildcard include/config/arm/unwind.h) \ 338 | include/linux/vermagic.h \ 339 | include/generated/utsrelease.h \ 340 | 341 | /home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.mod.o: $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.mod.o) 342 | 343 | $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.mod.o): 344 | -------------------------------------------------------------------------------- /len_drv/.lens_drv.o.cmd: -------------------------------------------------------------------------------- 1 | cmd_/home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.o := arm-hisiv300-linux-ld -EL -r -o /home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.o 2 | -------------------------------------------------------------------------------- /len_drv/.ls_lens_41908.o.cmd: -------------------------------------------------------------------------------- 1 | cmd_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.o := arm-hisiv300-linux-gcc -Wp,-MD,/home/tan/job/hi3516d/code/speed_dome/len_drv/.ls_lens_41908.o.d -nostdinc -isystem /opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include -I/home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include -Iarch/arm/include/generated -Iinclude -include /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-hi3516a/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -marm -fno-dwarf2-cfi-asm -fno-aggressive-loop-optimizations -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I/home/tan/job/hi3516d/code/speed_dome/len_drv/ -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ls_lens_41908)" -D"KBUILD_MODNAME=KBUILD_STR(lens_drv)" -c -o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.c 2 | 3 | source_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.o := /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.c 4 | 5 | deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.o := \ 6 | include/linux/delay.h \ 7 | include/linux/kernel.h \ 8 | $(wildcard include/config/lbdaf.h) \ 9 | $(wildcard include/config/preempt/voluntary.h) \ 10 | $(wildcard include/config/debug/atomic/sleep.h) \ 11 | $(wildcard include/config/prove/locking.h) \ 12 | $(wildcard include/config/ring/buffer.h) \ 13 | $(wildcard include/config/tracing.h) \ 14 | $(wildcard include/config/numa.h) \ 15 | $(wildcard include/config/compaction.h) \ 16 | $(wildcard include/config/ftrace/mcount/record.h) \ 17 | include/linux/sysinfo.h \ 18 | include/linux/types.h \ 19 | $(wildcard include/config/uid16.h) \ 20 | $(wildcard include/config/arch/dma/addr/t/64bit.h) \ 21 | $(wildcard include/config/phys/addr/t/64bit.h) \ 22 | $(wildcard include/config/64bit.h) \ 23 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/types.h \ 24 | include/asm-generic/int-ll64.h \ 25 | arch/arm/include/generated/asm/bitsperlong.h \ 26 | include/asm-generic/bitsperlong.h \ 27 | include/linux/posix_types.h \ 28 | include/linux/stddef.h \ 29 | include/linux/compiler.h \ 30 | $(wildcard include/config/sparse/rcu/pointer.h) \ 31 | $(wildcard include/config/trace/branch/profiling.h) \ 32 | $(wildcard include/config/profile/all/branches.h) \ 33 | $(wildcard include/config/enable/must/check.h) \ 34 | $(wildcard include/config/enable/warn/deprecated.h) \ 35 | include/linux/compiler-gcc.h \ 36 | $(wildcard include/config/arch/supports/optimized/inlining.h) \ 37 | $(wildcard include/config/optimize/inlining.h) \ 38 | include/linux/compiler-gcc4.h \ 39 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/posix_types.h \ 40 | include/asm-generic/posix_types.h \ 41 | /opt/hisi-linux/x86-arm/arm-hisiv300-linux/lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include/stdarg.h \ 42 | include/linux/linkage.h \ 43 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/linkage.h \ 44 | include/linux/bitops.h \ 45 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bitops.h \ 46 | $(wildcard include/config/smp.h) \ 47 | include/linux/irqflags.h \ 48 | $(wildcard include/config/trace/irqflags.h) \ 49 | $(wildcard include/config/irqsoff/tracer.h) \ 50 | $(wildcard include/config/preempt/tracer.h) \ 51 | $(wildcard include/config/trace/irqflags/support.h) \ 52 | include/linux/typecheck.h \ 53 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/irqflags.h \ 54 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/ptrace.h \ 55 | $(wildcard include/config/cpu/endian/be8.h) \ 56 | $(wildcard include/config/arm/thumb.h) \ 57 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/hwcap.h \ 58 | include/asm-generic/bitops/non-atomic.h \ 59 | include/asm-generic/bitops/fls64.h \ 60 | include/asm-generic/bitops/sched.h \ 61 | include/asm-generic/bitops/hweight.h \ 62 | include/asm-generic/bitops/arch_hweight.h \ 63 | include/asm-generic/bitops/const_hweight.h \ 64 | include/asm-generic/bitops/lock.h \ 65 | include/asm-generic/bitops/le.h \ 66 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/byteorder.h \ 67 | include/linux/byteorder/little_endian.h \ 68 | include/linux/swab.h \ 69 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/swab.h \ 70 | include/linux/byteorder/generic.h \ 71 | include/asm-generic/bitops/ext2-atomic-setbit.h \ 72 | include/linux/log2.h \ 73 | $(wildcard include/config/arch/has/ilog2/u32.h) \ 74 | $(wildcard include/config/arch/has/ilog2/u64.h) \ 75 | include/linux/printk.h \ 76 | $(wildcard include/config/printk.h) \ 77 | $(wildcard include/config/dynamic/debug.h) \ 78 | include/linux/init.h \ 79 | $(wildcard include/config/modules.h) \ 80 | $(wildcard include/config/hotplug.h) \ 81 | include/linux/dynamic_debug.h \ 82 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/div64.h \ 83 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/compiler.h \ 84 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bug.h \ 85 | $(wildcard include/config/bug.h) \ 86 | $(wildcard include/config/thumb2/kernel.h) \ 87 | $(wildcard include/config/debug/bugverbose.h) \ 88 | $(wildcard include/config/arm/lpae.h) \ 89 | include/asm-generic/bug.h \ 90 | $(wildcard include/config/generic/bug.h) \ 91 | $(wildcard include/config/generic/bug/relative/pointers.h) \ 92 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/delay.h \ 93 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/param.h \ 94 | $(wildcard include/config/hz.h) \ 95 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/io.h \ 96 | $(wildcard include/config/arm/dma/mem/bufferable.h) \ 97 | $(wildcard include/config/need/mach/io/h.h) \ 98 | $(wildcard include/config/pcmcia/soc/common.h) \ 99 | $(wildcard include/config/pci.h) \ 100 | $(wildcard include/config/isa.h) \ 101 | $(wildcard include/config/pccard.h) \ 102 | $(wildcard include/config/mmu.h) \ 103 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/memory.h \ 104 | $(wildcard include/config/need/mach/memory/h.h) \ 105 | $(wildcard include/config/page/offset.h) \ 106 | $(wildcard include/config/highmem.h) \ 107 | $(wildcard include/config/dram/size.h) \ 108 | $(wildcard include/config/dram/base.h) \ 109 | $(wildcard include/config/have/tcm.h) \ 110 | $(wildcard include/config/arm/patch/phys/virt.h) \ 111 | $(wildcard include/config/phys/offset.h) \ 112 | $(wildcard include/config/hisi/snapshot/boot.h) \ 113 | include/linux/const.h \ 114 | arch/arm/include/generated/asm/sizes.h \ 115 | include/asm-generic/sizes.h \ 116 | arch/arm/mach-hi3516a/include/mach/memory.h \ 117 | include/asm-generic/memory_model.h \ 118 | $(wildcard include/config/flatmem.h) \ 119 | $(wildcard include/config/discontigmem.h) \ 120 | $(wildcard include/config/sparsemem/vmemmap.h) \ 121 | $(wildcard include/config/sparsemem.h) \ 122 | include/asm-generic/pci_iomap.h \ 123 | $(wildcard include/config/no/generic/pci/ioport/map.h) \ 124 | $(wildcard include/config/generic/pci/iomap.h) \ 125 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/barrier.h \ 126 | $(wildcard include/config/cpu/32v6k.h) \ 127 | $(wildcard include/config/cpu/xsc3.h) \ 128 | $(wildcard include/config/cpu/fa526.h) \ 129 | $(wildcard include/config/arch/has/barriers.h) \ 130 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/outercache.h \ 131 | $(wildcard include/config/outer/cache/sync.h) \ 132 | $(wildcard include/config/outer/cache.h) \ 133 | arch/arm/mach-hi3516a/include/mach/io.h \ 134 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.h \ 135 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.h \ 136 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.h \ 137 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.h \ 138 | 139 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.o: $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.o) 140 | 141 | $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.o): 142 | -------------------------------------------------------------------------------- /len_drv/.ls_lens_drv.o.cmd: -------------------------------------------------------------------------------- 1 | cmd_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.o := arm-hisiv300-linux-gcc -Wp,-MD,/home/tan/job/hi3516d/code/speed_dome/len_drv/.ls_lens_drv.o.d -nostdinc -isystem /opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include -I/home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include -Iarch/arm/include/generated -Iinclude -include /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-hi3516a/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -marm -fno-dwarf2-cfi-asm -fno-aggressive-loop-optimizations -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I/home/tan/job/hi3516d/code/speed_dome/len_drv/ -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ls_lens_drv)" -D"KBUILD_MODNAME=KBUILD_STR(lens_drv)" -c -o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.c 2 | 3 | source_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.o := /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.c 4 | 5 | deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.o := \ 6 | include/linux/module.h \ 7 | $(wildcard include/config/sysfs.h) \ 8 | $(wildcard include/config/modules.h) \ 9 | $(wildcard include/config/unused/symbols.h) \ 10 | $(wildcard include/config/generic/bug.h) \ 11 | $(wildcard include/config/kallsyms.h) \ 12 | $(wildcard include/config/smp.h) \ 13 | $(wildcard include/config/tracepoints.h) \ 14 | $(wildcard include/config/tracing.h) \ 15 | $(wildcard include/config/event/tracing.h) \ 16 | $(wildcard include/config/ftrace/mcount/record.h) \ 17 | $(wildcard include/config/module/unload.h) \ 18 | $(wildcard include/config/constructors.h) \ 19 | $(wildcard include/config/debug/set/module/ronx.h) \ 20 | include/linux/list.h \ 21 | $(wildcard include/config/debug/list.h) \ 22 | include/linux/types.h \ 23 | $(wildcard include/config/uid16.h) \ 24 | $(wildcard include/config/lbdaf.h) \ 25 | $(wildcard include/config/arch/dma/addr/t/64bit.h) \ 26 | $(wildcard include/config/phys/addr/t/64bit.h) \ 27 | $(wildcard include/config/64bit.h) \ 28 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/types.h \ 29 | include/asm-generic/int-ll64.h \ 30 | arch/arm/include/generated/asm/bitsperlong.h \ 31 | include/asm-generic/bitsperlong.h \ 32 | include/linux/posix_types.h \ 33 | include/linux/stddef.h \ 34 | include/linux/compiler.h \ 35 | $(wildcard include/config/sparse/rcu/pointer.h) \ 36 | $(wildcard include/config/trace/branch/profiling.h) \ 37 | $(wildcard include/config/profile/all/branches.h) \ 38 | $(wildcard include/config/enable/must/check.h) \ 39 | $(wildcard include/config/enable/warn/deprecated.h) \ 40 | include/linux/compiler-gcc.h \ 41 | $(wildcard include/config/arch/supports/optimized/inlining.h) \ 42 | $(wildcard include/config/optimize/inlining.h) \ 43 | include/linux/compiler-gcc4.h \ 44 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/posix_types.h \ 45 | include/asm-generic/posix_types.h \ 46 | include/linux/poison.h \ 47 | $(wildcard include/config/illegal/pointer/value.h) \ 48 | include/linux/const.h \ 49 | include/linux/stat.h \ 50 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/stat.h \ 51 | include/linux/time.h \ 52 | $(wildcard include/config/arch/uses/gettimeoffset.h) \ 53 | include/linux/cache.h \ 54 | $(wildcard include/config/arch/has/cache/line/size.h) \ 55 | include/linux/kernel.h \ 56 | $(wildcard include/config/preempt/voluntary.h) \ 57 | $(wildcard include/config/debug/atomic/sleep.h) \ 58 | $(wildcard include/config/prove/locking.h) \ 59 | $(wildcard include/config/ring/buffer.h) \ 60 | $(wildcard include/config/numa.h) \ 61 | $(wildcard include/config/compaction.h) \ 62 | include/linux/sysinfo.h \ 63 | /opt/hisi-linux/x86-arm/arm-hisiv300-linux/lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include/stdarg.h \ 64 | include/linux/linkage.h \ 65 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/linkage.h \ 66 | include/linux/bitops.h \ 67 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bitops.h \ 68 | include/linux/irqflags.h \ 69 | $(wildcard include/config/trace/irqflags.h) \ 70 | $(wildcard include/config/irqsoff/tracer.h) \ 71 | $(wildcard include/config/preempt/tracer.h) \ 72 | $(wildcard include/config/trace/irqflags/support.h) \ 73 | include/linux/typecheck.h \ 74 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/irqflags.h \ 75 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/ptrace.h \ 76 | $(wildcard include/config/cpu/endian/be8.h) \ 77 | $(wildcard include/config/arm/thumb.h) \ 78 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/hwcap.h \ 79 | include/asm-generic/bitops/non-atomic.h \ 80 | include/asm-generic/bitops/fls64.h \ 81 | include/asm-generic/bitops/sched.h \ 82 | include/asm-generic/bitops/hweight.h \ 83 | include/asm-generic/bitops/arch_hweight.h \ 84 | include/asm-generic/bitops/const_hweight.h \ 85 | include/asm-generic/bitops/lock.h \ 86 | include/asm-generic/bitops/le.h \ 87 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/byteorder.h \ 88 | include/linux/byteorder/little_endian.h \ 89 | include/linux/swab.h \ 90 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/swab.h \ 91 | include/linux/byteorder/generic.h \ 92 | include/asm-generic/bitops/ext2-atomic-setbit.h \ 93 | include/linux/log2.h \ 94 | $(wildcard include/config/arch/has/ilog2/u32.h) \ 95 | $(wildcard include/config/arch/has/ilog2/u64.h) \ 96 | include/linux/printk.h \ 97 | $(wildcard include/config/printk.h) \ 98 | $(wildcard include/config/dynamic/debug.h) \ 99 | include/linux/init.h \ 100 | $(wildcard include/config/hotplug.h) \ 101 | include/linux/dynamic_debug.h \ 102 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/div64.h \ 103 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/compiler.h \ 104 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bug.h \ 105 | $(wildcard include/config/bug.h) \ 106 | $(wildcard include/config/thumb2/kernel.h) \ 107 | $(wildcard include/config/debug/bugverbose.h) \ 108 | $(wildcard include/config/arm/lpae.h) \ 109 | include/asm-generic/bug.h \ 110 | $(wildcard include/config/generic/bug/relative/pointers.h) \ 111 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/cache.h \ 112 | $(wildcard include/config/arm/l1/cache/shift.h) \ 113 | $(wildcard include/config/aeabi.h) \ 114 | include/linux/seqlock.h \ 115 | include/linux/spinlock.h \ 116 | $(wildcard include/config/debug/spinlock.h) \ 117 | $(wildcard include/config/generic/lockbreak.h) \ 118 | $(wildcard include/config/preempt.h) \ 119 | $(wildcard include/config/debug/lock/alloc.h) \ 120 | include/linux/preempt.h \ 121 | $(wildcard include/config/debug/preempt.h) \ 122 | $(wildcard include/config/preempt/count.h) \ 123 | $(wildcard include/config/preempt/notifiers.h) \ 124 | include/linux/thread_info.h \ 125 | $(wildcard include/config/compat.h) \ 126 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/thread_info.h \ 127 | $(wildcard include/config/arm/thumbee.h) \ 128 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/fpstate.h \ 129 | $(wildcard include/config/vfpv3.h) \ 130 | $(wildcard include/config/iwmmxt.h) \ 131 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/domain.h \ 132 | $(wildcard include/config/io/36.h) \ 133 | $(wildcard include/config/cpu/use/domains.h) \ 134 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/barrier.h \ 135 | $(wildcard include/config/cpu/32v6k.h) \ 136 | $(wildcard include/config/cpu/xsc3.h) \ 137 | $(wildcard include/config/cpu/fa526.h) \ 138 | $(wildcard include/config/arch/has/barriers.h) \ 139 | $(wildcard include/config/arm/dma/mem/bufferable.h) \ 140 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/outercache.h \ 141 | $(wildcard include/config/outer/cache/sync.h) \ 142 | $(wildcard include/config/outer/cache.h) \ 143 | include/linux/stringify.h \ 144 | include/linux/bottom_half.h \ 145 | include/linux/spinlock_types.h \ 146 | include/linux/spinlock_types_up.h \ 147 | include/linux/lockdep.h \ 148 | $(wildcard include/config/lockdep.h) \ 149 | $(wildcard include/config/lock/stat.h) \ 150 | $(wildcard include/config/prove/rcu.h) \ 151 | include/linux/rwlock_types.h \ 152 | include/linux/spinlock_up.h \ 153 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/processor.h \ 154 | $(wildcard include/config/have/hw/breakpoint.h) \ 155 | $(wildcard include/config/mmu.h) \ 156 | $(wildcard include/config/arm/errata/754327.h) \ 157 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/hw_breakpoint.h \ 158 | include/linux/rwlock.h \ 159 | include/linux/spinlock_api_up.h \ 160 | include/linux/atomic.h \ 161 | $(wildcard include/config/arch/has/atomic/or.h) \ 162 | $(wildcard include/config/generic/atomic64.h) \ 163 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/atomic.h \ 164 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/cmpxchg.h \ 165 | $(wildcard include/config/cpu/sa1100.h) \ 166 | $(wildcard include/config/cpu/sa110.h) \ 167 | $(wildcard include/config/cpu/v6.h) \ 168 | include/asm-generic/cmpxchg-local.h \ 169 | include/asm-generic/atomic-long.h \ 170 | include/linux/math64.h \ 171 | include/linux/kmod.h \ 172 | $(wildcard include/config/hisi/snapshot/boot.h) \ 173 | include/linux/gfp.h \ 174 | $(wildcard include/config/kmemcheck.h) \ 175 | $(wildcard include/config/highmem.h) \ 176 | $(wildcard include/config/zone/dma.h) \ 177 | $(wildcard include/config/zone/dma32.h) \ 178 | $(wildcard include/config/pm/sleep.h) \ 179 | include/linux/mmzone.h \ 180 | $(wildcard include/config/force/max/zoneorder.h) \ 181 | $(wildcard include/config/memory/hotplug.h) \ 182 | $(wildcard include/config/sparsemem.h) \ 183 | $(wildcard include/config/have/memblock/node/map.h) \ 184 | $(wildcard include/config/discontigmem.h) \ 185 | $(wildcard include/config/flat/node/mem/map.h) \ 186 | $(wildcard include/config/cgroup/mem/res/ctlr.h) \ 187 | $(wildcard include/config/no/bootmem.h) \ 188 | $(wildcard include/config/have/memory/present.h) \ 189 | $(wildcard include/config/have/memoryless/nodes.h) \ 190 | $(wildcard include/config/need/node/memmap/size.h) \ 191 | $(wildcard include/config/have/memblock/node.h) \ 192 | $(wildcard include/config/need/multiple/nodes.h) \ 193 | $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ 194 | $(wildcard include/config/flatmem.h) \ 195 | $(wildcard include/config/sparsemem/extreme.h) \ 196 | $(wildcard include/config/have/arch/pfn/valid.h) \ 197 | $(wildcard include/config/nodes/span/other/nodes.h) \ 198 | $(wildcard include/config/holes/in/zone.h) \ 199 | $(wildcard include/config/arch/has/holes/memorymodel.h) \ 200 | include/linux/wait.h \ 201 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/current.h \ 202 | include/linux/threads.h \ 203 | $(wildcard include/config/nr/cpus.h) \ 204 | $(wildcard include/config/base/small.h) \ 205 | include/linux/numa.h \ 206 | $(wildcard include/config/nodes/shift.h) \ 207 | include/linux/nodemask.h \ 208 | include/linux/bitmap.h \ 209 | include/linux/string.h \ 210 | $(wildcard include/config/binary/printf.h) \ 211 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/string.h \ 212 | include/linux/pageblock-flags.h \ 213 | $(wildcard include/config/hugetlb/page.h) \ 214 | $(wildcard include/config/hugetlb/page/size/variable.h) \ 215 | include/generated/bounds.h \ 216 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/page.h \ 217 | $(wildcard include/config/cpu/copy/v3.h) \ 218 | $(wildcard include/config/cpu/copy/v4wt.h) \ 219 | $(wildcard include/config/cpu/copy/v4wb.h) \ 220 | $(wildcard include/config/cpu/copy/feroceon.h) \ 221 | $(wildcard include/config/cpu/copy/fa.h) \ 222 | $(wildcard include/config/cpu/xscale.h) \ 223 | $(wildcard include/config/cpu/copy/v6.h) \ 224 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/glue.h \ 225 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/pgtable-2level-types.h \ 226 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/memory.h \ 227 | $(wildcard include/config/need/mach/memory/h.h) \ 228 | $(wildcard include/config/page/offset.h) \ 229 | $(wildcard include/config/dram/size.h) \ 230 | $(wildcard include/config/dram/base.h) \ 231 | $(wildcard include/config/have/tcm.h) \ 232 | $(wildcard include/config/arm/patch/phys/virt.h) \ 233 | $(wildcard include/config/phys/offset.h) \ 234 | arch/arm/include/generated/asm/sizes.h \ 235 | include/asm-generic/sizes.h \ 236 | arch/arm/mach-hi3516a/include/mach/memory.h \ 237 | include/asm-generic/memory_model.h \ 238 | $(wildcard include/config/sparsemem/vmemmap.h) \ 239 | include/asm-generic/getorder.h \ 240 | include/linux/memory_hotplug.h \ 241 | $(wildcard include/config/memory/hotremove.h) \ 242 | $(wildcard include/config/have/arch/nodedata/extension.h) \ 243 | include/linux/notifier.h \ 244 | include/linux/errno.h \ 245 | arch/arm/include/generated/asm/errno.h \ 246 | include/asm-generic/errno.h \ 247 | include/asm-generic/errno-base.h \ 248 | include/linux/mutex.h \ 249 | $(wildcard include/config/debug/mutexes.h) \ 250 | $(wildcard include/config/have/arch/mutex/cpu/relax.h) \ 251 | include/linux/mutex-debug.h \ 252 | include/linux/rwsem.h \ 253 | $(wildcard include/config/rwsem/generic/spinlock.h) \ 254 | include/linux/rwsem-spinlock.h \ 255 | include/linux/srcu.h \ 256 | include/linux/rcupdate.h \ 257 | $(wildcard include/config/rcu/torture/test.h) \ 258 | $(wildcard include/config/tree/rcu.h) \ 259 | $(wildcard include/config/tree/preempt/rcu.h) \ 260 | $(wildcard include/config/rcu/trace.h) \ 261 | $(wildcard include/config/preempt/rcu.h) \ 262 | $(wildcard include/config/tiny/rcu.h) \ 263 | $(wildcard include/config/tiny/preempt/rcu.h) \ 264 | $(wildcard include/config/debug/objects/rcu/head.h) \ 265 | $(wildcard include/config/hotplug/cpu.h) \ 266 | $(wildcard include/config/preempt/rt.h) \ 267 | include/linux/cpumask.h \ 268 | $(wildcard include/config/cpumask/offstack.h) \ 269 | $(wildcard include/config/debug/per/cpu/maps.h) \ 270 | $(wildcard include/config/disable/obsolete/cpumask/functions.h) \ 271 | include/linux/bug.h \ 272 | include/linux/completion.h \ 273 | include/linux/debugobjects.h \ 274 | $(wildcard include/config/debug/objects.h) \ 275 | $(wildcard include/config/debug/objects/free.h) \ 276 | include/linux/rcutiny.h \ 277 | include/linux/topology.h \ 278 | $(wildcard include/config/sched/smt.h) \ 279 | $(wildcard include/config/sched/mc.h) \ 280 | $(wildcard include/config/sched/book.h) \ 281 | $(wildcard include/config/use/percpu/numa/node/id.h) \ 282 | include/linux/smp.h \ 283 | $(wildcard include/config/use/generic/smp/helpers.h) \ 284 | include/linux/percpu.h \ 285 | $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ 286 | $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ 287 | $(wildcard include/config/have/setup/per/cpu/area.h) \ 288 | include/linux/pfn.h \ 289 | arch/arm/include/generated/asm/percpu.h \ 290 | include/asm-generic/percpu.h \ 291 | include/linux/percpu-defs.h \ 292 | $(wildcard include/config/debug/force/weak/per/cpu.h) \ 293 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/topology.h \ 294 | $(wildcard include/config/arm/cpu/topology.h) \ 295 | include/asm-generic/topology.h \ 296 | include/linux/mmdebug.h \ 297 | $(wildcard include/config/debug/vm.h) \ 298 | $(wildcard include/config/debug/virtual.h) \ 299 | include/linux/workqueue.h \ 300 | $(wildcard include/config/debug/objects/work.h) \ 301 | $(wildcard include/config/freezer.h) \ 302 | include/linux/timer.h \ 303 | $(wildcard include/config/timer/stats.h) \ 304 | $(wildcard include/config/debug/objects/timers.h) \ 305 | include/linux/ktime.h \ 306 | $(wildcard include/config/ktime/scalar.h) \ 307 | include/linux/jiffies.h \ 308 | include/linux/timex.h \ 309 | include/linux/param.h \ 310 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/param.h \ 311 | $(wildcard include/config/hz.h) \ 312 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/timex.h \ 313 | arch/arm/mach-hi3516a/include/mach/timex.h \ 314 | include/linux/sysctl.h \ 315 | $(wildcard include/config/sysctl.h) \ 316 | include/linux/rbtree.h \ 317 | include/linux/elf.h \ 318 | include/linux/elf-em.h \ 319 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/elf.h \ 320 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/user.h \ 321 | include/linux/kobject.h \ 322 | include/linux/sysfs.h \ 323 | include/linux/kobject_ns.h \ 324 | include/linux/kref.h \ 325 | include/linux/moduleparam.h \ 326 | $(wildcard include/config/alpha.h) \ 327 | $(wildcard include/config/ia64.h) \ 328 | $(wildcard include/config/ppc64.h) \ 329 | include/linux/tracepoint.h \ 330 | include/linux/static_key.h \ 331 | include/linux/jump_label.h \ 332 | $(wildcard include/config/jump/label.h) \ 333 | include/linux/export.h \ 334 | $(wildcard include/config/symbol/prefix.h) \ 335 | $(wildcard include/config/modversions.h) \ 336 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/module.h \ 337 | $(wildcard include/config/arm/unwind.h) \ 338 | include/linux/miscdevice.h \ 339 | include/linux/major.h \ 340 | include/linux/pm.h \ 341 | $(wildcard include/config/pm.h) \ 342 | $(wildcard include/config/pm/runtime.h) \ 343 | $(wildcard include/config/pm/clk.h) \ 344 | $(wildcard include/config/pm/generic/domains.h) \ 345 | include/linux/fcntl.h \ 346 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/fcntl.h \ 347 | include/asm-generic/fcntl.h \ 348 | include/linux/proc_fs.h \ 349 | $(wildcard include/config/proc/fs.h) \ 350 | $(wildcard include/config/proc/devicetree.h) \ 351 | $(wildcard include/config/proc/kcore.h) \ 352 | include/linux/slab.h \ 353 | $(wildcard include/config/slab/debug.h) \ 354 | $(wildcard include/config/failslab.h) \ 355 | $(wildcard include/config/slub.h) \ 356 | $(wildcard include/config/slob.h) \ 357 | $(wildcard include/config/debug/slab.h) \ 358 | $(wildcard include/config/slab.h) \ 359 | include/linux/slub_def.h \ 360 | $(wildcard include/config/slub/stats.h) \ 361 | $(wildcard include/config/slub/debug.h) \ 362 | include/linux/kmemleak.h \ 363 | $(wildcard include/config/debug/kmemleak.h) \ 364 | include/linux/fs.h \ 365 | $(wildcard include/config/fs/posix/acl.h) \ 366 | $(wildcard include/config/security.h) \ 367 | $(wildcard include/config/quota.h) \ 368 | $(wildcard include/config/fsnotify.h) \ 369 | $(wildcard include/config/ima.h) \ 370 | $(wildcard include/config/epoll.h) \ 371 | $(wildcard include/config/debug/writecount.h) \ 372 | $(wildcard include/config/file/locking.h) \ 373 | $(wildcard include/config/auditsyscall.h) \ 374 | $(wildcard include/config/block.h) \ 375 | $(wildcard include/config/fs/xip.h) \ 376 | $(wildcard include/config/migration.h) \ 377 | include/linux/limits.h \ 378 | include/linux/ioctl.h \ 379 | arch/arm/include/generated/asm/ioctl.h \ 380 | include/asm-generic/ioctl.h \ 381 | include/linux/blk_types.h \ 382 | $(wildcard include/config/blk/dev/integrity.h) \ 383 | include/linux/kdev_t.h \ 384 | include/linux/dcache.h \ 385 | include/linux/rculist.h \ 386 | include/linux/rculist_bl.h \ 387 | include/linux/list_bl.h \ 388 | include/linux/bit_spinlock.h \ 389 | include/linux/path.h \ 390 | include/linux/radix-tree.h \ 391 | include/linux/prio_tree.h \ 392 | include/linux/pid.h \ 393 | include/linux/capability.h \ 394 | include/linux/semaphore.h \ 395 | include/linux/fiemap.h \ 396 | include/linux/shrinker.h \ 397 | include/linux/migrate_mode.h \ 398 | include/linux/quota.h \ 399 | $(wildcard include/config/quota/netlink/interface.h) \ 400 | include/linux/percpu_counter.h \ 401 | include/linux/dqblk_xfs.h \ 402 | include/linux/dqblk_v1.h \ 403 | include/linux/dqblk_v2.h \ 404 | include/linux/dqblk_qtree.h \ 405 | include/linux/nfs_fs_i.h \ 406 | include/linux/err.h \ 407 | include/linux/magic.h \ 408 | include/linux/delay.h \ 409 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/delay.h \ 410 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/uaccess.h \ 411 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/unified.h \ 412 | $(wildcard include/config/arm/asm/unified.h) \ 413 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.h \ 414 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_types.h \ 415 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.h \ 416 | 417 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.o: $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.o) 418 | 419 | $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.o): 420 | -------------------------------------------------------------------------------- /len_drv/.ls_lens_pwm.o.cmd: -------------------------------------------------------------------------------- 1 | cmd_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.o := arm-hisiv300-linux-gcc -Wp,-MD,/home/tan/job/hi3516d/code/speed_dome/len_drv/.ls_lens_pwm.o.d -nostdinc -isystem /opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include -I/home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include -Iarch/arm/include/generated -Iinclude -include /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-hi3516a/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -marm -fno-dwarf2-cfi-asm -fno-aggressive-loop-optimizations -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I/home/tan/job/hi3516d/code/speed_dome/len_drv/ -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ls_lens_pwm)" -D"KBUILD_MODNAME=KBUILD_STR(lens_drv)" -c -o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.c 2 | 3 | source_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.o := /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.c 4 | 5 | deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.o := \ 6 | include/linux/kernel.h \ 7 | $(wildcard include/config/lbdaf.h) \ 8 | $(wildcard include/config/preempt/voluntary.h) \ 9 | $(wildcard include/config/debug/atomic/sleep.h) \ 10 | $(wildcard include/config/prove/locking.h) \ 11 | $(wildcard include/config/ring/buffer.h) \ 12 | $(wildcard include/config/tracing.h) \ 13 | $(wildcard include/config/numa.h) \ 14 | $(wildcard include/config/compaction.h) \ 15 | $(wildcard include/config/ftrace/mcount/record.h) \ 16 | include/linux/sysinfo.h \ 17 | include/linux/types.h \ 18 | $(wildcard include/config/uid16.h) \ 19 | $(wildcard include/config/arch/dma/addr/t/64bit.h) \ 20 | $(wildcard include/config/phys/addr/t/64bit.h) \ 21 | $(wildcard include/config/64bit.h) \ 22 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/types.h \ 23 | include/asm-generic/int-ll64.h \ 24 | arch/arm/include/generated/asm/bitsperlong.h \ 25 | include/asm-generic/bitsperlong.h \ 26 | include/linux/posix_types.h \ 27 | include/linux/stddef.h \ 28 | include/linux/compiler.h \ 29 | $(wildcard include/config/sparse/rcu/pointer.h) \ 30 | $(wildcard include/config/trace/branch/profiling.h) \ 31 | $(wildcard include/config/profile/all/branches.h) \ 32 | $(wildcard include/config/enable/must/check.h) \ 33 | $(wildcard include/config/enable/warn/deprecated.h) \ 34 | include/linux/compiler-gcc.h \ 35 | $(wildcard include/config/arch/supports/optimized/inlining.h) \ 36 | $(wildcard include/config/optimize/inlining.h) \ 37 | include/linux/compiler-gcc4.h \ 38 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/posix_types.h \ 39 | include/asm-generic/posix_types.h \ 40 | /opt/hisi-linux/x86-arm/arm-hisiv300-linux/lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include/stdarg.h \ 41 | include/linux/linkage.h \ 42 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/linkage.h \ 43 | include/linux/bitops.h \ 44 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bitops.h \ 45 | $(wildcard include/config/smp.h) \ 46 | include/linux/irqflags.h \ 47 | $(wildcard include/config/trace/irqflags.h) \ 48 | $(wildcard include/config/irqsoff/tracer.h) \ 49 | $(wildcard include/config/preempt/tracer.h) \ 50 | $(wildcard include/config/trace/irqflags/support.h) \ 51 | include/linux/typecheck.h \ 52 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/irqflags.h \ 53 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/ptrace.h \ 54 | $(wildcard include/config/cpu/endian/be8.h) \ 55 | $(wildcard include/config/arm/thumb.h) \ 56 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/hwcap.h \ 57 | include/asm-generic/bitops/non-atomic.h \ 58 | include/asm-generic/bitops/fls64.h \ 59 | include/asm-generic/bitops/sched.h \ 60 | include/asm-generic/bitops/hweight.h \ 61 | include/asm-generic/bitops/arch_hweight.h \ 62 | include/asm-generic/bitops/const_hweight.h \ 63 | include/asm-generic/bitops/lock.h \ 64 | include/asm-generic/bitops/le.h \ 65 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/byteorder.h \ 66 | include/linux/byteorder/little_endian.h \ 67 | include/linux/swab.h \ 68 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/swab.h \ 69 | include/linux/byteorder/generic.h \ 70 | include/asm-generic/bitops/ext2-atomic-setbit.h \ 71 | include/linux/log2.h \ 72 | $(wildcard include/config/arch/has/ilog2/u32.h) \ 73 | $(wildcard include/config/arch/has/ilog2/u64.h) \ 74 | include/linux/printk.h \ 75 | $(wildcard include/config/printk.h) \ 76 | $(wildcard include/config/dynamic/debug.h) \ 77 | include/linux/init.h \ 78 | $(wildcard include/config/modules.h) \ 79 | $(wildcard include/config/hotplug.h) \ 80 | include/linux/dynamic_debug.h \ 81 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/div64.h \ 82 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/compiler.h \ 83 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bug.h \ 84 | $(wildcard include/config/bug.h) \ 85 | $(wildcard include/config/thumb2/kernel.h) \ 86 | $(wildcard include/config/debug/bugverbose.h) \ 87 | $(wildcard include/config/arm/lpae.h) \ 88 | include/asm-generic/bug.h \ 89 | $(wildcard include/config/generic/bug.h) \ 90 | $(wildcard include/config/generic/bug/relative/pointers.h) \ 91 | include/linux/delay.h \ 92 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/delay.h \ 93 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/param.h \ 94 | $(wildcard include/config/hz.h) \ 95 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/io.h \ 96 | $(wildcard include/config/arm/dma/mem/bufferable.h) \ 97 | $(wildcard include/config/need/mach/io/h.h) \ 98 | $(wildcard include/config/pcmcia/soc/common.h) \ 99 | $(wildcard include/config/pci.h) \ 100 | $(wildcard include/config/isa.h) \ 101 | $(wildcard include/config/pccard.h) \ 102 | $(wildcard include/config/mmu.h) \ 103 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/memory.h \ 104 | $(wildcard include/config/need/mach/memory/h.h) \ 105 | $(wildcard include/config/page/offset.h) \ 106 | $(wildcard include/config/highmem.h) \ 107 | $(wildcard include/config/dram/size.h) \ 108 | $(wildcard include/config/dram/base.h) \ 109 | $(wildcard include/config/have/tcm.h) \ 110 | $(wildcard include/config/arm/patch/phys/virt.h) \ 111 | $(wildcard include/config/phys/offset.h) \ 112 | $(wildcard include/config/hisi/snapshot/boot.h) \ 113 | include/linux/const.h \ 114 | arch/arm/include/generated/asm/sizes.h \ 115 | include/asm-generic/sizes.h \ 116 | arch/arm/mach-hi3516a/include/mach/memory.h \ 117 | include/asm-generic/memory_model.h \ 118 | $(wildcard include/config/flatmem.h) \ 119 | $(wildcard include/config/discontigmem.h) \ 120 | $(wildcard include/config/sparsemem/vmemmap.h) \ 121 | $(wildcard include/config/sparsemem.h) \ 122 | include/asm-generic/pci_iomap.h \ 123 | $(wildcard include/config/no/generic/pci/ioport/map.h) \ 124 | $(wildcard include/config/generic/pci/iomap.h) \ 125 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/barrier.h \ 126 | $(wildcard include/config/cpu/32v6k.h) \ 127 | $(wildcard include/config/cpu/xsc3.h) \ 128 | $(wildcard include/config/cpu/fa526.h) \ 129 | $(wildcard include/config/arch/has/barriers.h) \ 130 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/outercache.h \ 131 | $(wildcard include/config/outer/cache/sync.h) \ 132 | $(wildcard include/config/outer/cache.h) \ 133 | arch/arm/mach-hi3516a/include/mach/io.h \ 134 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.h \ 135 | 136 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.o: $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.o) 137 | 138 | $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.o): 139 | -------------------------------------------------------------------------------- /len_drv/.ls_lens_spi.o.cmd: -------------------------------------------------------------------------------- 1 | cmd_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.o := arm-hisiv300-linux-gcc -Wp,-MD,/home/tan/job/hi3516d/code/speed_dome/len_drv/.ls_lens_spi.o.d -nostdinc -isystem /opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include -I/home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include -Iarch/arm/include/generated -Iinclude -include /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-hi3516a/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -marm -fno-dwarf2-cfi-asm -fno-aggressive-loop-optimizations -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I/home/tan/job/hi3516d/code/speed_dome/len_drv/ -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ls_lens_spi)" -D"KBUILD_MODNAME=KBUILD_STR(lens_drv)" -c -o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.c 2 | 3 | source_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.o := /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.c 4 | 5 | deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.o := \ 6 | include/linux/spi/spi.h \ 7 | $(wildcard include/config/spi.h) \ 8 | include/linux/device.h \ 9 | $(wildcard include/config/debug/devres.h) \ 10 | $(wildcard include/config/numa.h) \ 11 | $(wildcard include/config/devtmpfs.h) \ 12 | $(wildcard include/config/printk.h) \ 13 | $(wildcard include/config/dynamic/debug.h) \ 14 | $(wildcard include/config/sysfs/deprecated.h) \ 15 | include/linux/ioport.h \ 16 | include/linux/compiler.h \ 17 | $(wildcard include/config/sparse/rcu/pointer.h) \ 18 | $(wildcard include/config/trace/branch/profiling.h) \ 19 | $(wildcard include/config/profile/all/branches.h) \ 20 | $(wildcard include/config/enable/must/check.h) \ 21 | $(wildcard include/config/enable/warn/deprecated.h) \ 22 | include/linux/compiler-gcc.h \ 23 | $(wildcard include/config/arch/supports/optimized/inlining.h) \ 24 | $(wildcard include/config/optimize/inlining.h) \ 25 | include/linux/compiler-gcc4.h \ 26 | include/linux/types.h \ 27 | $(wildcard include/config/uid16.h) \ 28 | $(wildcard include/config/lbdaf.h) \ 29 | $(wildcard include/config/arch/dma/addr/t/64bit.h) \ 30 | $(wildcard include/config/phys/addr/t/64bit.h) \ 31 | $(wildcard include/config/64bit.h) \ 32 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/types.h \ 33 | include/asm-generic/int-ll64.h \ 34 | arch/arm/include/generated/asm/bitsperlong.h \ 35 | include/asm-generic/bitsperlong.h \ 36 | include/linux/posix_types.h \ 37 | include/linux/stddef.h \ 38 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/posix_types.h \ 39 | include/asm-generic/posix_types.h \ 40 | include/linux/kobject.h \ 41 | $(wildcard include/config/hotplug.h) \ 42 | include/linux/list.h \ 43 | $(wildcard include/config/debug/list.h) \ 44 | include/linux/poison.h \ 45 | $(wildcard include/config/illegal/pointer/value.h) \ 46 | include/linux/const.h \ 47 | include/linux/sysfs.h \ 48 | $(wildcard include/config/debug/lock/alloc.h) \ 49 | $(wildcard include/config/sysfs.h) \ 50 | include/linux/errno.h \ 51 | arch/arm/include/generated/asm/errno.h \ 52 | include/asm-generic/errno.h \ 53 | include/asm-generic/errno-base.h \ 54 | include/linux/lockdep.h \ 55 | $(wildcard include/config/lockdep.h) \ 56 | $(wildcard include/config/lock/stat.h) \ 57 | $(wildcard include/config/trace/irqflags.h) \ 58 | $(wildcard include/config/prove/locking.h) \ 59 | $(wildcard include/config/prove/rcu.h) \ 60 | include/linux/kobject_ns.h \ 61 | include/linux/atomic.h \ 62 | $(wildcard include/config/arch/has/atomic/or.h) \ 63 | $(wildcard include/config/generic/atomic64.h) \ 64 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/atomic.h \ 65 | $(wildcard include/config/smp.h) \ 66 | include/linux/irqflags.h \ 67 | $(wildcard include/config/irqsoff/tracer.h) \ 68 | $(wildcard include/config/preempt/tracer.h) \ 69 | $(wildcard include/config/trace/irqflags/support.h) \ 70 | include/linux/typecheck.h \ 71 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/irqflags.h \ 72 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/ptrace.h \ 73 | $(wildcard include/config/cpu/endian/be8.h) \ 74 | $(wildcard include/config/arm/thumb.h) \ 75 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/hwcap.h \ 76 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/barrier.h \ 77 | $(wildcard include/config/cpu/32v6k.h) \ 78 | $(wildcard include/config/cpu/xsc3.h) \ 79 | $(wildcard include/config/cpu/fa526.h) \ 80 | $(wildcard include/config/arch/has/barriers.h) \ 81 | $(wildcard include/config/arm/dma/mem/bufferable.h) \ 82 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/outercache.h \ 83 | $(wildcard include/config/outer/cache/sync.h) \ 84 | $(wildcard include/config/outer/cache.h) \ 85 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/cmpxchg.h \ 86 | $(wildcard include/config/cpu/sa1100.h) \ 87 | $(wildcard include/config/cpu/sa110.h) \ 88 | $(wildcard include/config/cpu/v6.h) \ 89 | include/asm-generic/cmpxchg-local.h \ 90 | include/asm-generic/atomic-long.h \ 91 | include/linux/spinlock.h \ 92 | $(wildcard include/config/debug/spinlock.h) \ 93 | $(wildcard include/config/generic/lockbreak.h) \ 94 | $(wildcard include/config/preempt.h) \ 95 | include/linux/preempt.h \ 96 | $(wildcard include/config/debug/preempt.h) \ 97 | $(wildcard include/config/preempt/count.h) \ 98 | $(wildcard include/config/preempt/notifiers.h) \ 99 | include/linux/thread_info.h \ 100 | $(wildcard include/config/compat.h) \ 101 | include/linux/bitops.h \ 102 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bitops.h \ 103 | include/asm-generic/bitops/non-atomic.h \ 104 | include/asm-generic/bitops/fls64.h \ 105 | include/asm-generic/bitops/sched.h \ 106 | include/asm-generic/bitops/hweight.h \ 107 | include/asm-generic/bitops/arch_hweight.h \ 108 | include/asm-generic/bitops/const_hweight.h \ 109 | include/asm-generic/bitops/lock.h \ 110 | include/asm-generic/bitops/le.h \ 111 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/byteorder.h \ 112 | include/linux/byteorder/little_endian.h \ 113 | include/linux/swab.h \ 114 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/swab.h \ 115 | include/linux/byteorder/generic.h \ 116 | include/asm-generic/bitops/ext2-atomic-setbit.h \ 117 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/thread_info.h \ 118 | $(wildcard include/config/arm/thumbee.h) \ 119 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/fpstate.h \ 120 | $(wildcard include/config/vfpv3.h) \ 121 | $(wildcard include/config/iwmmxt.h) \ 122 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/domain.h \ 123 | $(wildcard include/config/io/36.h) \ 124 | $(wildcard include/config/cpu/use/domains.h) \ 125 | include/linux/linkage.h \ 126 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/linkage.h \ 127 | include/linux/kernel.h \ 128 | $(wildcard include/config/preempt/voluntary.h) \ 129 | $(wildcard include/config/debug/atomic/sleep.h) \ 130 | $(wildcard include/config/ring/buffer.h) \ 131 | $(wildcard include/config/tracing.h) \ 132 | $(wildcard include/config/compaction.h) \ 133 | $(wildcard include/config/ftrace/mcount/record.h) \ 134 | include/linux/sysinfo.h \ 135 | /opt/hisi-linux/x86-arm/arm-hisiv300-linux/lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include/stdarg.h \ 136 | include/linux/log2.h \ 137 | $(wildcard include/config/arch/has/ilog2/u32.h) \ 138 | $(wildcard include/config/arch/has/ilog2/u64.h) \ 139 | include/linux/printk.h \ 140 | include/linux/init.h \ 141 | $(wildcard include/config/modules.h) \ 142 | include/linux/dynamic_debug.h \ 143 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/div64.h \ 144 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/compiler.h \ 145 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bug.h \ 146 | $(wildcard include/config/bug.h) \ 147 | $(wildcard include/config/thumb2/kernel.h) \ 148 | $(wildcard include/config/debug/bugverbose.h) \ 149 | $(wildcard include/config/arm/lpae.h) \ 150 | include/asm-generic/bug.h \ 151 | $(wildcard include/config/generic/bug.h) \ 152 | $(wildcard include/config/generic/bug/relative/pointers.h) \ 153 | include/linux/stringify.h \ 154 | include/linux/bottom_half.h \ 155 | include/linux/spinlock_types.h \ 156 | include/linux/spinlock_types_up.h \ 157 | include/linux/rwlock_types.h \ 158 | include/linux/spinlock_up.h \ 159 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/processor.h \ 160 | $(wildcard include/config/have/hw/breakpoint.h) \ 161 | $(wildcard include/config/mmu.h) \ 162 | $(wildcard include/config/arm/errata/754327.h) \ 163 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/hw_breakpoint.h \ 164 | include/linux/rwlock.h \ 165 | include/linux/spinlock_api_up.h \ 166 | include/linux/kref.h \ 167 | include/linux/bug.h \ 168 | include/linux/wait.h \ 169 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/current.h \ 170 | include/linux/klist.h \ 171 | include/linux/mutex.h \ 172 | $(wildcard include/config/debug/mutexes.h) \ 173 | $(wildcard include/config/have/arch/mutex/cpu/relax.h) \ 174 | include/linux/mutex-debug.h \ 175 | include/linux/pm.h \ 176 | $(wildcard include/config/pm.h) \ 177 | $(wildcard include/config/pm/sleep.h) \ 178 | $(wildcard include/config/pm/runtime.h) \ 179 | $(wildcard include/config/pm/clk.h) \ 180 | $(wildcard include/config/pm/generic/domains.h) \ 181 | include/linux/workqueue.h \ 182 | $(wildcard include/config/debug/objects/work.h) \ 183 | $(wildcard include/config/freezer.h) \ 184 | include/linux/timer.h \ 185 | $(wildcard include/config/timer/stats.h) \ 186 | $(wildcard include/config/debug/objects/timers.h) \ 187 | include/linux/ktime.h \ 188 | $(wildcard include/config/ktime/scalar.h) \ 189 | include/linux/time.h \ 190 | $(wildcard include/config/arch/uses/gettimeoffset.h) \ 191 | include/linux/cache.h \ 192 | $(wildcard include/config/arch/has/cache/line/size.h) \ 193 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/cache.h \ 194 | $(wildcard include/config/arm/l1/cache/shift.h) \ 195 | $(wildcard include/config/aeabi.h) \ 196 | include/linux/seqlock.h \ 197 | include/linux/math64.h \ 198 | include/linux/jiffies.h \ 199 | include/linux/timex.h \ 200 | include/linux/param.h \ 201 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/param.h \ 202 | $(wildcard include/config/hz.h) \ 203 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/timex.h \ 204 | arch/arm/mach-hi3516a/include/mach/timex.h \ 205 | include/linux/debugobjects.h \ 206 | $(wildcard include/config/debug/objects.h) \ 207 | $(wildcard include/config/debug/objects/free.h) \ 208 | include/linux/threads.h \ 209 | $(wildcard include/config/nr/cpus.h) \ 210 | $(wildcard include/config/base/small.h) \ 211 | include/linux/completion.h \ 212 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/device.h \ 213 | $(wildcard include/config/dmabounce.h) \ 214 | $(wildcard include/config/iommu/api.h) \ 215 | $(wildcard include/config/arch/omap.h) \ 216 | include/linux/pm_wakeup.h \ 217 | include/linux/mod_devicetable.h \ 218 | include/linux/slab.h \ 219 | $(wildcard include/config/slab/debug.h) \ 220 | $(wildcard include/config/kmemcheck.h) \ 221 | $(wildcard include/config/failslab.h) \ 222 | $(wildcard include/config/slub.h) \ 223 | $(wildcard include/config/slob.h) \ 224 | $(wildcard include/config/debug/slab.h) \ 225 | $(wildcard include/config/slab.h) \ 226 | include/linux/gfp.h \ 227 | $(wildcard include/config/highmem.h) \ 228 | $(wildcard include/config/zone/dma.h) \ 229 | $(wildcard include/config/zone/dma32.h) \ 230 | include/linux/mmzone.h \ 231 | $(wildcard include/config/force/max/zoneorder.h) \ 232 | $(wildcard include/config/memory/hotplug.h) \ 233 | $(wildcard include/config/sparsemem.h) \ 234 | $(wildcard include/config/have/memblock/node/map.h) \ 235 | $(wildcard include/config/discontigmem.h) \ 236 | $(wildcard include/config/flat/node/mem/map.h) \ 237 | $(wildcard include/config/cgroup/mem/res/ctlr.h) \ 238 | $(wildcard include/config/no/bootmem.h) \ 239 | $(wildcard include/config/have/memory/present.h) \ 240 | $(wildcard include/config/have/memoryless/nodes.h) \ 241 | $(wildcard include/config/need/node/memmap/size.h) \ 242 | $(wildcard include/config/have/memblock/node.h) \ 243 | $(wildcard include/config/need/multiple/nodes.h) \ 244 | $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ 245 | $(wildcard include/config/flatmem.h) \ 246 | $(wildcard include/config/sparsemem/extreme.h) \ 247 | $(wildcard include/config/have/arch/pfn/valid.h) \ 248 | $(wildcard include/config/nodes/span/other/nodes.h) \ 249 | $(wildcard include/config/holes/in/zone.h) \ 250 | $(wildcard include/config/arch/has/holes/memorymodel.h) \ 251 | include/linux/numa.h \ 252 | $(wildcard include/config/nodes/shift.h) \ 253 | include/linux/nodemask.h \ 254 | include/linux/bitmap.h \ 255 | include/linux/string.h \ 256 | $(wildcard include/config/binary/printf.h) \ 257 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/string.h \ 258 | include/linux/pageblock-flags.h \ 259 | $(wildcard include/config/hugetlb/page.h) \ 260 | $(wildcard include/config/hugetlb/page/size/variable.h) \ 261 | include/generated/bounds.h \ 262 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/page.h \ 263 | $(wildcard include/config/cpu/copy/v3.h) \ 264 | $(wildcard include/config/cpu/copy/v4wt.h) \ 265 | $(wildcard include/config/cpu/copy/v4wb.h) \ 266 | $(wildcard include/config/cpu/copy/feroceon.h) \ 267 | $(wildcard include/config/cpu/copy/fa.h) \ 268 | $(wildcard include/config/cpu/xscale.h) \ 269 | $(wildcard include/config/cpu/copy/v6.h) \ 270 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/glue.h \ 271 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/pgtable-2level-types.h \ 272 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/memory.h \ 273 | $(wildcard include/config/need/mach/memory/h.h) \ 274 | $(wildcard include/config/page/offset.h) \ 275 | $(wildcard include/config/dram/size.h) \ 276 | $(wildcard include/config/dram/base.h) \ 277 | $(wildcard include/config/have/tcm.h) \ 278 | $(wildcard include/config/arm/patch/phys/virt.h) \ 279 | $(wildcard include/config/phys/offset.h) \ 280 | $(wildcard include/config/hisi/snapshot/boot.h) \ 281 | arch/arm/include/generated/asm/sizes.h \ 282 | include/asm-generic/sizes.h \ 283 | arch/arm/mach-hi3516a/include/mach/memory.h \ 284 | include/asm-generic/memory_model.h \ 285 | $(wildcard include/config/sparsemem/vmemmap.h) \ 286 | include/asm-generic/getorder.h \ 287 | include/linux/memory_hotplug.h \ 288 | $(wildcard include/config/memory/hotremove.h) \ 289 | $(wildcard include/config/have/arch/nodedata/extension.h) \ 290 | include/linux/notifier.h \ 291 | include/linux/rwsem.h \ 292 | $(wildcard include/config/rwsem/generic/spinlock.h) \ 293 | include/linux/rwsem-spinlock.h \ 294 | include/linux/srcu.h \ 295 | include/linux/rcupdate.h \ 296 | $(wildcard include/config/rcu/torture/test.h) \ 297 | $(wildcard include/config/tree/rcu.h) \ 298 | $(wildcard include/config/tree/preempt/rcu.h) \ 299 | $(wildcard include/config/rcu/trace.h) \ 300 | $(wildcard include/config/preempt/rcu.h) \ 301 | $(wildcard include/config/tiny/rcu.h) \ 302 | $(wildcard include/config/tiny/preempt/rcu.h) \ 303 | $(wildcard include/config/debug/objects/rcu/head.h) \ 304 | $(wildcard include/config/hotplug/cpu.h) \ 305 | $(wildcard include/config/preempt/rt.h) \ 306 | include/linux/cpumask.h \ 307 | $(wildcard include/config/cpumask/offstack.h) \ 308 | $(wildcard include/config/debug/per/cpu/maps.h) \ 309 | $(wildcard include/config/disable/obsolete/cpumask/functions.h) \ 310 | include/linux/rcutiny.h \ 311 | include/linux/topology.h \ 312 | $(wildcard include/config/sched/smt.h) \ 313 | $(wildcard include/config/sched/mc.h) \ 314 | $(wildcard include/config/sched/book.h) \ 315 | $(wildcard include/config/use/percpu/numa/node/id.h) \ 316 | include/linux/smp.h \ 317 | $(wildcard include/config/use/generic/smp/helpers.h) \ 318 | include/linux/percpu.h \ 319 | $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ 320 | $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ 321 | $(wildcard include/config/have/setup/per/cpu/area.h) \ 322 | include/linux/pfn.h \ 323 | arch/arm/include/generated/asm/percpu.h \ 324 | include/asm-generic/percpu.h \ 325 | include/linux/percpu-defs.h \ 326 | $(wildcard include/config/debug/force/weak/per/cpu.h) \ 327 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/topology.h \ 328 | $(wildcard include/config/arm/cpu/topology.h) \ 329 | include/asm-generic/topology.h \ 330 | include/linux/mmdebug.h \ 331 | $(wildcard include/config/debug/vm.h) \ 332 | $(wildcard include/config/debug/virtual.h) \ 333 | include/linux/slub_def.h \ 334 | $(wildcard include/config/slub/stats.h) \ 335 | $(wildcard include/config/slub/debug.h) \ 336 | include/linux/kmemleak.h \ 337 | $(wildcard include/config/debug/kmemleak.h) \ 338 | include/linux/kthread.h \ 339 | include/linux/err.h \ 340 | include/linux/sched.h \ 341 | $(wildcard include/config/sched/debug.h) \ 342 | $(wildcard include/config/no/hz.h) \ 343 | $(wildcard include/config/lockup/detector.h) \ 344 | $(wildcard include/config/detect/hung/task.h) \ 345 | $(wildcard include/config/core/dump/default/elf/headers.h) \ 346 | $(wildcard include/config/sched/autogroup.h) \ 347 | $(wildcard include/config/virt/cpu/accounting.h) \ 348 | $(wildcard include/config/bsd/process/acct.h) \ 349 | $(wildcard include/config/taskstats.h) \ 350 | $(wildcard include/config/audit.h) \ 351 | $(wildcard include/config/cgroups.h) \ 352 | $(wildcard include/config/inotify/user.h) \ 353 | $(wildcard include/config/fanotify.h) \ 354 | $(wildcard include/config/epoll.h) \ 355 | $(wildcard include/config/posix/mqueue.h) \ 356 | $(wildcard include/config/keys.h) \ 357 | $(wildcard include/config/perf/events.h) \ 358 | $(wildcard include/config/schedstats.h) \ 359 | $(wildcard include/config/task/delay/acct.h) \ 360 | $(wildcard include/config/fair/group/sched.h) \ 361 | $(wildcard include/config/rt/group/sched.h) \ 362 | $(wildcard include/config/cgroup/sched.h) \ 363 | $(wildcard include/config/blk/dev/io/trace.h) \ 364 | $(wildcard include/config/rcu/boost.h) \ 365 | $(wildcard include/config/compat/brk.h) \ 366 | $(wildcard include/config/generic/hardirqs.h) \ 367 | $(wildcard include/config/cc/stackprotector.h) \ 368 | $(wildcard include/config/sysvipc.h) \ 369 | $(wildcard include/config/auditsyscall.h) \ 370 | $(wildcard include/config/rt/mutexes.h) \ 371 | $(wildcard include/config/block.h) \ 372 | $(wildcard include/config/task/xacct.h) \ 373 | $(wildcard include/config/cpusets.h) \ 374 | $(wildcard include/config/futex.h) \ 375 | $(wildcard include/config/fault/injection.h) \ 376 | $(wildcard include/config/latencytop.h) \ 377 | $(wildcard include/config/function/graph/tracer.h) \ 378 | $(wildcard include/config/have/unstable/sched/clock.h) \ 379 | $(wildcard include/config/irq/time/accounting.h) \ 380 | $(wildcard include/config/proc/fs.h) \ 381 | $(wildcard include/config/cfs/bandwidth.h) \ 382 | $(wildcard include/config/stack/growsup.h) \ 383 | $(wildcard include/config/debug/stack/usage.h) \ 384 | $(wildcard include/config/mm/owner.h) \ 385 | include/linux/capability.h \ 386 | include/linux/rbtree.h \ 387 | include/linux/mm_types.h \ 388 | $(wildcard include/config/split/ptlock/cpus.h) \ 389 | $(wildcard include/config/have/cmpxchg/double.h) \ 390 | $(wildcard include/config/have/aligned/struct/page.h) \ 391 | $(wildcard include/config/want/page/debug/flags.h) \ 392 | $(wildcard include/config/aio.h) \ 393 | $(wildcard include/config/mmu/notifier.h) \ 394 | $(wildcard include/config/transparent/hugepage.h) \ 395 | include/linux/auxvec.h \ 396 | arch/arm/include/generated/asm/auxvec.h \ 397 | include/asm-generic/auxvec.h \ 398 | include/linux/prio_tree.h \ 399 | include/linux/page-debug-flags.h \ 400 | $(wildcard include/config/page/poisoning.h) \ 401 | $(wildcard include/config/page/guard.h) \ 402 | $(wildcard include/config/page/debug/something/else.h) \ 403 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/mmu.h \ 404 | $(wildcard include/config/cpu/has/asid.h) \ 405 | arch/arm/include/generated/asm/cputime.h \ 406 | include/asm-generic/cputime.h \ 407 | include/linux/sem.h \ 408 | include/linux/ipc.h \ 409 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/ipcbuf.h \ 410 | include/asm-generic/ipcbuf.h \ 411 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/sembuf.h \ 412 | include/linux/signal.h \ 413 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/signal.h \ 414 | include/asm-generic/signal-defs.h \ 415 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/sigcontext.h \ 416 | arch/arm/include/generated/asm/siginfo.h \ 417 | include/asm-generic/siginfo.h \ 418 | include/linux/pid.h \ 419 | include/linux/proportions.h \ 420 | include/linux/percpu_counter.h \ 421 | include/linux/seccomp.h \ 422 | $(wildcard include/config/seccomp.h) \ 423 | include/linux/rculist.h \ 424 | include/linux/rtmutex.h \ 425 | $(wildcard include/config/debug/rt/mutexes.h) \ 426 | include/linux/plist.h \ 427 | $(wildcard include/config/debug/pi/list.h) \ 428 | include/linux/resource.h \ 429 | arch/arm/include/generated/asm/resource.h \ 430 | include/asm-generic/resource.h \ 431 | include/linux/hrtimer.h \ 432 | $(wildcard include/config/high/res/timers.h) \ 433 | $(wildcard include/config/timerfd.h) \ 434 | include/linux/timerqueue.h \ 435 | include/linux/task_io_accounting.h \ 436 | $(wildcard include/config/task/io/accounting.h) \ 437 | include/linux/latencytop.h \ 438 | include/linux/cred.h \ 439 | $(wildcard include/config/debug/credentials.h) \ 440 | $(wildcard include/config/security.h) \ 441 | $(wildcard include/config/user/ns.h) \ 442 | include/linux/key.h \ 443 | $(wildcard include/config/sysctl.h) \ 444 | include/linux/sysctl.h \ 445 | include/linux/selinux.h \ 446 | $(wildcard include/config/security/selinux.h) \ 447 | include/linux/llist.h \ 448 | $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ 449 | include/linux/aio.h \ 450 | include/linux/aio_abi.h \ 451 | include/linux/uio.h \ 452 | include/linux/delay.h \ 453 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/delay.h \ 454 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/io.h \ 455 | $(wildcard include/config/need/mach/io/h.h) \ 456 | $(wildcard include/config/pcmcia/soc/common.h) \ 457 | $(wildcard include/config/pci.h) \ 458 | $(wildcard include/config/isa.h) \ 459 | $(wildcard include/config/pccard.h) \ 460 | include/asm-generic/pci_iomap.h \ 461 | $(wildcard include/config/no/generic/pci/ioport/map.h) \ 462 | $(wildcard include/config/generic/pci/iomap.h) \ 463 | arch/arm/mach-hi3516a/include/mach/io.h \ 464 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.h \ 465 | 466 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.o: $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.o) 467 | 468 | $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.o): 469 | -------------------------------------------------------------------------------- /len_drv/.ls_lens_timer.o.cmd: -------------------------------------------------------------------------------- 1 | cmd_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.o := arm-hisiv300-linux-gcc -Wp,-MD,/home/tan/job/hi3516d/code/speed_dome/len_drv/.ls_lens_timer.o.d -nostdinc -isystem /opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include -I/home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include -Iarch/arm/include/generated -Iinclude -include /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-hi3516a/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -marm -fno-dwarf2-cfi-asm -fno-aggressive-loop-optimizations -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I/home/tan/job/hi3516d/code/speed_dome/len_drv/ -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ls_lens_timer)" -D"KBUILD_MODNAME=KBUILD_STR(lens_drv)" -c -o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.c 2 | 3 | source_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.o := /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.c 4 | 5 | deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.o := \ 6 | include/linux/timer.h \ 7 | $(wildcard include/config/timer/stats.h) \ 8 | $(wildcard include/config/lockdep.h) \ 9 | $(wildcard include/config/debug/objects/timers.h) \ 10 | $(wildcard include/config/smp.h) \ 11 | include/linux/list.h \ 12 | $(wildcard include/config/debug/list.h) \ 13 | include/linux/types.h \ 14 | $(wildcard include/config/uid16.h) \ 15 | $(wildcard include/config/lbdaf.h) \ 16 | $(wildcard include/config/arch/dma/addr/t/64bit.h) \ 17 | $(wildcard include/config/phys/addr/t/64bit.h) \ 18 | $(wildcard include/config/64bit.h) \ 19 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/types.h \ 20 | include/asm-generic/int-ll64.h \ 21 | arch/arm/include/generated/asm/bitsperlong.h \ 22 | include/asm-generic/bitsperlong.h \ 23 | include/linux/posix_types.h \ 24 | include/linux/stddef.h \ 25 | include/linux/compiler.h \ 26 | $(wildcard include/config/sparse/rcu/pointer.h) \ 27 | $(wildcard include/config/trace/branch/profiling.h) \ 28 | $(wildcard include/config/profile/all/branches.h) \ 29 | $(wildcard include/config/enable/must/check.h) \ 30 | $(wildcard include/config/enable/warn/deprecated.h) \ 31 | include/linux/compiler-gcc.h \ 32 | $(wildcard include/config/arch/supports/optimized/inlining.h) \ 33 | $(wildcard include/config/optimize/inlining.h) \ 34 | include/linux/compiler-gcc4.h \ 35 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/posix_types.h \ 36 | include/asm-generic/posix_types.h \ 37 | include/linux/poison.h \ 38 | $(wildcard include/config/illegal/pointer/value.h) \ 39 | include/linux/const.h \ 40 | include/linux/ktime.h \ 41 | $(wildcard include/config/ktime/scalar.h) \ 42 | include/linux/time.h \ 43 | $(wildcard include/config/arch/uses/gettimeoffset.h) \ 44 | include/linux/cache.h \ 45 | $(wildcard include/config/arch/has/cache/line/size.h) \ 46 | include/linux/kernel.h \ 47 | $(wildcard include/config/preempt/voluntary.h) \ 48 | $(wildcard include/config/debug/atomic/sleep.h) \ 49 | $(wildcard include/config/prove/locking.h) \ 50 | $(wildcard include/config/ring/buffer.h) \ 51 | $(wildcard include/config/tracing.h) \ 52 | $(wildcard include/config/numa.h) \ 53 | $(wildcard include/config/compaction.h) \ 54 | $(wildcard include/config/ftrace/mcount/record.h) \ 55 | include/linux/sysinfo.h \ 56 | /opt/hisi-linux/x86-arm/arm-hisiv300-linux/lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include/stdarg.h \ 57 | include/linux/linkage.h \ 58 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/linkage.h \ 59 | include/linux/bitops.h \ 60 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bitops.h \ 61 | include/linux/irqflags.h \ 62 | $(wildcard include/config/trace/irqflags.h) \ 63 | $(wildcard include/config/irqsoff/tracer.h) \ 64 | $(wildcard include/config/preempt/tracer.h) \ 65 | $(wildcard include/config/trace/irqflags/support.h) \ 66 | include/linux/typecheck.h \ 67 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/irqflags.h \ 68 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/ptrace.h \ 69 | $(wildcard include/config/cpu/endian/be8.h) \ 70 | $(wildcard include/config/arm/thumb.h) \ 71 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/hwcap.h \ 72 | include/asm-generic/bitops/non-atomic.h \ 73 | include/asm-generic/bitops/fls64.h \ 74 | include/asm-generic/bitops/sched.h \ 75 | include/asm-generic/bitops/hweight.h \ 76 | include/asm-generic/bitops/arch_hweight.h \ 77 | include/asm-generic/bitops/const_hweight.h \ 78 | include/asm-generic/bitops/lock.h \ 79 | include/asm-generic/bitops/le.h \ 80 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/byteorder.h \ 81 | include/linux/byteorder/little_endian.h \ 82 | include/linux/swab.h \ 83 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/swab.h \ 84 | include/linux/byteorder/generic.h \ 85 | include/asm-generic/bitops/ext2-atomic-setbit.h \ 86 | include/linux/log2.h \ 87 | $(wildcard include/config/arch/has/ilog2/u32.h) \ 88 | $(wildcard include/config/arch/has/ilog2/u64.h) \ 89 | include/linux/printk.h \ 90 | $(wildcard include/config/printk.h) \ 91 | $(wildcard include/config/dynamic/debug.h) \ 92 | include/linux/init.h \ 93 | $(wildcard include/config/modules.h) \ 94 | $(wildcard include/config/hotplug.h) \ 95 | include/linux/dynamic_debug.h \ 96 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/div64.h \ 97 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/compiler.h \ 98 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/bug.h \ 99 | $(wildcard include/config/bug.h) \ 100 | $(wildcard include/config/thumb2/kernel.h) \ 101 | $(wildcard include/config/debug/bugverbose.h) \ 102 | $(wildcard include/config/arm/lpae.h) \ 103 | include/asm-generic/bug.h \ 104 | $(wildcard include/config/generic/bug.h) \ 105 | $(wildcard include/config/generic/bug/relative/pointers.h) \ 106 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/cache.h \ 107 | $(wildcard include/config/arm/l1/cache/shift.h) \ 108 | $(wildcard include/config/aeabi.h) \ 109 | include/linux/seqlock.h \ 110 | include/linux/spinlock.h \ 111 | $(wildcard include/config/debug/spinlock.h) \ 112 | $(wildcard include/config/generic/lockbreak.h) \ 113 | $(wildcard include/config/preempt.h) \ 114 | $(wildcard include/config/debug/lock/alloc.h) \ 115 | include/linux/preempt.h \ 116 | $(wildcard include/config/debug/preempt.h) \ 117 | $(wildcard include/config/preempt/count.h) \ 118 | $(wildcard include/config/preempt/notifiers.h) \ 119 | include/linux/thread_info.h \ 120 | $(wildcard include/config/compat.h) \ 121 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/thread_info.h \ 122 | $(wildcard include/config/arm/thumbee.h) \ 123 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/fpstate.h \ 124 | $(wildcard include/config/vfpv3.h) \ 125 | $(wildcard include/config/iwmmxt.h) \ 126 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/domain.h \ 127 | $(wildcard include/config/io/36.h) \ 128 | $(wildcard include/config/cpu/use/domains.h) \ 129 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/barrier.h \ 130 | $(wildcard include/config/cpu/32v6k.h) \ 131 | $(wildcard include/config/cpu/xsc3.h) \ 132 | $(wildcard include/config/cpu/fa526.h) \ 133 | $(wildcard include/config/arch/has/barriers.h) \ 134 | $(wildcard include/config/arm/dma/mem/bufferable.h) \ 135 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/outercache.h \ 136 | $(wildcard include/config/outer/cache/sync.h) \ 137 | $(wildcard include/config/outer/cache.h) \ 138 | include/linux/stringify.h \ 139 | include/linux/bottom_half.h \ 140 | include/linux/spinlock_types.h \ 141 | include/linux/spinlock_types_up.h \ 142 | include/linux/lockdep.h \ 143 | $(wildcard include/config/lock/stat.h) \ 144 | $(wildcard include/config/prove/rcu.h) \ 145 | include/linux/rwlock_types.h \ 146 | include/linux/spinlock_up.h \ 147 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/processor.h \ 148 | $(wildcard include/config/have/hw/breakpoint.h) \ 149 | $(wildcard include/config/mmu.h) \ 150 | $(wildcard include/config/arm/errata/754327.h) \ 151 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/hw_breakpoint.h \ 152 | include/linux/rwlock.h \ 153 | include/linux/spinlock_api_up.h \ 154 | include/linux/atomic.h \ 155 | $(wildcard include/config/arch/has/atomic/or.h) \ 156 | $(wildcard include/config/generic/atomic64.h) \ 157 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/atomic.h \ 158 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/cmpxchg.h \ 159 | $(wildcard include/config/cpu/sa1100.h) \ 160 | $(wildcard include/config/cpu/sa110.h) \ 161 | $(wildcard include/config/cpu/v6.h) \ 162 | include/asm-generic/cmpxchg-local.h \ 163 | include/asm-generic/atomic-long.h \ 164 | include/linux/math64.h \ 165 | include/linux/jiffies.h \ 166 | include/linux/timex.h \ 167 | include/linux/param.h \ 168 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/param.h \ 169 | $(wildcard include/config/hz.h) \ 170 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/timex.h \ 171 | arch/arm/mach-hi3516a/include/mach/timex.h \ 172 | include/linux/debugobjects.h \ 173 | $(wildcard include/config/debug/objects.h) \ 174 | $(wildcard include/config/debug/objects/free.h) \ 175 | include/linux/completion.h \ 176 | include/linux/wait.h \ 177 | /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0/osdrv/opensource/kernel/linux-3.4.y/arch/arm/include/asm/current.h \ 178 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.h \ 179 | 180 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.o: $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.o) 181 | 182 | $(deps_/home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.o): 183 | -------------------------------------------------------------------------------- /len_drv/.tmp_versions/lens_drv.mod: -------------------------------------------------------------------------------- 1 | /home/tan/job/hi3516d/code/speed_dome/len_drv/lens_drv.ko 2 | /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_drv.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_41908.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_spi.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_pwm.o /home/tan/job/hi3516d/code/speed_dome/len_drv/ls_lens_timer.o 3 | -------------------------------------------------------------------------------- /len_drv/Makefile: -------------------------------------------------------------------------------- 1 | SDK_PATH := /home/tan/job/hi3516d/code/Hi3516A_SDK_V1.0.6.0 2 | LINUX_ROOT := $(SDK_PATH)/osdrv/opensource/kernel/linux-3.4.y 3 | 4 | ifeq ($(PARAM_FILE), ) 5 | PARAM_FILE:=$(SDK_PATH)/mpp/Makefile.param 6 | include $(PARAM_FILE) 7 | endif 8 | 9 | obj-m := lens_drv.o 10 | lens_drv-y += ls_lens_drv.o ls_lens_41908.o ls_lens_spi.o ls_lens_pwm.o ls_lens_timer.o 11 | 12 | EXTRA_CFLAGS += -I$(PWD)/ 13 | 14 | default: 15 | $(CC) -g -Wall -o lens_test ls_lens_test.c 16 | @$(MAKE) -C $(LINUX_ROOT) M=$(PWD) modules 17 | @rm -f *.o modules.* *.symvers *.mod.c 18 | clean: 19 | @make -C $(LINUX_ROOT) M=$(PWD) clean 20 | @rm -f lens_test *.bak 21 | 22 | -------------------------------------------------------------------------------- /len_drv/lens_drv.ko: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/len_drv/lens_drv.ko -------------------------------------------------------------------------------- /len_drv/lens_test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/len_drv/lens_test -------------------------------------------------------------------------------- /len_drv/ls_lens_41908.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | 5 | #include "ls_lens_41908.h" 6 | #include "ls_lens_spi.h" 7 | #include "ls_lens_pwm.h" 8 | #include "ls_lens_timer.h" 9 | 10 | 11 | #define MUX_ADDRESS_BASE 0x200F0000 12 | #define GPIO0_ADDRESS_BASE 0x20140000 13 | #define GPIO1_ADDRESS_BASE 0x20150000 14 | #define GPIO2_ADDRESS_BASE 0x20160000 15 | #define GPIO3_ADDRESS_BASE 0x20170000 16 | #define GPIO4_ADDRESS_BASE 0x20180000 17 | #define GPIO5_ADDRESS_BASE 0x20190000 18 | #define GPIO6_ADDRESS_BASE 0x201A0000 19 | #define GPIO7_ADDRESS_BASE 0x201B0000 20 | #define GPIO8_ADDRESS_BASE 0x201C0000 21 | #define GPIO9_ADDRESS_BASE 0x201D0000 22 | #define GPIO10_ADDRESS_BASE 0x201E0000 23 | #define GPIO11_ADDRESS_BASE 0x201F0000 24 | #define GPIO12_ADDRESS_BASE 0x20200000 25 | #define GPIO13_ADDRESS_BASE 0x20210000 26 | #define GPIO14_ADDRESS_BASE 0x20220000 27 | #define GPIO15_ADDRESS_BASE 0x20260000 28 | 29 | void __iomem* reg_mux_base_va = 0; 30 | void __iomem* reg_gpio0_base_va = 0; 31 | void __iomem* reg_gpio2_base_va = 0; 32 | void __iomem* reg_gpio8_base_va = 0; 33 | void __iomem* reg_gpio9_base_va = 0; 34 | void __iomem* reg_gpio14_base_va = 0; 35 | 36 | #define HI_IO_MUX_ADDRESS(x) (reg_mux_base_va + ((x)-(MUX_ADDRESS_BASE))) 37 | #define HI_IO_GPIO0_ADDRESS(x) (reg_gpio0_base_va + ((x)-(GPIO0_ADDRESS_BASE))) 38 | #define HI_IO_GPIO2_ADDRESS(x) (reg_gpio2_base_va + ((x)-(GPIO2_ADDRESS_BASE))) 39 | #define HI_IO_GPIO8_ADDRESS(x) (reg_gpio8_base_va + ((x)-(GPIO8_ADDRESS_BASE))) 40 | #define HI_IO_GPIO9_ADDRESS(x) (reg_gpio9_base_va + ((x)-(GPIO9_ADDRESS_BASE))) 41 | #define HI_IO_GPIO14_ADDRESS(x) (reg_gpio14_base_va + ((x)-(GPIO14_ADDRESS_BASE))) 42 | 43 | #define MUX_REG(x) HI_IO_MUX_ADDRESS(MUX_ADDRESS_BASE + x) 44 | 45 | //GPIO 46 | #define GPIO0_DATA HI_IO_GPIO0_ADDRESS(GPIO0_ADDRESS_BASE + 0x000) 47 | #define GPIO0_DIR HI_IO_GPIO0_ADDRESS(GPIO0_ADDRESS_BASE + 0x400) 48 | #define GPIO0_IS HI_IO_GPIO0_ADDRESS(GPIO0_ADDRESS_BASE + 0x404) 49 | #define GPIO0_IBE HI_IO_GPIO0_ADDRESS(GPIO0_ADDRESS_BASE + 0x408) 50 | #define GPIO0_IEV HI_IO_GPIO0_ADDRESS(GPIO0_ADDRESS_BASE + 0x40C) 51 | #define GPIO0_IE HI_IO_GPIO0_ADDRESS(GPIO0_ADDRESS_BASE + 0x410) 52 | #define GPIO0_RIS HI_IO_GPIO0_ADDRESS(GPIO0_ADDRESS_BASE + 0x414) 53 | #define GPIO0_MIS HI_IO_GPIO0_ADDRESS(GPIO0_ADDRESS_BASE + 0x418) 54 | #define GPIO0_IC HI_IO_GPIO0_ADDRESS(GPIO0_ADDRESS_BASE + 0x41C) 55 | 56 | #define GPIO2_DATA HI_IO_GPIO2_ADDRESS(GPIO2_ADDRESS_BASE + 0x000) 57 | #define GPIO2_DIR HI_IO_GPIO2_ADDRESS(GPIO2_ADDRESS_BASE + 0x400) 58 | #define GPIO2_IS HI_IO_GPIO2_ADDRESS(GPIO2_ADDRESS_BASE + 0x404) 59 | #define GPIO2_IBE HI_IO_GPIO2_ADDRESS(GPIO2_ADDRESS_BASE + 0x408) 60 | #define GPIO2_IEV HI_IO_GPIO2_ADDRESS(GPIO2_ADDRESS_BASE + 0x40C) 61 | #define GPIO2_IE HI_IO_GPIO2_ADDRESS(GPIO2_ADDRESS_BASE + 0x410) 62 | #define GPIO2_RIS HI_IO_GPIO2_ADDRESS(GPIO2_ADDRESS_BASE + 0x414) 63 | #define GPIO2_MIS HI_IO_GPIO2_ADDRESS(GPIO2_ADDRESS_BASE + 0x418) 64 | #define GPIO2_IC HI_IO_GPIO2_ADDRESS(GPIO2_ADDRESS_BASE + 0x41C) 65 | 66 | #define GPIO8_DATA HI_IO_GPIO8_ADDRESS(GPIO8_ADDRESS_BASE + 0x000) 67 | #define GPIO8_DIR HI_IO_GPIO8_ADDRESS(GPIO8_ADDRESS_BASE + 0x400) 68 | #define GPIO8_IS HI_IO_GPIO8_ADDRESS(GPIO8_ADDRESS_BASE + 0x404) 69 | #define GPIO8_IBE HI_IO_GPIO8_ADDRESS(GPIO8_ADDRESS_BASE + 0x408) 70 | #define GPIO8_IEV HI_IO_GPIO8_ADDRESS(GPIO8_ADDRESS_BASE + 0x40C) 71 | #define GPIO8_IE HI_IO_GPIO8_ADDRESS(GPIO8_ADDRESS_BASE + 0x410) 72 | #define GPIO8_RIS HI_IO_GPIO8_ADDRESS(GPIO8_ADDRESS_BASE + 0x414) 73 | #define GPIO8_MIS HI_IO_GPIO8_ADDRESS(GPIO8_ADDRESS_BASE + 0x418) 74 | #define GPIO8_IC HI_IO_GPIO8_ADDRESS(GPIO8_ADDRESS_BASE + 0x41C) 75 | 76 | #define GPIO9_DATA HI_IO_GPIO9_ADDRESS(GPIO9_ADDRESS_BASE + 0x000) 77 | #define GPIO9_DIR HI_IO_GPIO9_ADDRESS(GPIO9_ADDRESS_BASE + 0x400) 78 | #define GPIO9_IS HI_IO_GPIO9_ADDRESS(GPIO9_ADDRESS_BASE + 0x404) 79 | #define GPIO9_IBE HI_IO_GPIO9_ADDRESS(GPIO9_ADDRESS_BASE + 0x408) 80 | #define GPIO9_IEV HI_IO_GPIO9_ADDRESS(GPIO9_ADDRESS_BASE + 0x40C) 81 | #define GPIO9_IE HI_IO_GPIO9_ADDRESS(GPIO9_ADDRESS_BASE + 0x410) 82 | #define GPIO9_RIS HI_IO_GPIO9_ADDRESS(GPIO9_ADDRESS_BASE + 0x414) 83 | #define GPIO9_MIS HI_IO_GPIO9_ADDRESS(GPIO9_ADDRESS_BASE + 0x418) 84 | #define GPIO9_IC HI_IO_GPIO9_ADDRESS(GPIO9_ADDRESS_BASE + 0x41C) 85 | 86 | #define GPIO14_DATA HI_IO_GPIO14_ADDRESS(GPIO14_ADDRESS_BASE + 0x000) 87 | #define GPIO14_DIR HI_IO_GPIO14_ADDRESS(GPIO14_ADDRESS_BASE + 0x400) 88 | #define GPIO14_IS HI_IO_GPIO14_ADDRESS(GPIO14_ADDRESS_BASE + 0x404) 89 | #define GPIO14_IBE HI_IO_GPIO14_ADDRESS(GPIO14_ADDRESS_BASE + 0x408) 90 | #define GPIO14_IEV HI_IO_GPIO14_ADDRESS(GPIO14_ADDRESS_BASE + 0x40C) 91 | #define GPIO14_IE HI_IO_GPIO14_ADDRESS(GPIO14_ADDRESS_BASE + 0x410) 92 | #define GPIO14_RIS HI_IO_GPIO14_ADDRESS(GPIO14_ADDRESS_BASE + 0x414) 93 | #define GPIO14_MIS HI_IO_GPIO14_ADDRESS(GPIO14_ADDRESS_BASE + 0x418) 94 | #define GPIO14_IC HI_IO_GPIO14_ADDRESS(GPIO14_ADDRESS_BASE + 0x41C) 95 | 96 | #define GPIO_WRITE_REG(Addr, Value) ((*(volatile unsigned int *)(Addr)) = (Value)) 97 | #define GPIO_READ_REG(Addr) (*(volatile unsigned int *)(Addr)) 98 | 99 | 100 | #define ZOOM_REG (0x24) 101 | #define ZOOM_SPD (0x25) 102 | #define FOC_REG (0x29) 103 | #define FOC_SPD (0x2a) 104 | 105 | #define ZOOM_PHASE (4) //2-2 phase 106 | #define FOC_PHASE (8) //1-2 phase 107 | 108 | #define VD_FZ (100) //100Hz 109 | #define VD_TIME (1000/VD_FZ) 110 | #define PWM_DUTY (100) // tzq@20161012 VD_TIME no include PWM_DUTY 111 | #define PWM_PERIOD (PWM_CLK/VD_FZ-PWM_DUTY) 112 | #define PWM_NUM (0) 113 | 114 | static unsigned short intct_z=0, intct_f=0; 115 | static unsigned short zoom_reg=0, focus_reg=0; 116 | 117 | void GPIO_Init(void) 118 | { 119 | unsigned int i, index; 120 | unsigned int reg_value = 0; 121 | 122 | reg_mux_base_va = (void __iomem*)IO_ADDRESS(MUX_ADDRESS_BASE); 123 | reg_gpio0_base_va = (void __iomem*)IO_ADDRESS(GPIO0_ADDRESS_BASE); 124 | reg_gpio2_base_va = (void __iomem*)IO_ADDRESS(GPIO2_ADDRESS_BASE); 125 | reg_gpio8_base_va = (void __iomem*)IO_ADDRESS(GPIO8_ADDRESS_BASE); 126 | reg_gpio9_base_va = (void __iomem*)IO_ADDRESS(GPIO9_ADDRESS_BASE); 127 | reg_gpio14_base_va = (void __iomem*)IO_ADDRESS(GPIO14_ADDRESS_BASE); 128 | 129 | index = 1*4; 130 | GPIO_WRITE_REG(MUX_REG(index), 0x00); // motor RSTB mux gpio mode 131 | 132 | reg_value = GPIO_READ_REG(GPIO0_DIR); // motor RSTB output dir 133 | GPIO_WRITE_REG(GPIO0_DIR, (reg_value | (0x01 << 6))); 134 | 135 | index = 24*4; 136 | for (i=0; i<4; i++) // motor mux SPI mode 137 | { 138 | GPIO_WRITE_REG(MUX_REG(index), 0x01); 139 | index += 0x04; 140 | } 141 | 142 | index = 83*4; // motor VD_FZ,VD_IS mux PWM mode 143 | for (i=0; i<2; i++) 144 | { 145 | GPIO_WRITE_REG(MUX_REG(index), 0x00); 146 | index += 0x04; 147 | } 148 | 149 | index = 49*4; 150 | GPIO_WRITE_REG(MUX_REG(index), 0x00); // ZOOM PI mux gpio mode 151 | index = 50*4; 152 | GPIO_WRITE_REG(MUX_REG(index), 0x00); // FOC PI mux gpio mode 153 | 154 | reg_value = GPIO_READ_REG(GPIO2_DIR); // ZOOM PI, FOC PI input 155 | GPIO_WRITE_REG(GPIO2_DIR, (reg_value & ~(0x3 << 5))); 156 | /* 157 | index = 27*4; 158 | GPIO_WRITE_REG(MUX_REG(index), 0x00); // motor SPI_CS mux gpio mode 159 | 160 | reg_value = GPIO_READ_REG(GPIO8_DIR); // motor SPI_CS output dir 161 | GPIO_WRITE_REG(GPIO8_DIR, (reg_value | (0x01 << 7))); 162 | 163 | GPIO_WRITE_REG(GPIO8_DATA+(0x04 << 7), (0x01 << 7)); 164 | */ 165 | } 166 | 167 | void GPIO_Exit(void) 168 | { 169 | reg_mux_base_va = NULL; 170 | reg_gpio0_base_va = NULL; 171 | reg_gpio2_base_va = NULL; 172 | reg_gpio8_base_va = NULL; 173 | reg_gpio9_base_va = NULL; 174 | reg_gpio14_base_va = NULL; 175 | } 176 | 177 | void AN41908_Reset(void) 178 | { 179 | GPIO_WRITE_REG(GPIO0_DATA+(0x04 << 6), (0x00 << 6)); 180 | msleep(10); 181 | GPIO_WRITE_REG(GPIO0_DATA+(0x04 << 6), (0x01 << 6)); 182 | msleep(10); // tzq@20160820 add for SPI write and read error 183 | } 184 | 185 | void AN41908_Test(void) 186 | { 187 | unsigned short val = 0; 188 | 189 | //SPI_Write(0x20, 0x5c0a); 190 | SPI_Read(0x24, &val); 191 | printk("Read val = %#x\n", val); 192 | 193 | //SPI_Test(); 194 | 195 | //PWM_Write(PWM_NUM, 30, 30000, 10); 196 | 197 | SetZoomSpeed(800); 198 | SetFocusSpeed(800); 199 | 200 | ZoomMove(10); 201 | FocusMove(10); 202 | } 203 | 204 | void MotorInit(void) 205 | { 206 | SPI_Write(0x0b, 0x0080); // PLS1 output enable 207 | SPI_Write(0x21, 0x0085); // PLS2 output enable; monitor output 208 | 209 | SPI_Write(0x20, 0x1c03); // write register time - 20*8192/27 = 20*303.4us 210 | 211 | // zoom motor param init 212 | SPI_Write(0x22, 0x0003); // DT2x for motor current is enough to rotation - 3*303.4us 213 | SPI_Write(0x23, 0xc8c8); // motor A\B peak pulse width 214 | SPI_Write(0x24, 0x1800); // 64 devisions; PI OFF 215 | zoom_reg = 0x1800; 216 | 217 | // focus motor param init 218 | SPI_Write(0x27, 0x0003); // DT2x for motor current is enough to rotation - 3*303.4us 219 | SPI_Write(0x28, 0xc8c8); // motor C\D peak pulse width 220 | SPI_Write(0x29, 0x1800); // 64 devisions; PI OFF 221 | focus_reg = 0x1800; 222 | } 223 | 224 | void AN41908_Init(void) 225 | { 226 | GPIO_Init(); 227 | 228 | PWM_Init(); 229 | 230 | SPI_Init(); 231 | 232 | AN41908_Reset(); 233 | 234 | MotorInit(); 235 | } 236 | 237 | void AN41908_Exit(void) 238 | { 239 | GPIO_Exit(); 240 | 241 | PWM_Exit(); 242 | } 243 | 244 | void ZoomForward(void) 245 | { 246 | zoom_reg &= ~(0x1 << 8); 247 | SPI_Write(ZOOM_REG, zoom_reg); 248 | } 249 | 250 | void ZoomReverse(void) 251 | { 252 | zoom_reg |= (0x1 << 8); 253 | SPI_Write(ZOOM_REG, zoom_reg); 254 | } 255 | 256 | void ZoomNormal(void) 257 | { 258 | zoom_reg &= ~(0x1 << 9); 259 | SPI_Write(ZOOM_REG, zoom_reg); 260 | } 261 | 262 | void ZoomBrake(void) 263 | { 264 | zoom_reg |= (0x1 << 9); 265 | SPI_Write(ZOOM_REG, zoom_reg); 266 | } 267 | 268 | void ZoomEnable(void) 269 | { 270 | zoom_reg |= (0x1 << 10); 271 | SPI_Write(ZOOM_REG, zoom_reg); 272 | } 273 | 274 | void ZoomDisable(void) 275 | { 276 | zoom_reg &= ~(0x1 << 10); 277 | SPI_Write(ZOOM_REG, zoom_reg); 278 | } 279 | 280 | void ZoomPIEnable(void) 281 | { 282 | focus_reg |= (0x1 << 11); 283 | SPI_Write(FOC_REG, focus_reg); 284 | } 285 | 286 | void ZoomPIDisable(void) 287 | { 288 | focus_reg &= ~(0x1 << 11); 289 | SPI_Write(FOC_REG, focus_reg); 290 | } 291 | 292 | void SetZoomSpeed(unsigned int pps) 293 | { 294 | unsigned char psum = 0; 295 | 296 | if (pps <= 100) pps = 100; 297 | 298 | intct_z = (27 * 1000000 * ZOOM_PHASE) / (pps * 768); 299 | psum = (27 * 1000000) / (VD_FZ * intct_z * 24); 300 | intct_z = (27 * 1000000) / (VD_FZ * psum * 24); 301 | 302 | printk("SetZoomSpeed--->pps=%d, psum=%#x intct_z=%#x\n", pps, psum, intct_z); 303 | SPI_Write(ZOOM_SPD, intct_z); 304 | } 305 | 306 | static unsigned char GetZoomPsum(void) 307 | { 308 | unsigned char psum = 0; 309 | 310 | psum = (27 * 1000000) / (VD_FZ * intct_z * 24); 311 | 312 | return psum; 313 | } 314 | 315 | void ZoomMove(unsigned int steps) 316 | { 317 | unsigned int vd_nums = 0; 318 | unsigned char psum, psum_left; 319 | 320 | if (steps == 0) return; 321 | 322 | psum = GetZoomPsum(); 323 | vd_nums = steps*(32/ZOOM_PHASE) / psum; 324 | psum_left = steps*(32/ZOOM_PHASE) % psum; 325 | printk("zoom-->psum=%d, vd_nums=%d, psum_left=%d\n", psum, vd_nums, psum_left); 326 | 327 | ZoomEnable(); 328 | //PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, vd_nums+1); 329 | //PWM_Wait(PWM_NUM); 330 | 331 | if (vd_nums) 332 | { 333 | zoom_reg = (zoom_reg & 0xFF00) | psum; 334 | SPI_Write(ZOOM_REG, zoom_reg); 335 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, vd_nums); 336 | PWM_Wait(PWM_NUM); 337 | msleep(vd_nums*VD_TIME+3); // +3ms must delay for DT1 and DT2 338 | } 339 | 340 | if (psum_left) 341 | { 342 | zoom_reg = (zoom_reg & 0xFF00) | psum_left; 343 | SPI_Write(ZOOM_REG, zoom_reg); 344 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, 1); 345 | PWM_Wait(PWM_NUM); 346 | msleep(VD_TIME+3); // +3ms must delay for DT1 and DT2 347 | } 348 | 349 | zoom_reg = (zoom_reg & 0xFF00) | 0x0; 350 | SPI_Write(ZOOM_REG, zoom_reg); 351 | ZoomDisable(); 352 | } 353 | 354 | void FocusForward(void) 355 | { 356 | focus_reg &= ~(0x1 << 8); 357 | SPI_Write(FOC_REG, focus_reg); 358 | } 359 | 360 | void FocusReverse(void) 361 | { 362 | focus_reg |= (0x1 << 8); 363 | SPI_Write(FOC_REG, focus_reg); 364 | } 365 | 366 | unsigned short GetFocusReg(void) 367 | { 368 | return focus_reg; 369 | } 370 | 371 | void FocusNormal(void) 372 | { 373 | focus_reg &= ~(0x1 << 9); 374 | SPI_Write(FOC_REG, focus_reg); 375 | } 376 | 377 | void FocusBrake(void) 378 | { 379 | focus_reg |= (0x1 << 9); 380 | SPI_Write(FOC_REG, focus_reg); 381 | } 382 | 383 | void FocusEnable(void) 384 | { 385 | focus_reg |= (0x1 << 10); 386 | SPI_Write(FOC_REG, focus_reg); 387 | } 388 | 389 | void FocusDisable(void) 390 | { 391 | focus_reg &= ~(0x1 << 10); 392 | SPI_Write(FOC_REG, focus_reg); 393 | } 394 | 395 | void FocusPIEnable(void) 396 | { 397 | zoom_reg |= (0x1 << 11); 398 | SPI_Write(ZOOM_REG, zoom_reg); 399 | } 400 | 401 | void FocusPIDisable(void) 402 | { 403 | zoom_reg &= ~(0x1 << 11); 404 | SPI_Write(ZOOM_REG, zoom_reg); 405 | } 406 | 407 | void SetFocusSpeed(unsigned int pps) 408 | { 409 | unsigned char psum = 0; 410 | 411 | if (pps <= 100) pps = 100; 412 | 413 | intct_f = (27 * 1000000 * FOC_PHASE) / (pps * 768); 414 | psum = (27 * 1000000) / (VD_FZ * intct_f * 24); 415 | intct_f = (27 * 1000000) / (VD_FZ * psum * 24); 416 | 417 | printk("SetFocusSpeed--->pps=%d, psum=%#x intct_f=%#x\n", pps, psum, intct_f); 418 | SPI_Write(FOC_SPD, intct_f); 419 | } 420 | 421 | static unsigned char GetFocusPsum(void) 422 | { 423 | unsigned char psum = 0; 424 | 425 | psum = (27 * 1000000) / (VD_FZ * intct_f * 24); 426 | 427 | return psum; 428 | } 429 | 430 | void FocusMove(unsigned int steps) 431 | { 432 | unsigned int vd_nums = 0; 433 | unsigned char psum, psum_left; 434 | 435 | if (steps == 0) return; 436 | 437 | psum = GetFocusPsum(); 438 | vd_nums = steps*(32/FOC_PHASE) / psum; 439 | psum_left = steps*(32/FOC_PHASE) % psum; 440 | printk("focus--->psum=%d, vd_nums=%d, psum_left=%d\n", psum, vd_nums, psum_left); 441 | 442 | FocusEnable(); 443 | //PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, vd_nums+1); 444 | //PWM_Wait(PWM_NUM); 445 | 446 | if (vd_nums) 447 | { 448 | focus_reg = (focus_reg & 0xFF00) | psum; 449 | SPI_Write(FOC_REG, focus_reg); 450 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, vd_nums); 451 | PWM_Wait(PWM_NUM); 452 | msleep(vd_nums*VD_TIME+3); // +3ms must delay for DT1 and DT2 453 | } 454 | 455 | if (psum_left) 456 | { 457 | focus_reg = (focus_reg & 0xFF00) | psum_left; 458 | SPI_Write(FOC_REG, focus_reg); 459 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, 1); 460 | PWM_Wait(PWM_NUM); 461 | msleep(VD_TIME+3); // +3ms must delay for DT1 and DT2 462 | } 463 | 464 | focus_reg = (focus_reg & 0xFF00) | 0; 465 | SPI_Write(FOC_REG, focus_reg); 466 | FocusDisable(); 467 | } 468 | 469 | void SyncMove(unsigned int z_pos, unsigned int f_pos) 470 | { 471 | unsigned int z_vds, f_vds; 472 | unsigned char z_psum, z_psum_left, f_psum, f_psum_left; 473 | 474 | if ((z_pos == 0) && (f_pos == 0)) return; 475 | 476 | z_psum = GetZoomPsum(); 477 | z_vds = z_pos*(32/ZOOM_PHASE) / z_psum; 478 | z_psum_left = z_pos*(32/ZOOM_PHASE) % z_psum; 479 | printk("zoom--->z_vds=%d, z_psum=%d, z_psum_left=%d\n", z_vds, z_psum, z_psum_left); 480 | 481 | f_psum = GetFocusPsum(); 482 | f_vds = f_pos*(32/FOC_PHASE) / f_psum; 483 | f_psum_left = f_pos*(32/FOC_PHASE) % f_psum; 484 | printk("focus-->f_vds=%d, f_psum=%d, f_psum_left=%d\n", f_vds, f_psum, f_psum_left); 485 | 486 | ZoomEnable(); 487 | FocusEnable(); 488 | 489 | if ((z_vds == 0) && (f_vds == 0)) 490 | { 491 | printk("has no vds!\n"); 492 | } 493 | else if (z_vds > f_vds) 494 | { 495 | zoom_reg = (zoom_reg & 0xFF00) | z_psum; 496 | SPI_Write(ZOOM_REG, zoom_reg); 497 | 498 | f_psum = f_pos*(32/FOC_PHASE) / z_vds; 499 | f_psum_left = f_pos*(32/FOC_PHASE) % z_vds; 500 | focus_reg = (focus_reg & 0xFF00) | f_psum; 501 | SPI_Write(FOC_REG, focus_reg); 502 | 503 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, z_vds); 504 | PWM_Wait(PWM_NUM); 505 | msleep(z_vds*VD_TIME+3); 506 | /* if (f_vds) 507 | { 508 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, f_vds); 509 | PWM_Wait(PWM_NUM); 510 | msleep(f_vds*VD_TIME+3); 511 | } 512 | focus_reg = (focus_reg & 0xFF00) | 0; 513 | SPI_Write(FOC_REG, focus_reg); 514 | 515 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, (z_vds-f_vds)+1); 516 | PWM_Wait(PWM_NUM); 517 | msleep((z_vds-f_vds)*VD_TIME+3); 518 | */ } 519 | else 520 | { 521 | focus_reg = (focus_reg & 0xFF00) | f_psum; 522 | SPI_Write(FOC_REG, focus_reg); 523 | 524 | z_psum = z_pos*(32/ZOOM_PHASE) / f_vds; 525 | z_psum_left = z_pos*(32/ZOOM_PHASE) % f_vds; 526 | zoom_reg = (zoom_reg & 0xFF00) | z_psum; 527 | SPI_Write(ZOOM_REG, zoom_reg); 528 | 529 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, f_vds); 530 | PWM_Wait(PWM_NUM); 531 | msleep(f_vds*VD_TIME+3); 532 | /* if (z_vds) 533 | { 534 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, z_vds); 535 | PWM_Wait(PWM_NUM); 536 | msleep(z_vds*VD_TIME+3); 537 | } 538 | zoom_reg = (zoom_reg & 0xFF00) | 0; 539 | SPI_Write(ZOOM_REG, zoom_reg); 540 | 541 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, (f_vds-z_vds)+1); 542 | PWM_Wait(PWM_NUM); 543 | msleep((f_vds-z_vds)*VD_TIME+3); 544 | */ } 545 | printk("zoom--->z_vds=%d, z_psum=%d, z_psum_left=%d\n", z_vds, z_psum, z_psum_left); 546 | printk("focus-->f_vds=%d, f_psum=%d, f_psum_left=%d\n", f_vds, f_psum, f_psum_left); 547 | 548 | if (z_psum_left || f_psum_left) 549 | { 550 | zoom_reg = (zoom_reg & 0xFF00) | z_psum_left; 551 | SPI_Write(ZOOM_REG, zoom_reg); 552 | focus_reg = (focus_reg & 0xFF00) | f_psum_left; 553 | SPI_Write(FOC_REG, focus_reg); 554 | PWM_Write(PWM_NUM, PWM_DUTY, PWM_PERIOD, 1); 555 | PWM_Wait(PWM_NUM); 556 | msleep(VD_TIME+3); 557 | } 558 | 559 | zoom_reg = (zoom_reg & 0xFF00) | 0; 560 | SPI_Write(ZOOM_REG, zoom_reg); 561 | focus_reg = (focus_reg & 0xFF00) | 0; 562 | SPI_Write(FOC_REG, focus_reg); 563 | ZoomDisable(); 564 | FocusDisable(); 565 | } 566 | 567 | unsigned char GetZoomPIFlag(void) 568 | { 569 | unsigned int reg_value = 0; 570 | 571 | reg_value = GPIO_READ_REG(GPIO2_DATA+0x3FC); 572 | if (reg_value & (0x1 << 5)) 573 | { 574 | return 1; 575 | } 576 | else 577 | { 578 | return 0; 579 | } 580 | } 581 | 582 | unsigned char GetFocusPIFlag(void) 583 | { 584 | unsigned int reg_value = 0; 585 | 586 | reg_value = GPIO_READ_REG(GPIO2_DATA+0x3FC); 587 | if (reg_value & (0x1 << 6)) 588 | { 589 | return 1; 590 | } 591 | else 592 | { 593 | return 0; 594 | } 595 | } 596 | 597 | -------------------------------------------------------------------------------- /len_drv/ls_lens_41908.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_lens_41908.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/08/8 10 | Description : 11 | History : 12 | 13 | Date : 2016/08/8 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_LENS_41908_H__ 20 | #define __LS_LENS_41908_H__ 21 | 22 | 23 | void AN41908_Init(void); 24 | void AN41908_Exit(void); 25 | void AN41908_Test(void); 26 | 27 | void ZoomForward(void); 28 | void ZoomReverse(void); 29 | void ZoomMove(unsigned int steps); 30 | void SetZoomSpeed(unsigned int pps); 31 | 32 | void ZoomPIEnable(void); 33 | void ZoomPIDisable(void); 34 | unsigned char GetZoomPIFlag(void); 35 | 36 | void FocusForward(void); 37 | void FocusReverse(void); 38 | void FocusMove(unsigned int steps); 39 | void SetFocusSpeed(unsigned int pps); 40 | unsigned short GetFocusReg(void); 41 | 42 | void FocusPIEnable(void); 43 | void FocusPIDisable(void); 44 | unsigned char GetFocusPIFlag(void); 45 | 46 | void SyncMove(unsigned int z_pos, unsigned int f_pos); 47 | 48 | #endif /* __LS_LENS_41908_H__ */ 49 | 50 | -------------------------------------------------------------------------------- /len_drv/ls_lens_drv.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include 10 | 11 | #include "ls_lens_drv.h" 12 | #include "ls_lens_41908.h" 13 | 14 | 15 | /* debug */ 16 | #define LSLENS_PFX "LsLens: " 17 | #define lslens_dbg(params...) printk(KERN_INFO LSLENS_PFX params) 18 | 19 | typedef struct 20 | { 21 | MOTOR_DIR_E focus_dir; 22 | unsigned int focus_pos; 23 | unsigned char focus_cnt; 24 | MOTOR_SPEED_S focus_spd; 25 | 26 | MOTOR_DIR_E zoom_dir; 27 | unsigned int zoom_pos; 28 | unsigned char zoom_cnt; 29 | MOTOR_SPEED_S zoom_spd; 30 | 31 | unsigned int zoom_point; 32 | }LENS_STATUS_S; 33 | 34 | static LENS_STATUS_S sLens = {0}; 35 | static unsigned int foc_cal_tbl[ZOOM_POINT_MAX] = {0}; 36 | 37 | void LensParamInit(void) 38 | { 39 | sLens.focus_dir = MOTOR_FWD; 40 | sLens.focus_pos = FOC_HOME_POS; 41 | sLens.focus_cnt = 0; 42 | sLens.focus_spd = MOTOR_SPEED_MID; 43 | 44 | sLens.zoom_dir = MOTOR_FWD; 45 | sLens.zoom_pos = ZOOM_HOME_POS; 46 | sLens.zoom_cnt = 0; 47 | sLens.zoom_spd = MOTOR_SPEED_MID; 48 | sLens.zoom_point= 0; 49 | 50 | SetZoomSpeed(sLens.zoom_spd); 51 | SetFocusSpeed(sLens.focus_spd); 52 | } 53 | 54 | int ZoomHomeInit(void) 55 | { 56 | unsigned int pos_cnt = 0; 57 | unsigned char zoom_pi = 0; 58 | 59 | ZoomPIEnable(); 60 | msleep(10); 61 | 62 | pos_cnt = 0; 63 | zoom_pi = GetZoomPIFlag(); 64 | printk("zoom_pi_0=%d\n", zoom_pi); 65 | if (zoom_pi) { 66 | ZoomForward(); 67 | } 68 | else { 69 | ZoomReverse(); 70 | } 71 | do { 72 | ZoomMove(10); 73 | pos_cnt += 10; 74 | if (pos_cnt > ZOOM_POS_RANGE) return -1; 75 | if (GetZoomPIFlag() != zoom_pi) break; 76 | } while(1); 77 | 78 | pos_cnt = 0; 79 | zoom_pi = GetZoomPIFlag(); 80 | printk("zoom_pi_1=%d\n", zoom_pi); 81 | if (zoom_pi) { 82 | ZoomForward(); 83 | } 84 | else { 85 | ZoomReverse(); 86 | } 87 | do { 88 | ZoomMove(1); 89 | pos_cnt += 1; 90 | if (pos_cnt > ZOOM_POS_RANGE) return -1; 91 | //if (GetZoomPIFlag() != zoom_pi) break; 92 | if (GetZoomPIFlag() != zoom_pi) //tzq@20161012 add for HOME_POS at low 93 | { 94 | if (!zoom_pi) 95 | { 96 | zoom_pi = 1; 97 | pos_cnt = 0; 98 | ZoomForward(); 99 | } 100 | else break; 101 | } 102 | } while(1); 103 | 104 | sLens.zoom_pos = ZOOM_HOME_POS; 105 | 106 | ZoomPIDisable(); 107 | msleep(10); 108 | 109 | return 0; 110 | } 111 | 112 | int FocusHomeInit(void) 113 | { 114 | unsigned int pos_cnt = 0; 115 | unsigned char focus_pi = 0; 116 | 117 | FocusPIEnable(); 118 | msleep(10); 119 | 120 | pos_cnt = 0; 121 | focus_pi = GetFocusPIFlag(); 122 | printk("focus_pi_0=%d\n", focus_pi); 123 | if (focus_pi) { 124 | FocusForward(); 125 | } 126 | else { 127 | FocusReverse(); 128 | } 129 | do { 130 | FocusMove(10); 131 | pos_cnt += 10; 132 | if (pos_cnt > FOC_POS_RANGE) return -1; 133 | if (GetFocusPIFlag() != focus_pi) break; 134 | } while(1); 135 | 136 | pos_cnt = 0; 137 | focus_pi = GetFocusPIFlag(); 138 | printk("focus_pi_1=%d\n", focus_pi); 139 | if (focus_pi) { 140 | FocusForward(); 141 | } 142 | else { 143 | FocusReverse(); 144 | } 145 | do { 146 | FocusMove(1); 147 | pos_cnt += 1; 148 | if (pos_cnt > FOC_POS_RANGE) return -1; 149 | //if (GetFocusPIFlag() != focus_pi) break; 150 | if (GetFocusPIFlag() != focus_pi) //tzq@20161012 add for HOME_POS at low 151 | { 152 | if (!focus_pi) 153 | { 154 | focus_pi= 1; 155 | pos_cnt = 0; 156 | FocusForward(); 157 | } 158 | else break; 159 | } 160 | } while(1); 161 | 162 | sLens.focus_pos = FOC_HOME_POS; 163 | 164 | FocusPIDisable(); 165 | msleep(10); 166 | 167 | return 0; 168 | } 169 | 170 | int SetZoomDir(MOTOR_DIR_E dir) 171 | { 172 | if (dir == MOTOR_FWD) 173 | { 174 | ZoomForward(); 175 | } 176 | else 177 | { 178 | ZoomReverse(); 179 | } 180 | sLens.zoom_dir = dir; 181 | 182 | return 0; 183 | } 184 | 185 | MOTOR_DIR_E GetZoomDir(void) 186 | { 187 | return sLens.zoom_dir; 188 | } 189 | 190 | int SetFocusDir(MOTOR_DIR_E dir) 191 | { 192 | if (dir == MOTOR_FWD) 193 | { 194 | FocusForward(); 195 | } 196 | else 197 | { 198 | FocusReverse(); 199 | } 200 | sLens.focus_dir = dir; 201 | 202 | return 0; 203 | } 204 | 205 | MOTOR_DIR_E GetFocusDir(void) 206 | { 207 | return sLens.focus_dir; 208 | } 209 | 210 | void SetZoomPos(unsigned int pos) 211 | { 212 | if (pos == 0) return; 213 | 214 | if (sLens.zoom_dir == MOTOR_REV) 215 | { 216 | if ((sLens.zoom_pos + pos) > (ZOOM_POS_FRONT_D+ZOOM_HOME_POS)) 217 | { 218 | pos = (ZOOM_POS_FRONT_D+ZOOM_HOME_POS) - sLens.zoom_pos; 219 | } 220 | sLens.zoom_pos += pos; 221 | } 222 | else 223 | { 224 | if ((sLens.zoom_pos - pos) < (ZOOM_POS_REVER_D+ZOOM_HOME_POS)) 225 | { 226 | pos = sLens.zoom_pos - (ZOOM_POS_REVER_D+ZOOM_HOME_POS); 227 | } 228 | sLens.zoom_pos -= pos; 229 | } 230 | ZoomMove(pos); 231 | } 232 | 233 | unsigned int GetZoomPos(void) 234 | { 235 | return sLens.zoom_pos; 236 | } 237 | 238 | void SetFocusPos(unsigned int pos) 239 | { 240 | if (pos == 0) return; 241 | 242 | if (sLens.focus_dir == MOTOR_REV) 243 | { 244 | if ((sLens.focus_pos + pos) > (FOC_POS_FRONT_D+FOC_HOME_POS)) 245 | { 246 | pos = (FOC_POS_FRONT_D+FOC_HOME_POS) - sLens.focus_pos; 247 | } 248 | sLens.focus_pos += pos; 249 | } 250 | else 251 | { 252 | if ((sLens.focus_pos - pos) < (FOC_POS_REVER_D+FOC_HOME_POS)) 253 | { 254 | pos = sLens.focus_pos - (FOC_POS_REVER_D+FOC_HOME_POS); 255 | } 256 | sLens.focus_pos -= pos; 257 | } 258 | FocusMove(pos); 259 | } 260 | 261 | unsigned int GetFocusPos(void) 262 | { 263 | return sLens.focus_pos; 264 | } 265 | 266 | int SetZoomPoint(unsigned int zp) 267 | { 268 | int steps = 0; 269 | unsigned int z_pos, f_pos; 270 | MOTOR_DIR_E dir; 271 | 272 | if (zp >= ZOOM_POINT_MAX) return -1; 273 | 274 | sLens.zoom_point = zp; 275 | steps = ZOOM_TBL[zp] + ZOOM_HOME_POS - sLens.zoom_pos; 276 | dir = (steps >= 0 ? MOTOR_REV:MOTOR_FWD); 277 | SetZoomDir(dir); 278 | sLens.zoom_pos += steps; 279 | z_pos = (steps >= 0 ? steps:-steps); 280 | 281 | //steps = FOC_TBL[zp] + FOC_HOME_POS - sLens.focus_pos; 282 | steps = foc_cal_tbl[zp] - sLens.focus_pos; 283 | dir = (steps >= 0 ? MOTOR_REV:MOTOR_FWD); 284 | SetFocusDir(dir); 285 | sLens.focus_pos += steps; 286 | f_pos = (steps >= 0 ? steps:-steps); 287 | 288 | if ((z_pos == 0) && (f_pos == 0)) return 0; 289 | /* 290 | //z_pos = 10; f_pos=100; 291 | if (z_pos > f_pos) 292 | { 293 | //SetZoomSpeed(MOTOR_SPEED_MID); 294 | SetFocusSpeed((MOTOR_SPEED_MID*f_pos*2+z_pos)/(2*z_pos)); 295 | } 296 | else 297 | { 298 | //SetFocusSpeed(MOTOR_SPEED_MID); 299 | SetZoomSpeed((MOTOR_SPEED_MID*z_pos*2+f_pos)/(2*f_pos)); 300 | } 301 | */ 302 | SyncMove(z_pos, f_pos); 303 | 304 | // SetZoomSpeed(sLens.zoom_spd); 305 | // SetFocusSpeed(sLens.focus_spd); 306 | 307 | return 0; 308 | } 309 | 310 | unsigned int GetZoomPoint(void) 311 | { 312 | return sLens.zoom_point; 313 | } 314 | 315 | int LensInit(void) 316 | { 317 | int ret = 0; 318 | int steps = 0; 319 | unsigned int pos; 320 | MOTOR_DIR_E dir; 321 | 322 | ret |= FocusHomeInit(); 323 | ret |= ZoomHomeInit(); 324 | 325 | //ret |= SetZoomPoint(0); 326 | steps = ZOOM_TBL[0] + ZOOM_HOME_POS - sLens.zoom_pos; 327 | dir = (steps >= 0 ? MOTOR_REV:MOTOR_FWD); 328 | pos = (steps >= 0 ? steps:-steps); 329 | SetZoomDir(dir); 330 | SetZoomPos(pos); 331 | sLens.zoom_point = 0; 332 | 333 | steps = foc_cal_tbl[0] - sLens.focus_pos; 334 | dir = (steps >= 0 ? MOTOR_REV:MOTOR_FWD); 335 | pos = (steps >= 0 ? steps:-steps); 336 | SetFocusDir(dir); 337 | SetFocusPos(pos); 338 | 339 | return ret; 340 | } 341 | 342 | //------------------------------------------------------------------------------------------ 343 | 344 | /* file operation */ 345 | 346 | static int lslens_open(struct inode* inode, struct file* file) 347 | { 348 | return 0; 349 | } 350 | 351 | static int lslens_close(struct inode* inode, struct file* file) 352 | { 353 | return 0; 354 | } 355 | 356 | ssize_t lslens_write(struct file *filp, const char __user *buf, size_t count, loff_t *f_pos) 357 | { 358 | if (count != sizeof(foc_cal_tbl)) 359 | { 360 | return -EFAULT; 361 | } 362 | 363 | if (copy_from_user(foc_cal_tbl, buf, count)) 364 | { 365 | return -EFAULT; 366 | } 367 | 368 | return count; 369 | } 370 | 371 | ssize_t lslens_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos) 372 | { 373 | return count; 374 | } 375 | 376 | static long lslens_ioctl(struct file* file, unsigned int cmd, unsigned long arg) 377 | { 378 | int err=0, ret; 379 | unsigned int zp, pos; 380 | unsigned short reg_value = 0; 381 | MOTOR_DIR_E dir; 382 | 383 | if (_IOC_TYPE(cmd) != LENS_IOC_MAGIC) 384 | { 385 | return -ENOTTY; 386 | } 387 | if (_IOC_NR(cmd) > LENS_IOC_MAXNR) 388 | { 389 | return -ENOTTY; 390 | } 391 | if (_IOC_DIR(cmd) & _IOC_READ) 392 | { 393 | err = !access_ok(VERIFY_WRITE, (void __user*)arg, _IOC_SIZE(cmd)); 394 | } 395 | if (_IOC_DIR(cmd) & _IOC_WRITE) 396 | { 397 | err = !access_ok(VERIFY_READ, (void __user*)arg, _IOC_SIZE(cmd)); 398 | } 399 | if (err) 400 | { 401 | return -ENOTTY; 402 | } 403 | 404 | lslens_dbg("ioctl->cmd=%#x\n", cmd); 405 | switch (cmd) 406 | { 407 | case LENS_IOC_INIT: 408 | LensInit(); 409 | break; 410 | case LENS_IOC_FOCPLUS: 411 | ret = __get_user(pos, (unsigned int __user*)arg); 412 | if (0 == ret) 413 | { 414 | SetFocusDir(MOTOR_REV); 415 | SetFocusPos(pos); 416 | } 417 | break; 418 | case LENS_IOC_FOCMINUS: 419 | ret = __get_user(pos, (unsigned int __user*)arg); 420 | if (0 == ret) 421 | { 422 | SetFocusDir(MOTOR_FWD); 423 | SetFocusPos(pos); 424 | } 425 | break; 426 | case LENS_IOC_ZOOMPLUS: 427 | zp = GetZoomPoint(); 428 | if (zp < ZOOM_POINT_MAX-1) 429 | { 430 | SetZoomPoint(++zp); 431 | } 432 | break; 433 | case LENS_IOC_ZOOMMINUS: 434 | zp = GetZoomPoint(); 435 | if (zp > 0) 436 | { 437 | SetZoomPoint(--zp); 438 | } 439 | break; 440 | case LENS_IOC_SETFOCDIR: 441 | ret = __get_user(dir, (MOTOR_DIR_E __user*)arg); 442 | if (0 == ret) 443 | { 444 | SetFocusDir(dir); 445 | } 446 | break; 447 | case LENS_IOC_GETFOCDIR: 448 | dir = GetFocusDir(); 449 | __put_user(dir, (MOTOR_DIR_E __user*)arg); 450 | break; 451 | case LENS_IOC_SETFOCPOS: 452 | ret = __get_user(pos, (unsigned int __user*)arg); 453 | if (0 == ret) 454 | { 455 | SetFocusPos(pos); 456 | } 457 | break; 458 | case LENS_IOC_GETFOCPOS: 459 | pos = GetFocusPos(); 460 | __put_user(pos, (unsigned int __user*)arg); 461 | break; 462 | case LENS_IOC_SETZOOMPOINT: 463 | ret = __get_user(zp, (unsigned int __user*)arg); 464 | if (0 == ret) 465 | { 466 | SetZoomPoint(zp); 467 | } 468 | break; 469 | case LENS_IOC_GETZOOMPOINT: 470 | zp = GetZoomPoint(); 471 | __put_user(zp, (unsigned int __user*)arg); 472 | break; 473 | case LENS_IOC_GETFOCREG: 474 | reg_value = GetFocusReg(); 475 | __put_user(reg_value, (unsigned short __user*)arg); 476 | break; 477 | default: 478 | { 479 | lslens_dbg("invalid ioctl command!\n"); 480 | return -ENOIOCTLCMD; 481 | } 482 | } 483 | 484 | return 0; 485 | } 486 | 487 | static struct file_operations lslens_fops = { 488 | .owner = THIS_MODULE, 489 | .read = lslens_read, 490 | .write = lslens_write, 491 | .unlocked_ioctl = lslens_ioctl, 492 | .open = lslens_open, 493 | .release = lslens_close, 494 | }; 495 | 496 | static struct miscdevice lslens_miscdev = { 497 | .minor = MISC_DYNAMIC_MINOR, 498 | .name = "lslens", 499 | .fops = &lslens_fops, 500 | }; 501 | 502 | static int __init lslens_init(void) 503 | { 504 | int ret = 0; 505 | 506 | lslens_dbg("lslens_init.\n"); 507 | ret = misc_register(&lslens_miscdev); 508 | if (ret != 0) 509 | { 510 | lslens_dbg("register lslens device failed with %#x!\n", ret); 511 | return -1; 512 | } 513 | 514 | AN41908_Init(); 515 | LensParamInit(); 516 | //LensInit(); 517 | //AN41908_Test(); 518 | 519 | return 0; 520 | } 521 | 522 | static void __exit lslens_exit(void) 523 | { 524 | lslens_dbg("lslens_exit.\n"); 525 | misc_deregister(&lslens_miscdev); 526 | 527 | AN41908_Exit(); 528 | } 529 | 530 | module_init(lslens_init); 531 | module_exit(lslens_exit); 532 | 533 | MODULE_DESCRIPTION("Longse lens driver"); 534 | MODULE_LICENSE("GPL"); 535 | MODULE_AUTHOR("TZQ"); 536 | 537 | -------------------------------------------------------------------------------- /len_drv/ls_lens_drv.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_lens_drv.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/08/8 10 | Description : 11 | History : 12 | 13 | Date : 2016/08/8 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_LENS_DRV_H__ 20 | #define __LS_LENS_DRV_H__ 21 | 22 | #ifdef __cplusplus 23 | #if __cplusplus 24 | extern "C" { 25 | #endif 26 | #endif /* __cplusplus */ 27 | 28 | #include 29 | 30 | #include "ls_lens_types.h" 31 | 32 | typedef enum 33 | { 34 | MOTOR_FWD = 0x00, 35 | MOTOR_REV = 0x01, 36 | 37 | MOTOR_FREE = 0x80, 38 | }MOTOR_DIR_E; 39 | 40 | typedef enum 41 | { 42 | MOTOR_SPEED_LOW = 200, 43 | MOTOR_SPEED_MID = 500, 44 | MOTOR_SPEED_HIGH = 800, 45 | }MOTOR_SPEED_S; 46 | 47 | #define LENS_IOC_MAGIC 'x' 48 | 49 | #define LENS_IOC_INIT _IO(LENS_IOC_MAGIC, 0) 50 | #define LENS_IOC_FOCPLUS _IO(LENS_IOC_MAGIC, 1) 51 | #define LENS_IOC_FOCMINUS _IO(LENS_IOC_MAGIC, 2) 52 | #define LENS_IOC_ZOOMPLUS _IO(LENS_IOC_MAGIC, 3) 53 | #define LENS_IOC_ZOOMMINUS _IO(LENS_IOC_MAGIC, 4) 54 | #define LENS_IOC_LENSOFF _IO(LENS_IOC_MAGIC, 5) 55 | 56 | #define LENS_IOC_GETFOCDIR _IOR(LENS_IOC_MAGIC, 6, MOTOR_DIR_E) 57 | #define LENS_IOC_SETFOCDIR _IOW(LENS_IOC_MAGIC, 6, MOTOR_DIR_E) 58 | 59 | #define LENS_IOC_GETFOCPOS _IOR(LENS_IOC_MAGIC, 7, unsigned int) 60 | #define LENS_IOC_SETFOCPOS _IOW(LENS_IOC_MAGIC, 7, unsigned int) 61 | 62 | #define LENS_IOC_GETZOOMPOINT _IOR(LENS_IOC_MAGIC, 8, unsigned int) 63 | #define LENS_IOC_SETZOOMPOINT _IOW(LENS_IOC_MAGIC, 8, unsigned int) 64 | 65 | #define LENS_IOC_GETFOCREG _IOR(LENS_IOC_MAGIC, 9, unsigned short) 66 | 67 | #define LENS_IOC_MAXNR 9 68 | 69 | #ifdef __cplusplus 70 | #if __cplusplus 71 | } 72 | #endif 73 | #endif /* __cplusplus */ 74 | 75 | #endif /* __LS_LENS_DRV_H__ */ 76 | 77 | -------------------------------------------------------------------------------- /len_drv/ls_lens_pwm.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | 6 | #include "ls_lens_pwm.h" 7 | 8 | 9 | #define PERI_ADDRESS_BASE 0x20030000 10 | #define MISC_ADDRESS_BASE 0x20120000 11 | #define PWM_ADDRESS_BASE 0x20130000 12 | 13 | void __iomem* reg_peri_base_va = 0; 14 | void __iomem* reg_misc_base_va = 0; 15 | void __iomem* reg_pwm_base_va = 0; 16 | 17 | #define HI_IO_PERI_ADDRESS(x) (reg_peri_base_va + ((x) - (PERI_ADDRESS_BASE))) 18 | #define HI_IO_MISC_ADDRESS(x) (reg_misc_base_va + ((x) - (MISC_ADDRESS_BASE))) 19 | #define HI_IO_PWM_ADDRESS(x) (reg_pwm_base_va + ((x) - (PWM_ADDRESS_BASE))) 20 | 21 | #define PERI_REG(x) HI_IO_PERI_ADDRESS(PERI_ADDRESS_BASE + x) 22 | #define MISC_REG(x) HI_IO_MISC_ADDRESS(MISC_ADDRESS_BASE + x) 23 | 24 | //PWM 25 | #define PWM0_CFG_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0000) 26 | #define PWM0_CFG_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0004) 27 | #define PWM0_CFG_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0008) 28 | #define PWM0_CTRL_REG HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x000C) 29 | #define PWM0_STATE_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0010) 30 | #define PWM0_STATE_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0014) 31 | #define PWM0_STATE_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0018) 32 | 33 | #define PWM1_CFG_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0020) 34 | #define PWM1_CFG_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0024) 35 | #define PWM1_CFG_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0028) 36 | #define PWM1_CTRL_REG HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x002C) 37 | #define PWM1_STATE_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0030) 38 | #define PWM1_STATE_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0034) 39 | #define PWM1_STATE_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0038) 40 | 41 | #define PWM2_CFG_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0040) 42 | #define PWM2_CFG_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0044) 43 | #define PWM2_CFG_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0048) 44 | #define PWM2_CTRL_REG HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x004C) 45 | #define PWM2_STATE_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0050) 46 | #define PWM2_STATE_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0054) 47 | #define PWM2_STATE_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0058) 48 | 49 | #define PWM3_CFG_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0060) 50 | #define PWM3_CFG_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0064) 51 | #define PWM3_CFG_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0068) 52 | #define PWM3_CTRL_REG HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x006C) 53 | #define PWM3_STATE_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0070) 54 | #define PWM3_STATE_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0074) 55 | #define PWM3_STATE_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x0078) 56 | 57 | #define PWM4_CFG_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1000) 58 | #define PWM4_CFG_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1004) 59 | #define PWM4_CFG_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1008) 60 | #define PWM4_CTRL_REG HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x100C) 61 | #define PWM4_STATE_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1010) 62 | #define PWM4_STATE_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1014) 63 | #define PWM4_STATE_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1018) 64 | 65 | #define PWM5_CFG_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1020) 66 | #define PWM5_CFG_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1024) 67 | #define PWM5_CFG_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1028) 68 | #define PWM5_CTRL_REG HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x102C) 69 | #define PWM5_STATE_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1030) 70 | #define PWM5_STATE_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1034) 71 | #define PWM5_STATE_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1038) 72 | 73 | #define PWM6_CFG_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1040) 74 | #define PWM6_CFG_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1044) 75 | #define PWM6_CFG_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1048) 76 | #define PWM6_CTRL_REG HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x104C) 77 | #define PWM6_STATE_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1050) 78 | #define PWM6_STATE_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1054) 79 | #define PWM6_STATE_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1058) 80 | 81 | #define PWM7_CFG_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1060) 82 | #define PWM7_CFG_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1064) 83 | #define PWM7_CFG_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1068) 84 | #define PWM7_CTRL_REG HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x106C) 85 | #define PWM7_STATE_REG0 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1070) 86 | #define PWM7_STATE_REG1 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1074) 87 | #define PWM7_STATE_REG2 HI_IO_PWM_ADDRESS(PWM_ADDRESS_BASE + 0x1078) 88 | 89 | #define PWM_WRITE_REG(Addr, Value) ((*(volatile unsigned int *)(Addr)) = (Value)) 90 | #define PWM_READ_REG(Addr) (*(volatile unsigned int *)(Addr)) 91 | 92 | 93 | #define PWM_NUM_MAX 0x08 94 | 95 | #define PWM_ENABLE 0x01 96 | #define PWM_DISABLE 0x00 97 | 98 | 99 | void PWM_Init(void) 100 | { 101 | unsigned int i, index = 0; 102 | unsigned int reg_value = 0; 103 | 104 | reg_peri_base_va = (void __iomem*)IO_ADDRESS(PERI_ADDRESS_BASE); 105 | reg_misc_base_va = (void __iomem*)IO_ADDRESS(MISC_ADDRESS_BASE); 106 | reg_pwm_base_va = (void __iomem*)IO_ADDRESS(PWM_ADDRESS_BASE); 107 | 108 | index = 14*4; // open pwm clock 109 | reg_value = PWM_READ_REG(PERI_REG(index)); 110 | PWM_WRITE_REG(PERI_REG(index), reg_value | (0x1 << 1)); 111 | 112 | index = 65*4; // select pwm clock 3MHz 113 | reg_value = PWM_READ_REG(PERI_REG(index)); 114 | PWM_WRITE_REG(PERI_REG(index), reg_value & ~(0x1 << 10)); 115 | 116 | index = 5*4; 117 | for (i=0; i<4; i++) // pwm0,pwm1,pwm2,pwm3 normal output 118 | { 119 | reg_value = PWM_READ_REG(MISC_REG(index)); 120 | PWM_WRITE_REG(MISC_REG(index), reg_value & ~(0x0f << 16)); 121 | } 122 | } 123 | 124 | void PWM_Exit(void) 125 | { 126 | reg_peri_base_va = NULL; 127 | reg_misc_base_va = NULL; 128 | reg_pwm_base_va = NULL; 129 | } 130 | 131 | int PWM_Disable(unsigned char num) 132 | { 133 | if (num >= PWM_NUM_MAX) 134 | { 135 | printk("The pwm number is big than the max value!\n"); 136 | return -1; 137 | } 138 | 139 | switch (num) 140 | { 141 | case 0: 142 | PWM_WRITE_REG(PWM0_CTRL_REG, PWM_DISABLE); 143 | break; 144 | case 1: 145 | PWM_WRITE_REG(PWM1_CTRL_REG, PWM_DISABLE); 146 | break; 147 | case 2: 148 | PWM_WRITE_REG(PWM2_CTRL_REG, PWM_DISABLE); 149 | break; 150 | case 3: 151 | PWM_WRITE_REG(PWM3_CTRL_REG, PWM_DISABLE); 152 | break; 153 | case 4: 154 | PWM_WRITE_REG(PWM4_CTRL_REG, PWM_DISABLE); 155 | break; 156 | case 5: 157 | PWM_WRITE_REG(PWM5_CTRL_REG, PWM_DISABLE); 158 | break; 159 | case 6: 160 | PWM_WRITE_REG(PWM6_CTRL_REG, PWM_DISABLE); 161 | break; 162 | case 7: 163 | PWM_WRITE_REG(PWM7_CTRL_REG, PWM_DISABLE); 164 | break; 165 | default: 166 | break; 167 | } 168 | 169 | return 0; 170 | } 171 | 172 | int PWM_Write(unsigned char num, unsigned int duty, unsigned int period, unsigned int pwm_num) 173 | { 174 | if (num >= PWM_NUM_MAX) 175 | { 176 | printk("The pwm number is big than the max value!\n"); 177 | return -1; 178 | } 179 | 180 | switch (num) 181 | { 182 | case 0: 183 | PWM_WRITE_REG(PWM0_CTRL_REG, PWM_DISABLE); 184 | 185 | PWM_WRITE_REG(PWM0_CFG_REG0, period); 186 | PWM_WRITE_REG(PWM0_CFG_REG1, duty); 187 | PWM_WRITE_REG(PWM0_CFG_REG2, pwm_num); //pwm output number 188 | 189 | PWM_WRITE_REG(PWM0_CTRL_REG, (0 << 2 | PWM_ENABLE)); // keep pwm always output; 190 | //printk("The PWM0 state %x\n",PWM_READ_REG(PWM0_STATE_REG2)); 191 | break; 192 | case 1: 193 | PWM_WRITE_REG(PWM1_CTRL_REG, PWM_DISABLE); 194 | 195 | PWM_WRITE_REG(PWM1_CFG_REG0, period); 196 | PWM_WRITE_REG(PWM1_CFG_REG1, duty); 197 | PWM_WRITE_REG(PWM1_CFG_REG2, pwm_num); //pwm output number 198 | 199 | PWM_WRITE_REG(PWM1_CTRL_REG, (0 << 2 | PWM_ENABLE)); // keep pwm always output; 200 | //printk("The PWM1 state %x\n",PWM_READ_REG(PWM1_STATE_REG2)); 201 | break; 202 | case 2: 203 | PWM_WRITE_REG(PWM2_CTRL_REG, PWM_DISABLE); 204 | 205 | PWM_WRITE_REG(PWM2_CFG_REG0, period); 206 | PWM_WRITE_REG(PWM2_CFG_REG1, duty); 207 | PWM_WRITE_REG(PWM2_CFG_REG2, pwm_num); //pwm output number 208 | 209 | PWM_WRITE_REG(PWM2_CTRL_REG, (1 << 2 | PWM_ENABLE)); // keep pwm always output; 210 | printk("The PWM2 state %x\n",PWM_READ_REG(PWM2_STATE_REG2)); 211 | break; 212 | case 3: 213 | PWM_WRITE_REG(PWM3_CTRL_REG, PWM_DISABLE); 214 | 215 | PWM_WRITE_REG(PWM3_CFG_REG0, period); 216 | PWM_WRITE_REG(PWM3_CFG_REG1, duty); 217 | PWM_WRITE_REG(PWM3_CFG_REG2, pwm_num); //pwm output number 218 | 219 | PWM_WRITE_REG(PWM3_CTRL_REG, (1 << 2 | PWM_ENABLE)); // keep pwm always output; 220 | printk("The PWM3 state %x\n",PWM_READ_REG(PWM3_STATE_REG2)); 221 | break; 222 | case 4: 223 | PWM_WRITE_REG(PWM4_CTRL_REG, PWM_DISABLE); 224 | 225 | PWM_WRITE_REG(PWM4_CFG_REG0, period); 226 | PWM_WRITE_REG(PWM4_CFG_REG1, duty); 227 | PWM_WRITE_REG(PWM4_CFG_REG2, pwm_num); //pwm output number 228 | 229 | PWM_WRITE_REG(PWM4_CTRL_REG, (1 << 2 | PWM_ENABLE)); // keep pwm always output; 230 | printk("The PWM4 state %x\n",PWM_READ_REG(PWM4_STATE_REG2)); 231 | break; 232 | case 5: 233 | PWM_WRITE_REG(PWM5_CTRL_REG, PWM_DISABLE); 234 | 235 | PWM_WRITE_REG(PWM5_CFG_REG0, period); 236 | PWM_WRITE_REG(PWM5_CFG_REG1, duty); 237 | PWM_WRITE_REG(PWM5_CFG_REG2, pwm_num); //pwm output number 238 | 239 | PWM_WRITE_REG(PWM5_CTRL_REG, (1 << 2 | PWM_ENABLE)); // keep pwm always output; 240 | printk("The PWM5 state %x\n",PWM_READ_REG(PWM5_STATE_REG2)); 241 | break; 242 | case 6: 243 | PWM_WRITE_REG(PWM6_CTRL_REG, PWM_DISABLE); 244 | 245 | PWM_WRITE_REG(PWM6_CFG_REG0, period); 246 | PWM_WRITE_REG(PWM6_CFG_REG1, duty); 247 | PWM_WRITE_REG(PWM6_CFG_REG2, pwm_num); //pwm output number 248 | 249 | PWM_WRITE_REG(PWM6_CTRL_REG, (1 << 2 | PWM_ENABLE)); // keep pwm always output; 250 | printk("The PWM6 state %x\n",PWM_READ_REG(PWM6_STATE_REG2)); 251 | break; 252 | case 7: 253 | PWM_WRITE_REG(PWM7_CTRL_REG, PWM_DISABLE); 254 | 255 | PWM_WRITE_REG(PWM7_CFG_REG0, period); 256 | PWM_WRITE_REG(PWM7_CFG_REG1, duty); 257 | PWM_WRITE_REG(PWM7_CFG_REG2, pwm_num); //pwm output number 258 | 259 | PWM_WRITE_REG(PWM7_CTRL_REG, (1 << 2 | PWM_ENABLE)); // keep pwm always output; 260 | printk("The PWM7 state %x\n",PWM_READ_REG(PWM7_STATE_REG2)); 261 | break; 262 | default: 263 | PWM_WRITE_REG(PWM0_CTRL_REG, PWM_DISABLE); 264 | 265 | PWM_WRITE_REG(PWM0_CFG_REG0, period); 266 | PWM_WRITE_REG(PWM0_CFG_REG1, duty); 267 | PWM_WRITE_REG(PWM0_CFG_REG2, pwm_num); //pwm output number 268 | 269 | PWM_WRITE_REG(PWM0_CTRL_REG, (1 << 2 | PWM_ENABLE)); // keep pwm always output; 270 | printk("The PWM0 state %x\n",PWM_READ_REG(PWM0_STATE_REG2)); 271 | break; 272 | } 273 | 274 | return 0; 275 | } 276 | 277 | static bool GetPwmState(unsigned char num) 278 | { 279 | unsigned int reg_value = 0; 280 | 281 | switch (num) 282 | { 283 | case 0: 284 | reg_value = PWM_READ_REG(PWM0_STATE_REG2); 285 | break; 286 | case 1: 287 | reg_value = PWM_READ_REG(PWM1_STATE_REG2); 288 | break; 289 | case 2: 290 | reg_value = PWM_READ_REG(PWM2_STATE_REG2); 291 | break; 292 | case 3: 293 | reg_value = PWM_READ_REG(PWM3_STATE_REG2); 294 | break; 295 | case 4: 296 | reg_value = PWM_READ_REG(PWM4_STATE_REG2); 297 | break; 298 | case 5: 299 | reg_value = PWM_READ_REG(PWM5_STATE_REG2); 300 | break; 301 | case 6: 302 | reg_value = PWM_READ_REG(PWM6_STATE_REG2); 303 | break; 304 | case 7: 305 | reg_value = PWM_READ_REG(PWM7_STATE_REG2); 306 | break; 307 | default: 308 | reg_value = PWM_READ_REG(PWM0_STATE_REG2); 309 | break; 310 | } 311 | 312 | if (reg_value & (0x1 << 10)) return true; 313 | else return false; 314 | } 315 | 316 | int PWM_Wait(unsigned char num) 317 | { 318 | 319 | if (num >= PWM_NUM_MAX) 320 | { 321 | printk("The pwm number is big than the max value!\n"); 322 | return -1; 323 | } 324 | 325 | //printk("state=%d\n", GetPwmState(num)); 326 | while (GetPwmState(num) == false) 327 | { 328 | //msleep(1); 329 | } 330 | //while (GetPwmState(num) == true) 331 | //{ 332 | // msleep(1); 333 | //} 334 | //printk("state=%d\n", GetPwmState(num)); 335 | 336 | return 0; 337 | } 338 | 339 | -------------------------------------------------------------------------------- /len_drv/ls_lens_pwm.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_lens_pwm.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/08/8 10 | Description : 11 | History : 12 | 13 | Date : 2016/08/8 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_LENS_PWM_H__ 20 | #define __LS_LENS_PWM_H__ 21 | 22 | #define PWM_CLK 3000000 23 | 24 | void PWM_Init(void); 25 | void PWM_Exit(void); 26 | 27 | int PWM_Disable(unsigned char num); 28 | int PWM_Write(unsigned char num, unsigned int duty, unsigned int period, unsigned int pwm_num); 29 | int PWM_Wait(unsigned char num); 30 | 31 | #endif 32 | 33 | -------------------------------------------------------------------------------- /len_drv/ls_lens_spi.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include 6 | 7 | #include "ls_lens_spi.h" 8 | 9 | 10 | #define SPI0_ADDRESS_BASE 0x200C0000 11 | #define SPI1_ADDRESS_BASE 0x200E0000 12 | 13 | void __iomem* reg_spi0_base_va = 0; 14 | void __iomem* reg_spi1_base_va = 0; 15 | 16 | #define HI_IO_SPI0_ADDRESS(x) (reg_spi0_base_va + ((x) - (SPI0_ADDRESS_BASE))) 17 | #define HI_IO_SPI1_ADDRESS(x) (reg_spi1_base_va + ((x) - (SPI1_ADDRESS_BASE))) 18 | 19 | #define SPI0_REG(x) HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + x) 20 | #define SPI1_REG(x) HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + x) 21 | 22 | //SPI 23 | #define SPI0_CR0 HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x000) 24 | #define SPI0_CR1 HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x004) 25 | #define SPI0_DR HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x008) 26 | #define SPI0_SR HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x00C) 27 | #define SPI0_CPSR HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x010) 28 | #define SPI0_IMSC HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x014) 29 | #define SPI0_RIS HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x018) 30 | #define SPI0_MIS HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x01C) 31 | #define SPI0_ICR HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x020) 32 | #define SPI0_DMACR HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x024) 33 | #define SPI0_TXFIFOCR HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0x028) 34 | #define SPI0_RXFIFOCR HI_IO_SPI0_ADDRESS(SPI0_ADDRESS_BASE + 0X02C) 35 | 36 | #define SPI1_CR0 HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x000) 37 | #define SPI1_CR1 HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x004) 38 | #define SPI1_DR HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x008) 39 | #define SPI1_SR HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x00C) 40 | #define SPI1_CPSR HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x010) 41 | #define SPI1_IMSC HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x014) 42 | #define SPI1_RIS HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x018) 43 | #define SPI1_MIS HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x01C) 44 | #define SPI1_ICR HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x020) 45 | #define SPI1_DMACR HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x024) 46 | #define SPI1_TXFIFOCR HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0x028) 47 | #define SPI1_RXFIFOCR HI_IO_SPI1_ADDRESS(SPI1_ADDRESS_BASE + 0X02C) 48 | 49 | #define SPI_WRITE_REG(Addr, Value) ((*(volatile unsigned int *)(Addr)) = (Value)) 50 | #define SPI_READ_REG(Addr) (*(volatile unsigned int *)(Addr)) 51 | 52 | struct spi_master *hi_master; 53 | struct spi_device *hi_spi; 54 | extern struct bus_type spi_bus_type; 55 | 56 | 57 | #define SPI_MSG_NUM 20 58 | typedef struct hi_spi_message_s 59 | { 60 | struct spi_transfer t; 61 | struct spi_message m; 62 | unsigned char buf[8]; 63 | } spi_message_s; 64 | 65 | typedef struct hi_spi_message_info_s 66 | { 67 | int msg_idx; 68 | spi_message_s spi_msg_array[SPI_MSG_NUM]; 69 | } spi_message_info_s; 70 | 71 | static spi_message_info_s g_spi_msg = {0}; 72 | 73 | 74 | int SPI_Init(void) 75 | { 76 | struct device *dev; 77 | char spi_name[128] = {0}; 78 | int ret = 0; 79 | 80 | hi_master = spi_busnum_to_master(BUS_NUM); 81 | if (hi_master) 82 | { 83 | snprintf(spi_name, sizeof(spi_name), "%s.%u", dev_name(&hi_master->dev), CSN); 84 | // 通过每个片选在 SPI 核心层的名称得到指向 spi_device 的 device 成员的指针 85 | dev = bus_find_device_by_name(&spi_bus_type, NULL, spi_name); 86 | if (dev == NULL) 87 | { 88 | dev_err(NULL, "chipselect %d has not been used!\n", CSN); 89 | ret = -ENXIO; 90 | goto end1; 91 | } 92 | 93 | // 通过指向 spi_device 的 device 成员的指针得到描述 SPI 外围设备的结构体 94 | hi_spi = to_spi_device(dev); 95 | if (hi_spi == NULL) 96 | { 97 | dev_err(NULL, "to_spi_device() error!\n"); 98 | ret = -ENXIO; 99 | goto end1; 100 | } 101 | } 102 | else 103 | { 104 | dev_err(NULL, "spi_busnum_to_master error!\n"); 105 | ret = -ENXIO; 106 | goto end0; 107 | } 108 | 109 | end1: 110 | put_device(dev); 111 | end0: 112 | return ret; 113 | } 114 | 115 | int SPI_Exit(void) 116 | { 117 | return 0; 118 | } 119 | 120 | int SPI_Test(void) 121 | { 122 | unsigned int i, index; 123 | unsigned int reg_value = 0; 124 | 125 | reg_spi0_base_va = (void __iomem*)IO_ADDRESS(SPI0_ADDRESS_BASE); 126 | reg_spi1_base_va = (void __iomem*)IO_ADDRESS(SPI1_ADDRESS_BASE); 127 | 128 | index = 0; 129 | for (i=0; i<12; i++) 130 | { 131 | reg_value = SPI_READ_REG(SPI0_REG(index)); 132 | index += 4; 133 | printk("%#x ", reg_value); 134 | } 135 | printk("\n"); 136 | 137 | index = 0; 138 | for (i=0; i<12; i++) 139 | { 140 | reg_value = SPI_READ_REG(SPI1_REG(index)); 141 | index += 4; 142 | printk("%#x ", reg_value); 143 | } 144 | printk("\n"); 145 | 146 | reg_spi0_base_va = NULL; 147 | reg_spi1_base_va = NULL; 148 | 149 | return 0; 150 | } 151 | 152 | int SPI_Write(unsigned char addr, unsigned short data) 153 | { 154 | struct spi_transfer *t; 155 | struct spi_message *m; 156 | unsigned char *buf = NULL; 157 | int buf_idx = 0; 158 | int idx = g_spi_msg.msg_idx; 159 | int ret = 0; 160 | unsigned long flags; 161 | 162 | g_spi_msg.msg_idx++; 163 | if (g_spi_msg.msg_idx > SPI_MSG_NUM - 1) 164 | { 165 | g_spi_msg.msg_idx = 0; 166 | } 167 | 168 | buf = g_spi_msg.spi_msg_array[idx].buf; 169 | t = &g_spi_msg.spi_msg_array[idx].t; 170 | m = &g_spi_msg.spi_msg_array[idx].m; 171 | 172 | // check spi_message is or no finish 173 | spin_lock_irqsave(&hi_master->queue_lock, flags); 174 | // 该消息队列传输完成之后,在核心层会将 spi_message 的 state 成员设为空指针 175 | if (m->state != NULL) 176 | { 177 | dev_err(&hi_spi->dev, "%s, %s, %d line: spi_message no finish!\n", 178 | __FILE__, __func__, __LINE__); 179 | spin_unlock_irqrestore(&hi_master->queue_lock, flags); 180 | 181 | return -EFAULT; 182 | } 183 | spin_unlock_irqrestore(&hi_master->queue_lock, flags); 184 | 185 | hi_spi->mode = SPI_MODE_3 | SPI_LSB_FIRST | SPI_CS_HIGH; //设置SPI传输模式 186 | 187 | memset(buf, 0, sizeof(g_spi_msg.spi_msg_array[idx].buf)); 188 | 189 | buf[buf_idx++] = (addr & 0x3F); 190 | buf[buf_idx++] = (data >> 0); 191 | buf[buf_idx++] = (data >> 8); 192 | 193 | t->tx_buf = buf; 194 | t->rx_buf = buf; 195 | t->len = buf_idx; 196 | t->cs_change = 1; 197 | t->speed_hz = 2000000; 198 | t->bits_per_word = 8; 199 | 200 | spi_message_init(m); 201 | spi_message_add_tail(t, m); 202 | 203 | m->state = m; 204 | ret = spi_async(hi_spi, m); 205 | if (ret) 206 | { 207 | dev_err(&hi_spi->dev, "%s: spi_async() error!\n", __func__); 208 | ret = -EFAULT; 209 | } 210 | 211 | return ret; 212 | } 213 | 214 | int SPI_Read(unsigned char addr, unsigned short *data) 215 | { 216 | static struct spi_transfer t; 217 | static struct spi_message m; 218 | static unsigned char buf[8] = {0}; 219 | int buf_idx = 0; 220 | int ret = 0; 221 | unsigned long flags; 222 | 223 | // check spi_message is or no finish 224 | spin_lock_irqsave(&hi_master->queue_lock, flags); 225 | // 该消息队列传输完成之后,在核心层会将 spi_message 的 state 成员设为空指针 226 | if (m.state != NULL) 227 | { 228 | dev_err(&hi_spi->dev, "%s, %s, %d line: spi_message no finish!\n", 229 | __FILE__, __func__, __LINE__); 230 | spin_unlock_irqrestore(&hi_master->queue_lock, flags); 231 | 232 | return -EFAULT; 233 | } 234 | spin_unlock_irqrestore(&hi_master->queue_lock, flags); 235 | 236 | hi_spi->mode = SPI_MODE_3 | SPI_LSB_FIRST | SPI_CS_HIGH; //设置SPI传输模式 237 | 238 | memset(buf, 0, sizeof(buf)); 239 | buf[buf_idx++] = (addr | 0x40); 240 | buf[buf_idx++] = 0; 241 | buf[buf_idx++] = 0; 242 | 243 | t.tx_buf = buf; 244 | t.rx_buf = buf; 245 | t.len = buf_idx; 246 | t.cs_change = 1; 247 | t.speed_hz = 2000000; 248 | t.bits_per_word = 8; 249 | 250 | spi_message_init(&m); 251 | spi_message_add_tail(&t, &m); 252 | 253 | m.state = &m; 254 | ret = spi_async(hi_spi, &m); 255 | if (ret) 256 | { 257 | dev_err(&hi_spi->dev, "%s: spi_async() error!\n", __func__); 258 | ret = -EFAULT; 259 | } 260 | msleep(1); // tzq@20160813 add for spi no receive data 261 | 262 | //printk("func:%s rx_buf = %#x, %#x, %#x\n", __func__, buf[0], buf[1], buf[2]); 263 | *data = (buf[1] + (buf[2] << 8)); 264 | 265 | return ret; 266 | } 267 | 268 | -------------------------------------------------------------------------------- /len_drv/ls_lens_spi.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_lens_spi.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/08/8 10 | Description : 11 | History : 12 | 13 | Date : 2016/08/8 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_LENS_SPI_H__ 20 | #define __LS_LENS_SPI_H__ 21 | 22 | 23 | #define BUS_NUM (1) 24 | #define CSN (0) 25 | 26 | 27 | int SPI_Init(void); 28 | int SPI_Exit(void); 29 | 30 | int SPI_Test(void); 31 | 32 | int SPI_Write(unsigned char addr, unsigned short data); 33 | int SPI_Read(unsigned char addr, unsigned short *data); 34 | 35 | #endif /* __LS_LENS_SPI_H__ */ 36 | 37 | -------------------------------------------------------------------------------- /len_drv/ls_lens_test.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | #include "ls_lens_drv.h" 12 | 13 | 14 | static const char *dev_name = "/dev/lslens"; 15 | static const char *cal_name = "/param/lens_cal.dat"; 16 | /* 17 | static unsigned int foc_cal_tbl[ZOOM_POINT_MAX] = { 18 | 1548, 1748, 1864, 1932, 1966, 1976, 19 | 1964, 1930, 1874, 1798, 1710, 1618, 20 | 1526, 1428, 1336, 1272, 1200, 1148, 21 | }; 22 | */ 23 | /* 24 | static unsigned int foc_cal_tbl[ZOOM_POINT_MAX] = { 25 | 1539, 1740, 1852, 1918, 1950, 1964, 26 | 1948, 1914, 1858, 1788, 1702, 1610, 27 | 1520, 1422, 1340, 1276, 1208, 1142, 28 | }; 29 | */ 30 | static unsigned int foc_cal_tbl[ZOOM_POINT_MAX] = { 31 | 1539, 1600, 1663, 1740, 1788, 1852, 1918, 1950, 1964, 32 | 1948, 1914, 1858, 1788, 1702, 1610, 33 | 1520, 1422, 1340, 1276, 1208, 1142, 34 | }; 35 | 36 | static void usage(void) 37 | { 38 | printf( 39 | "\n" 40 | "Usage: ./test [options] [parameter1] ...\n" 41 | "Options: \n" 42 | " -i Lens init\n" 43 | " -fp Focus plus\n" 44 | " -fm Focus minus\n" 45 | " -zp Zoom plus\n" 46 | " -zm Zoom minus\n" 47 | " -fd Set focus dir, e.g '-fd '\n" 48 | " -gd Get focus dir, e.g '-gd'\n" 49 | " -sf Set focus pos, e.g '-sf '\n" 50 | " -gf Get focus pos, e.g '-gf'\n" 51 | " -sz Set zoom point, e.g '-sz '\n" 52 | " -gz Get zoom point, e.g '-gz'\n" 53 | "\n"); 54 | exit(1); 55 | } 56 | 57 | static int WriteCalData(void) 58 | { 59 | FILE *fp; 60 | unsigned int i = 0; 61 | 62 | fp = fopen(cal_name, "w+"); 63 | if (fp == NULL) 64 | { 65 | printf("open %s failed!\n", cal_name); 66 | return -1; 67 | } 68 | 69 | for (i=0; i<=ZOOM_POINT_MAX-1; i++) 70 | { 71 | fwrite(&foc_cal_tbl[i], 4, 1, fp); 72 | printf("write %2d data is %d\n", i, foc_cal_tbl[i]); 73 | } 74 | fclose(fp); 75 | 76 | return 0; 77 | } 78 | 79 | static int ReadCalData(void) 80 | { 81 | FILE *fp; 82 | unsigned int i = 0; 83 | 84 | fp = fopen(cal_name, "r"); 85 | if (fp == NULL) 86 | { 87 | printf("open %s failed!\n", cal_name); 88 | return -1; 89 | } 90 | 91 | for (i=0; i<=ZOOM_POINT_MAX-1; i++) 92 | { 93 | fread(&foc_cal_tbl[i], 4, 1, fp); 94 | printf("read %2d data is %d\n", i, foc_cal_tbl[i]); 95 | } 96 | fclose(fp); 97 | 98 | return 0; 99 | } 100 | 101 | int main(int argc, const char *argv[]) 102 | { 103 | int fd = -1; 104 | int ret = -1; 105 | unsigned int pos; 106 | unsigned int zp; 107 | unsigned short reg_value; 108 | MOTOR_DIR_E dir; 109 | 110 | if (argc < 2) 111 | { 112 | usage(); 113 | return 0; 114 | } 115 | 116 | fd = open(dev_name, O_RDWR); 117 | if (fd < 0) 118 | { 119 | printf("open %s failed!\n", dev_name); 120 | return -1; 121 | } 122 | 123 | if (!strcmp(argv[1], "-i")) 124 | { 125 | ret = WriteCalData(); 126 | ret = ReadCalData(); 127 | if (ret < 0 ) 128 | { 129 | printf("read cal data failed!\n"); 130 | return -1; 131 | } 132 | sleep(1); 133 | //ret = write(fd, (unsigned char *)foc_cal_tbl, sizeof(foc_cal_tbl)); 134 | //if (ret != sizeof(foc_cal_tbl)) 135 | //{ 136 | // printf("write cal data failed!\n"); 137 | // return -1; 138 | //} 139 | 140 | ret = ioctl(fd, LENS_IOC_INIT); 141 | if (ret < 0) 142 | { 143 | printf("ioctl: LENS_IOC_INIT failed.\n"); 144 | goto err; 145 | } 146 | } 147 | else if (!strcmp(argv[1], "-fp")) 148 | { 149 | if (argc < 3) 150 | { 151 | usage(); 152 | goto err; 153 | } 154 | 155 | pos = atoi(argv[2]); 156 | ret = ioctl(fd, LENS_IOC_FOCPLUS, &pos); 157 | if (ret < 0) 158 | { 159 | printf("ioctl: LENS_IOC_FOCPLUS failed.\n"); 160 | goto err; 161 | } 162 | } 163 | else if (!strcmp(argv[1], "-fm")) 164 | { 165 | if (argc < 3) 166 | { 167 | usage(); 168 | goto err; 169 | } 170 | 171 | pos = atoi(argv[2]); 172 | ret = ioctl(fd, LENS_IOC_FOCMINUS, &pos); 173 | if (ret < 0) 174 | { 175 | printf("ioctl: LENS_IOC_FOCMINUS failed.\n"); 176 | goto err; 177 | } 178 | } 179 | else if (!strcmp(argv[1], "-zp")) 180 | { 181 | ret = ioctl(fd, LENS_IOC_ZOOMPLUS); 182 | if (ret < 0) 183 | { 184 | printf("ioctl: LENS_IOC_ZOOMPLUS failed.\n"); 185 | goto err; 186 | } 187 | } 188 | else if(!strcmp(argv[1], "-zm")) 189 | { 190 | ret = ioctl(fd, LENS_IOC_ZOOMMINUS); 191 | if (ret < 0) 192 | { 193 | printf("ioctl: LENS_IOC_ZOOMMINUS failed.\n"); 194 | goto err; 195 | } 196 | } 197 | else if(!strcmp(argv[1], "-fd")) 198 | { 199 | if (argc < 3) 200 | { 201 | usage(); 202 | goto err; 203 | } 204 | 205 | dir = atoi(argv[2]); 206 | ret = ioctl(fd, LENS_IOC_SETFOCDIR, &dir); 207 | if (ret < 0) 208 | { 209 | printf("ioctl: LENS_IOC_SETFOCDIR failed.\n"); 210 | goto err; 211 | } 212 | } 213 | else if(!strcmp(argv[1], "-gd")) 214 | { 215 | ret = ioctl(fd, LENS_IOC_GETFOCDIR, &dir); 216 | if (ret < 0) 217 | { 218 | printf("ioctl: LENS_IOC_GETFOCDIR failed.\n"); 219 | goto err; 220 | } 221 | printf("Get focus dir is: %d\n", dir); 222 | } 223 | else if(!strcmp(argv[1], "-sf")) 224 | { 225 | if (argc < 3) 226 | { 227 | usage(); 228 | goto err; 229 | } 230 | 231 | pos = atoi(argv[2]); 232 | ret = ioctl(fd, LENS_IOC_SETFOCPOS, &pos); 233 | if (ret < 0) 234 | { 235 | printf("ioctl: LENS_IOC_SETFOCPOS failed.\n"); 236 | goto err; 237 | } 238 | } 239 | else if(!strcmp(argv[1], "-gf")) 240 | { 241 | ret = ioctl(fd, LENS_IOC_GETFOCPOS, &pos); 242 | if (ret < 0) 243 | { 244 | printf("ioctl: LENS_IOC_GETFOCPOS failed.\n"); 245 | goto err; 246 | } 247 | printf("Get focus pos is: %d\n", pos); 248 | } 249 | else if(!strcmp(argv[1], "-sz")) 250 | { 251 | if (argc < 3) 252 | { 253 | usage(); 254 | goto err; 255 | } 256 | 257 | zp = atoi(argv[2]); 258 | ret = ioctl(fd, LENS_IOC_SETZOOMPOINT, &zp); 259 | if (ret < 0) 260 | { 261 | printf("ioctl: LENS_IOC_SETZOOMPOINT failed.\n"); 262 | goto err; 263 | } 264 | } 265 | else if(!strcmp(argv[1], "-gz")) 266 | { 267 | ret = ioctl(fd, LENS_IOC_GETZOOMPOINT, &zp); 268 | if (ret < 0) 269 | { 270 | printf("ioctl: LENS_IOC_GETZOOMPOINT failed.\n"); 271 | goto err; 272 | } 273 | printf("Get zoom point is: %d\n", zp); 274 | } 275 | else if(!strcmp(argv[1], "-fr")) 276 | { 277 | ret = ioctl(fd, LENS_IOC_GETFOCREG, ®_value); 278 | if (ret < 0) 279 | { 280 | printf("ioctl: LENS_IOC_GETFOCREG failed.\n"); 281 | goto err; 282 | } 283 | printf("Get focus reg value is:%#x\n", reg_value); 284 | } 285 | else 286 | { 287 | usage(); 288 | goto err; 289 | } 290 | 291 | err: 292 | close(fd); 293 | 294 | return 0; 295 | } 296 | 297 | -------------------------------------------------------------------------------- /len_drv/ls_lens_timer.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "ls_lens_timer.h" 6 | 7 | static struct timer_list timer; 8 | 9 | int ModifyTimer(unsigned long expires) 10 | { 11 | mod_timer(&timer, jiffies + msecs_to_jiffies(expires)); 12 | //mod_timer(&timer, jiffies + expires); 13 | //printk("expires=%d\n", expires); 14 | 15 | return 0; 16 | } 17 | 18 | int TimerInit(void* func, unsigned long dat, unsigned long expires) 19 | { 20 | init_timer(&timer); 21 | 22 | timer.data = dat; 23 | timer.expires = jiffies + msecs_to_jiffies(expires); 24 | timer.function = func; 25 | 26 | add_timer(&timer); 27 | 28 | return 0; 29 | } 30 | 31 | int TimerExit(void) 32 | { 33 | del_timer(&timer); 34 | 35 | return 0; 36 | } 37 | 38 | DECLARE_COMPLETION(comp); 39 | 40 | static void TimerStop(unsigned long dat) 41 | { 42 | complete(&comp); 43 | } 44 | 45 | int MotorDelay(unsigned int ms) 46 | { 47 | TimerInit(TimerStop, 0, ms); 48 | wait_for_completion(&comp); 49 | TimerExit(); 50 | 51 | return 0; 52 | } 53 | 54 | -------------------------------------------------------------------------------- /len_drv/ls_lens_timer.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_lens_timer.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/05/10 10 | Description : 11 | History : 12 | 13 | Date : 2016/05/10 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_LENS_TIMER_H__ 20 | #define __LS_LENS_TIMER_H__ 21 | 22 | int ModifyTimer(unsigned long expires); 23 | int TimerInit(void* func, unsigned long dat, unsigned long expires); 24 | int TimerExit(void); 25 | 26 | int MotorDelay(unsigned int ms); 27 | 28 | #endif /* __LS_LENS_TIMER_H__ */ 29 | 30 | -------------------------------------------------------------------------------- /len_drv/ls_lens_types.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (C), 2014-2016, Longse Tech. Co., Ltd. 4 | 5 | ****************************************************************************** 6 | File Name : ls_lens_types.h 7 | Version : Initial Draft 8 | Author : tzq 9 | Created : 2016/08/8 10 | Description : 11 | History : 12 | 13 | Date : 2016/08/8 14 | Author : 60068 15 | Modification : Created file 16 | 17 | ******************************************************************************/ 18 | 19 | #ifndef __LS_LENS_TYPES__ 20 | #define __LS_LENS_TYPES__ 21 | 22 | #define LENS_NULL (0x00) 23 | #define UNION_18X_T5095 (0x01) 24 | 25 | #define LENS_TYPE UNION_18X_T5095 26 | 27 | #if (LENS_TYPE == UNION_18X_T5095) 28 | 29 | #define FOC_HOME_POS (1000) 30 | #define FOC_POS_FRONT_D (1044) 31 | #define FOC_POS_REVER_D (-184) 32 | #define FOC_POS_RANGE (FOC_POS_FRONT_D - FOC_POS_REVER_D) 33 | 34 | #define FOC_MACH_RSV (8) 35 | #define FOC_POS_MAX (FOC_POS_FRONT_D+FOC_HOME_POS-FOC_MACH_RSV) 36 | #define FOC_POS_MIN (FOC_POS_REVER_D+FOC_HOME_POS+FOC_MACH_RSV) 37 | 38 | #define FOC_BACK_RUSH (6) 39 | #define FOC_MANU_MAX (240) 40 | 41 | #define ZOOM_HOME_POS (1000) 42 | #define ZOOM_POS_FRONT_D (1345) 43 | #define ZOOM_POS_REVER_D (-65) 44 | #define ZOOM_POS_RANGE (ZOOM_POS_FRONT_D - ZOOM_POS_REVER_D) 45 | /* 46 | #define ZOOM_POINT_MAX (18) 47 | 48 | static const unsigned int ZOOM_TBL[ZOOM_POINT_MAX] = { 49 | 1334, 831, 607, 470, 372, 296, 50 | 233 , 180, 133, 92 , 57 , 28 , 51 | 4 , -17, -32, -42, -52, -60, 52 | }; 53 | 54 | static const unsigned int FOC_SCH_TBL[ZOOM_POINT_MAX] = { 55 | 8 , 10 , 23 , 42 , 65 , 64 , 56 | 87 , 113, 141, 173, 206, 240, 57 | 240 , 240, 240, 240, 240, 240, 58 | }; 59 | 60 | static const unsigned int FOC_INT_TBL[ZOOM_POINT_MAX] = { 61 | 1 , 1 , 1 , 2 , 2 , 2 , 62 | 4 , 4 , 4 , 4 , 6 , 6 , 63 | 6 , 6 , 6 , 6 , 6 , 6 , 64 | }; 65 | */ 66 | #define ZOOM_POINT_MAX (21) 67 | 68 | static const unsigned int ZOOM_TBL[ZOOM_POINT_MAX] = { 69 | 1334, 1160, 998, 831, 718, 607, 470, 372, 296, 70 | 233 , 180 , 133, 92 , 57 , 28 , 71 | 4 , -17 , -32, -42, -52, -60, 72 | }; 73 | 74 | static const unsigned int FOC_SCH_TBL[ZOOM_POINT_MAX] = { 75 | 8 , 8 , 10 , 10 , 18 , 23 , 42 , 65 , 64 , 76 | 87 , 113 , 141, 173, 206, 240, 77 | 240 , 240 , 240, 240, 240, 240, 78 | }; 79 | 80 | static const unsigned int FOC_INT_TBL[ZOOM_POINT_MAX] = { 81 | 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 82 | 4 , 4 , 4 , 4 , 6 , 6 , 83 | 6 , 6 , 6 , 6 , 6 , 6 , 84 | }; 85 | 86 | static const unsigned int FOC_ADJ_TBL[ZOOM_POINT_MAX] = { 87 | 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 2 , 88 | 2 , 3 , 4 , 5 , 6 , 8 , 89 | 9 , 10 , 12 , 14 , 18 , 20 , 90 | }; 91 | 92 | static const unsigned int FOC_INF_TBL[ZOOM_POINT_MAX] = { 93 | 0 , 0 , 0 , 0 , 0 , 4 , 9 , 14 , 20 , 94 | 27 , 36 , 45 , 55 , 66 , 80 , 95 | 94 , 112 , 143, 165, 188, 207, 96 | }; 97 | 98 | static const float FOC_CVR_TBL[ZOOM_POINT_MAX] = { 99 | 1.000, 1.100, 1.200, 1.300, 1.400, 1.500, 1.600, 100 | 2.000, 2.091, 2.723, 3.182, 3.818, 3.818, 4.545, 101 | 5.182, 6.723, 6.818, 7.273, 7.364, 7.455, 7.545, 102 | }; 103 | 104 | #elif (LENS_TYPE == LENS_NULL) 105 | 106 | #endif 107 | 108 | #endif /* __LS_LENS_TYPES__ */ 109 | 110 | -------------------------------------------------------------------------------- /prj/spd.IAB: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/prj/spd.IAB -------------------------------------------------------------------------------- /prj/spd.IAD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/prj/spd.IAD -------------------------------------------------------------------------------- /prj/spd.IMB: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/prj/spd.IMB -------------------------------------------------------------------------------- /prj/spd.IMD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/prj/spd.IMD -------------------------------------------------------------------------------- /prj/spd.PFI: -------------------------------------------------------------------------------- 1 |   2 | -------------------------------------------------------------------------------- /prj/spd.PO: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/prj/spd.PO -------------------------------------------------------------------------------- /prj/spd.PR: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/prj/spd.PR -------------------------------------------------------------------------------- /prj/spd.PRI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/prj/spd.PRI -------------------------------------------------------------------------------- /prj/spd.PS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/prj/spd.PS -------------------------------------------------------------------------------- /prj/spd.WK3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonetan/AF-algorithm/524f636f997af8ceced6ad3c51d631cfc5e2bc86/prj/spd.WK3 --------------------------------------------------------------------------------