<div dir="ltr"><div dir="ltr">Hi Joerg<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 26 Jan 2024 at 10:45, Albert, Joerg (TT-U) <<a href="mailto:Joerg.Albert@iav.de" target="_blank">Joerg.Albert@iav.de</a>> wrote:</div><div dir="ltr" class="gmail_attr"><span style="font-size:10pt;font-family:"Arial",sans-serif"></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div lang="DE"><div>
<p class="MsoNormal">
<span style="font-size:10pt;font-family:"Arial",sans-serif">Hi,</span> <span style="font-size:10pt;font-family:"Arial",sans-serif"></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US">I’m pretty new to DRM/DRI and wonder if there is a way to have a stable identification of connectors across changes in the Linux kernel and/or in the devicetree?<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US">Our hardware contains an iMX8QM with two displays, each one connected to a MIPI-DSI channel. We use kernel 6.1.38.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US">In the output of “modetest -c” the connectors are called LVDS-1 and LVDS-2. These names are built in modetest.c from connector_type and connector_type_id.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US">connector_type_id is set in the kernel in drivers/gpu/drm/drm_connector.c in __drm_connector_init():<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"><u></u> <u></u></span></p>
<pre><span><span style="font-size:11pt;color:rgb(187,187,187)" lang="EN-US">       </span></span><span><span style="font-size:11pt;color:black"><a href="https://elixir.bootlin.com/linux/latest/C/ident/connector" target="_blank"><b><span lang="EN-US">connector</span></b></a></span></span><span><span style="font-size:11pt;color:rgb(102,102,102)" lang="EN-US">-></span></span><span><span style="font-size:11pt;color:black"><a href="https://elixir.bootlin.com/linux/latest/C/ident/connector_type_id" target="_blank"><b><span lang="EN-US">connector_type_id</span></b></a></span></span><span><span style="font-size:11pt;color:rgb(187,187,187)"> </span></span><span><span style="font-size:11pt;color:rgb(102,102,102)" lang="EN-US">=</span></span><span style="font-size:11pt;color:black" lang="EN-US"><u></u><u></u></span></pre>
<pre><span><span style="font-size:11pt;color:rgb(187,187,187)" lang="EN-US">              </span></span><span><span style="font-size:11pt;color:black"><a href="https://elixir.bootlin.com/linux/latest/C/ident/ida_alloc_min" target="_blank"><b><span lang="EN-US">ida_alloc_min</span></b></a></span></span><span><span style="font-size:11pt;color:rgb(102,102,102)" lang="EN-US">(</span></span><span><span style="font-size:11pt;color:black"><a href="https://elixir.bootlin.com/linux/latest/C/ident/connector_ida" target="_blank"><b><span lang="EN-US">connector_ida</span></b></a></span></span><span><span style="font-size:11pt;color:rgb(102,102,102)" lang="EN-US">,</span></span><span><span style="font-size:11pt;color:rgb(187,187,187)" lang="EN-US"> </span></span><span><span style="font-size:11pt;color:rgb(0,0,221)" lang="EN-US">1</span></span><span><span style="font-size:11pt;color:rgb(102,102,102)" lang="EN-US">,</span></span><span><span style="font-size:11pt;color:rgb(187,187,187)" lang="EN-US"> </span></span><span><span style="font-size:11pt;color:black"><a href="https://elixir.bootlin.com/linux/latest/C/ident/GFP_KERNEL" target="_blank"><b><span lang="EN-US">GFP_KERNEL</span></b></a></span></span><span><span style="font-size:11pt;color:rgb(102,102,102)" lang="EN-US">);</span></span><span style="font-size:11pt;color:black" lang="EN-US"><u></u><u></u></span></pre>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US">Seems to me that this number depends on initialization order only. Is there any other way to identify a connector?<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US">If not, will the type_id be stable as long as we don’t change the kernel version and the device tree?</span></p></div></div></div></blockquote><div><br></div><div>My understanding is it all depends on initialisation order, and that isn't guaranteed.<br></div><div><br></div><div>Raspberry Pi 5 has a similar issue that it has two independent DRM driver instances each initialising a DSI connector. Which one gets assigned DSI-1 vs DSI-2 is down to probe order, and can change between boots.</div><div>
<div>You also have the situation that a panel connected to the second 
connector is referred to as DSI-1 if nothing is connected to the first, but it'll 
probably bump up to DSI-2 should you later configure a panel on the first connector. Any 
configuration within a window manager based on display ID is therefore near useless if there is any change to the system.<br></div><div><br></div>

