[alsa-devel] [RFC PATCH] ALSA: hda - Detect codecs on Intel DZ77SL-50K

Takashi Iwai tiwai at suse.de
Wed Jan 22 12:40:28 CET 2014


At Wed, 22 Jan 2014 12:32:28 +0100,
David Henningsson wrote:
> 
> From: Niraj <kulkarniniraj at rediffmail.com>
> 
> Apparently this board seems to need some extra initialization before a proper
> codec probe value can be read.
> 
> BugLink: https://bugs.launchpad.net/bugs/1155202
> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> ---
>  sound/pci/hda/hda_intel.c |    6 ++++++
>  1 file changed, 6 insertions(+)
> 
> Hi Takashi,
> 
> Here's a patch from Niraj, which has found this code below to make audio work
> on the Intel DZ77SL-50K board. Without it, no codecs will be detected.
> 
> I'm not sure if you like it this way or if you want me or Niraj to change
> anything, or debug further. Or maybe add a new quirk for this particular device?

Of course, I don't like this :)

The patch essentially disables the codec reset in *all* cases after a
codec is probed.  This smells badly of a future regression.

FWIW, you can set a forced codec probe mask in probe_mask_list[].
The bit 0x100 means to force the detection.

But, before going that direction, could you clarify how this fixes the
probing at all?  Which azx_init_chip() calls hinders the probing of an
active codec?


thanks,

Takashi

> 
> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> index fa2879a..2bf46e9 100644
> --- a/sound/pci/hda/hda_intel.c
> +++ b/sound/pci/hda/hda_intel.c
> @@ -1306,6 +1306,12 @@ static void azx_init_chip(struct azx *chip, int full_reset)
>  
>  	/* reset controller */
>  	azx_reset(chip, full_reset);
> +	if (!chip->codec_mask) {
> +		azx_writel(chip, GCTL, 0x100);
> +		while(azx_readl(chip, GCTL) != 0x0);
> +		azx_writel(chip, GCTL, 0x1);
> +		azx_reset(chip, full_reset);
> +	}
>  
>  	/* initialize interrupts */
>  	azx_int_clear(chip);
> -- 
> 1.7.9.5
> 


More information about the Alsa-devel mailing list