On Tue, Nov 09, 2021 at 05:39:02PM +0300, Dmitry Osipenko wrote: > 09.11.2021 17:17, Dmitry Osipenko пишет: > > 09.11.2021 17:08, Dmitry Osipenko пишет: > >>> +static void host1x_drm_dev_deinit(struct host1x_device *dev) > >>> +{ > >>> + struct drm_device *drm = dev_get_drvdata(&dev->dev); > >> And platform_unregister_drivers() should be moved here. > >> > > > > Nah, that should cause deadlock. This ad-hoc is too lame. > > Actually, there is no problem here as I see now. The host1x driver > populates DT nodes after host1x_register() [1], meaning that Host1x DRM > will be always inited first. > > [1] > https://elixir.bootlin.com/linux/v5.15/source/drivers/gpu/host1x/dev.c#L475 > > Still I'm not a fan of the ad-hoc solution. Could we not fix this by making the panel "hot-pluggable"? I don't think there's anything inherent to the driver that would prevent doing so. The original reason for why things are as intertwined as they are now is because back at the time deferred framebuffer creation didn't exist. In fact I added deferred framebuffer support with Daniel's help precisely to fix a similar issue for things like HDMI and DP. With HDMI and DP it's slightly less critical, because a lack of mode support would've created a 1024x768 framebuffer, which most HDMI/DP monitors support. However, with panels we need to ensure that the exact mode from the panel is used to create the framebuffer, so it can only be created when the panel is available. But, given that deferred framebuffer creation works now (which allows the framebuffer console to show up at the preferred resolution for HDMI and DP), even if a monitor is attached only after the driver has probed already, we should be able to make something like that work with panels as well. Thierry > > Another solution is to defer probing of DP AUX driver while > > tegra_drm_device() returns NULL, but it's icky. > > > > Reverting the original DP AUX DDC registration order is the best option > > so far, IMO. > >
Attachment:
signature.asc
Description: PGP signature