Hi, On Fri, May 14, 2021 at 4:16 AM Jani Nikula <jani.nikula@xxxxxxxxx> wrote: > > On Fri, 07 May 2021, Lyude Paul <lyude@xxxxxxxxxx> wrote: > > On Fri, 2021-05-07 at 17:00 -0500, Bjorn Andersson wrote: > >> On Fri 07 May 16:18 CDT 2021, Lyude Paul wrote: > >> > >> > Adding ville from Intel to also get their take on this. > >> > > >> > In general we've been trying to move DRM to a design where we don't expose > >> > any > >> > devices until everything is ready. That's pretty much the main reason that > >> > we > >> > register things during bridge attach time. Note though that even before > >> > the > >> > DDC bus is registered it should still be usable, just things like > >> > get_device() > >> > won't work. > >> > > >> > This isn't the first time we've run into a problem like the one you're > >> > trying > >> > to solve though, Tegra currently has a similar issue. Something we > >> > discussed > >> > as a possible long-term solution for this was splitting i2c_add_adapter() > >> > into > >> > a minimal initialization function and a registration function. Linux's > >> > device > >> > core already allows for this (device_initialize() and device_add(), which > >> > are > >> > called together when device_register() is called). Would this be a > >> > solution > >> > that might work for you (and even better, would you possibly be willing to > >> > write the patches? :) > >> > > >> > >> It's not enough that the adapter is half-baked, because the bridge's > >> initialization depends on that the panel device is done probing, and the > >> panel driver will only complete its probe if it can find it's resources. > >> > >> So we need a mechanism to fully create the resources exposed by the > >> bridge chip (i2c bus, gpio chip and (soon) a pwm chip), then allow the > >> panel to probe and after that initialize the bridge. > >> > >> We did discuss possible ways to register these resources and then > >> "sleep for a while" before resolving the panel, but what we came up with > >> was definitely suboptimal - and ugly. > > > > Sigh, I'm really starting to wonder if we should reconsider the rules on > > exposing ddc adapters early... > > > > Danvet, Jani, and/or airlied: can I get your take on this? > > Granted, I did not study this in detail, but it sounds like we'd need to > be able to add and use an i2c adapter in kernel, before deciding to > register it with the userspace. But that does not seem to be as trivial > as making it possible to call the now-static i2c_register_adapter() > separately. To close the loop: I think the point is now moot in v7. Now crossing my fingers that approach can gain momentum. If not, I might come back here. ;-) -Doug