[alsa-devel] [PATCH] ALSA: hda_intel: add AZX_DCAPS_I915_POWERWELL for skl
Takashi Iwai
tiwai at suse.de
Sat Apr 4 12:44:04 CEST 2015
At Mon, 30 Mar 2015 02:47:45 +0000,
Yang, Libin wrote:
>
> Hi Takashi,
>
>
> > -----Original Message-----
> > From: Yang, Libin
> > Sent: Friday, March 27, 2015 4:34 PM
> > To: Takashi Iwai
> > Cc: alsa-devel at alsa-project.org
> > Subject: RE: [alsa-devel] [PATCH] ALSA: hda_intel: add
> > AZX_DCAPS_I915_POWERWELL for skl
> >
> > Hi Takashi,
> >
> >
> >
> > > -----Original Message-----
> > > From: Takashi Iwai [mailto:tiwai at suse.de]
> > > Sent: Friday, March 27, 2015 4:30 PM
> > > To: Yang, Libin
> > > Cc: alsa-devel at alsa-project.org
> > > Subject: Re: [alsa-devel] [PATCH] ALSA: hda_intel: add
> > > AZX_DCAPS_I915_POWERWELL for skl
> > >
> > > At Fri, 27 Mar 2015 08:25:52 +0000,
> > > Yang, Libin wrote:
> > > >
> > > > Hi Takashi,
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: alsa-devel-bounces at alsa-project.org [mailto:alsa-devel-
> > > > > bounces at alsa-project.org] On Behalf Of Takashi Iwai
> > > > > Sent: Friday, March 27, 2015 4:19 PM
> > > > > To: Yang, Libin
> > > > > Cc: alsa-devel at alsa-project.org
> > > > > Subject: Re: [alsa-devel] [PATCH] ALSA: hda_intel: add
> > > > > AZX_DCAPS_I915_POWERWELL for skl
> > > > >
> > > > > At Fri, 27 Mar 2015 08:02:54 +0000,
> > > > > Yang, Libin wrote:
> > > > > >
> > > > > > Hi Takashi,
> > > > > >
> > > > > >
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Takashi Iwai [mailto:tiwai at suse.de]
> > > > > > > Sent: Friday, March 27, 2015 3:57 PM
> > > > > > > To: Yang, Libin
> > > > > > > Cc: alsa-devel at alsa-project.org
> > > > > > > Subject: Re: [PATCH] ALSA: hda_intel: add
> > > > > > > AZX_DCAPS_I915_POWERWELL for skl
> > > > > > >
> > > > > > > At Fri, 27 Mar 2015 15:10:04 +0800,
> > > > > > > libin.yang at intel.com wrote:
> > > > > > > >
> > > > > > > > From: Libin Yang <libin.yang at intel.com>
> > > > > > > >
> > > > > > > > HDMI/DP codec on SKL is in the power well.
> > > > > > > > The power well must be turned on before probing the
> > > > > > > > HDMI/DP codec.
> > > > > > > >
> > > > > > > > Signed-off-by: Libin Yang <libin.yang at intel.com>
> > > > > > >
> > > > > > > So, was the previous question clarified?
> > > > > >
> > > > > > Yes, I have confirmed with our silicon team.
> > > > > >
> > > > > > >
> > > > > > > This certainly sucks. It means that the powerwell is on even
> > > you
> > > > > > > don't use the HDMI/DP at all. If this is intended as a
> > temporarily
> > > > > > > workaround, it should be mentioned so. Please give more
> > > > > comments
> > > > > > > and
> > > > > > > backgrounds.
> > > > > >
> > > > > > Yes, as this is added in the skl audio controller, even there is no
> > > > > HDMI/DP
> > > > > > codec, we should also add this flag. Otherwise the HDMI/DP
> > > codec
> > > > > > may not be detected correctly.
> > > > >
> > > > > But it's possible to do it only at probing, not permanently. If so,
> > > > > we'll have another patch in future.
> > > > >
> > > > > Please write more information in the changelog and resubmit.
> > > >
> > > > Do you mean to add more description in the patch comments?
> > >
> > > Yes. The hardware design is different from HSW/BDW, thus applying
> > > this isn't straightforward but just a workaround. I don't know
> > > whether you think it's a temporary workaround or a permanent fix.
> > > Such information must be written there, too.
> >
> > OK. I see. It seems we need more input from our silicon team
> > for this issue.
>
> >From our silicon team's comment, it seems we need power on
> the powerwell when detecting and probing the HDMI codec.
>
> For the skl case (HDMI codec is in powerwell, while controller not),
> my thinking is:
>
> 1. power on the power well
> 2. read STATESTS to determine the codec_mask
> 3. if codec is not present, power off the power well
> and remove the flag. (seems we need a new flag)
> 4. if codec is present, we will power on the power well
> when dealing with HDMI codec.
>
> What do you think?
Yes, it's also similar to my plan. My plan has a bit more code
changes for adapting to the new structure:
- Move hda_i915.c code into sound/hda to be used for both legacy and
new drivers
- Add a reference counter to get/put, so that it can be called from
both controller and codec drivers
- Move the component from struct hda_intel to hdac_bus, but
dynamically allocating. The helper code can check it like
if (bus->audio_component)
bus->audio_component->ops->get_power(...)
(Or the NULL check can be in a helper function)
- get_power() is called at probing as is now
- put_power() is called at the end of azx_probe*()
- There will be two DCAPS flags, one indicating for the old chips that
need get_power() for runtime PM, and one indicating get_power() only
for probing.
Now an open question is how to make codec driver to call get_power /
put_power. To be more clear, currently there is no solid way to allow
the codec driver doing something special before / after
hda_set_power_state(). One may implement a tricky set_power_state()
ops in the codec driver. Or, we may reimplement pre_resume and
post_suspend patch_ops again.
Takashi
More information about the Alsa-devel
mailing list