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

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

[复制链接]
发表于 2015-4-12 13:53:04 | 显示全部楼层 |阅读模式
《CameraAF分析》4 Z, g% {1 G6 B
一、AFkernel代码分析:
! c/ ?# H, D" ~. D; u涉及文件主要有:: P' l% d, C/ H  Q; q, p
mediatek/config/mt6592/init.rc
' H/ f/ }8 ^( y9 q* amediatek/config/huaqin92_wet_b2a_tdd/at808p/ProjectConfig.mk
0 Q1 s' D* h9 m) Cmediatek/platform/mt6592/kernel/core/mt_devs.c$ W2 d/ A- P! s8 I) n
mediatek /custom/huaqin_bsp/at808p/base/kernel/lens/ov8865af/OV8865AF.c
$ w. g( S) O; kmediatek/custom/common/kernel/lens/inc/OV8865AF.h
! i. Y+ j& P0 y" s4 J3 d3 ^* @. V, [6 ~# W% \2 ^- {
a)       mediatek/config/mt6592/init.rc
* z1 t) ]: l7 s作用是来修改文件的权限和将该文件的拥有者改为system用户,添加如下部分:
. K- t, k" P! L; q  c* T9 }/ x' J6 |, N" H
[cpp] view plaincopyprint?  `' f9 E3 I" v, J3 P9 y& u

2 Z$ W" q: w; R' o1 e# g
5 x/ o! B$ z- [& b  j
  • chmod 0660 /dev/OV8865AF  
  • chown system camera /dev/OV8865AF  ) R5 e% B4 Q( U. T5 s0 T- }5 G
    8 w6 {% n) j) i7 Z; {

3 k8 Y# F% V( C/ k  r  p  l( R
0 v6 H, `/ [3 E8 ]1 {0 Z
1 _; P2 B, ~/ m+ y% Y
b)       mediatek/config/huaqin92_wet_b2a_tdd/at808p/ProjectConfig.mk
3 k) v) W! O/ S( w修改部分如下图:
2 v9 V; u, c5 @* P见附件11图片
" s! s' ?1 T6 l# r: _9 e* \2 k! D
2 ]5 J+ v: A  R0 N8 s
c)       mediatek/platform/mt6592/kernel/core/mt_devs.c
9 p* o7 ~" x% b7 g. n7 r这个文件时用来注册平台设备的。
4 o) f% G$ t" @% h) t) y在mt_board_init函数中添加( H# n2 I0 q# ~5 k

8 P4 O4 W% }* j( X0 u) F$ Q[cpp] view plaincopyprint?8 O1 Y* Y* f2 b

; K, }# k9 [3 T
1 t8 m6 F$ R- X& Q5 B
  • 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  
    ! {8 R$ ^- L4 q, b; ]
    7 b: Q  J, z4 }+ L
8 W" f! a0 C- e. w" g2 a
) h6 p6 S3 b6 L0 D. S: v

# K- U4 L. G" v' S8 ]; m
8 A8 r5 d( _9 f" h  O  P[cpp] view plaincopyprint?% X) f, l" a& r$ x: v
& T2 V) g7 G* ~5 r+ i3 J3 [
6 r2 {. u0 p2 E
  • 1533 staticstruct platform_device actuator_dev1 = {  
  • 1534     .name         = "lens_actuator1",  
  • 1535     .id      = -1,  
  • 1536 };  1 [* k! x+ O( q6 \+ |* z
    8 R. f. w- q$ _7 f
+ B$ ^, O" U) i$ [- X

% q8 B: t: g. X! q  K) `+ m
) A  p0 {& V  R! H; T% d4 @0 I* Z8 o; I( |. H; z5 E
其中name “lens_actuator1”是用来和我们驱动文件中的name进行匹配的。% M( g' k7 b6 [6 n* k
d)       mediatek/custom/huaqin_bsp/at808p/base/kernel/lens/ov8865af/OV8865AF.c: R& ]2 O( @& ]% T  {! c
重要说道驱动文件了,这个文件的头文件是:1 a  V! ?  C. S) n9 b5 p
mediatek/custom/common/kernel/lens/inc/OV8865AF.h/ |: }' K5 N" c3 [4 |/ T
主要完成一下任务:
3 ]& t5 B0 m  ]& T- ~& L1.   module_init(OV8865AF_i2C_init);——启动方式,也就是开机启动kernel后一段加载;" I" i) k/ c: D
2.   i2c_register_board_info(LENS_I2C_BUSNUM,&kd_lens_dev, 1);;——挂载到I2C总线上;
$ @. m, r* r  ~7 B9 R3.   platform_driver_register(&g_stOV8865AF_Driver);——注册平台驱动;
, p4 @. J9 F) F4 Y& v: q* O9 H  G9 i& z$ r, a# l8 i1 O" @
[cpp] view plaincopyprint?
( `  p+ a' T6 h, Q, Z4 I2 Q5 t& f; M6 X/ s

  ]6 b4 D0 e0 q9 @4 L1 C# {4 m6 L
  • 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 };  3 H/ _4 |6 l$ `' g. k2 T
    ( w. O# X) t4 m0 d, N
$ J8 y  ?9 Z; J; B* q1 H

# o( W$ @( E7 u9 k' L, C+ F! _5 k/ u1 ^: P$ A' _' L; s: ?
4.    然后进入OV8865AF_probe,加载i2c驱动:
% B& Y) F" O) x5 z
, R8 ]& H$ U2 G( N, R5 F[cpp] view plaincopyprint?
1 t4 v* {$ j+ j* K7 a1 `: p( w. K5 [/ w% s7 X' \$ g# R; ^, U
, K1 R) N3 b& O5 u8 Q
  • 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 };  
    ' N- |2 E4 N2 X8 d- F

    7 i# k; J5 P8 z! N
4 P* J2 u! C% ]" J1 `2 `* N; I
  C; f: c: i3 h% z
; m, J: a- T8 Y, d& N! |

8 ~7 M, n4 x+ X* d# b  ^8 W$ h. D$ r9 d
5.   再就是OV8865AF_i2c_probe,就是注册字符驱动,以此就连接到我们的&g_stOV8865AF_fops,给上层提供Ioctl接口;
; W0 u" u' ?% N5 m6 w$ C
5 ~- J. w8 u: u; ?, ]: `! T. I9 N8 g" U1 O# y- G9 G. c; Q% B
二、AFHAL层分析:6 [+ D7 z9 @. _, a
HAL层涉及的文件:1 x* |% l% ?7 A/ m) Y) v/ `
mediatek/custom/common/hal/inc/camera_custom_lens.h" W% w# z* J, p/ U& m% K
mediatek/custom/huaqin92_wet_b2a_tdd/hal/lens/src/lenslist.cpp3 `6 m# N4 O$ L  J0 i4 r
mediatek/custom/huaqin_bsp/at808p/base/hal/lens/ov8865af/lens_para_OV8865AF.cpp. w) o2 O/ z* C8 k
1 X% Z/ w, ?) e
a)       mediatek/custom/huaqin92_wet_b2a_tdd/hal/lens/src/lenslist.cpp
: [& W5 ?  P' f2 y# n' J; v7 \' m) M添加LensList:: W, n! q- K* Q7 O+ ?

" r7 S5 E7 \# p8 i; |[cpp] view plaincopyprint?
6 Y4 u4 A1 p. v7 j, W- f
0 J# r' P/ x$ X# k  k- W. Z5 V  P: M! K1 o" ]# N% [
  • 70 #if defined(OV8865AF)  
  • 71{OV8865_SENSOR_ID, OV8865AF_LENS_ID,"OV8865AF", pOV8865AF_getDefaultData},  
  • 72 #endif  + C3 M  W# S& A1 _0 O! v. @" A
    5 Q4 ~2 ?5 o" i3 E& o
7 R$ d8 f/ e! X! h: u

( a# [5 Y9 \8 y$ v- _4 ~
OV8865AF_LENS_ID 在camera_custom_lens.h加以定义,3 C+ L3 U! l/ n% I3 K

  m' {; f7 h5 _5 a0 M! Q" _[cpp] view plaincopyprint?3 m8 `8 g# X* {# i/ e7 ^, `  O

+ n# A1 l( F8 s. y7 a5 Y9 B/ a- o8 N: }3 c; Z
  • 如:#define OV8865AF_LENS_ID                     0x0009  
    % o8 e/ k, @- P2 b4 d; n" [7 m& b
    # U7 ^9 p3 e/ \; M% ]2 O

% ~. Z, b. T. ?) ^: Y% o. S+ _5 [6 ^
6 J' p  y: P/ q6 b$ V) I) ]  ^: m
OV8865_SENSOR_ID 是kernel层定义的:
% P* g, m! r2 L! B6 lmediatek/custom/common /kernel/imgsensor/inc/kd_imgsensor.h/ _* p/ x: e: H% [
是跟我们的camera驱动进行匹配的。8 l; l: L/ S. g8 D
pOV8865AF_getDefaultData是在lens_para_OV8865AF.cpp中完成的。
, w+ |8 d1 f" c, q& I" X( y) l+ Y: b) h9 i6 C' K0 d! x4 d
' ^9 ]4 t. v5 A& P
高级模式
B Color Image Link Quote Code Smilies @朋友 |上传

本版积分规则

在线客服

客服电话

欢迎来电咨询

188-9985 8350

微信关注

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

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

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

返回顶部

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

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