我是靠谱客的博主 愤怒黑裤,最近开发中收集的这篇文章主要介绍MTK平台安卓Q 10.0 camera驱动移植——sensor,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

平台MTK676X 安卓:Q/10.0

1. 添加驱动程序文件


将模组厂商提供的驱动程序及调试参数文件拷贝到以下目录.厂商可能会自行客制化,但都是kernel和vendor两处下面,不一定和下面列出的一模一样。两个文件夹需要的文件一般提供的时候就会分开,分别拷入就好。
vendor/mediatek/proprietary/custom/kxxx/ hal/imgsensor/gc8034_kxxx_mipi_raw/

kernel-4.9 / drivers/misc/mediatek/imgsensor/src/mt6761/camera_project/kxxx/v1/gc8034_kxxx_mipi_raw/

2. 修改项目配置文件


该部分为添加sensor的基本信息进项目的几个配置文件中,注意后面的文件会引用到该出的定义,字符串要一致。
/device/mediateksample/ {project} / ProjectConfig.mk

...
CUSTOM_HAL_IMGSENSOR =  gc8034_kxxx_mipi_raw
CUSTOM_HAL_MAIN_IMGSENSOR = gc8034_kxxx_mipi_raw
CUSTOM_KERNEL_IMGSENSOR =  gc8034_kxxx_mipi_raw
CUSTOM_KERNEL_MAIN_IMGSENSOR = gc8034_kxxx_mipi_raw
...

在上述配置中,如果要点多颗sensor 在每一项后面添加即可 ,空格隔开。
在仅点亮sensor的时候,可不配置lens,otp,flsah等,此时应将上述文件里lens配置的均配置为:dummy_lens。不能空着不填。

/kernel-4.9/arch/arm64/configs/ {project}_debug_defconfig
/kernel-4.9/arch/arm64/configs /{project}_defconfig

CONFIG_CUSTOM_KERNEL_IMGSENSOR="gc8034_kxxx_mipi_raw"

在这上述两个文件里配置是一模一样的,保持一致就可以了。

3. 添加sensor定义


device/mediatek/common/kernel-headers/kd_imgsensor.h,

...
#define GC8034_KXXX_SENSOR_ID 0x8044
...
#define SENSOR_DRVNAME_GC8034_KXXX_MIPI_RAW   "gc8034_kxxx_mipi_raw"
...

kernel-4.9/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h

...
#define GC8034_Kxxx_SENSOR_ID               0x8044
...
#define SENSOR_DRVNAME_GC8034_KXXX_MIPI_RAW     "gc8034_kxxx_mipi_raw"
...

可以看到,上面两处的配置是一样的,也必须一致。

/kernel-4.9/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor_sensor_list.h

...
UINT32 GC8034_KXXX_MIPI_RAW_SensorInit(struct SENSOR_FUNCTION_STRUCT **pfFunc);
...

/kernel-4.9/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor_sensor_list.c

...
#if defined(GC8034_KXXX_MIPI_RAW)
    {GC8034_KXXX_SENSOR_ID, SENSOR_DRVNAME_GC8034_KXXX_MIPI_RAW, GC8034_KXXX_MIPI_RAW_SensorInit},
#endif
...


/vendor/mediatek/proprietary/custom/mt6761/hal/imgsensor_src/ sensorlist.cpp

...
#if defined(GC8034_KXXX_MIPI_RAW)
    RAW_INFO(GC8034_KXXX_SENSOR_ID, SENSOR_DRVNAME_GC8034_KXXX_MIPI_RAW, NULL),
#endif
...

注意:以上两个文件中的配置为{sensor ID,sensor name,sensor init function}

4.上电配置(参考相应sensor的datasheet)

sensor上电顺序
/drivers/misc/mediatek/imgsensor/src/{platform}/camera_hw/imgsensor_cfg_table.c

struct IMGSENSOR_HW_CFG imgsensor_custom_config[] = {
    {
        IMGSENSOR_SENSOR_IDX_MAIN,
        IMGSENSOR_I2C_DEV_0,
        {
            {IMGSENSOR_HW_ID_MCLK, IMGSENSOR_HW_PIN_MCLK},
            {IMGSENSOR_HW_ID_REGULATOR, IMGSENSOR_HW_PIN_DVDD},
            {IMGSENSOR_HW_ID_GPIO, IMGSENSOR_HW_PIN_AVDD},
            {IMGSENSOR_HW_ID_REGULATOR, IMGSENSOR_HW_PIN_DOVDD},
            {IMGSENSOR_HW_ID_GPIO, IMGSENSOR_HW_PIN_PDN},
            {IMGSENSOR_HW_ID_GPIO, IMGSENSOR_HW_PIN_RST},
            {IMGSENSOR_HW_ID_NONE, IMGSENSOR_HW_PIN_NONE},
        },
    },
    ...
    }
...
...
struct IMGSENSOR_HW_POWER_SEQ sensor_power_sequence[] = {
...
#if defined(GC8034_KXXX_MIPI_RAW)
        {
            SENSOR_DRVNAME_GC8034_KXXX_MIPI_RAW,
            {
                
                {PDN, Vol_Low, 0},
                {RST, Vol_Low, 0},
                {DOVDD, Vol_1800, 1},
                {DVDD, Vol_1200, 1},
                {AVDD, Vol_2800, 1},
                 {SensorMCLK, Vol_High, 1},
                {AFVDD, Vol_2800, 1},
                {PDN, Vol_High, 1},
                {RST, Vol_High, 5}
            },
        },
#endif
...
}

上面供电配置指明是PMIC直接供电还是LDO供电,sensor供电配置指明上电顺序,电压,延迟时间。
上电顺序、电压是比较重要的,严格按照datasheet上的配置,不然很可能点不亮,延迟时间的话没有绝对,按照datasheet上的适当延迟即可。

5. 使用LDO供电的,需要配置GPIO口来控制。


举个例子 AVDD需要LDO供电。首先在原理图上看到AVDD是需要LDO供电,顺着找到其GPIO的编号,查询该平台GPIO表,找到该GPIO编号如W5,其对应是GPIO99,然后在
kernel-4.9 / arch/arm/boot/dts/cust_mt6761_camera.dtsi
直接在里面配置或者在dct tool里面打开dts文件,配置后,会在编译时自动生成dtsi文件

camera_pins_cam_ldo_rear_vcama_0: cam0@vcama0 {
        pins_cmd_dat {
            pinmux = <PINMUX_GPIO99__FUNC_GPIO99>;
            slew-rate = <1>;
            output-low;
        };
    };
    camera_pins_cam_ldo_rear_vcama_1: cam0@vcama1 {
        pins_cmd_dat {
            pinmux = <PINMUX_GPIO99__FUNC_GPIO99>;
            slew-rate = <1>;
            output-high;
        };
    };

工具目录
dct path:vendormediatekproprietaryscriptsdct DrvGen.exe

6. 配置I2C总线


使用上述工具打开对应的dws文件,进行配置。
dws path: kernel-4.9driversmiscmediatekdwsmt6761
注意:在一条总线上的设备,它们的地址不能相同。

结尾:DrvGen工具很强大可以配置供电可以配置I2C等,配好后保存即可,变异的时候会编出需要的.dtsi文件,可以不用自己点生成文件。

注意各级.mk文件,确保所有修改均能正确编译到。
————————————————
 

最后

以上就是愤怒黑裤为你收集整理的MTK平台安卓Q 10.0 camera驱动移植——sensor的全部内容,希望文章能够帮你解决MTK平台安卓Q 10.0 camera驱动移植——sensor所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部