[PATCH] ALSA: hda/cs420x: Add CS4208 fixup for iMac16,1

Jakub Pisarczyk posted 1 patch 1 week, 5 days ago
sound/hda/codecs/cirrus/cs420x.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] ALSA: hda/cs420x: Add CS4208 fixup for iMac16,1
Posted by Jakub Pisarczyk 1 week, 5 days ago
The 21.5" Retina 4K iMac (Late 2015, DMI product name "iMac16,1") ships
with a Cirrus Logic CS4208 codec wired to an external speaker amplifier
enabled through codec GPIO0 -- the same arrangement as the late-2013
MacBookPro 11,x. Without a matching entry in cs4208_mac_fixup_tbl[] the
fixup picker logs:

    snd_hda_codec_cs420x hdaudioC1D0: CS4208: picked fixup  for codec SSID 106b:0000

i.e. an empty fixup name, GPIO0 stays low, the external amp is never
powered up, and the internal speakers are silent on a stock kernel.

The codec SSID reported by hardware is 0x106b:0x7f00. Reusing CS4208_MBP11
(GPIO0 + SPDIF switch fixup) makes the internal speakers and S/PDIF
output work out of the box, removing the need for users to set
`options snd_hda_intel model=mbp11` via /etc/modprobe.d/.

Tested on iMac16,1 (kernel 6.17.0): four internal drivers
(Left tweeter, Left woofer, Right tweeter, Right woofer, exposed as the
4 channels of the analog-surround-40 ALSA profile) produce audio after
the fixup is applied.

Signed-off-by: Jakub Pisarczyk <pisarz77@gmail.com>
---
 sound/hda/codecs/cirrus/cs420x.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sound/hda/codecs/cirrus/cs420x.c b/sound/hda/codecs/cirrus/cs420x.c
--- a/sound/hda/codecs/cirrus/cs420x.c
+++ b/sound/hda/codecs/cirrus/cs420x.c
@@ -582,6 +582,7 @@ static const struct hda_quirk cs4208_mac_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x106b, 0x7200, "MacBookAir 6,2", CS4208_MBA6),
 	SND_PCI_QUIRK(0x106b, 0x7800, "MacPro 6,1", CS4208_MACMINI),
 	SND_PCI_QUIRK(0x106b, 0x7b00, "MacBookPro 12,1", CS4208_MBP11),
+	SND_PCI_QUIRK(0x106b, 0x7f00, "iMac 16,1", CS4208_MBP11),
 	{} /* terminator */
 };

--
2.43.0
Re: [PATCH] ALSA: hda/cs420x: Add CS4208 fixup for iMac16,1
Posted by Takashi Iwai 1 week, 5 days ago
On Tue, 26 May 2026 22:18:30 +0200,
Jakub Pisarczyk wrote:
> 
> The 21.5" Retina 4K iMac (Late 2015, DMI product name "iMac16,1") ships
> with a Cirrus Logic CS4208 codec wired to an external speaker amplifier
> enabled through codec GPIO0 -- the same arrangement as the late-2013
> MacBookPro 11,x. Without a matching entry in cs4208_mac_fixup_tbl[] the
> fixup picker logs:
> 
>     snd_hda_codec_cs420x hdaudioC1D0: CS4208: picked fixup  for codec SSID 106b:0000
> 
> i.e. an empty fixup name, GPIO0 stays low, the external amp is never
> powered up, and the internal speakers are silent on a stock kernel.
> 
> The codec SSID reported by hardware is 0x106b:0x7f00. Reusing CS4208_MBP11
> (GPIO0 + SPDIF switch fixup) makes the internal speakers and S/PDIF
> output work out of the box, removing the need for users to set
> `options snd_hda_intel model=mbp11` via /etc/modprobe.d/.
> 
> Tested on iMac16,1 (kernel 6.17.0): four internal drivers
> (Left tweeter, Left woofer, Right tweeter, Right woofer, exposed as the
> 4 channels of the analog-surround-40 ALSA profile) produce audio after
> the fixup is applied.
> 
> Signed-off-by: Jakub Pisarczyk <pisarz77@gmail.com>

Applied now.  Thanks.


Takashi