Qualcomm Camera 开发遇到的错误及解决方法
1. Camera module probe error: (2011.6.28)
I2C slave address:0x48 not connected.
I2C read transfer failed.
I2C slave address error. The default sub camera i2c slave address for i2c read/write is 0x48, while the right address for Aptina MT9V115 is 0x3D (i.e, 0x7A >> 1).
Reference from Aptina MT9V115 specification:
The twolines used for CCI communication are the serial data line (SDA) and the serialclock line (SCL). The CCI bus is only used for control signals. No image datais transferred through the CCI bus.
The CCIbus is designed to manage fast (400 kHz) CCI communication.
The CCI slave address is 0111101, i.e., themodule is addressed by 0111101X, where X = 0 when writing to the camera and X =1 when reading from it. The read and write addresses are given by Table below:
2. After chat camera sensor is probed successfully, camera application can not start up. (2011.7.4)
sensor module ID was read out from sensor during probe, and saved in user space for finding related .dat file when starting camera app. The code related with reading sensor module ID is skipped for new sensor MT9V115(since I'm reusing code from MT9V114, no code exists regarding to reading sensor module). Null is passed to and saved in user space, which leads to error when camera app starting up.
Fill sensor module ID, and pass the right module name to user space.
3. When start camera, exception occoured and force close. (2011.7.5)
Sensor initilization sequence is not correct. MT9V114 sequence does not work for MT9V115, since 115 supports MIPI and parrallel for data output, while 114 supports only signal mode. Register settings are quite different especially regarding to MIPI and PLL clock settings.
Contact vendor VFE to get correct sequence.
4. Initial sequence is correct, but sensor register can be writen/read, only if sensor reset/soft standby is performed.
The hardware STANDBY pin to sensor is enabled by mistake when sensor is powered on.
Sensor STANDBY pin is reused from previous CAM_RESET function pin, which is active low and has to keep high during normal operation. While HIGH in this pin leads to sensor HW STANDBY, then sensor can not be software reset or wake up.
Solution: Set the pin to LOW when sensor on, as below.
/* CHAT_CAM_RST_N release(GPIO25 = HIGH) */
ret = camera_gpio_access(
5. Sensor can be initialized for YUV, MIPI mode. But got VFE error below when receiving first frame:
<3>[ 145.969467] irq errorIrq
<3>[ 145.969660] msm_control: done rc = 0
<3>[ 145.975270] vfe31_irq: camif errors
<3>[ 145.978810] camifStatus = 0x1e00500Root cause:
CSI settings not configured during sensor initilization.
Add function below after sensor reset: mt9v115_set_csi_setting();
6. VFE error disappears, but frame data still can't be received, error below: （2011.8.15）
E [HCF] VFE irq violation.
Rootcause: mt9v115 output bayer data 648*488, but QCT camera driver requires clipping in VFE before calculating zoom. The clipping size is:
cut 6 pixels off at begin/end of each line, 3 lines off top/bottom of each frame. This way, size becomes 636*482. Width is shorter than required 640.
This will leads to wrong value when calculating VFE_Camif_firstPixel, VFE_Camif_lastPixel, etc, which leads to wrong VFE & camif settings.
1. Reduce preview size to narrower than VGA, such as QVGA(480*320), preview works fine.
2. Let VFE clipping cut less pixels each line, such as 3 instead of 6, preview also works, but in viewfinder, there will be green lines at right or left side.
Recommend, solution 1.
7. On new VSB board, if old and new chat camera are mounted at the same time, old camera will not work. (2011.7.28)
Root Cause: Standby pin for MT9V115 is sharing the same gpio as RESET pin of MT9M114(old chat sensor). In kernel driver, this pin is set to HIGH after sensor on, to make MT9M114 in normal operation mode. But HIGH forces MT9V115 enter HW Standby mode, then by default MIPI data/clk lines are set to LOW. This affects the MIPI bus and as a result MIPI signal is interfered and goes wrong.
Solution: Remove new chat camera from board. Notes: try not to connect both chat camera at same time.
8. MT9V115 输出VGA bayer，由于高通驱动中需要裁掉一些pixel/line（6 pixels/line，3 line/frame），以使ISP做demosaic，鉴于硬件限制，无法做到VGA preview。所以只好使sensor输出YUV。但目前YUV的问题是，config process block在什么地方，导致_msm_control中等待config status超时。（2011.8.15）
9. MT9V115 输出YUV，每次拍照后显示都会freeze在那。（2011.9.5）
Root Cause: 所用的MT9V115为SoC（System-On-A-Chip) sensor，内部自带有自己的3A，由于QCT baseband侧的ISP3A没有disable掉，导致冲突。