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