查看: 11737|回复: 0
收起左侧

MTK平台camera AF马达驱动调试流程分析

[复制链接]
发表于 2015-4-12 13:53:04 | 显示全部楼层 |阅读模式
《CameraAF分析》5 v2 u2 U9 H/ I+ b+ }5 j
一、AFkernel代码分析:
2 g: Z0 ~2 n4 Z: X; d涉及文件主要有:- H& c1 D8 _( [; u) j7 x/ z
mediatek/config/mt6592/init.rc
# S4 d9 |! l1 e" I, O, ^mediatek/config/huaqin92_wet_b2a_tdd/at808p/ProjectConfig.mk# a  S( ^( u. f! n8 W; f; p7 }
mediatek/platform/mt6592/kernel/core/mt_devs.c
) a! E- g1 y0 k. o# X- X9 hmediatek /custom/huaqin_bsp/at808p/base/kernel/lens/ov8865af/OV8865AF.c. X7 n" |! q  `% o4 F( a, s
mediatek/custom/common/kernel/lens/inc/OV8865AF.h" B5 T  [! c" m) I7 }2 D' Q
2 k+ J3 R- _/ @
a)       mediatek/config/mt6592/init.rc
' t& y; w/ c8 B2 h作用是来修改文件的权限和将该文件的拥有者改为system用户,添加如下部分:8 Q% e$ Q2 F1 ^/ z3 H; B( T; x

3 B: Y% v3 w$ A" K8 e* K7 s[cpp] view plaincopyprint?
/ _6 p) r) S  \
8 c3 b" l2 |6 P& O& Q: w- W4 g9 n7 g: J1 e. @0 x5 Z
  • chmod 0660 /dev/OV8865AF  
  • chown system camera /dev/OV8865AF  
    ! V9 Z, S, v6 B" l4 f: m& f
    9 l% p: O4 w& P0 Y7 @; }
) U8 n4 n0 K7 U4 ~7 Q

( _7 }% M) ^1 ]! y2 h% T" X9 y6 w8 N7 L' E
b)       mediatek/config/huaqin92_wet_b2a_tdd/at808p/ProjectConfig.mk8 T7 p' G2 p  g5 Y
修改部分如下图:
; A! }' m" I9 [8 w! R- i见附件11图片& S$ a$ p8 D; x9 c
5 @, b  ~; `7 o, C
c)       mediatek/platform/mt6592/kernel/core/mt_devs.c
! r, f- ~- T  d/ Y4 e& P" i1 A- d这个文件时用来注册平台设备的。1 y+ n3 L& `3 @. p* P4 E" N
在mt_board_init函数中添加) U- o% \* k' A  Y1 Q

/ ~/ H4 c) N" X* N[cpp] view plaincopyprint?0 ?7 a& r) t. u5 Q; C$ ^, B

: ^; W. L0 x+ B* n% `1 V" a& M( J6 y+ t  C# Z5 S
  • 2197 #if 1 //defined(CONFIG_ACTUATOR)  
  • 2198    retval = platform_device_register(&actuator_dev);  
  • 2199    if (retval != 0){  
  • 2200        return retval;  
  • 2201    }  
  • 2202    retval = platform_device_register(&actuator_dev1);  
  • 2203    if (retval != 0){  
  • 2204        return retval;  
  • 2205    }  
  • 2206 #endif  
    + i5 ~& h& t6 D

    9 A' S, S, _! `9 {' G
/ X+ |2 m$ c& O9 K0 T) h

7 m4 E# \0 {* a5 H0 v$ S/ a5 Y# K. ~) K; T
& |1 M! k/ L; ]8 n9 Q9 @! u
[cpp] view plaincopyprint?3 ^$ S3 @; g4 I1 i  n2 R, y  o

0 n4 n) q+ l) u" p( t  j
# h4 u$ t8 J2 Q' R+ s3 e# V6 E7 {
  • 1533 staticstruct platform_device actuator_dev1 = {  
  • 1534     .name         = "lens_actuator1",  
  • 1535     .id      = -1,  
  • 1536 };  
    5 Q) O7 x" \+ g% L% m5 b

      A, X( c$ k+ x7 o- r
5 i0 D4 x) k9 _/ Z5 h' h
9 ~3 Y+ Z* P" ]
6 i8 ]6 E) k' g& V( }2 m

8 u$ ?! ^+ Y) Q! \, v! _) T' p
其中name “lens_actuator1”是用来和我们驱动文件中的name进行匹配的。- `1 s" N5 s$ w/ X
d)       mediatek/custom/huaqin_bsp/at808p/base/kernel/lens/ov8865af/OV8865AF.c. s- H, Y6 P# N6 P5 Y
重要说道驱动文件了,这个文件的头文件是:* P5 j  Y6 w$ t, u, s0 o; p; Q, p( N7 E
mediatek/custom/common/kernel/lens/inc/OV8865AF.h
$ `. w) \6 j+ F4 X# \# ~主要完成一下任务:
$ r) y( {2 @* K9 j2 I1.   module_init(OV8865AF_i2C_init);——启动方式,也就是开机启动kernel后一段加载;
- G5 f/ y6 y, n2 g8 b2 |+ n9 b2.   i2c_register_board_info(LENS_I2C_BUSNUM,&kd_lens_dev, 1);;——挂载到I2C总线上;
1 M0 o. _  K3 }( H% x# e/ J. k; z3.   platform_driver_register(&g_stOV8865AF_Driver);——注册平台驱动;
4 |& f7 e/ I2 E( R/ v8 \9 z# T8 r5 g
[cpp] view plaincopyprint?
( P4 D3 G3 u5 k( K9 i' a3 F+ s
* h& T0 F9 G. [2 V3 v
6 [: k: }$ \" A
  • 491 static structplatform_driver g_stOV8865AF_Driver = {  
  • 492     .probe     = OV8865AF_probe,  
  • 493     .remove = OV8865AF_remove,  
  • 494     .suspend   = OV8865AF_suspend,  
  • 495     .resume = OV8865AF_resume,  
  • 496     .driver    = {  
  • 497         .name  = "lens_actuator1",  
  • 498         .owner = THIS_MODULE,  
  • 499     }  
  • 500 };  # ?9 e0 F; v* [1 ]2 C/ N) P8 o

      Q* G; w! M( S/ F$ O; g" M2 \
2 A8 _) b' o9 F2 A+ H

6 v% U& Z! E# M# W: I* w
3 d2 h7 W& j% x
4.    然后进入OV8865AF_probe,加载i2c驱动:/ c: N: D9 s" [+ Z: _# u- q

% H  x, C! d* y7 m+ Q) A[cpp] view plaincopyprint?
: e( J; S3 B; @. R
5 k& ?+ }: Z' c! K4 H
: v6 h& p/ h/ w: w# b+ x
  • 469 static intOV8865AF_probe(struct platform_device *pdev)  
  • 470 {  
  • 471     returni2c_add_driver(&OV8865AF_i2c_driver);  
  • 472 }  
  • 423 struct i2c_driver OV8865AF_i2c_driver= {  
  • 424    .probe = OV8865AF_i2c_probe,  
  • 425    .remove = OV8865AF_i2c_remove,  
  • 426    .driver.name = OV8865AF_DRVNAME,  
  • 427    .id_table = OV8865AF_i2c_id,  
  • 428 };  ) f% A; u( H" L! D
    4 R6 u! \* W- n' u1 T

% F; }1 }- R, @& ~) G# F6 J
2 N  q0 Z1 Q' ^4 c
& ?& N- t1 d6 T& O1 Z# i% W3 Q$ t8 _% q$ d2 P, _
5.   再就是OV8865AF_i2c_probe,就是注册字符驱动,以此就连接到我们的&g_stOV8865AF_fops,给上层提供Ioctl接口;
$ K6 Z, ~0 X. E# b9 e
7 i6 p7 L, ^7 W- f: R
5 _$ ^; U- Q- t' i
二、AFHAL层分析:7 z) N) _4 P& x$ ?$ H
HAL层涉及的文件:
% G% ?; N" p: D- X& [- [mediatek/custom/common/hal/inc/camera_custom_lens.h: W9 c1 Q% n( F. b( E
mediatek/custom/huaqin92_wet_b2a_tdd/hal/lens/src/lenslist.cpp; b1 Z% A3 c6 u  y, N
mediatek/custom/huaqin_bsp/at808p/base/hal/lens/ov8865af/lens_para_OV8865AF.cpp" A0 w# \0 \* u0 h: b4 P

( K/ m# x. @  F  _1 j0 e4 J) `: u
a)       mediatek/custom/huaqin92_wet_b2a_tdd/hal/lens/src/lenslist.cpp
7 v/ T& i; i" ?; N添加LensList:
! v/ b! u% ~4 X) I, f
8 {# S( q5 |. c" D3 j( y[cpp] view plaincopyprint?
# J9 A8 O+ `  f5 W# q. u, A& C) J3 y- U9 B6 X; ]
/ W) l! k4 @0 \
  • 70 #if defined(OV8865AF)  
  • 71{OV8865_SENSOR_ID, OV8865AF_LENS_ID,"OV8865AF", pOV8865AF_getDefaultData},  
  • 72 #endif  
    4 N" X  q4 p) \+ x  n. ^3 q4 \
    6 G; C2 _8 \) \9 d9 n1 V+ G+ g

# I! Y' e/ O# Q! g0 T
: w) i% I$ X$ M1 J) E/ O
OV8865AF_LENS_ID 在camera_custom_lens.h加以定义,
& U7 d) t& W  ^# l; T8 f+ w) m5 \' |
/ s6 A% e9 }# I- F! c0 Q! D+ |[cpp] view plaincopyprint?
( U* ]3 E8 f, a1 U% Q- W; s( T7 c" k' f. h
) s: |; i9 W2 a9 y1 [; W6 q" r
  • 如:#define OV8865AF_LENS_ID                     0x0009  
    3 w6 f2 J! u& w% Z* U
    4 l! d: X1 z7 I6 g4 b: z. H
( F" e% I5 ~6 |5 C
6 P( ]' \7 w" V( ?
OV8865_SENSOR_ID 是kernel层定义的:: H' j3 i2 x& |" p0 Z3 S
mediatek/custom/common /kernel/imgsensor/inc/kd_imgsensor.h
1 c3 E* y) O* Y. M( Z8 k5 ^是跟我们的camera驱动进行匹配的。' C' v* T* X8 v: Q  V0 o
pOV8865AF_getDefaultData是在lens_para_OV8865AF.cpp中完成的。
4 {, [4 u# i6 N5 d5 d
8 V, ]0 t! m6 Q6 m) ?

1 o+ Z  L$ y+ r
高级模式
B Color Image Link Quote Code Smilies @朋友 |上传

本版积分规则

在线客服

客服电话

欢迎来电咨询

188-9985 8350

微信关注

手机APP程序:
扫码下载访问

微信公众平台:
摄像头之家公众号

微信小程序:
摄像头小程序

返回顶部

QQ|站点统计|小黑屋|手机版|Archiver|摄像头模组论坛网-摄像头方案网CCM99 ( 粤ICP备18155214号 )

Powered by Discuz! X3.4 Licensed© 2001-2013 Comsenz Inc.