MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / SaveHdaDumpBin

Function SaveHdaDumpBin

rEFIt_UEFI/Platform/HdaCodecDump.cpp:345–484  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

343}
344
345EFI_STATUS SaveHdaDumpBin()
346{
347 EFI_STATUS Status = EFI_NOT_FOUND;
348 AUDIO_IO_PRIVATE_DATA *AudioIoPrivateData;
349 HDA_CODEC_DEV *HdaCodecDev;
350// EFI_HDA_CODEC_INFO_PROTOCOL *HdaCodecInfo;
351 HDA_FUNC_GROUP *AudioFuncGroup;
352 EFI_HDA_IO_PROTOCOL *HdaIo;
353 XStringW MiscPath = SWPrintf("%ls\\misc", OEMPath.wc_str());
354
355 for (UINTN i = 0; i < AudioList.size(); i++) {
356 HDA_WIDGET_DEV *Widgets;
357 UINTN WidgetCount;
358 UINT32 HdaCodecDataSize;
359 HdaCodec HdaCodec;
360 UINT8 CodecAddress;
361 UINT8 *HdaCodecData;
362 UINT8 *HdaCodecDataPtr;
363 XStringW PathHdaDump;
364
365 Status = gBS->HandleProtocol(AudioList[i].Handle, &gEfiAudioIoProtocolGuid, (VOID**)&AudioIo);
366
367 if (EFI_ERROR(Status))
368 continue;
369
370 AudioIoPrivateData = AUDIO_IO_PRIVATE_DATA_FROM_THIS(AudioIo);
371
372 if (!AudioIoPrivateData || !AudioIoPrivateData->HdaCodecDev || !AudioIoPrivateData->HdaCodecDev->HdaIo)
373 continue;
374
375 HdaCodecDev = AudioIoPrivateData->HdaCodecDev;
376 if(!HdaCodecDev || !HdaCodecDev->AudioFuncGroup)
377 continue;
378
379// HdaCodecInfo = &HdaCodecDev->HdaCodecInfoData->HdaCodecInfo;
380 AudioFuncGroup = HdaCodecDev->AudioFuncGroup;
381 HdaIo = HdaCodecDev->HdaIo;
382
383 Widgets = AudioFuncGroup->Widgets;
384 WidgetCount = AudioFuncGroup->WidgetsCount;
385 HdaCodecDataSize = (UINT32)(sizeof(HdaCodec) + (WidgetCount * sizeof(HdaWidget)));
386
387 // Copy codec data
388 ZeroMem(&HdaCodec, sizeof(HdaCodec));
389
390 if(!EFI_ERROR(Status)) {
391 for (UINT32 j = 0; j < HDA_MAX_NAMELEN; j++) {
392 HdaCodec.Name[j] = (CHAR8)(HdaCodecDev->Name[j] & 0xFF);
393 if (HdaCodecDev->Name[j] == 0x0000)
394 break;
395 }
396 }
397
398 Status = HdaIo->GetAddress(HdaIo, &CodecAddress);
399
400 CopyMem(HdaCodec.Header, hdcID, 4);
401
402 HdaCodec.CodecAddress = CodecAddress;

Callers 1

RunGenericMenuMethod · 0.85

Calls 8

SWPrintfFunction · 0.85
egSaveFileFunction · 0.85
ZeroMemFunction · 0.50
CopyMemFunction · 0.50
AllocateZeroPoolFunction · 0.50
FreePoolFunction · 0.50
wc_strMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected