imx7_media_csi probe deferred
Tim Harvey
tharvey at gateworks.com
Thu Dec 21 17:12:16 PST 2023
Greetings,
I'm running into an issue with Linux 6.6 (6.6.8) when compiling with
modules where the imx7_media_csi driver probe is deferred and I'm not
clear how to troubleshoot the cause.
The board is imx8mm-venice-gw73xx-0x [1] with
imx8mm-venice-gw73xx-0x-imx219.dtso [2] and I'm using
arch/arm64/configs/defconfig.
The kernel reports the following:
# dmesg | egrep csi\|mipi\|imx219
[ 1.293264] i2c 2-0010: Fixed dependency cycle(s) with
/soc at 0/bus at 32c00000/mipi-csi at 32e30000/ports/port at 0/endpoint
[ 12.001419] imx219 2-0010: supply VANA not found, using dummy regulator
[ 12.044885] imx219 2-0010: supply VDDL not found, using dummy regulator
[ 12.164308] imx7-csi 32e20000.csi: Registered csi capture as /dev/video0
[ 12.178460] imx7-csi 32e20000.csi: error -ENOTCONN: Failed to get
remote endpoint
[ 12.200047] imx7-csi: probe of 32e20000.csi failed with error -107
# cat /sys/kernel/debug/devices_deferred
cpufreq-dt
32e30000.mipi-csi platform: wait for supplier
/soc at 0/bus at 32c00000/csi at 32e20000/port/endpoint
# zcat /proc/config.gz | egrep VIDEO_IMX219\|VIDEO_IMX_MIPI\|VIDEO_IMX7
CONFIG_VIDEO_IMX7_CSI=m
CONFIG_VIDEO_IMX_MIPI_CSIS=m
CONFIG_VIDEO_IMX219=m
# lsmod | grep imx
fsl_imx8_ddr_perf 16384 0
imx8m_ddrc 12288 0
imx7_media_csi 28672 0
videobuf2_dma_contig 16384 2 hantro_vpu,imx7_media_csi
videobuf2_v4l2 32768 3 hantro_vpu,imx7_media_csi,v4l2_mem2mem
videobuf2_common 57344 6
videobuf2_dma_contig,videobuf2_v4l2,hantro_vpu,imx7_media_csi,v4l2_mem2mem,videobuf2_memops
imx_mipi_csis 24576 0
imx219 20480 0
v4l2_cci 12288 1 imx219
v4l2_fwnode 20480 2 imx219,imx_mipi_csis
v4l2_async 20480 4 v4l2_fwnode,imx219,imx_mipi_csis,imx7_media_csi
videodev 258048 8
v4l2_async,v4l2_fwnode,imx219,videobuf2_v4l2,hantro_vpu,imx_mipi_csis,imx7_media_csi,v4l2_mem2mem
mc 61440 9
v4l2_async,videodev,imx219,videobuf2_v4l2,hantro_vpu,videobuf2_common,imx_mipi_csis,imx7_media_csi,v4l
2_mem2mem
spi_imx 24576 0
imx_pcm_dma 12288 1 snd_soc_fsl_sai
imx8mm_thermal 12288 0
imx_sdma 24576 6
imx_cpufreq_dt 12288 0
The relevant dt looks like this:
csi: csi at 32e20000 {
compatible = "fsl,imx8mm-csi", "fsl,imx7-csi";
reg = <0x32e20000 0x1000>;
interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_CSI1_ROOT>;
clock-names = "mclk";
power-domains = <&disp_blk_ctrl IMX8MM_DISPBLK_PD_CSI_BRIDGE>;
status = "disabled";
port {
csi_in: endpoint {
remote-endpoint = <&imx8mm_mipi_csi_out>;
};
};
};
mipi_csi: mipi-csi at 32e30000 {
compatible = "fsl,imx8mm-mipi-csi2";
reg = <0x32e30000 0x1000>;
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
assigned-clocks = <&clk IMX8MM_CLK_CSI1_CORE>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_1000M>;
clock-frequency = <333000000>;
clocks = <&clk IMX8MM_CLK_DISP_APB_ROOT>,
<&clk IMX8MM_CLK_CSI1_ROOT>,
<&clk IMX8MM_CLK_CSI1_PHY_REF>,
<&clk IMX8MM_CLK_DISP_AXI_ROOT>;
clock-names = "pclk", "wrap", "phy", "axi";
power-domains = <&disp_blk_ctrl IMX8MM_DISPBLK_PD_MIPI_CSI>;
status = "disabled";
ports {
#address-cells = <1>;
#size-cells = <0>;
port at 0 {
reg = <0>;
};
port at 1 {
reg = <1>;
imx8mm_mipi_csi_out: endpoint {
remote-endpoint = <&csi_in>;
};
};
};
&csi {
status = "okay";
};
&i2c3 {
#address-cells = <1>;
#size-cells = <0>;
imx219: sensor at 10 {
compatible = "sony,imx219";
reg = <0x10>;
clocks = <&cam24m>;
VDIG-supply = <®_cam>;
port {
/* MIPI CSI-2 bus endpoint */
imx219_to_mipi_csi2: endpoint {
remote-endpoint = <&imx8mm_mipi_csi_in>;
clock-lanes = <0>;
data-lanes = <1 2>;
link-frequencies = /bits/ 64 <456000000>;
};
};
};
};
&mipi_csi {
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port at 0 {
reg = <0>;
imx8mm_mipi_csi_in: endpoint {
remote-endpoint = <&imx219_to_mipi_csi2>;
data-lanes = <1 2>;
};
};
port at 1 {
reg = <1>;
imx8mm_mipi_csi_out: endpoint {
remote-endpoint = <&csi_in>;
};
};
};
};
Strangely I have a kernel config without modules where I do not run
into this issue so it has something to do with modules but I haven't
been able to determine which configs make a difference.
Any ideas what is wrong here or tips on troubleshooting the cause for
the probe defer?
Best Regards,
Tim
[1] https://elixir.bootlin.com/linux/latest/source/arch/arm64/boot/dts/freescale/imx8mm-venice-gw72xx-0x.dts
[2] https://elixir.bootlin.com/linux/latest/source/arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx-0x-imx219.dtso
More information about the linux-arm-kernel
mailing list