大家好,我是第一次接触RK平台,现需要在RK3288平台上使用MIPI接口的OV5695 camera,在7.1的代码中在“hardware/rockchip/camera/SiliconImage/isi/drv/”中找到了ov5695的driver,但是在配置cam_board_rk3288.xml时遇到了问题,我们power使用的与公版不一样,AVDD 2.8V使用的是PMUGPIO0_C1_d, DOVDD 1.8V使用的是VCC18_DVP
,DVDD 1.2V使用的是PMUGPIO0_B6_d,请问这种情况在cam_board_rk3288.xml中还是添NC吗?
另外除了hardware文件夹下的内容还需要在kernel中修改吗,请各位大神帮忙解惑。
RK平台MIPI camera应该不需要改到DTS文件吧,我现在只是修改了XML文件,menuconfig或者defconfig之类的文件还需要修改吗? 以下是我改的xml
<Sensor>
<SensorName name="OV5695" ></SensorName>
<ModuleName name="NC" ></ModuleName>
<SensorLens name="CHT-842B-MD"></SensorLens>
<SensorDevID IDname="CAMSYS_DEVID_SENSOR_1B"></SensorDevID>
<SensorHostDevID busnum="CAMSYS_DEVID_MARVIN" ></SensorHostDevID>
<SensorI2cBusNum busnum="3"></SensorI2cBusNum>
<SensorI2cAddrByte byte="2"></SensorI2cAddrByte>
<SensorI2cRate rate="100000"></SensorI2cRate>
<SensorAvdd name="NC" min="0" max="0" delay="0"></SensorAvdd>
<SensorDvdd name="NC" min="0" max="0" delay="0"></SensorDvdd>
<SensorDovdd name="NC" min="18000000" max="18000000" delay="5000"></SensorDovdd>
<SensorMclk mclk="24000000" delay="1000"></SensorMclk>
<SensorGpioPwen ioname="RK30_PIN0_PC1" active="1" delay="1000"></SensorGpioPwen>
<SensorGpioRst ioname="NC" active="1" delay="1000"></SensorGpioRst>
<SensorGpioPwdn ioname="RK30_PIN2_PB6" active="0" delay="2000"></SensorGpioPwdn>
<SensorFacing facing="front"></SensorFacing>
<SensorInterface interface="MIPI"></SensorInterface>
<SensorMirrorFlip mirror="0"></SensorMirrorFlip>
<SensorOrientation orientation="0"></SensorOrientation>
<SensorPowerupSequence seq="1234"></SensorPowerupSequence>
<SensorFovParemeter h="60.0" v="60.0"></SensorFovParemeter>
<SensorAWB_Frame_Skip fps="15"></SensorAWB_Frame_Skip>
<SensorPhy phyMode="CamSys_Phy_Mipi" lane="2" phyIndex="0" sensorFmt="CamSys_Fmt_Raw_10b"></SensorPhy>
</Sensor>
VDD 1.2V使用的是PMUGPIO0_B6_d,按照下面的格式配置dts设正确的吗?
isp: isp@ff910000 {
compatible = "rockchip,rk3288-isp", "rockchip,isp";
...............
rockchip,gpios = <&gpio0 GPIO_B6 GPIO_ACTIVE_HIGH>;
rockchip,isp,iommu_enable = <1>;
iommus = <&isp_mmu>;
status = "disabled";
};
以下是Kernel log,从log里看是request gpio fail,什么情况会出现request gpio fail
[ 142.350342] cpu cpu0: _set_opp_voltage: failed to set voltage (900000 900000 900000 mV): -110
[ 142.350659] cpufreq: __target_index: Failed to change cpu frequency: -110
[ 142.490657] gpio-17 (sysfs): gpiod_request: status -16
[ 142.490666] E:camsys_extdev_register(257): Request RK30_PIN0_PC1(17) failed
[ 142.490726] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.490740] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.490744] gpio-15 (camsys_gpio): gpiod_request: status -16
[ 142.503459] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.503628] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.537207] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.537226] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.537231] gpio-15 (camsys_gpio): gpiod_request: status -16
[ 142.549938] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.550117] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.583607] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.583625] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.583630] gpio-15 (camsys_gpio): gpiod_request: status -16
[ 142.596339] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.596512] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.633650] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.633669] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.633675] gpio-15 (camsys_gpio): gpiod_request: status -16
[ 142.646374] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.646542] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.679783] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.679802] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.679807] gpio-15 (camsys_gpio): gpiod_request: status -16
[ 142.692553] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.692725] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.725947] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.725965] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 142.725970] gpio-15 (camsys_gpio): gpiod_request: status -16
[ 142.738674] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 142.738843] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 143.428665] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 143.428684] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 143.428690] gpio-15 (camsys_gpio): gpiod_request: status -16
[ 143.441459] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 143.441633] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 143.473028] rk3x-i2c ff650000.i2c: timeout, ipd: 0x00, state: 1
[ 143.475181] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 143.475198] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 143.475203] gpio-15 (camsys_gpio): gpiod_request: status -16
[ 143.488022] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 143.488200] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 143.521820] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 143.521839] of_get_named_gpiod_flags: parsed ‘rockchip,gpios’ property of node ‘/isp@ff910000[0]’ - status (0)
[ 143.521844] gpio-15 (camsys_gpio): gpiod_request: status -16
[ 143.534560] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 143.534731] E:camsys_i2c_write(83): i2c write dev(addr:0x6c) failed!,err = -6
[ 144.472997] rk3x-i2c ff650000.i2c: timeout, ipd: 0x00, state: 1
[ 144.473028] cpu cpu0: _set_opp_voltage: failed to set voltage (1200000 1200000 1200000 mV): -110
[ 144.473127] cpufreq: __target_index: Failed to change cpu frequency: -110
DTS文件中的status要添什么是okay还是disabled,现在的情况是request gpio都是fail
isp: isp@ff910000 {
compatible = "rockchip,rk3288-isp", "rockchip,isp";
reg = <0x0 0xff910000 0x0 0x4000>;
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&power RK3288_PD_VIO>;
clocks =
<&cru ACLK_ISP>, <&cru HCLK_ISP>, <&cru SCLK_ISP>,
<&cru SCLK_ISP_JPE>, <&cru PCLK_ISP_IN>,
<&cru SCLK_VIP_OUT>, <&cru SCLK_MIPIDSI_24M>,
<&cru SCLK_VIP_OUT>, <&cru PCLK_MIPI_CSI>;
clock-names =
"aclk_isp", "hclk_isp", "clk_isp",
"clk_isp_jpe", "pclkin_isp", "clk_cif_out",
"clk_mipi_24m", "clk_cif_pll", "hclk_mipiphy1";
pinctrl-names =
"default", "isp_dvp8bit2", "isp_dvp10bit",
"isp_dvp12bit", "isp_dvp8bit0", "isp_mipi_fl",
"isp_mipi_fl_prefl", "isp_flash_as_gpio",
"isp_flash_as_trigger_out";
pinctrl-0 = <&isp_mipi>;
pinctrl-1 = <&isp_mipi &isp_dvp_d2d9>;
pinctrl-2 = <&isp_mipi &isp_dvp_d2d9 &isp_dvp_d0d1>;
pinctrl-3 = <&isp_mipi &isp_dvp_d2d9 &isp_dvp_d0d1
&isp_dvp_d10d11>;
pinctrl-4 = <&isp_mipi &isp_dvp_d0d7>;
pinctrl-5 = <&isp_mipi>;
pinctrl-6 = <&isp_mipi &isp_prelight>;
pinctrl-7 = <&isp_flash_trigger_as_gpio>;
pinctrl-8 = <&isp_flash_trigger>;
rockchip,isp,mipiphy = <2>;
rockchip,isp,cifphy = <1>;
rockchip,isp,mipiphy1,reg = <0xff968000 0x4000>;
rockchip,grf = <&grf>;
rockchip,cru = <&cru>;
rockchip,gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
rockchip,isp,iommu_enable = <1>;
iommus = <&isp_mmu>;
status = "disabled";
};