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.