Qcom平台添加 Camera 驱动(msm8953)

article/2025/9/22 12:29:45

前言

硬件平台:MSM8953/SDM450

软件平台:Android9.0 

主摄IC:    IMX258 (AF、Flash)

前摄IC:   GC5025(AF)

景深:      OV5670/GC5025(AF)

Qocm平台Android5.1 和Android8.0 (N1 msm8909)流程基本一致,Android9.0(msm8953)框架变化较大。

而展讯平台Android4.4(S2 SC9020E),框架又有所不同,因此共三份文档。

这是第一份,A-(msm8953 Android9.0)。后续有 B-(msm8909 Android5.1/8.0) 和C-(SC9820E Android4.4)

在msm8953平台,前摄和景深配置和主摄基本一致,只是CSI 配置和CCI配置不同。

MSM8953 最多支持(4+4+2+1)4个摄像头,SDM450最多支持(4+4+4)3个摄像头

名字解释;

  1. Rear Camera : 主摄、后摄
  2. Front Camera:前摄、副摄
  3. Depth Camera:景深、后辅摄

 

索引

目录    1
前言    4
1.    内核部分(kernel部分)    5
1.1 主摄硬件原理图 (Rear Camera SCH)    5
1.2 主摄设备树配置 (Rear Camera dts cfg)    6
1.3 前摄硬件原理图 (Front Camera HardWare)    8
1.4 前摄设备树配置 (Front Camera dts cfg)    8
1.5 景深硬件原理图 (Depth Camera SCH)    10
1.6    景深摄像头设备树配置 (Depth Camera dts cfg)    10
1.7 闪光灯 (Flash LED)    11
1.8 对焦马达AF    12
1.9 平台硬件接口定义 (Platform Camera SCH)    12
2    vendor 添加驱动    15
2.1 lib 驱动参数配置部分    15
2.2 Chromatix 效果参数配置部分    16
2.3. vendor编译选项配置    17
2.3.1 配置系统要加载的camera    17
2.3.2 效果编译选项配置    20
2.3.3 lib和chromatix库包含编译选项    21
3. Camera MCLK修改    23
3.1 修改MCLK驱动频率    23
3.2 修改MCLK驱动能力    24
Tips:    26
lib so库单刷验证:    26

 

1. 内核部分 (Kernel)

1.1 主摄硬件原理图 (Rear Camera SCH)

主摄imx258 sensor硬件原理图:有AF、闪光灯

主摄闪光灯:

1.2 主摄设备树配置 (Rear Camera dts cfg)

由主摄硬件原理图,配置 imx258 (CSI_0)主摄节点:

路径: kernel\msm-4.9\arch\arm64\boot\dts\xxx\xxx_msm8953-camera-sensor-qrd.dtsi

重点关注供电脚、rst脚、pwd脚、mclk脚、CCI通道配置,CSI通道配置等。

   /* Back Cmaera */qcom,camera@0 {cell-index = <0>;compatible = "qcom,camera";reg = <0x0>;// csi0 默认为主摄qcom,csiphy-sd-index = <0>; // 同上qcom,csid-sd-index = <0>; // 挂载角度,根据显示效果修改,这里不起作用,需修改vendorxml配置qcom,mount-angle = <90>;// 闪光灯qcom,led-flash-src = <&led_flash0>;// eeprom,也叫OTP,用于校准camera sensor的显示效果//qcom,eeprom-src = <&eeprom0>;// 自动对焦马达AF选配功能qcom,actuator-src = <&actuator0>;// pin-29  1.8伏IO核电cam_vio-supply = <&pm8953_l6>;	// pin-25 26  1.2伏数字dig电cam_vdig-supply = <&pm8953_l2>;// pin-17  2.8伏模拟vana电cam_vana-supply = <&pm8953_l22>; // AF马达2.8V供电,cam_vaf-supply = <&pm8953_l17>; qcom,cam-vreg-name = "cam_vana", "cam_vio", "cam_vdig","cam_vaf";qcom,cam-vreg-min-voltage = <2800000 0 1200000 2850000>;qcom,cam-vreg-max-voltage = <2800000 0 1225000 2850000>;qcom,cam-vreg-op-mode = <80000 0 105000 100000>;pinctrl-names = "cam_default", "cam_suspend";pinctrl-0 = <&cam_sensor_mclk0_default&cam_sensor_rear_default>;pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;// 依次是mclk rst pwdgpios = <&tlmm 26 0>,<&tlmm 40 0>,<&tlmm 39 0>;qcom,gpio-reset = <1>; qcom,gpio-standby = <2>;qcom,gpio-req-tbl-num = <0 1 2>;qcom,gpio-req-tbl-flags = <1 0 0>;qcom,gpio-req-tbl-label = "CAMIF_MCLK0","CAM_RESET0","CAM_STANDBY0";// 位置0 表主摄。vendor的配置起实际作用qcom,sensor-position = <0>; qcom,sensor-mode = <0>;// 挂载的CCI通道编号(0/1)qcom,cci-master = <0>; status = "ok";clocks = <&clock_gcc clk_mclk0_clk_src>,<&clock_gcc clk_gcc_camss_mclk0_clk>;clock-names = "cam_src_clk", "cam_clk";// mclk 频率配置, Cam正常工作后会输出24M 波形,// vendor 配置起实际作用,频率可修改qcom,clock-rates = <24000000 0>; };

1.3 前摄硬件原理图 (Front Camera HardWare)

前摄gc5025 硬件接线原理图

1.4 前摄设备树配置 (Front Camera dts cfg)

由前摄硬件原理图,配置 gc5025 (CSI_2)前摄节点:有AF,无闪光灯

路径: kernel\msm-4.9\arch\arm64\boot\dts\xxx\xxx_msm8953-camera-sensor-qrd.dtsi

重点关注供电脚、rst脚、pwd脚、mclk脚、CCI通道配置,CSI通道配置等。马达 eeprom 闪光灯先不讲。

    /* Front Cmaera */qcom,camera@2 {cell-index = <2>;compatible = "qcom,camera";reg = <0x02>;qcom,csiphy-sd-index = <2>;qcom,csid-sd-index = <2>;qcom,mount-angle = <270>;//qcom,eeprom-src = <&eeprom2>;qcom,actuator-src = <&actuator1>;cam_vdig-supply = <&pm8953_l23>;cam_vana-supply = <&pm8953_l22>;cam_vio-supply = <&pm8953_l6>;cam_vaf-supply = <&pm8953_l17>;qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana","cam_vaf";qcom,cam-vreg-min-voltage = <1200000 0 2800000 2850000>;qcom,cam-vreg-max-voltage = <1200000 0 2800000 2850000>;qcom,cam-vreg-op-mode = <105000 0 80000 100000>;qcom,gpio-no-mux = <0>;pinctrl-names = "cam_default", "cam_suspend";pinctrl-0 = <&cam_sensor_mclk1_default&cam_sensor_front1_default>;pinctrl-1 = <&cam_sensor_mclk1_sleep&cam_sensor_front1_sleep>;gpios = <&tlmm 27 0>,<&tlmm 129 0>,<&tlmm 130 0>;qcom,gpio-reset = <1>;qcom,gpio-standby = <2>;qcom,gpio-req-tbl-num = <0 1 2>;qcom,gpio-req-tbl-flags = <1 0 0>;qcom,gpio-req-tbl-label = "CAMIF_MCLK1","CAM_RESET1","CAM_STANDBY1";qcom,sensor-position = <1>;qcom,sensor-mode = <0>;qcom,cci-master = <0>;status = "ok";clocks = <&clock_gcc clk_mclk1_clk_src>,<&clock_gcc clk_gcc_camss_mclk1_clk>;clock-names = "cam_src_clk", "cam_clk";qcom,clock-rates = <24000000 0>;};

1.5 景深硬件原理图 (Depth Camera SCH)

  景深使用OV5670/GC5025兼容设计:

1.6 景深摄像头设备树配置 (Depth Camera dts cfg)

由景深摄硬件原理图,配置 OV5670/GC5025 (CSI_1)景深节点:有AF,无闪光灯

景深摄像头,使用OV5670/GC5025 兼容设计,支持AF,CCI和主摄挂载在同一路,前摄单独一路,因此可以上层打开三个camera,而不会发生IIC寻址冲突。

    /* Depth Cmaera */qcom,camera@1 {cell-index = <1>;compatible = "qcom,camera";reg = <0x1>;qcom,csiphy-sd-index = <1>;qcom,csid-sd-index = <1>;qcom,mount-angle = <270>;qcom,actuator-src = <&actuator1>;cam_vdig-supply = <&pm8953_l23>;cam_vana-supply = <&pm8953_l22>;cam_vio-supply = <&pm8953_l6>;cam_vaf-supply = <&pm8953_l17>;qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana","cam_vaf";qcom,cam-vreg-min-voltage = <1200000 0 2800000 2850000>;qcom,cam-vreg-max-voltage = <1200000 0 2800000 2850000>;qcom,cam-vreg-op-mode = <105000 0 80000 100000>;qcom,gpio-no-mux = <0>;pinctrl-names = "cam_default", "cam_suspend";pinctrl-0 = <&cam_sensor_mclk2_default&cam_sensor_front_default>;pinctrl-1 = <&cam_sensor_mclk2_sleep&cam_sensor_front_sleep>;gpios = <&tlmm 28 0>,<&tlmm 131 0>,<&tlmm 132 0>;qcom,gpio-reset = <1>;qcom,gpio-standby = <2>;qcom,gpio-req-tbl-num = <0 1 2>;qcom,gpio-req-tbl-flags = <1 0 0>;qcom,gpio-req-tbl-label = "CAMIF_MCLK2","CAM_RESET2","CAM_STANDBY2";qcom,sensor-position = <0>;qcom,sensor-mode = <0>;qcom,cci-master = <1>;status = "ok";clocks = <&clock_gcc clk_mclk2_clk_src>,<&clock_gcc clk_gcc_camss_mclk2_clk>;clock-names = "cam_src_clk", "cam_clk";qcom,clock-rates = <24000000 0>;};

1.7 闪光灯(Flash LED)

闪光灯其实是pmi632驱动的一个IO口,兼具闪光和照明两种功能。

闪光模式,亮度值最大值255,照明模式为一半亮度<=127。

闪光灯拍照,会先预闪(短闪,为了防止红眼现象),然后再闪一次(长闪),中间需要设置正确的跳帧数,再拍照。

flash led 节点配置路径:kernel\msm-4.9\arch\arm64\boot\dts\xxx\xxx_pmi632.dtsi

配置 led_flash 节点,闪光灯由pmi632驱动:

&soc {led_flash0: qcom,camera-flash {cell-index = <0>;compatible = "qcom,camera-flash";qcom,flash-type = <1>;qcom,flash-source = <&pmi632_flash0 &pmi632_flash1>;qcom,torch-source = <&pmi632_torch0 &pmi632_torch1>;qcom,switch-source = <&pmi632_switch0>;};
};

  引用闪光灯节点

        qcom,led-flash-src = <&led_flash0>;

1.8 对焦马达AF 

用途,实现摄像头的自动对焦功能。软件上当作一个CCI设备来处理。

拥有cam sensor一样的上电时序,挂载在CCI设备。

AF 加载失败会导致camera 无法正常打开。

配置AF 节点

actuator0: qcom,actuator@0 {cell-index = <0>;reg = <0x0>;compatible = "qcom,actuator";qcom,cci-master = <0>;cam_vaf-supply = <&pm8953_l17>;qcom,cam-vreg-name = "cam_vaf";qcom,cam-vreg-min-voltage = <2850000>;qcom,cam-vreg-max-voltage = <2850000>;qcom,cam-vreg-op-mode = <80000>;};

引用AF 节点

        qcom,actuator-src = <&actuator0>;

 

2. vendor 添加驱动

一般lib和chromatix驱动文件厂家会提供,若不提供,需要找一个比较相近的sensor,或同一个厂商、同一个数据格式的驱动文件上修改而来。

vendor驱动主要分三部分,

  1. lib 驱动参数配置部分
  2. chromatix 效果参数配置部分
  3. 编译选项配置

2.1 Lib 驱动参数配置部分

主摄lib驱动路径为:vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\sensor\libs\imx258\

路径下共三个文件:

imx258_lib.c  // 主要参数配置在这里面

imx258_lib.h  // 曝光函数、对焦等函数定义

Android.mk  // 编译配置文件

imx258_lib.c 包含:上电时序、init-setting、分辨率输出配置、数据格式、gain地址配置、通道配置、降噪参数配置等等。

                                此文件直接决定sensor是否能正常出图。

imx258_lib.h 包含:gain(模拟增益和数字增益)、曝光行、等配置。此文件直接决定sensor曝光的3A显示效果(配合效果文件参数配置进行)。

Android.mk作用:这里声明生成的so库为 libmmcamera_imx258 .so

LOCAL_MODULE    := libmmcamera_imx258

以后修改了这里面的参数,可以单编,adb单刷libmmcamera_imx258 .so。

同理,前摄、景深和主摄配置流程一致:

主摄:libmmcamera_imx258.so

前摄:libmmcamera_gc5025.so

景深:libmmcamera_ov5670.so或 libmmcamera_gc5025.so(与前摄共用)

以后修改了这里面的参数,可以单编,adb单刷libmmcamera_imx258 .so。

划重点,后面要考的。

补充:

adb 可以查看lib so库的位置,可以单编单push去更新配置。

如:libmmcamera_imx258.so 位于 vendor\lib

  1. adb root
  2. adb remount  (Adnroid9.0 需要先disable-verity,才能remount)
  3. adb push libmmcamera_imx258.so  /vendor/lib/
  4. adb sync
  5. adb remount

2.2 Chromatix 效果参数配置部分

主摄效果文件路径为:vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\chromatix\0310\chromatix_imx258\

adb 下位于 vendor\lib == 格式为 libchromatix_imx258_xxx

路径下有很多文件,简单说明:

3A:3A 算法参数配置文件
common: 公共参数配置文件,这个是必须的
cpp:后端处理效果参数配置文件
isp:ISP部分文件
postproc:略
Android.mk:编译选项配置文件。上面每个文件夹中,都会有一个Android.mk 文件,会包含对应的文件,并生成一个效果库。

”举个栗子“:

vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\chromatix\0310\chromatix_imx258\common\Android.mkLOCAL_SRC_FILES:= chromatix_imx258_common.c
LOCAL_MODULE    := libchromatix_imx258_common
对应生成 libchromatix_imx258_common.so 效果参数库

划重点,后面要考

如有单独修改,可单编单刷验证。

其他的效果文件,配置同上,都会生成对应的效果so库。

前摄和景深和主摄配置方法一致,略过。

2.3. vendor 编译选项配置

2.3.1 配置系统要加载的camera

配置文件:

vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\configs\ msm8953_camera.xml

// 注意,有做项目抽取的,要到对应目录修改同名文件

这个配置文件,不能单编单刷,必须全编全刷vendor才会更新。

adb 下位于 vendor\etc\camera\camera_config.xml

下面就是为系统配置了默认主摄imx258,可做兼容。主要信息做简要说明。

主摄(ixm258) xml配置文件

<CameraModuleConfig><CameraId>0</CameraId> // camera ID,主摄0,景深1,前摄2<SensorName>imx258</SensorName> // cam sensor 名字,和imx258_lib.h 中一致<ActuatorName>dw9714</ActuatorName> // 马达驱动名字,先忽略<FlashName>pmic</FlashName> // 闪光灯控制方式<ChromatixName>imx258_bear_chromatix</ChromatixName> // 效果配置文件名<ModesSupported>1</ModesSupported> <Position>BACK</Position> // 位置后摄<MountAngle>90</MountAngle> // 挂载角度<CSIInfo><CSIDCore>0</CSIDCore> // CSID 的编号,主摄0,景深、前摄1// csi配置,bit1固定为clk,bit0,bit2、bit3、bit4,代表miipi-csi lane通道是否启用// 如使用4lane,为0xb11111=0x1F。 使用2lane,0b111 = 0x03<LaneMask>0x1F</LaneMask><LaneAssign>0x4320</LaneAssign> // 同上<ComboMode>0</ComboMode></CSIInfo><LensInfo> // 镜头等参数配置,根据规格书填写<FocalLength>3.47</FocalLength><FNumber>2.2</FNumber><TotalFocusDistance>1.9</TotalFocusDistance><HorizontalViewAngle>63.84</HorizontalViewAngle><VerticalViewAngle>47.88</VerticalViewAngle><MinFocusDistance>0.1</MinFocusDistance></LensInfo>
</CameraModuleConfig>

前摄(GC5025) xml配置文件

<CameraModuleConfig><CameraId>2</CameraId><SensorName>gc5025</SensorName><ActuatorName>ces6301</ActuatorName><ChromatixName>gc5025_chromatix</ChromatixName><ModesSupported>1</ModesSupported><Position>FRONT</Position><MountAngle>270</MountAngle><CSIInfo><CSIDCore>1</CSIDCore><LaneMask>0x7</LaneMask><LaneAssign>0x4320</LaneAssign><ComboMode>0</ComboMode></CSIInfo><LensInfo><FocalLength>1.98</FocalLength><FNumber>2.4</FNumber><TotalFocusDistance>1.2</TotalFocusDistance><HorizontalViewAngle>68.0</HorizontalViewAngle><VerticalViewAngle>51.0</VerticalViewAngle><MinFocusDistance>0.1</MinFocusDistance></LensInfo>
</CameraModuleConfig>

景深(兼容OV5670/GC5025 ) xml 配置:

景深 (OV5670) xml 配置:

<CameraModuleConfig><CameraId>1</CameraId><SensorName>ov5670</SensorName><ChromatixName>ov5670_chromatix</ChromatixName><ModesSupported>1</ModesSupported><Position>BACK_AUX</Position><MountAngle>270</MountAngle><CSIInfo><CSIDCore>1</CSIDCore><LaneMask>0x7</LaneMask><LaneAssign>0x4320</LaneAssign><ComboMode>0</ComboMode></CSIInfo><LensInfo><FocalLength>1.98</FocalLength><FNumber>2.4</FNumber><TotalFocusDistance>1.2</TotalFocusDistance><HorizontalViewAngle>68.0</HorizontalViewAngle><VerticalViewAngle>51.0</VerticalViewAngle><MinFocusDistance>0.1</MinFocusDistance></LensInfo>
</CameraModuleConfig>

 

景深(GC5025) xml 配置

<CameraModuleConfig><CameraId>1</CameraId><SensorName>gc5025</SensorName><ActuatorName>dw9714</ActuatorName><ChromatixName>gc5025_chromatix</ChromatixName><ModesSupported>1</ModesSupported><Position>BACK_AUX</Position><MountAngle>270</MountAngle><CSIInfo><CSIDCore>1</CSIDCore><LaneMask>0x7</LaneMask><LaneAssign>0x4320</LaneAssign><ComboMode>0</ComboMode></CSIInfo><LensInfo><FocalLength>1.98</FocalLength><FNumber>2.4</FNumber><TotalFocusDistance>1.2</TotalFocusDistance><HorizontalViewAngle>68.0</HorizontalViewAngle><VerticalViewAngle>51.0</VerticalViewAngle><MinFocusDistance>0.1</MinFocusDistance></LensInfo>
</CameraModuleConfig>

2.3.2 效果编译选项配置

平台配置文件中,配置了几个camera就有几个效果配置文件。

主摄:imx258_bear_chromatix.xml

前摄:gc5025_chromatix.xml

景深:gc5025_chromatix.xml(和前摄共用) 、ov5670_chromatix.xml

    <ChromatixName>imx258_bear_chromatix</ChromatixName> // 效果配置文件名

上面提到的这个属性,就是对应的效果文件名,包含了不同效果模式的配置。

效果配置文件路径:vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\configs\ imx258_bear_chromatix.xml

内容如下:

	<CommonChromatixInfo> // 预览、拍照、录像使用的基本的配置<ChromatixName><ISPCommon>imx258_bear_common</ISPCommon><PostProc>imx258_bear_postproc</PostProc><CPPPreview>imx258_bear_cpp_preview</CPPPreview><CPPSnapshot>imx258_bear_cpp_snapshot</CPPSnapshot><CPPLiveshot>imx258_bear_cpp_liveshot</CPPLiveshot></ChromatixName></CommonChromatixInfo><ResolutionChromatixInfo><ChromatixName sensor_resolution_index="0"><ISPPreview>imx258_bear_snapshot</ISPPreview><ISPSnapshot>imx258_bear_snapshot</ISPSnapshot><ISPVideo>imx258_bear_default_video</ISPVideo><CPPVideo>imx258_bear_cpp_video</CPPVideo><A3Preview>imx258_bear_zsl_preview_lc898217xc</A3Preview><A3Video>imx258_bear_zsl_video_lc898217xc</A3Video></ChromatixName><ChromatixName sensor_resolution_index="0">

如上每一种index,都是一种不同显示模式需要的参数搭配,包含了不同帧率、不同分辨率的配置类型。

    imx258_bear_commonimx258_bear_postprocimx258_bear_cpp_previewimx258_bear_cpp_snapshot

每一个库,都可以在效果路径下找到对应的Android.mk。

2.3.3 Lib 和chromatix库包含编译选项

在 device-vendor.mk 配置文件中

路径:vendor\qcom\proprietary\common\config\ device-vendor.mk

// 注意,有做项目抽取的,要到对应目录修改同名文件

主要有两类文件:

    libmmcamera_xxx.so  是lib驱动的库libchromatix_xx.so   是效果驱动的库

1、 lib 库包含

MM_CAMERA += libchromatix_imx258_common

2、 chromatix库包含

	 MM_CAMERA += libchromatix_imx258_bear_commonMM_CAMERA += libchromatix_imx258_bear_cpp_hfr_60MM_CAMERA += libchromatix_imx258_bear_cpp_hfr_90MM_CAMERA += libchromatix_imx258_bear_cpp_hfr_120MM_CAMERA += libchromatix_imx258_bear_cpp_liveshotMM_CAMERA += libchromatix_imx258_bear_cpp_previewMM_CAMERA += libchromatix_imx258_bear_cpp_snapshotMM_CAMERA += libchromatix_imx258_bear_cpp_videoMM_CAMERA += libchromatix_imx258_bear_cpp_video_4kMM_CAMERA += libchromatix_imx258_bear_default_videoMM_CAMERA += libchromatix_imx258_bear_hfr_60MM_CAMERA += libchromatix_imx258_bear_hfr_90MM_CAMERA += libchromatix_imx258_bear_hfr_120MM_CAMERA += libchromatix_imx258_bear_liveshotMM_CAMERA += libchromatix_imx258_bear_postprocMM_CAMERA += libchromatix_imx258_bear_previewMM_CAMERA += libchromatix_imx258_bear_snapshotMM_CAMERA += libchromatix_imx258_bear_video_4kMM_CAMERA += libchromatix_imx258_bear_4k_preview_lc898217xcMM_CAMERA += libchromatix_imx258_bear_4k_video_lc898217xcMM_CAMERA += libchromatix_imx258_bear_default_preview_lc898217xcMM_CAMERA += libchromatix_imx258_bear_default_video_lc898217xcMM_CAMERA += libchromatix_imx258_bear_hfr_60_lc898217xcMM_CAMERA += libchromatix_imx258_bear_hfr_90_lc898217xcMM_CAMERA += libchromatix_imx258_bear_hfr_120_lc898217xcMM_CAMERA += libchromatix_imx258_bear_zsl_preview_lc898217xcMM_CAMERA += libchromatix_imx258_bear_zsl_video_lc898217xc

3、charomatix 配置文件包含

     MM_CAMERA += imx258_bear_chromatix.xml

上述这些库和chromatix配置文件的包含配置必须写到 device-vendor.mk 中。

4、 前摄、景深和主摄的添加流程一致。

 

3. Camera MCLK修改

根据不同的sensor规格,有的需要的是24MHz的mclk时钟,有的则是37.125、75.25MHz的时钟等等。

但平台配置的是默认24MHz输出。

那么改如何修改呢?

参考文档:

kba-170619002148_3_[camera]change_to_avoid_camera_mclk_jitter_issue.pdf

kba-170619002148_3_[camera]change_to_avoid_camera_mclk_jitter_issue.pdf

3.1 修改MCLK驱动频率

有时由于MCLK抖动问题(抖动太大),我们可能会在摄像机预览中在黑暗场景中看到线噪声,因此需要解决此类问题,如果从传感器侧调整PLL仍无法解决问题,

我们需要使用 xo时钟作为产生MCLK(更好的抖动)的源。

  1. Kernel Camera dts部分

路径:kernel\msm-4.9\arch\arm64\boot\dts\xxx\xxx_msm8953-camera-sensor-qrd.dtsi

修改为37.125MHz示例:

	status = "ok";clocks = <&clock_gcc clk_mclk0_clk_src>,<&clock_gcc clk_gcc_camss_mclk0_clk>;clock-names = "cam_src_clk", "cam_clk";//  qcom,clock-rates = <24000000 0>;qcom,clock-rates = <37125000 0>;};

2. Kernel clk src部分

路径: kernel\msm-4.9\drivers\clk\msm\clock-gcc-8953.c

修改方法,前摄37.125例:

static struct clk_freq_tbl ftbl_mclk1_clk_src[] = {F(  24000000,  gpll6_main_div2,  1,      2,    45),F(  33330000,  gpll0_main_div2,  12,     0,    0 ),F(  36610000,  gpll6,		     1,      2,    59),
+	F(  37200000,  gpll0,		     1,      2,    43), 	// set 37.125 MhzF(  66667000,  gpll0,            12,     0,    0 ),F_END
};

主摄修改:

主摄修改:
static struct clk_freq_tbl ftbl_mclk0_clk_src[] = {F(  24000000,  gpll6_main_div2,   1,     2,    45),F(  33330000,  gpll0_main_div2,   12,    0,    0 ),F(  36610000,  gpll6,		      1,     2,    59),
+   F(  37200000,  gpll0,             1,     2,    43),  // set 37.125 MhzF(  66667000,  gpll0,             12,    0,    0 ),F_END
};

3. Vendor Camera lib文件修改

路径:vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\sensor\libs\xxx\xxx_lib.h

修改方法:

          .seq_type = CAMERA_POW_SEQ_CLK,.seq_val = CAMERA_MCLK,// .config_val = 24000000,.config_val = 37200000, .delay = 20,

3.2 修改 MCLK 驱动能力

参考文档:KBA_170619001341_3__Camera_How_to_change_MCLK_driv.pdf

修改方式:

		/*sensors */cam_sensor_mclk0_default: cam_sensor_mclk0_default {/* MCLK0 */mux {/* CLK, DATA */pins = "gpio26";function = "cam_mclk";};config {pins = "gpio26";bias-disable; /* No PULL */// 2 mA, change to 4mA, 2, 4, 6, 8, 10… max is 16mA//  默认2ma,最大可修改为16madrive-strength = <2>; /* 2 MA */};};

 

Tips:

lib so 库单刷验证:

版本需要是debug 版本,需要root和remount

  1. camera so库单刷,要 root和remount,才能单刷,然后 adb sync、 reboot、push
  2. 附一个单刷脚本
@echo onadb root
adb remountadb push  out\target\product\M11\vendor\lib\libmmcamera_imx307.so  /vendor/lib/
adb push  out\target\product\M11\vendor\lib\libmmcamera_imx307_face.so /vendor/lib/adb sync
adb reboot

效果so库的单刷验证同上。

 

你再快,也永远有人比你快!Fighting ~~

 


http://chatgpt.dhexx.cn/article/aOhqpHG3.shtml

相关文章

高通平台msm8953 display子系统学习

硬件上&#xff0c;高通平台有一个mipi-dsi接口连接LCM&#xff0c;由MDP&#xff08;mobile display processor&#xff09;进行管理&#xff0c;就是一般说的LCD控制器 软件上&#xff0c;高通平台提供MDSS&#xff08;Multimedia Display Sub-system&#xff09;进行管理 …

[高通MSM8953_64][Android10]解决制作差分包不生成system_manifest.xml的问题

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: MSM8953_64 版本: Android 10 kernel: msm-4.9 问题描述 设备在调试OTA升级功能的时候&#xff0c;制作OTA全量包测试升级功能&#xff0c;升级正常&#xff1b;然后&#xff0c;测试差分包升级失败了&am…

4G全网通模块 安卓 高通骁龙MSM8909核心板 开发板

核心板特性 A53架构 8核(8*2.2GHz(A53)) 产品尺寸小,便于客户集成,减少产品体积;支持4G LTE超高速上网,单板兼容移动/联通/电信2G/3G/4G;支持4+128存储器,SD3.0支持128G;尺寸小、集成度高、大板布板灵活;支持全网通=、wifi双频;支持快充,QC3.04线MIPI 分辨率1920*1280…

【EMMC】MSM8953里时钟是如何分频的

时钟源 MSM8953振荡频率为19.2 MHz的单晶振荡器&#xff08;XO&#xff09;。XO作为所有pll的源&#xff0c;也可以作为其他时钟的源。MSM8953没有单独的休眠晶体&#xff0c;使用586的除数从XO生成睡眠时钟32.768khz作为时钟信号源。 分析代码 在host中probe函数里有在初始…

高通625系列-MSM8953 (Cortex-A53架构)

核心板特性 A53架构 8核&#xff08;8*2.2GHz(A53)&#xff09; 产品尺寸小&#xff0c;便于客户集成&#xff0c;减少产品体积&#xff1b;支持4G LTE超高速上网&#xff0c;单板兼容移动/联通/电信2G/3G/4G&#xff1b;支持4128存储器,SD3.0支持128G&#xff1b;尺寸小、集成…

如何收集 小番茄的种子

1.把西红柿切成两半&#xff0c;注意要从果柄处对切。 2.打开西红柿&#xff0c;你应该可以看到西红柿基本上分成四个均匀的部分&#xff0c;每个部分之间有种子和凝胶。 3.找一个小勺子挖出种子&#xff0c;你也可以直接用挤出的方法把种子挤出来&#xff0c;放在小碗里&#…

IOS破解软件,比较全的网站。

转载于:https://blog.51cto.com/14259888/2369621

2023最新仿第八区APP分发平台源码

**> 支持APK,IPA分发 &#xff0c;在线本机ios签名&#xff0c;安卓ios应用封装****> 需要看演示站可以联系https://jq.qq.com/?_wv1027&kjZBe9aHx**

iApp对接hybbs社区APP源码

介绍&#xff1a; 首先得搭建一个HYBBS论坛程序 服务器或者主机不能带有任何cc&#xff0c;防火墙策略&#xff01; 否则软件提交参数会被拦截&#xff0c;则null mian.iyu载入事件填自己的hybbs论坛网址 http打头 /结尾 论坛模板使用官方默认&#xff0c;移动端设置电脑端模板…

苹果应用商店app_切勿更新!IOS最新观影APP上架苹果商店

苹果软件管家 每个果粉都应该关注的一个公众号 原本前天想给大家推送一款影视APP 结果管家刚写完APP就被下架了 相信今天应该不会出现这个问题了 相信果粉们都知道大象影视这款APP 很早之前就下载体验过 但是效果真的一般&#xff0c;广告很多 本次大象影视换壳上架苹果应用商店…

梦幻星球社区APP源码 HYBBS的iApp社区源码

介绍&#xff1a; 极其好用的对接HYBBS的iApp社区源码 BUG修复&#xff1a; 修复评论无法显示 修复无法发送评论 修复头像显示 修复板块图片 … 更新&#xff1a; 新增功能页面 优化回复评论 优化帖子、帖子列表 优化我的、个人主页页面 优化注册、登录页面 增加背景设置 网盘…

iOS应用跳转(包括iPhone原有应用跳转和第三方应用跳转)

文章目录 iOS应用间跳转简介应用间跳转应用场景应用间跳转实现步骤跳转到本地或第三方应用的一些URL Schemes iOS应用间跳转简介 在开发的过程中&#xff0c;我们经常会遇到需要从一个应用程序跳转到另一个应用程序的场景。这就需要我们掌握iOS应用程序之间的相互跳转知识。 …

iOS开发~社区分享

1、概要 随着iOS平台逐渐成熟&#xff0c;连最初让人恼火的社区分享功能现在都变的几行代码就可以搞定&#xff0c;下面分享下“分享”功能原生实现。 2、实现 iOS6之前使用TWTweetComposeViewController实现分享功能&#xff0c;但iOS6之后改用SLComposeViewController实现&…

番茄助手 VS2015

转载地址&#xff1a; https://www.cnblogs.com/DswCnblog/p/5625893.html 首先在官网下载原版&#xff1a; VA_X_Setup2270_0.exe VA_X官方下载链接&#xff1a;http://www.wholetomato.com/downloads/default.asp 安装官版。 下载补丁 。 下载链接: http://pan.baidu.c…

linux安装番茄时钟,Tomato Pie番茄钟

Tomato Pie插件简介 Tomato Pie 是一款开源的Chrome 新标签页扩展&#xff0c;适用于番茄工作法&#xff0c;直观&#xff0c;简单&#xff0c;拥有马赛克统计图、浏览器通知、扩展栏图标倒计时等功能。我们之前介绍过一款just Focus - 番茄钟免费应用软件(Mac、iOS)。 番茄钟是…

番茄学习--番茄工具推荐

首先,这个工具是青峰推荐的,自己觉得用的很顺手,就推荐给大家。 这是一个在线的番茄学习工具--番茄土豆。他的网址是:https://pomotodo.com/ 下面我来说说这个工具的特点吧: 首先,在开始番茄之前,你什么都不用想,只需要点击“开始一个番茄”按钮即可。这样你就开始了一…

番茄助手 VS2015

转载地址&#xff1a; https://www.cnblogs.com/DswCnblog/p/5625893.html 1. 首先在官网下载原版&#xff1a; VA_X_Setup2270_0.exe VA_X官方下载链接&#xff1a;http://www.wholetomato.com/downloads/default.asp 2. 安装官版。 3. 下载补丁 。 下载链接: http:/…

短视频平台-小说推文(番茄小说)推广任务详情

字节旗下平台:番茄小说 今日头条&#xff0c;抖音故事&#xff0c;抖音漫画官方每周只出一次数据!!!!! 预计每周二出上周四之前的数据&#xff0c;有时官方回传数据较晚&#xff0c;会延迟到周三出! 请达人知悉! 注意: 再次强调!番茄拉新规则! 是以设备第一次下载番茄小说后搜…

找不到或无法加载主类

springboot项目时不时的就会出现这个错误&#xff0c; 错误: 找不到或无法加载主类 com.ruoyi.RuoYiApplication 解决方案&#xff1a; 自己在maven clean之后&#xff0c;会把target里边的清理表&#xff0c;项目就需要重新进行编译&#xff0c;这时候如果运行的话就会出现以上…

运行mvn -v时报错:找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher

运行 mvn -v 时候出现报错 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher 其中的可能原因为下载maven时下载了这个版本的maven&#xff08;src&#xff09; 应该下载这个版本maven&#xff08;bin&#xff09;