MTK6765平台Flashlights驱动调试流程

MTK6765平台Flashlights驱动调试流程
目录一、驱动移植(以ocp81378为例)1、驱动移植2, DTS配置3, flashlight core中闪光灯结构体定义二、驱动debug三、flashlights 效果调试四、总结反思1,flashlights driver 架构框图2,flashlights driver init流程图3,上拉电阻确认方法一、驱动移植(以ocp81378为例)1、驱动移植如下路径新增驱动并添加Makefile和Kconfigalps/kernel-4.19/drivers/misc/mediatek/flashlight/flashlight-ocp81378.calps/kernel-4.19/drivers/misc/mediatek/flashlight/Makefilealps/kernel-4.19/drivers/misc/mediatek/flashlight/Kconfig2, DTS配置i2c device定义 alps/kernel-4.19/arch/arm64/boot/dts/mediatek/k61v1_64_bsp.dts i2c6 { #address-cells = 1; #size-cells = 0; clock-frequency = 400000; status = "okay"; flashlights-ocp81378@63 { compatible = "ocs,flashlights_ocp81378_i2c"; reg = 0x63; //hwen-gpios = pio 150 1; //如果hwen 管使用gpio 拉高使能,驱动需要增加gpio 资源申请逻辑 status = "okay"; }; }; platform device定义 alps/kernel-4.19/arch/arm64/boot/dts/mediatek/mt6761.dts /*ocs-ocp81378flashlights by li*/ flashlights_ocp81378: flashlights_ocp81378 { compatible = "ocs,flashlights_ocp81378"; decouple = 0; channel@1 { type = 0; ct = 0; part = 0; }; channel@2 { type = 0; ct = 1; part = 0; }; };3, flashlight core中闪光灯结构体定义alps/kernel-4.19/drivers/misc/mediatek/flashlight/flashlight-device.c闪光灯设备id 结构体:struct flashlight_device_id { int type; intct; intpart; charname[FLASHLIGHT_NAME_SIZE]; /* device name */ intchannel;/* device channel */ intdecouple; /* device decouple */ };该结构体的作用是供Camera HAL 层的代码调用, 其中channel 和 name 要和驱动中flashlight_dev_register注册的name 和 channel数目一致。关键参数解释:alps/kernel-4.19/drivers/misc/mediatek/flashlight/flashlight-dt.h二、驱动debug1,i2c device 注册成功了,但是 drvier 节点没有注册成功,无法正常的执行probe 函数思路:检查设备和驱动的匹配状态