17#include <Library/DebugLib.h>
18#include <Library/DevicePathLib.h>
19#include <Library/MemoryAllocationLib.h>
23#include <Library/UefiBootServicesTableLib.h>
24#include <Library/UefiRuntimeServicesTableLib.h>
49 .ProviderAcquire = NULL,
50 .ProviderRelease = NULL,
51 .ProviderContext = NULL,
52 .CurrentBuffer = NULL,
53 .PlaybackEvent = NULL,
82 IN BOOLEAN DisconnectHda
90 DEBUG ((DEBUG_INFO,
"OCAU: OcAudioInstallProtocols (%u, %u)\n", Reinstall, DisconnectHda));
99 if (EFI_ERROR (Status)) {
100 DEBUG ((DEBUG_ERROR,
"OCAU: Uninstall %g failed - %r\n",
mAudioProtocols[Index], Status));
107 Status =
gBS->LocateProtocol (
112 DEBUG ((DEBUG_INFO,
"OCAU: %g protocol - %r\n",
mAudioProtocols[Index], Status));
117 Status =
gBS->LocateProtocol (
122 if (!EFI_ERROR (Status)) {
132 Status =
gBS->CreateEvent (
139 if (EFI_ERROR (Status)) {
140 DEBUG ((DEBUG_INFO,
"OCAU: Unable to create audio completion event - %r\n", Status));
145 Status =
gBS->InstallMultipleProtocolInterfaces (
156 if (EFI_ERROR (Status)) {
168 OUT INT8 *DecibelGain,
170 OUT BOOLEAN *TryConversion
180 Size =
sizeof (*RawGain);
181 Status1 =
gRT->GetVariable (
188 if (!EFI_ERROR (Status1)) {
198 "OCAU: System raw gain 0x%X, audio mute (for chime) %u - %r\n",
208 Size =
sizeof (*DecibelGain);
209 Status2 =
gRT->GetVariable (
216 if (EFI_ERROR (Status2)) {
222 "OCAU: System decibel gain %d dB%a - %r\n",
224 *Muted ?
" (probably invalid due to mute)" :
"",
234 Status2 = EFI_INVALID_PARAMETER;
240 *TryConversion = !EFI_ERROR (Status1) && EFI_ERROR (Status2);
EFI_GUID gAppleBeepGenProtocolGuid
EFI_GUID gAppleHighDefinitionAudioProtocolGuid
#define ARRAY_SIZE(Array)
EFI_GUID gAppleBootVariableGuid
#define APPLE_SYSTEM_AUDIO_VOLUME_VARIABLE_NAME
#define APPLE_SYSTEM_AUDIO_VOLUME_DB_VARIABLE_NAME
#define APPLE_SYSTEM_AUDIO_VOLUME_VOLUME_MASK
#define APPLE_SYSTEM_AUDIO_VOLUME_DB_MIN
#define APPLE_SYSTEM_AUDIO_VOLUME_MUTED
@ AppleVoiceOverLanguageEn
en
EFI_GUID gAppleVOAudioProtocolGuid
DMG_SIZE_DEVICE_PATH Size
EFI_STATUS EFIAPI InternalOcAudioStopPlayback(IN OUT OC_AUDIO_PROTOCOL *This, IN BOOLEAN Wait)
EFI_STATUS EFIAPI InternalOcAudioPlayFile(IN OUT OC_AUDIO_PROTOCOL *This, IN CONST CHAR8 *BasePath, IN CONST CHAR8 *BaseType, IN BOOLEAN Localised, IN INT8 Gain OPTIONAL, IN BOOLEAN UseGain, IN BOOLEAN Wait)
EFI_STATUS EFIAPI InternalOcAudioConnect(IN OUT OC_AUDIO_PROTOCOL *This, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL, IN UINT8 CodecAddress OPTIONAL, IN UINT64 OutputIndexMask)
EFI_STATUS EFIAPI InternalOcAudioRawGainToDecibels(IN OUT OC_AUDIO_PROTOCOL *This, IN UINT8 GainParam, OUT INT8 *Gain)
EFI_STATUS EFIAPI InternalOcAudioSetProvider(IN OUT OC_AUDIO_PROTOCOL *This, IN OC_AUDIO_PROVIDER_ACQUIRE Acquire, IN OC_AUDIO_PROVIDER_RELEASE Release OPTIONAL, IN VOID *Context)
UINTN EFIAPI InternalOcAudioSetDelay(IN OUT OC_AUDIO_PROTOCOL *This, IN UINTN Delay)
EFI_STATUS EFIAPI InternalOcAudioSetDefaultGain(IN OUT OC_AUDIO_PROTOCOL *This, IN INT8 Gain)
EFI_GUID gOcAudioProtocolGuid
#define OC_AUDIO_PROTOCOL_REVISION
EFI_STATUS EFIAPI InternalOcAudioGenBeep(IN UINT32 ToneCount, IN UINTN ToneLength, IN UINTN SilenceLength)
EFI_STATUS EFIAPI InternalOcAudioVoiceOverPlay(IN APPLE_VOICE_OVER_AUDIO_PROTOCOL *This, IN UINT8 File)
EFI_STATUS EFIAPI InternalOcAudioVoiceOverGetLanguage(IN APPLE_VOICE_OVER_AUDIO_PROTOCOL *This, OUT UINT8 *LanguageCode, OUT CONST CHAR8 **LanguageString)
EFI_STATUS EFIAPI InternalOcAudioVoiceOverSetLanguageCode(IN APPLE_VOICE_OVER_AUDIO_PROTOCOL *This, IN UINT8 LanguageCode)
EFI_STATUS EFIAPI InternalOcAudioVoiceOverSetLanguageString(IN APPLE_VOICE_OVER_AUDIO_PROTOCOL *This, IN CONST CHAR8 *LanguageString)
#define OC_AUDIO_PROTOCOL_PRIVATE_SIGNATURE
STATIC EFI_GUID * mAudioProtocols[]
STATIC OC_AUDIO_PROTOCOL_PRIVATE mAudioProtocol
VOID OcGetAmplifierGain(OUT UINT8 *RawGain, OUT INT8 *DecibelGain, OUT BOOLEAN *Muted, OUT BOOLEAN *TryConversion)
OC_AUDIO_PROTOCOL * OcAudioInstallProtocols(IN BOOLEAN Reinstall, IN BOOLEAN DisconnectHda)
#define OC_AUDIO_DEFAULT_GAIN
VOID OcDisconnectHdaControllers(VOID)
EFI_STATUS OcUninstallAllProtocolInstances(EFI_GUID *Protocol)
EFI_RUNTIME_SERVICES * gRT
APPLE_BEEP_GEN_PROTOCOL BeepGen
APPLE_VOICE_OVER_AUDIO_PROTOCOL VoiceOver
OC_AUDIO_PROTOCOL OcAudio