On 3/9/20 8:57 AM, Cezary Rojewski wrote:
On 2020-03-06 21:52, Pierre-Louis Bossart wrote:
On 3/5/20 8:53 AM, Cezary Rojewski wrote:
Skylake driver does the controller init operation twice:
- first during probe (only to stop it just before scheduling probe_work)
- and during said probe_work where the actual correct sequence is
executed
To properly complete boot sequence when iDisp codec is present, bus initialization has to be called only after _i915_init() finishes. With additional _reset_list preceding _i915_init(), iDisp codec never gets the chance to enumerate on the link. Remove the superfluous initialization to address the issue.
Have you tested with with DRM built-in and as a module? that was enough to trigger race conditions in the past on Dell XPS9350.
DRM is quite a tree, you got to be more specific. Tested with i915=m and DRM=m. I hope we mean the same thing when mentioning 'race'. There is an obvious initialization race between hda bus drv and i915 which requires one to follow a tight operation order in order to not lose i915 codec on hda link and thus be able to enumerate it properly.
I meant CONFIG_DRM=m, yes, thanks for the clarification.
With the DRM as module, it took more time to establish the communication. That's probably changed if we do all the inits in a workqueue now.
On top of that, as you mentioned (by the link) this series addresses missing DMIC configuration in conjunction with HDA +/- iDisp AND shields against no-NHLT configuration. On Dell XPS 9350 lack on of NHLT was the biggest problem - that's why I'd like that issue not to be forgotten about.
yes, but we don't want the driver to be auto-selected on SKL w/o DMICs, since it'd break existing devices who don't have a topology file installed.