Re: drm: Stable identification of connectors?

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

 



Hi Joerg

On Fri, 26 Jan 2024 at 10:45, Albert, Joerg (TT-U) <Joerg.Albert@xxxxxx> wrote:

Hi,

 

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?

 

Our hardware contains an iMX8QM with two displays, each one connected to a MIPI-DSI channel. We use kernel 6.1.38.

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.

 

connector_type_id is set in the kernel in drivers/gpu/drm/drm_connector.c in __drm_connector_init():

 

       connector->connector_type_id =
              ida_alloc_min(connector_ida, 1, GFP_KERNEL);

 

Seems to me that this number depends on initialization order only. Is there any other way to identify a connector?

 

If not, will the type_id be stable as long as we don’t change the kernel version and the device tree?


My understanding is it all depends on initialisation order, and that isn't guaranteed.

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.
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.

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.

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.

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.

Thanks.
  Dave

[1] https://github.com/raspberrypi/linux/commit/3aa1f2477545ea6298bc6f2d7ffae68f090af9b8 and fixup https://github.com/raspberrypi/linux/commit/f429fc1a072d4bb35e622a1012a5a52914eba4e3

 

Best Regards,

Joerg Albert

 

 

 

 

 


+491747384960

 

 

We move the world for the better through technology and engineering.

www.iav.com | Facebook | Instagram | LinkedIn | Xing | YouTube

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
Datenschutzhinweise/Privacy Policy



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux