<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX ProcessorsのトピックRe: i.MX8MP FRDM: Boot Race Condition (Built-in CSI vs Module IMX219) &amp;amp;amp; System Hang on Unbin</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/i-MX8MP-FRDM-Boot-Race-Condition-Built-in-CSI-vs-Module-IMX219/m-p/2259264#M242806</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This appears to be a timing issue where the sensor driver loads after the CSI driver has already attempted to establish links, resulting in the "No remote pad found" error. This prevents proper media device registration.&lt;BR /&gt;&lt;BR /&gt;This race condition is a known issue with MIPI-CSI drivers that can occur when the sensor driver and host CSI bridge driver don't initialize in the proper sequence. &lt;BR /&gt;&lt;BR /&gt;The system hang you're experiencing when trying to unbind the CSI driver is concerning but not entirely unexpected. Unbinding an active MIPI-CSI driver can sometimes cause issues if there are active DMA transfers or incomplete transactions.&lt;BR /&gt;&lt;BR /&gt;Here are some potential solutions:&lt;BR /&gt;&lt;BR /&gt;1. **Device Tree Approach**: Modify your device tree to ensure the sensor driver loads before the CSI bridge driver by adjusting the compatible strings priority or using phandle references to establish proper dependencies.&lt;BR /&gt;&lt;BR /&gt;2. **Module Loading Order**: Force the correct module loading sequence by creating a modprobe configuration file that ensures the sensor driver loads before the CSI driver.&lt;BR /&gt;&lt;BR /&gt;3. **Driver Modification**: Implement a retry mechanism in the CSI driver that attempts to re-establish links if initial linking fails, allowing for late-binding of sensors.&lt;BR /&gt;&lt;BR /&gt;4. **Deferred Probing**: Modify the sensor driver to use deferred probing, allowing it to wait for necessary dependencies before completing initialization.&lt;BR /&gt;&lt;BR /&gt;5. **Alternative to Unbinding**: Instead of unbinding the CSI driver (which causes a system hang), try using `rmmod` and `modprobe` on the sensor driver after the system is fully booted, which may trigger proper link establishment without affecting the CSI driver directly.&lt;BR /&gt;&lt;BR /&gt;For immediate testing, you could try adding a delay in the boot sequence before the CSI driver loads to give the sensor driver time to initialize first.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 10 Dec 2025 13:56:04 GMT</pubDate>
    <dc:creator>Bio_TICFSL</dc:creator>
    <dc:date>2025-12-10T13:56:04Z</dc:date>
    <item>
      <title>i.MX8MP FRDM: Boot Race Condition (Built-in CSI vs Module IMX219) &amp;amp; System Hang on Unbind</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX8MP-FRDM-Boot-Race-Condition-Built-in-CSI-vs-Module-IMX219/m-p/2259209#M242803</link>
      <description>&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;Hello NXP Community,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;​I am currently bringing up an IMX219-77 camera module (Evaltec) on the i.MX8M Plus FRDM board using the official NXP Yocto BSP (Kernel 6.6.36).&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;​I am encountering a "No remote pad found" error during boot, which prevents the media controller (/dev/media0) from registering. All debugging points to a boot-time race condition between the built-in CSI bridge driver and the loadable sensor module. However, I cannot apply the standard runtime workaround because unbinding the CSI driver causes an immediate system hang.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;​Hardware &amp;amp; Software Setup:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;Board: i.MX8M Plus FRDM &lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​Camera Module: Evaltec IMX219-77 &lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;Connection: Connected to MIPI-CSI 1 using the official Raspberry Pi “Standard-Mini” (15-pin to 22-pin) ribbon cable.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​BSP/Image: Official NXP Yocto Demo Image (Kernel 6.6.36, No initramfs)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;​The Core Issue (Timing Mismatch):&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;The logs reveal a significant timing gap between the host driver and the sensor driver:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;STRONG&gt;​[~2.05s]&lt;/STRONG&gt;&lt;SPAN&gt; mxc-mipi-csi2-sam loads. Since it is compiled as Built-in in the standard image, it initializes early, probes the endpoint, fails to find the sensor (No remote pad found), and aborts the link.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;STRONG&gt;​[~10.00s]&lt;/STRONG&gt;&lt;SPAN&gt; imx219 finally loads. Since it is a Loadable Module (.ko), it waits for the rootfs to mount, arriving 8 seconds too late.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;Troubleshooting Steps &amp;amp; DTS Verification:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;I have modified the device tree (os08a20.dts decompiled/adapted) and verified the following:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt;Sensor Configuration:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​Regulators: Configured VANA-supply, VDIG-supply, and VDDL-supply to use fixed/dummy regulators to prevent probe deferral due to missing power resources.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​Reset GPIO: Updated reset-gpios to match the specific GPIO expander mapping of the FRDM board.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​Endpoint: Verified data-lanes = &amp;lt;2&amp;gt; and link-frequencies match the IMX219 capabilities.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt;Topology:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​Aliases: Added csi0 and isi0 aliases; verified they appear correctly in /proc/device-tree.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​Links: Manually verified phandle and remote-endpoint hex values in /proc to ensure a valid chain: Sensor -&amp;gt; CSI -&amp;gt; ISI.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​ISI Interface: Set interface = &amp;lt;0 0 2&amp;gt; (for CSI-1) and added the required fsl,blk-ctl reference.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;​The Blocker (System Hang on Unbind):&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;I attempted to fix the race condition at runtime by unbinding the CSI driver to force a re-probe after the sensor is loaded:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;I&gt;Bash command&lt;/I&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp; : echo 32e40000.csi &amp;gt; /sys/bus/platform/drivers/mxc-mipi-csi2-sam/unbind&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;​Result&lt;/STRONG&gt;&lt;SPAN&gt;: The command causes an immediate System Hang (SSH session closes, console freezes).&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;BR /&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;Hypothesis: Unbinding the CSI driver cuts power to the MEDIAMIX or VPUMIX domain, causing other active consumers to panic.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;BR /&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​Mitigation Attempt: I modified the DTS to explicitly set status = "disabled" for HDMI, LCDIF, GPU (2D/3D), and VPU nodes to isolate the CSI bridge as the sole consumer.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;BR /&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​Outcome: Even with these consumers disabled, the board still hangs immediately upon unbinding 32e40000.csi.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;​My Questions:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;BR /&gt;&lt;OL&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;Given that I cannot use an initramfs with this specific image, is there a kernel boot parameter or method to force the built-in mxc-mipi-csi2 driver to defer probing until the sensor module is available?&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;SPAN&gt;Why does unbinding the CSI driver cause a hard lockup even when all known neighbors (Display, GPU, VPU, ISI) are unbound or disabled? Is there a known safe sequence for&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;the i.MX8MP?&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;&lt;SPAN&gt;Is the only viable solution to recompile the kernel and change CONFIG_MXC_MIPI_CSI2_SAM from * (Built-in) to M (Module)?&lt;BR /&gt;&lt;BR /&gt;Please correct me if my understanding of the boot process or the hardware dependency is incorrect. I am open to any alternative approaches. If any further logs or configuration files are needed to diagnose this, please let me know and I will provide them immediately.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​I have attached the boot logs (dmesg) showing the timestamp gap and the modified Device Tree Source (os08a20.dts) for reference.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde"&gt;&lt;SPAN&gt;​&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Any guidance would be greatly appreciated.&lt;BR /&gt;&lt;BR /&gt;Thank you&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Wed, 10 Dec 2025 11:57:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX8MP-FRDM-Boot-Race-Condition-Built-in-CSI-vs-Module-IMX219/m-p/2259209#M242803</guid>
      <dc:creator>SreeSan</dc:creator>
      <dc:date>2025-12-10T11:57:01Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX8MP FRDM: Boot Race Condition (Built-in CSI vs Module IMX219) &amp;amp; System Hang on Unbin</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX8MP-FRDM-Boot-Race-Condition-Built-in-CSI-vs-Module-IMX219/m-p/2259264#M242806</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This appears to be a timing issue where the sensor driver loads after the CSI driver has already attempted to establish links, resulting in the "No remote pad found" error. This prevents proper media device registration.&lt;BR /&gt;&lt;BR /&gt;This race condition is a known issue with MIPI-CSI drivers that can occur when the sensor driver and host CSI bridge driver don't initialize in the proper sequence. &lt;BR /&gt;&lt;BR /&gt;The system hang you're experiencing when trying to unbind the CSI driver is concerning but not entirely unexpected. Unbinding an active MIPI-CSI driver can sometimes cause issues if there are active DMA transfers or incomplete transactions.&lt;BR /&gt;&lt;BR /&gt;Here are some potential solutions:&lt;BR /&gt;&lt;BR /&gt;1. **Device Tree Approach**: Modify your device tree to ensure the sensor driver loads before the CSI bridge driver by adjusting the compatible strings priority or using phandle references to establish proper dependencies.&lt;BR /&gt;&lt;BR /&gt;2. **Module Loading Order**: Force the correct module loading sequence by creating a modprobe configuration file that ensures the sensor driver loads before the CSI driver.&lt;BR /&gt;&lt;BR /&gt;3. **Driver Modification**: Implement a retry mechanism in the CSI driver that attempts to re-establish links if initial linking fails, allowing for late-binding of sensors.&lt;BR /&gt;&lt;BR /&gt;4. **Deferred Probing**: Modify the sensor driver to use deferred probing, allowing it to wait for necessary dependencies before completing initialization.&lt;BR /&gt;&lt;BR /&gt;5. **Alternative to Unbinding**: Instead of unbinding the CSI driver (which causes a system hang), try using `rmmod` and `modprobe` on the sensor driver after the system is fully booted, which may trigger proper link establishment without affecting the CSI driver directly.&lt;BR /&gt;&lt;BR /&gt;For immediate testing, you could try adding a delay in the boot sequence before the CSI driver loads to give the sensor driver time to initialize first.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 10 Dec 2025 13:56:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX8MP-FRDM-Boot-Race-Condition-Built-in-CSI-vs-Module-IMX219/m-p/2259264#M242806</guid>
      <dc:creator>Bio_TICFSL</dc:creator>
      <dc:date>2025-12-10T13:56:04Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX8MP FRDM: Boot Race Condition (Built-in CSI vs Module IMX219) &amp;amp; System Hang on Unbin</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX8MP-FRDM-Boot-Race-Condition-Built-in-CSI-vs-Module-IMX219/m-p/2259661#M242818</link>
      <description>&lt;P&gt;Thank you for the detailed breakdown of the potential solutions.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I have investigated your suggestions, but I need to highlight a critical architecture constraint in this specific NXP image that prevents standard reordering or reloading techniques.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;The constraint:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;CSI bridge driver(imx8-mipi-csi2-sam) is compiled as built-in, whereas the sensor driver (imx219) is a loadable module.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Evidence of Driver Compilation Type&lt;/STRONG&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I ran the following checks on the target board to confirm this:&lt;BR /&gt;&lt;BR /&gt;1.&lt;STRONG&gt;&amp;nbsp; CSI Driver is Built-in:&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;The driver appears in modules.builtin, confirming it is statically compiled into the kernel image and initializes early in the boot sequence( before the file system is mounted).&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;B&lt;EM&gt;ash env:&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;SPAN&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp;root@imx8mpfrdm:~# cat /lib/modules/$(uname -r)/modules.builtin | grep -Ei "mipi-csi2-sam"&lt;/EM&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;kernel/drivers/staging/media/imx/imx8-mipi-csi2-sam.ko&lt;BR /&gt;&lt;BR /&gt;2. &lt;STRONG&gt;Sensor is a module&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; The sensor driver exists as a loadable object file on disk, i.e it can only load after the root file&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; system is ready( approx 8 sec after the CSI driver has already failed).&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; B&lt;EM&gt;ash env:&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp;root@imx8mpfrdm:~# root@imx8mpfrdm:~# find /lib/modules/$(uname -r) -name "imx219.ko"&lt;/EM&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; /lib/modules/6.6.36-lts-next-g0d1e1544fd15/kernel/drivers/media/i2c/imx219.ko&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&lt;STRONG&gt;&lt;FONT size="5"&gt;Response to Specific Suggestions:&lt;/FONT&gt;&lt;BR /&gt;&lt;BR /&gt;​&lt;FONT size="4"&gt;Regarding Suggestions #1 (Device Tree) &amp;amp; #2 (Module Order):&lt;/FONT&gt;&lt;BR /&gt;&lt;/STRONG&gt;Since the Host driver is built-in, I cannot control its load order relative to a disk-based module via modprobe.d or standard dependency mapping. It will always load first.&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Regarding Suggestion #3 (Driver Modification):&lt;/STRONG&gt;&lt;BR /&gt;Modifying the driver source to add a retry mechanism would require recompiling the kernel. If a recompile is unavoidable, the standard (and cleaner) solution would be to simply change the driver configuration from Built-in &amp;lt;*&amp;gt; to Module &amp;lt;M&amp;gt;, which resolves the race condition natively without maintaining custom patches. My goal right now is to find a solution that avoids recompilation if possible.&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Regarding Suggestion #5 (Reload Sensor):&lt;/STRONG&gt;&lt;BR /&gt;I tested removing and reloading the sensor driver (rmmod imx219 &amp;amp;&amp;amp; modprobe imx219). While the sensor reloads successfully, the built-in CSI Bridge does not re-trigger a handshake or probe attempt. It appears to enter a failed state during boot and stops listening.&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Request for Guidance on Suggestion #4 (Deferred Probing)&lt;/STRONG&gt;&lt;BR /&gt;​This appears to be the most viable path. Since I am trying to avoid a full kernel recompile to change the driver type, I would like to pursue the Deferred Probing approach.&lt;BR /&gt;​Does the imx8-mipi-csi2-sam driver support a specific Kernel Boot Parameter to force it to wait or retry probing? Is there a specific patch or mechanism in the NXP BSP to enable standard EPROBE_DEFER behavior for this bridge when the remote endpoint is not yet available?&lt;BR /&gt;&lt;BR /&gt;Please correct me if there is a method to unload/reload the built-in bridge logic that I might have missed.&lt;BR /&gt;​&lt;BR /&gt;Thank you again for your time and assistance.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 11 Dec 2025 06:12:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX8MP-FRDM-Boot-Race-Condition-Built-in-CSI-vs-Module-IMX219/m-p/2259661#M242818</guid>
      <dc:creator>SreeSan</dc:creator>
      <dc:date>2025-12-11T06:12:15Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX8MP FRDM: Boot Race Condition (Built-in CSI vs Module IMX219) &amp;amp; System Hang on Unbin</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX8MP-FRDM-Boot-Race-Condition-Built-in-CSI-vs-Module-IMX219/m-p/2266136#M242972</link>
      <description>&lt;P&gt;Thank you for the detailed breakdown of the potential solutions.&lt;/P&gt;&lt;P&gt;I have investigated your suggestions, but I need to highlight a critical architecture constraint in this specific NXP image that prevents standard reordering or reloading techniques.&lt;/P&gt;&lt;P&gt;The constraint:&lt;BR /&gt;CSI bridge driver(imx8-mipi-csi2-sam) is compiled as built-in, whereas the sensor driver (imx219) is a loadable module.&lt;/P&gt;&lt;P&gt;Evidence of Driver Compilation Type&lt;/P&gt;&lt;P&gt;I ran the following checks on the target board to confirm this:&lt;/P&gt;&lt;P&gt;1. CSI Driver is Built-in:&lt;BR /&gt;The driver appears in modules.builtin, confirming it is statically compiled into the kernel image and initializes early in the boot sequence( before the file system is mounted).&lt;/P&gt;&lt;P&gt;Bash env:&lt;/P&gt;&lt;P&gt;root@imx8mpfrdm:~# cat /lib/modules/$(uname -r)/modules.builtin | grep -Ei "mipi-csi2-sam"&lt;/P&gt;&lt;P&gt;kernel/drivers/staging/media/imx/imx8-mipi-csi2-sam.ko&lt;/P&gt;&lt;P&gt;2. Sensor is a module&lt;BR /&gt;The sensor driver exists as a loadable object file on disk, i.e it can only load after the root file system is ready( approx 8 sec after the CSI driver has already failed).&lt;/P&gt;&lt;P&gt;Bash env:&lt;/P&gt;&lt;P&gt;root@imx8mpfrdm:~# root@imx8mpfrdm:~# find /lib/modules/$(uname -r) -name "imx219.ko"&lt;/P&gt;&lt;P&gt;/lib/modules/6.6.36-lts-next-g0d1e1544fd15/kernel/drivers/media/i2c/imx219.ko&lt;/P&gt;&lt;P&gt;Response to Specific Suggestions:&lt;/P&gt;&lt;P&gt;​Regarding Suggestions #1 (Device Tree) &amp;amp; #2 (Module Order):&lt;BR /&gt;Since the Host driver is built-in, I cannot control its load order relative to a disk-based module via modprobe.d or standard dependency mapping. It will always load first.&lt;/P&gt;&lt;P&gt;Regarding Suggestion #3 (Driver Modification):&lt;BR /&gt;Modifying the driver source to add a retry mechanism would require recompiling the kernel. If a recompile is unavoidable, the standard (and cleaner) solution would be to simply change the driver configuration from Built-in &amp;lt;*&amp;gt; to Module &amp;lt;M&amp;gt;, which resolves the race condition natively without maintaining custom patches. My goal right now is to find a solution that avoids recompilation if possible.&lt;/P&gt;&lt;P&gt;Regarding Suggestion #5 (Reload Sensor):&lt;BR /&gt;I tested removing and reloading the sensor driver (rmmod imx219 &amp;amp;&amp;amp; modprobe imx219). While the sensor reloads successfully, the built-in CSI Bridge does not re-trigger a handshake or probe attempt. It appears to enter a failed state during boot and stops listening.&lt;/P&gt;&lt;P&gt;Request for Guidance on Suggestion #4 (Deferred Probing)&lt;BR /&gt;​This appears to be the most viable path. Since I am trying to avoid a full kernel recompile to change the driver type, I would like to pursue the Deferred Probing approach.&lt;BR /&gt;​Does the imx8-mipi-csi2-sam driver support a specific Kernel Boot Parameter to force it to wait or retry probing? Is there a specific patch or mechanism in the NXP BSP to enable standard EPROBE_DEFER behavior for this bridge when the remote endpoint is not yet available?&lt;/P&gt;&lt;P&gt;Please correct me if there is a method to unload/reload the built-in bridge logic that I might have missed.&lt;BR /&gt;​&lt;BR /&gt;Thank you again for your time and assistance.&lt;/P&gt;</description>
      <pubDate>Thu, 18 Dec 2025 12:02:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX8MP-FRDM-Boot-Race-Condition-Built-in-CSI-vs-Module-IMX219/m-p/2266136#M242972</guid>
      <dc:creator>SreeSan</dc:creator>
      <dc:date>2025-12-18T12:02:59Z</dc:date>
    </item>
  </channel>
</rss>

