12.11.2021 13:52, Thierry Reding пишет:
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.
I don't understand what do you mean by "hot-pluggable", panel is static. Please either clarify more or type the patch.
Keep in mind that fix should be simple and portable because stable kernels are wrecked.
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.
BTW, I see now that DPAUX I2C transfer helper may access aux->drm_device. Hence v1 patch isn't correct anyways.
For now I'll try to test more the ad-hoc variant with Thomas and send it as v2 if we won't have a better solution.