From: Takashi Iwai <tiwai@suse.de>
To: Olliver Schinagl <oliver@schinagl.nl>
Cc: alsa-devel@alsa-project.org
Subject: Re: snd_hda_codec_cirrus kernel oops
Date: Sat, 20 May 2023 10:02:47 +0200 [thread overview]
Message-ID: <87lehjzazc.wl-tiwai@suse.de> (raw)
In-Reply-To: <f421a23b-498f-9075-068b-3f0b2077427d@schinagl.nl>
On Fri, 19 May 2023 18:53:16 +0200,
Olliver Schinagl wrote:
>
> Hey Takashi,
>
> On 19-05-2023 09:12, Takashi Iwai wrote:
> > On Thu, 18 May 2023 17:11:53 +0200,
> > Olliver Schinagl wrote:
> >>
> >> Hey Takashi,
> >>
> >> On 18-05-2023 16:27, Takashi Iwai wrote:
> >>> On Thu, 18 May 2023 16:24:02 +0200,
> >>> Olliver Schinagl wrote:
> >>>>
> >>>> Hey Takashi,
> >>>>
> >>>> I've applied the patch you've listed below. Is there some 'fool-proof'
> >>>> way to produce _any_ output however? I've stopped pulse/pipe audio,
> >>>> and only use aplay + alsamixer. Back to basics as they say. For aplay,
> >>>> I use -D sysdefault:CARD=PCH (which was listed as a cirrus card with
> >>>> -L).
> >>>>
> >>>> Alsamixer was used to ensure all volumes are open.
> >>>>
> >>>> Without anything running, I was able to use hdajackretask to apply
> >>>> settings. But then, what to put. I get that I have to figure out, what
> >>>> is routed where (i'll try to find the schematic for the macbook pro
> >>>> 12,1), but hence my question, is there some way to produce something?
> >>>> In hdajackretask I've enabled all pins, overriden them all, and set
> >>>> them all to the same configuration. 'Internal, internal, speaker,
> >>>> other-analog, green, not-present, 1, front'. I figured, by setting up
> >>>> verything to the internal speaker, I must get sound out of something,
> >>>> but alas.
> >>>>
> >>>> I also have a Macbook pro from 1 or 2 generations earlier, 11,2 afaik,
> >>>> where the sound still does work. I've used the same config
> >>>> hdajackretask showed was in use there, but (obviously?) that didn't
> >>>> work.
> >>>>
> >>>> So I'm a bit grasping at straws. Trying _every_ combination is a bit much?
> >>>
> >>> It's the hard part. I'd try to copy the pin config of the existing
> >>> models at first, then try shooting one pin by one if it doesn't work.
> >>
> >> Ok, so no easy way :) I did try copying things, but didn't get sound either.
> >>
> >> I did find the schematics for the 2013 and 2014 models of the macbook;
> >> no luck yet on the 2015 (mine). But all 3 have the same model number
> >> (A1502), and looking at the schematic (not even sure if it is just a
> >> new revision, or actually for the different boards) they seem more or
> >> less identical. Especially on the audio part. The nice thing is it
> >> tells me what pins things are connected to :) But again, might not be
> >> a perfect match to my board (crosses fingers).
> >>
> >> What is interesting, the schematics [0] actually list the HDA configuration.
> >>
> >> CODEC OUTPUT SIGNAL PATHS
> >>
> >> FUNCTION VOLUME CONVERTER PIN COMPLEX MUTE CONTROL
> >>
> >> HP/HS OUT 0x02 (2) 0x02 (2) 0x10 (16) N/A
> >> TWEETERS 0x03 (3) 0x03 (3) 0x12 (18) CODEC GPIO0
> >> SUB 0x04 (4) 0x04 (4) 0x13 (19) CODEC GPIO0
> >> SPDIF OUT N/A 0x0e (14) 0x21 (33) N/A
> >>
> >> DMIC 1 0x09 (9) 0x1c (18)
> >> DMIC 2 0x09 (9) 0x1c (18)
> >>
> >> HEADSET MIC 0x07 (7) 0x18 (24)
> >>
> >> OTHER CODEC GPIO LINES
> >> LEFT SPEAKER ID GPIO2 INPUT HIGH = FG, LOW = MERRY
> >> RIGHT SPEAKER ID GPIO3 INPUT HIGH = FG, LOW = MERRY
> >> DFET CONTROL GPIO4 OUTPUT HIGH = DFETs OPEN
> >>
> >> Granted, that should yield the same infomration I can copy from the
> >> other one, but I'm trying to understand what this would mean. Function
> >> is obvious, aswell as the pin-complex, it's what hdajackretasks calls
> >> pin ID. But the rest is a bit iffy. E.g. what would the volume column
> >> indicate? What about the 'converter'? And the GPIO's? Are the's GPIO's
> >> of the codec? Maybe my confusion mostly comes as I'm not sure how to
> >> relate those fields to hdajackretask.
> >
> > It's a good information.
> > It corresponds to spec->gpio_eapd_speaker, and GPIO2 would be the bit
> > 0x04, GPIO3 would be 0x08, so it should be set to 0x0c. The headphone
> > has no GPIO assignment, so spec->gpio_eapd_headphone=0.
> >
> > But subwoofers seem to have the GPIO controls as well, and the gpio
> > bit 0x01 should be set. For that, we'll need to modify cs_automute()
> > function. But let's investigate this later.
> >
> > FWIW, the GPIO bits can be flipped on the fly, too. Use hda-verb for
> > setting SET_GPIO_MASK, SET_GPIO_DIRECTION and SET_GPIO_DATA.
>
> Thanks for that explanation! Great news. I don't know how; but I
> managed to 'fix' the bios. Strange yeah. I wanted to create an uefi
> boot image as that's something arch's mkinitcpio appearantly
> supports. So I used efiboomgr to add an additional entry.
>
> After a reboot, I regained the apple logo at boot (which was gone for
> ages), but also the boot chime returned. And for sure, in Linux also
> sound is working again normally. I have no idea how or why this works,
> but it does.
>
> For reference, this is what 6.3.x now shows:
>
> [ 15.642288] snd_hda_codec_cirrus hdaudioC1D0: autoconfig for
> CS4208: line_outs=2 (0x12/0x13/0x0/0x0/0x0) type:speaker
> [ 15.642296] snd_hda_codec_cirrus hdaudioC1D0: speaker_outs=0
> (0x0/0x0/0x0/0x0/0x0)
> [ 15.642299] snd_hda_codec_cirrus hdaudioC1D0: hp_outs=1
> (0x10/0x0/0x0/0x0/0x0)
> [ 15.642301] snd_hda_codec_cirrus hdaudioC1D0: mono: mono_out=0x0
> [ 15.642303] snd_hda_codec_cirrus hdaudioC1D0: dig-out=0x21/0x0
> [ 15.642305] snd_hda_codec_cirrus hdaudioC1D0: inputs:
> [ 15.642307] snd_hda_codec_cirrus hdaudioC1D0: Internal Mic=0x1c
> [ 15.642309] snd_hda_codec_cirrus hdaudioC1D0: Mic=0x18
> [ 15.735257] snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops
> i915_audio_component_bind_ops [i915])
>
> And hdajackretask (without unconnected pins):
> Pin ID: 0x10 [Green Headphone]
> Jack; External; Headphone; Combination;
> Green; Present; 2; Front;
>
> Pin ID: 0x12 [Internal Speaker]
> <blank>; Internal; Speaker; Unknown;
> Unknown; Not present; 1; Back;
>
> Pin ID: 0x13 [Internal Speaker]
> <blank>; Internal; Speaker; Unknown;
> Unknown; Not present; 1; Back;
>
> Pin ID: 0x18 [Pink Mic]
> Jack; External; Microphone; Combination;
> Pink; Present; 4; Front;
>
> Pin ID: 0x1c [Internal Mic]
> <blank>; Internal; Microphone; Other Digital;
> Unknown; Not present; <blank>; Front
>
> Pin ID: 0x21 [White SPDIF Out]
> Jack; External; SPIDF Out; Combination;
> White; Present; 3; Front;
>
> The blank connectivity options are a bit off, as is the blank channel
> group on the internal mic.
>
> So curious on those ...
>
> Anyway, leaving this here for any future in case it is needed again.
Good to hear that you managed to recover BIOS.
Could you give alsa-info.sh output from the working state? Run the
script with --no-upload option and attach the output. This will help
in future if it gets broken again :)
thanks,
Takashi
next prev parent reply other threads:[~2023-05-20 8:04 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-11 15:12 snd_hda_codec_cirrus kernel oops Olliver Schinagl
2023-05-12 9:01 ` Takashi Iwai
2023-05-16 16:49 ` Olliver Schinagl
2023-05-16 18:31 ` Takashi Iwai
2023-05-18 14:24 ` Olliver Schinagl
2023-05-18 14:27 ` Takashi Iwai
2023-05-18 15:11 ` Olliver Schinagl
2023-05-19 7:12 ` Takashi Iwai
2023-05-19 16:53 ` Olliver Schinagl
2023-05-20 8:02 ` Takashi Iwai [this message]
2023-05-20 8:08 ` Olliver Schinagl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87lehjzazc.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@alsa-project.org \
--cc=oliver@schinagl.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox