1. 读id不对
可能: camera 的id设置不对。 模组打样有问题
kernel_log.boot:1674:<4>[ 61.191633] .(0)[437:camerahalserver]----5025----> (read_cmos_sensor(0xf0) << 8) = 0 read_cmos_sensor(0xf1) = 5 line = 901
kernel_log.boot:1677:<4>[ 61.197636] .(0)[437:camerahalserver]----5025----> (read_cmos_sensor(0xf0) << 8) = 0 read_cmos_sensor(0xf1) = 5 line = 901
kernel_log.boot:2071:<4>[ 69.297903] .(1)[437:camerahalserver]----5025----> (read_cmos_sensor(0xf0) << 8) = 0 read_cmos_sensor(0xf1) = 0 line = 901
kernel_log.boot:2317:<4>[ 81.298000] .(0)[437:camerahalserver]----5025----> (read_cmos_sensor(0xf0) << 8) = 0 read_cmos_sensor(0xf1) = 0 line = 901
以上是模组打样问题,gc5025正常id是0x5025 ,但驱动中读到的是5。duid操作强制返回设置的5025,camera点亮,ok
2、调试后副摄
error: 读不到后副的id
问题:
clk是否有加,(可以一直把前后的都一起加上,后副的clk和前摄的是共用的)
模组是否有问题(找个ok的可以烧录的软件,烧录到读不到和ok的对比验证)(软件关于camera的gpio是一样的)
模组问题的可以问一下公司设计的pin定义和模组的pin定义,看是否可以直接在驱动中控制gpio来工作
3、有些修改了camera方向会影响图像的颜色。
格科的gc修改方向,未发现修改方向对图像颜色有影响
//#define IMAGE_NO_MIRROR
//#define IMAGE_H_MIRROR
//#define IMAGE_V_MIRROR
#define IMAGE_HV_MIRROR
#ifdef IMAGE_NO_MIRROR
#define MIRROR 0xd4
#define STARTY 0x03
#define STARTX 0x05
#define BLK_Select_H 0x3c
#define BLK_Select_L 0x00
#endif
#ifdef IMAGE_H_MIRROR
#define MIRROR 0xd5
#define STARTY 0x03
#define STARTX 0x06
#define BLK_Select_H 0x3c
#define BLK_Select_L 0x00
#endif
#ifdef IMAGE_V_MIRROR
#define MIRROR 0xd6
#define STARTY 0x04
#define STARTX 0x05
#define BLK_Select_H 0x00
#define BLK_Select_L 0x3c
#endif
#ifdef IMAGE_HV_MIRROR
#define MIRROR 0xd7
#define STARTY 0x04
#define STARTX 0x06
#define BLK_Select_H 0x00
#define BLK_Select_L 0x3c
#endif
思比科:修改图像影响颜色
思比科的调整颜色是在初始化中写寄存器
sp250a:
write_cmos_sensor(0x27,0x01); // 0 | 1
write_cmos_sensor(0x3f,0x01); // 0 | 1 | 2 | 3
图像RGB偏色调试
kd_imgsensor_define.h
typedef enum {
SENSOR_OUTPUT_FORMAT_RAW_B = 0,
SENSOR_OUTPUT_FORMAT_RAW_Gb,
SENSOR_OUTPUT_FORMAT_RAW_Gr,
SENSOR_OUTPUT_FORMAT_RAW_R,
4、调试前摄的闪光灯,使用insink,(也可以使用gpio)
kernel-3.18/drivers/misc/mediatek/flashlight/src/mt6580/sub_strobe.c
+#include <linux/mutex.h>
+#include <linux/i2c.h>
+#include <linux/leds.h>
+//#include <linux/gpio.h>
+#include <mt-plat/upmu_common.h>
+#if 1
+
+static DEFINE_SPINLOCK(g_strobeSMPLock); /* cotta-- SMP proection */
+
+
+static u32 strobe_Res;
+static u32 strobe_Timeus;
+static BOOL g_strobe_On;
+
+static int g_timeOutTimeMs;
+static struct work_struct workTimeOut;
+static void work_timeOutFunc(struct work_struct *data);
+static DEFINE_MUTEX(g_strobeSem);
+
+
+static int FL_Enable(void)
+{
+ //printk("boli test FL_Enable\n");
+ pmic_set_register_value(PMIC_ISINK_CH0_EN, 1);
+ pmic_set_register_value(PMIC_ISINK_CH1_EN, 1);
+ //pmic_set_register_value(PMIC_ISINK_CH2_EN, 1);
+ //pmic_set_register_value(PMIC_ISINK_CH3_EN, 1);
+
+ printk("FL_enable");
+
+ return 0;
+}
+
+static int FL_Disable(void)
+{
+ //printk("boli test FL_Disable\n");
+ pmic_set_register_value(PMIC_ISINK_CH0_EN, 0);
+ pmic_set_register_value(PMIC_ISINK_CH1_EN, 0);
+ //pmic_set_register_value(PMIC_ISINK_CH2_EN, 0);
+ //pmic_set_register_value(PMIC_ISINK_CH3_EN, 0);
+
+ printk("FL_disable");
+
+