On Sat, Sep 11, 2021 at 06:07:10PM +0200, Mark Kettenis wrote:
> > Date: Sat, 11 Sep 2021 08:53:00 -0600
> > From: Tracey Emery <tra...@traceyemery.net>
> > 
> > On Sat, Sep 11, 2021 at 02:14:56PM +0200, Mark Kettenis wrote:
> > > > Date: Fri, 10 Sep 2021 18:27:07 -0600
> > > > From: Tracey Emery <tra...@traceyemery.net>
> > > > 
> > > > Hello,
> > > > 
> > > > After reading some Linux commits, it shows the GPIO2 on the CS4206 chips
> > > > needs to be unmuted to make the headphone jack work. The following diff
> > > > fixed the headphone jack problem on my iMac12,2, amd64.
> > > > 
> > > > ok?
> > > 
> > > I don't think this is right.  The Linux code either frobs GPIOs 1 & 2
> > > or GPIOs 1 & 3.
> > > 
> > 
> > The code is a quirk in alsa.
> > 
> > iMac 14,1 requires the same quirk as iMac 12,2, using GPIO 2 and 3 for
> > headphone and speaker output amps.  Add the codec SSID quirk entry
> > (106b:0600) accordingly.
> > 
> > SND_PCI_QUIRK(0x106b, 0x0600, "iMac 14,1", CS420X_IMAC27_122),
> > SND_PCI_QUIRK(0x106b, 0x1c00, "MacBookPro 8,1", CS420X_MBP81),
> > SND_PCI_QUIRK(0x106b, 0x2000, "iMac 12,2", CS420X_IMAC27_122),
> > SND_PCI_QUIRK(0x106b, 0x2800, "MacBookPro 10,1", CS420X_MBP101),
> > 
> > An option has to be set in their modprobe.d directory to enable the
> > heaphone jack:
> > 
> > options snd-hda-intel model=imac27
> > 
> > Without the patch below, there is signal on the headphone jack, but its
> > volume is all the way down and not controlable. With GPIO2 unmuted,
> > there is plenty of volume. Perhaps, another approach needs to be taken?
> > Does this break other Macs with that Cirrus audio chip?
> > 
> > > I also don't quite see how this would match the iMac12,2.  Can you
> > > show the pcidump -vxx output for this machine?
> > 
> > I'm sorry, it's 12,1. That is a typo. The pcidump is attached, although
> > rather large.
> 
> So your model is supposed to be handled by:
> 
>         /* this conflicts with too many other models */
>         /*SND_PCI_QUIRK(0x8086, 0x7270, "IMac 27 Inch", CS420X_IMAC27),*/
> 
> That one is commented out and the comment above it suggests it might
> indeed break other machines.  The comment in our code suggests that
> the same subid is used for the MacbookAir4,1.
> 

Well, if it's going to break other Macs, then I'll just keep the patch
local, so the machine is useful for me with OpenBSD.

> Looking at the Linux code it actually actually applies two quirks.
> There is an imac27_pincfgs fixup and then it chains to the
> CS420X_GPIO13 fixup.  The latter only touches gpio 1 and 3, so I am
> puzzled by your statement that gpio 2 fixes things.

Sorry, I don't know what else to say. With AZ_QRK_GPIO_UNMUTE_2 it
works. If that doesn't mean it unmutes GPIO2, then I must be saying
something incorrectly.

The datasheet for the chip shows three analog outputs:

AOUTA1,AOUTB1
AOUTA2,AOUTB2
AOUTA3,AOUTB3

I figured AZ_QRK_GPIO_UNMUTE_2 enabled AOUTA2/B2 and thought Apple tied
the headphone jack to that output.

I'll drop the diff.

Thanks.

> 
> > > > diff 51d7e35078715d4d1d1e1bf2fb89362bad8797d8 /usr/src
> > > > blob - e3b969d585a96910eca98d31bedc8ba08455f763
> > > > file + sys/dev/pci/azalia_codec.c
> > > > --- sys/dev/pci/azalia_codec.c
> > > > +++ sys/dev/pci/azalia_codec.c
> > > > @@ -71,7 +71,7 @@ azalia_codec_init_vtbl(codec_t *this)
> > > >                     this->subid == 0x72708086 ||        /* APPLE_MBA4_1 
> > > > */
> > > >                     this->subid == 0xcb7910de) {        /* APPLE_MBP5_5 
> > > > */
> > > >                         this->qrks |= AZ_QRK_GPIO_UNMUTE_1 |
> > > > -                           AZ_QRK_GPIO_UNMUTE_3;
> > > > +                           AZ_QRK_GPIO_UNMUTE_2 | AZ_QRK_GPIO_UNMUTE_3;
> > > >                 }
> > > >                 break;
> > > >         case 0x10134208:
> > > > 
> > > > 
> > 
> > -- 
> > 
> > Tracey Emery
> > 
> > [2:text/plain Show Save:pcidump.txt (333kB)]
> > 

-- 

Tracey Emery

Reply via email to