** OpenCore Configurator Users ** Please wait a couple of days for version 2.64.1.0 before editing OpenCore 0.8.7 config.plist. Current version supports "development" version of 0.8.7 but not the "release" version. If you use the current version anyway, it will be necessary to make one change...
can i have a copy of your efi to work with ? i have a different board...but im guessing id need to tweak very little and it would be a good starting point...i think
can i have a copy of your efi to work with ? i have a different board...but im guessing id need to tweak very little and it would be a good starting point...i think
I'll provide a copy to you in private message with the expectation that if you're adapting it to your board, the burden is on you to do the due diligence!
After a bit of experimentation in Linux, it was possible to capture the entire audio codec initialization sequence. This means every verb sent to every node is captured, but it excludes interaction with lower-level configuration registers that govern stream format, stream start and stop, interrupts, DMA buffers, CORB and RIRB interaction, etc. [CORB = Command Output Ring Buffer and RIRB = Response Input Ring Buffer]
The following simple commands (a) enable trace logging on high-definition audio (HDA) and (b) initiate a full re-initialization of the codec so that the entire sequence is captured.
Bash:
# switch to privileged mode (type password when requested)
sudo -s
# enable trace logging on HDA subsystem
echo 1 > /sys/kernel/debug/tracing/events/hda/enable
# reinitialize audio codec, which in this case is device hwC2D0, but will be different on other systems
echo 1 > /sys/class/sound/hwC2D0/reconfig
# now grab entire trace log -- just copy it to local file (change 'casey' to your user name)
cp /sys/kernel/debug/tracing/trace /home/casey/Documents/tracelog.txt
# disable trace log
echo 0 > /sys/kernel/debug/tracing/events/hda/enable
# change ownership and group from root to ourselves; replace 'casey' with your user name
cd /home/casey/Documents
chown casey:casey tracelog.txt
# return to normal user mode
exit
The resulting file is posted here. I'll study it over the next day or so to see if there's anything important to be learned. Here's a sample of what it looks like:
My thoughts are I just scored a used Aorus 6800 XT (the one with the LCD screen), and couldn't be happier! Not willing to be a guinea pig, nor drop $1400 CAD on a non-guarantee, however I am willing to snatch up a 2nd hand card on GPU launch day!
The Linux source code for ALSA (Advanced Linux Sound Architecture) reveals a handful of (a) PCI patches and a handful of (b) HDA Verb patches being applied to AMD platforms. In the previous post we collected all of the HDA Verbs. In this post we examine the PCI patches and implement two of them in AppleALC.
File hda_intel.c defines a set of PCI patches for the 3 most common HDA controllers on AMD platforms:
Device 0x1457
Device 0x1487
Device 0x15e3
The set is named AZX_DCAPS_PRESET_AMD_SB.
The same file reveals the contents of the set AZX_DCAPS_PRESET_AMD_SB, which includes:
AZX_DCAPS_NO_TCSEL
AZX_DCAPS_AMD_WORKAROUND
AZX_DCAPS_SNOOP_TYPE(ATI)
AZX_DCAPS_PM_RUNTIME
AZX_DCAPS_RETRY_PROBE
Two of the quirks are implemented in the bus initialization procedure azx_init_pci shown below:
AZX_DCAPS_NO_TCSEL
AZX_DCAPS_SNOOP_TYPE(ATI)
We can implement the same two quirks in AppleALC and enable the quirks with boot argument alctcsel=1 as follows:
Unfortunately, compiling the changes and running the new kext does not fix our microphone and line-in problem. But the problem does not exist in Linux, so the solution must also lie in Linux!
So what about the other 3 quirks?
AZX_DCAPS_AMD_WORKAROUND
This instructs the Linux sound driver to implement a FIFO position fix. The reference in hda_intel.c:
C:
static int azx_get_delay_from_fifo(struct azx *chip, struct azx_dev *azx_dev,
unsigned int pos)
{
struct snd_pcm_substream *substream = azx_dev->core.substream;
/* just read back the calculated value in the above */
return substream->runtime->delay;
}
This function is called through the get_delay function pointer in hda_controller.c:
C:
unsigned int azx_get_position(struct azx *chip,
struct azx_dev *azx_dev)
{
struct snd_pcm_substream *substream = azx_dev->core.substream;
unsigned int pos;
int stream = substream->stream;
int delay = 0;
if (chip->get_position[stream])
pos = chip->get_position[stream](chip, azx_dev);
else /* use the position buffer as default */
pos = azx_get_pos_posbuf(chip, azx_dev);
if (pos >= azx_dev->core.bufsize)
pos = 0;
if (substream->runtime) {
struct azx_pcm *apcm = snd_pcm_substream_chip(substream);
struct hda_pcm_stream *hinfo = to_hda_pcm_stream(substream);
if (chip->get_delay[stream])
delay += chip->get_delay[stream](chip, azx_dev, pos);
if (hinfo->ops.get_delay)
delay += hinfo->ops.get_delay(hinfo, apcm->codec,
substream);
substream->runtime->delay = delay;
}
trace_azx_get_position(chip, azx_dev, pos, delay);
return pos;
}
This quirk might be relevant.
AZX_DCAPS_PM_RUNTIME
Seems to indicate that the chip supports power management
If so, no need to worry about it because IOPCIFamily and AppleHDAController manages it
AZX_DCAPS_RETRY_PROBE
This is used during codec probe to query all the nodes and capabilities. Because AppleALC is able to query the codec properly, this quirk does not seem to be needed. It is used in the Linux function azx_probe_continue in the file hda_intel.c:
C:
probe_retry:
if (bus->codec_mask && !(probe_only[dev] & 1)) {
err = azx_codec_configure(chip);
if (err) {
if ((chip->driver_caps & AZX_DCAPS_RETRY_PROBE) &&
++hda->probe_retry < 60) {
schedule_delayed_work(&hda->probe_work,
msecs_to_jiffies(1000));
return 0; /* keep things up */
}
dev_err(chip->card->dev, "Cannot probe codecs, giving up\n");
goto out_free;
}
}
In the earlier post entitled Detailed HDA Verb Capture in Linux we looked at the full verb sequence for initializing the HDA codec in Linux. Linux manages to initialize the codec in a mere 200 or so verbs. In this post we examine the equivalent log from AppleALC running in Monterey 12.6.2 on Gigabyte B550 Vision D with Realtek ALC-1220.
AppleALC / AppleHDA issue a far greater number of verbs. I've commented a few of the lines such as this:
Having the full verbs from both Linux and macOS enables us to perform a head-to-head comparison.
To add insult to injured x16 PCI slot, I was not able to purchase a 7900 XTX in time and now they are all sold out. (never mind that these cards are so thick, they may bot fit into the x8 slot on my X670E Creator.
It looks as if Apple and/or AMD have refactored (redesigned) the NAVI drivers. Now why would they do that if they intend to stop support for all further AMD GPUs?
Can you please post Info.plist from the AMDRadeonX6000 kext?
And why are there so many individual drivers?
AMDRadeonX6000HWLibs
AMDRadeonX6100HWLibs
AMDRadeonX6200HWLibs
AMDRadeonX6300HWLibs
AMDRadeonX6700HWLibs
AMDRadeonX6800HWLibs
AMDRadeonX6810HWLibs
What, oh what, could it mean? Looks like AMDRadeonX6000Shared.bundle and AMDRadeonX6000GLDriver.bundle have been refactored.
AMDRadeonX6000HWLibs
6500 series?
AMDRadeonX6100HWLibs
6600 series?
AMDRadeonX6200HWLibs
What's this?
AMDRadeonX6300HWLibs
What's this?
AMDRadeonX6700HWLibs
6700 series? Support does not exist today
AMDRadeonX6800HWLibs
6800 series?
AMDRadeonX6810HWLibs
6900 / 6950 series?
Could any of them be for 7900 series?
There are plenty of AMD reference 7900 XTs available right now on AMD's US website.
Yes it exists inside of IO80211PCIFamilyLegacy, but I'm wondering why it was moved out of there and placed directly into /System/Library/Extensions as its own parent-level driver...
I thought we were looking at /System/Library/Extensions, but instead the screenshot is from System Information --> Extensions. So actually there's nothing new.
I thought we were looking at /System/Library/Extensions, but instead the screenshot is from System Information --> Extensions. So actually there's nothing new.
Uplaod files easily and share them with your friends and colleagues. File upload solution for everyone. Upload big files and get a link to share effortlesly.
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.
Sure, ad-blocking software does a great job at blocking ads, but it also blocks some useful and important features of our website. For the best possible site experience please take a moment to disable your AdBlocker.