It's the same situation if you have more than one SPI display using the mipi-dbi-spi or tinyDRM drivers - ordering of display to SPI-x IDs is down to probe order, so near random.<br></div><div></div><br><div>I haven't attempted to upstream this yet, but on our tree [1] I've adopted the same approach as the I2C and SPI subsystems take where a DT alias can be used to set the desired connector ID. Devices with no alias get assigned IDs above the last assigned alias.<br></div><div><br></div><div>Seeing as you've raised the same issue, it'd be interesting to know the view of the maintainers as to whether my solution is acceptable. There's no point in trying to upstream it if it's going to be immediately shot down.<br></div><div><br></div><div>Thanks.</div><div>  Dave</div><div><br></div><div>
<div>[1] <a href="https://github.com/raspberrypi/linux/commit/3aa1f2477545ea6298bc6f2d7ffae68f090af9b8" target="_blank">https://github.com/raspberrypi/linux/commit/3aa1f2477545ea6298bc6f2d7ffae68f090af9b8</a>
 and fixup 
<a href="https://github.com/raspberrypi/linux/commit/f429fc1a072d4bb35e622a1012a5a52914eba4e3" target="_blank">https://github.com/raspberrypi/linux/commit/f429fc1a072d4bb35e622a1012a5a52914eba4e3</a></div><div><br></div>

</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div lang="DE"><div><p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"> <br></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US">Best Regards,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US">Joerg Albert<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Arial",sans-serif" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:9pt;font-family:"Arial",sans-serif;color:white" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:9pt;font-family:"Arial",sans-serif;color:white" lang="EN-US"><br>
+491747384960<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
<font size="2"><font size="1" face="Arial"><font style="font-size:8pt;font-family:Arial" color="#000000">We move the world for the better through technology and engineering</font>.</font></font><br>
<br>
<span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)"><a href="https://www.iav.com" title="" style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)" target="_blank"><span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)">www.iav.com</span></a></span><font size="1" face="Arial"> </font><font size="1" face="Arial">|
</font><span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)"><a href="https://www.facebook.com/insideiav" title="" style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)" target="_blank"><span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)">Facebook</span></a></span><font size="1" face="Arial">
 | <span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)"><a href="https://www.instagram.com/inside_iav/" title="" style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)" target="_blank"><span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)">Instagram</span></a></span><font size="1" face="Arial">
 |</font> </font><span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)"><a href="https://www.linkedin.com/company/iav-gmbh" title="" style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)" target="_blank"><span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)">LinkedIn</span></a></span><font size="1" face="Arial">
 | </font><span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)"><a href="https://www.xing.com/companies/iav" title="" style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)" target="_blank"><span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)">Xing</span></a></span><font size="1" face="Arial"> |
</font><span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)"><a href="https://www.youtube.com/user/IAVchannel" title="" style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)" target="_blank"><span style="font-family:Arial;font-size:8pt;color:rgb(5,99,193)">YouTube</span></a></span><br>
<font size="2"><font style="font-size:8pt;font-family:Arial" size="1" face="Arial"><br>
IAV GmbH Ingenieurgesellschaft Auto und Verkehr; Sitz/Registered Office: Berlin; Registergericht/Registration Court: Amtsgericht Charlottenburg (Berlin); Registernummer/Company Registration Number: HRB 21 280 B; Geschäftsführer/Managing Directors: Joerg Astalosch,
 Martin Mahlke, Dr. Uwe Horn; Vorsitzender des Aufsichtsrates/Chairman of the Supervisory Board: Dr. Nikolai Ardey<br>
<span style="color:rgb(5,99,193)"><a href="https://www.iav.com/datenschutz" title="" style="color:rgb(5,99,193)" target="_blank"><span style="color:rgb(5,99,193)">Datenschutzhinweise/Privacy Policy</span></a></span></font></font>
<p></p>
<br>
<p></p>
<p></p>
</div>

</div></blockquote></div></div>