[alsa-devel] sof/hda rework to share more of patch_hdmi.c logic
Takashi Iwai
tiwai at suse.de
Fri Aug 23 19:18:46 CEST 2019
On Fri, 23 Aug 2019 17:55:05 +0200,
Kai Vehmanen wrote:
>
> Hey,
>
>
> On Fri, 23 Aug 2019, Takashi Iwai wrote:
> > On Fri, 23 Aug 2019, Takashi Iwai wrote:
> > > The current patch_hdmi.c implementation is based on the theoretical
> > > possibility, and limitation to the reduced PCM streams would work, I
> > > suppose.
> [...]
> > access to the fixed PCM device (e.g. hw:1,1). But, it's hardly
> > possible to get more than three audio-monitors active in the real
> > scenario, we've almost never seen this necessity.
>
> ack. This does feel very unlikely to be a problem. And one could implement
> a wait list -> delay PCM attach if all audio converters are taken when the
> new monitor ELD update happens. Upon next disconnect of an already
> attached audio enabled monitor, one could check the wait list and hook up
> monitors to the freed converters. But yeah, at least on i915 I don't see
> the need for this.
>
> This does raise the question whether we should change the behaviour
> for the non-DSP HD driver as well...? Tempting, but the risk for breaking
> apps may be too high.
It's a good question. On one hand, it'd be good to clean up a bit,
but we never know the use of backup PCM ever happened. No news is a
good news, after all.
> > The actual behavior can be found in the description of commit
> > a76056f2e57e:
> >
> > When monitor is connected, find a proper PCM for the monitor.
> > When monitor is disconnected, unbind the PCM from the pin.
> >
> > The binding policy (use Intel platform as example) is:
> > 1. Try to use the legacy pin-pcm mapping for the device entry 0
> > of the pin.
> > 2. If step 1 fails, try to bind pin to the backup PCMs. For example,
> > on Intel platform, if DP MST is enabled, 5 PCMs will be created.
> > PCM 3, PCM 7, PCM 8 are supposed to be used by device entry 0 of
> > pin 5, pin 6 and pin 7. PCM 9 and PCM 10 are the backup PCMs.
> > 3. If step 2 fails, try to find any PCM to bind to the pin.
> >
> > Removing the backup streams means the removal of step 2, but the
> > driver will keep working in step 3.
>
> Yes, I didn't have to actually change this code at all. I just limit the
> PCM count to number of converters, and the above code works without
> modifications (and skips (2)). Only problem left is how to change to
> toggle the different rules for calculing pcm count. Unless we change the
> behaviour for non-DSP HD driver as well, there needs to be some dynamic
> configuration of patch_hdmi. Kconfig/module-param won't do, I assume
> distros want to enable both options with same kernel.
We can introduce some new flag in struct hda_codec indicating this
restriction, and set it in hdac_hda_codec_probe() beforehand.
Or, we may introduce a new Kconfig and disable statically. The new
Kconfig may have "depends on SOF=n" or whatever to be sure.
Although we have no 100% guarantee as mentioned in the above, this
shouldn't be a big problem. Worth for try.
Honestly speaking, I'm not entirely sure which is a better way to go.
Both would be fairly small changes.
You can try them out and see which looks saner. I really don't mind
either way.
thanks,
Takashi
More information about the Alsa-devel
mailing list