mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] ALSA: intel8x0: keep AC97 PCM descriptors for ICH4 capture
@ 2026-11-04  8:22 raoxu
  2026-11-04 14:39 ` Takashi Iwai
  0 siblings, 1 reply; 2+ messages in thread
From: raoxu @ 2026-11-04  8:22 UTC (permalink / raw)
  To: perex
  Cc: tiwai, luiz.von.dentz, brgl, pengpeng, pmenzel, u.kleine-koenig,
	linux-sound, linux-kernel, raoxu

From: Xu Rao <raoxu@uniontech.com>

When S/PDIF uses the AC-link, spdif_idx is negative and the AC97
PCM assignment drops its last descriptor.  On ICH4 this leaves five
entries, but PCM2IN and MIC2 still use entries four and five.
Opening MIC2 then reads beyond the allocated descriptor array.

Keep all six descriptors on ICH4 so the capture stream indices stay
valid.  The S/PDIF descriptor occupies its fixed position but does
not create a separate hardware PCM when S/PDIF uses the AC-link.
Other controller types retain their existing descriptor counts.

Signed-off-by: Xu Rao <raoxu@uniontech.com>
---
 sound/pci/intel8x0.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
index 339024182a26..75db97501c72 100644
--- a/sound/pci/intel8x0.c
+++ b/sound/pci/intel8x0.c
@@ -2291,7 +2291,8 @@ static int snd_intel8x0_mixer(struct intel8x0 *chip, int ac97_clock,
 	i = ARRAY_SIZE(ac97_pcm_defs);
 	if (chip->device_type != DEVICE_INTEL_ICH4)
 		i -= 2;		/* do not allocate PCM2IN and MIC2 */
-	if (chip->spdif_idx < 0)
+	/* ICH4 PCM2IN and MIC2 still need entries 4 and 5. */
+	if (chip->spdif_idx < 0 && chip->device_type != DEVICE_INTEL_ICH4)
 		i--;		/* do not allocate S/PDIF */
 	err = snd_ac97_pcm_assign(pbus, i, ac97_pcm_defs);
 	if (err < 0)
--
2.50.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] ALSA: intel8x0: keep AC97 PCM descriptors for ICH4 capture
  2026-11-04  8:22 [PATCH] ALSA: intel8x0: keep AC97 PCM descriptors for ICH4 capture raoxu
@ 2026-11-04 14:39 ` Takashi Iwai
  0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2026-11-04 14:39 UTC (permalink / raw)
  To: raoxu
  Cc: perex, tiwai, luiz.von.dentz, brgl, pengpeng, pmenzel,
	u.kleine-koenig, linux-sound, linux-kernel

On Wed, 04 Nov 2026 09:22:42 +0100,
raoxu wrote:
> 
> From: Xu Rao <raoxu@uniontech.com>
> 
> When S/PDIF uses the AC-link, spdif_idx is negative and the AC97
> PCM assignment drops its last descriptor.  On ICH4 this leaves five
> entries, but PCM2IN and MIC2 still use entries four and five.
> Opening MIC2 then reads beyond the allocated descriptor array.
> 
> Keep all six descriptors on ICH4 so the capture stream indices stay
> valid.  The S/PDIF descriptor occupies its fixed position but does
> not create a separate hardware PCM when S/PDIF uses the AC-link.
> Other controller types retain their existing descriptor counts.
> 
> Signed-off-by: Xu Rao <raoxu@uniontech.com>
> ---
>  sound/pci/intel8x0.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
> index 339024182a26..75db97501c72 100644
> --- a/sound/pci/intel8x0.c
> +++ b/sound/pci/intel8x0.c
> @@ -2291,7 +2291,8 @@ static int snd_intel8x0_mixer(struct intel8x0 *chip, int ac97_clock,
>  	i = ARRAY_SIZE(ac97_pcm_defs);
>  	if (chip->device_type != DEVICE_INTEL_ICH4)
>  		i -= 2;		/* do not allocate PCM2IN and MIC2 */
> -	if (chip->spdif_idx < 0)
> +	/* ICH4 PCM2IN and MIC2 still need entries 4 and 5. */
> +	if (chip->spdif_idx < 0 && chip->device_type != DEVICE_INTEL_ICH4)
>  		i--;		/* do not allocate S/PDIF */

I'd rather move the spdif_idx check into the if block above, i.e.

  	if (chip->device_type != DEVICE_INTEL_ICH4) {
  		i -= 2;		/* do not allocate PCM2IN and MIC2 */
		if (chip->spdif_idx < 0)
	 		i--;	/* do not allocate S/PDIF */
	}

so that it's clearer.
If it's OK, could you resubmit with it?


thanks,

Takashi

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-04 14:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-04  8:22 [PATCH] ALSA: intel8x0: keep AC97 PCM descriptors for ICH4 capture raoxu
2026-11-04 14:39 ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®