imx7_media_csi probe deferred

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@0/bus@32c00000/mipi-csi@32e30000/ports/port@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@0/bus@32c00000/csi@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@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@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@0 {
               reg = <0>;
          };

          port@1 {
               reg = <1>;

               imx8mm_mipi_csi_out: endpoint {
                    remote-endpoint = <&csi_in>;
               };
          };
};

&csi {
     status = "okay";
};

&i2c3 {
     #address-cells = <1>;
     #size-cells = <0>;

     imx219: sensor@10 {
          compatible = "sony,imx219";
          reg = <0x10>;
          clocks = <&cam24m>;
          VDIG-supply = <&reg_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@0 {
               reg = <0>;

               imx8mm_mipi_csi_in: endpoint {
                    remote-endpoint = <&imx219_to_mipi_csi2>;
                    data-lanes = <1 2>;
               };
          };

          port@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




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux