[alsa-devel] [RESEND][PATCH] ASoC: hdac_hdmi: Program pin-port-mux during jack report event

Sriram Periyasamy sriramx.periyasamy at intel.com
Mon Jul 9 14:32:42 CEST 2018


On Fri, Jun 22, 2018 at 11:27:55AM +0530, Sriram Periyasamy wrote:
> On Thu, Jun 21, 2018 at 01:14:28PM +0200, Takashi Iwai wrote:
> > On Thu, 21 Jun 2018 12:45:34 +0200,
> > Sriram Periyasamy wrote:
> > > 
> > > On Thu, Jun 21, 2018 at 10:28:33AM +0200, Takashi Iwai wrote:
> > > > On Thu, 21 Jun 2018 09:54:20 +0200,
> > > > Sriram Periyasamy wrote:
> > > > > 
> > > > > On Wed, Jun 20, 2018 at 03:01:13PM +0200, Takashi Iwai wrote:
> > > > > > On Wed, 20 Jun 2018 13:08:21 +0200,
> > > > > > Sriram Periyasamy wrote:
> > > > > > > 
> > > > > > > During d3/d0 cycle, the connection selection index of all pins points
> > > > > > > to the default value. This needs to be restored to ensure audio is
> > > > > > > restored after d3/d0 cycle.
> > > > > > > 
> > > > > > > So store the connection selection index and program it during jack
> > > > > > > report event which gets invoked in cases like d3/d0 cycle, hot plug
> > > > > > > detection when multiple displays are connected.
> > > > > > 
> > > > > > Hm, I thought *_CONNECT_SEL being cached and restored at resume
> > > > > > already by regmap?
> > > > > > 
> > > > > 
> > > > > Yes, legacy HDA HDMI driver has this method whereas ASoC based HDAC HDMI
> > > > > driver doesn't use regmap. Hence we needed this solution.
> > > > 
> > > > If so, why not just use the standard snd_hdac_codec_write()?
> > > > 
> > > 
> > > Because snd_hdac_codec_write doesn't power up the device to send the verb
> > > across the link when the device is runtime suspended.
> > 
> > Then why hdac_hdmi_port_select_set() would work?  It's using
> > snd_hdac_codec_write(), too.
> >
> 
> We will check and come back on this.
>

In case of MST, it will work since snd_hdac_read_parm_uncached() wakes up
the device and put the device to runtime auto suspend. The auto suspend
delay was helping this snd_hdac_codec_write() pass through.

In case of non-MST, hdac_hdmi_port_select_set() will simply return 0 by
checking the MST capable port->pin->mst_capable. Hence the device is not
runtime resumed and subsequent calls of snd_hdac_codec_write() will fail.

We will post v2 to address this.

Thanks,
Sriram.


More information about the Alsa-devel mailing list