主要调试文件:
1.kernel-4.4\drivers\misc\mediatek\flashlight\flashlights-dummy-gpio.c
2.vendor\mediatek\proprietary\custom\mt6739\hal\flashlight\flash_tuning_custom.cpp
3.vendor\mediatek\proprietary\custom\mt6739\hal\flashlight\flash_tuning_custom_cct.cpp
一:常见闪光灯问题处理
1.开启闪光灯拍照和录像的照片跟视频偏色(我这里主要偏绿色)
修改vendor\mediatek\proprietary\custom\mt6739\hal\camera_3a\flashawb_tuning_custom.cpp中MTRUE为MFALSE(关掉白平衡)
2.明亮处拍照闪光灯会亮起
vendor/mediatek/proprietary/custom/mt6739/hal/imgsensor/gc5025_mipi_raw/camera_AE_PLineTable_gc5025mipiraw.h
适当减小u4StrobeTrigerBv值,即环境亮度低于所设 BV 门限值时才会打闪,设的越小,越需要到更暗的环境才会打闪,gc5025默认是20,可以适当调低
3.闪光灯打闪暗处和亮处拍照均会变暗
gain 值补不上来,则导致拍照变暗很多
解决办法:vendor\mediatek\proprietary\custom\mt6739\hal\flashlight\flash_tuning_custom.cpp
para.maxCapExpTimeUs默认值从80000改成100000,即闪光灯打闪时,capture shutter 最大值。默认为 80000,即 80ms,主要目的为了防止闪光灯工作时间较长会导致寿命缩短。通常建议不大于 12500
4.flashlights-dummy-gpio.c驱动拍黑暗处闪光灯起不了补光作用
kernel-4.4\drivers\misc\mediatek\flashlight\flashlights-dummy-gpio.c
解决办法:在开闪光灯拍照的时候,适当加500ms延时
dummy_enable();
mdelay(500);
5.利用SGM37891闪光灯IC编程,降低手电筒电流,防止长时间开启后打闪或者提高闪光灯亮度
控制IC的1W管脚
spin_lock_irq(&g_strobeSMPLock);
if(pinctrl_select_state(dummy_pinctrl, dummy_xxx_high)){printk("[constant_flashlight] set gpio failed!!\n");}
udelay(200);
for(i=0; i<3; i++){ //4 Pulse
if(pinctrl_select_state(dummy_pinctrl, dummy_xxx_low)){printk("[constant_flashlight] set gpio failed!!\n");}
udelay(30);
if(pinctrl_select_state(dummy_pinctrl, dummy_xxx_high)){printk("[constant_flashlight] set gpio failed!!\n");}
udelay(30);
}
spin_unlock_irq(&g_strobeSMPLock);
待续。。。。。。。。。。
闪光灯问题,可参考https://blog.csdn.net/qq_33575901/article/details/80906981