1. Camera module probe error: (2011.6.28)
I2C slave address:0x48 not connected.
I2C read transfer failed.
Root cause:
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.
CCI address
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:
Read address |
7Bh |
Write address |
7Ah |
2. After chat camera sensor is probed successfully, camera application can not start up. (2011.7.4)
Root cause:
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.
Solution:
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)
Root cause:
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 parallel mode. Register settings are quite different especially regarding to MIPI and PLL clock settings.
Solution:
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.
Root cause:
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(
g_camera_ctrl->sensordata->sub_sensor_reset, GPIO_LO);
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 = 0x1e00500
Root cause:CSI settings not configured during sensor initilization.
Solution:
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.
Solution:
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.
什么是demosaic:http://blue-reverie.zyt.name/articles/demosaicing-full-color-image.html
众所周知,用于屏幕显示的数字彩色图像由RGB(红绿蓝)三个单色通道组成。为了获取彩色的图像,这三个通道的光强度就都要被采集到。然而,基于图2的结构,一个像素传感器只能获取一种颜色的光。为了获取所有三个通道的光,针对红、绿、蓝的色彩滤镜被交错地覆盖在传感阵列之上,组成了色彩滤镜阵列(color filter array, CFA)。图3所示的就是一种被称为Bayer filter的常见的CFA。行列皆为奇数的单元为“蓝”,行列皆为偶数的单元为“红”,其他为“绿”。
图3 色彩滤镜阵列
这样采集到的图像是各种色彩交错出现的,每个像素对应一种色彩。整个图像看起来像是由不同色彩的马赛克拼接而成似的。从这样的马赛克图像恢复全彩图像(每个像素都是RGB全彩)的过程就是去马赛克(demosaicing)。
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掉,导致冲突。
Solution: 关掉ISP3A。