44 OUT UINT8 *CodecAddress
50 if ((This == NULL) || (CodecAddress == NULL)) {
51 return EFI_INVALID_PARAMETER;
83 HdaCodecVerbList.
Count = 1;
84 HdaCodecVerbList.
Verbs = &Verb;
113 if ((This == NULL) || (Verbs == NULL)) {
114 return EFI_INVALID_PARAMETER;
137 EFI_PCI_IO_PROTOCOL *PciIo;
141 UINT16 HdaStreamFormat;
147 return EFI_INVALID_PARAMETER;
153 PciIo = HdaControllerDev->
PciIo;
164 Status = EFI_INVALID_PARAMETER;
170 if (HdaStreamId > 0) {
171 Status = EFI_ALREADY_STARTED;
176 OldTpl =
gBS->RaiseTPL (TPL_HIGH_LEVEL);
188 if (HdaStreamId == 0) {
189 Status = EFI_OUT_OF_RESOURCES;
194 Status = PciIo->Mem.Read (
202 if (EFI_ERROR (Status)) {
207 if (Format != HdaStreamFormat) {
209 DEBUG ((DEBUG_VERBOSE,
"HdaControllerHdaIoSetupStream(): format changed, resetting stream\n"));
212 Status = EFI_INVALID_PARAMETER;
219 Status = EFI_INVALID_PARAMETER;
223 *StreamId = HdaStreamId;
227 Status = PciIo->Mem.Write (
235 if (EFI_ERROR (Status)) {
240 Status = EFI_SUCCESS;
245 gBS->RestoreTPL (OldTpl);
272 return EFI_INVALID_PARAMETER;
288 Status = EFI_INVALID_PARAMETER;
293 if (HdaStreamId == 0) {
294 Status = EFI_SUCCESS;
303 if (EFI_ERROR (Status)) {
309 Status = EFI_INVALID_PARAMETER;
317 Status = EFI_SUCCESS;
322 gBS->RestoreTPL (OldTpl);
344 return EFI_INVALID_PARAMETER;
359 return EFI_INVALID_PARAMETER;
371 IN UINTN BufferLength,
372 IN UINTN BufferPosition OPTIONAL,
374 IN VOID *Context1 OPTIONAL,
375 IN VOID *Context2 OPTIONAL,
376 IN VOID *Context3 OPTIONAL
379 DEBUG ((DEBUG_VERBOSE,
"HdaControllerHdaIoStartStream(): start\n"));
385 EFI_PCI_IO_PROTOCOL *PciIo;
391 UINT32 HdaStreamDmaPos;
392 UINT32 HdaStreamDmaRemainingLength;
393 UINT32 HdaStreamCurrentBlock;
394 UINT32 HdaStreamNextBlock;
398 (
Buffer == NULL) || (BufferLength == 0) || (BufferPosition >= BufferLength))
400 return EFI_INVALID_PARAMETER;
406 PciIo = HdaControllerDev->
PciIo;
417 return EFI_INVALID_PARAMETER;
421 if (HdaStreamId == 0) {
422 return EFI_NOT_READY;
428 if (EFI_ERROR (Status)) {
438 if (EFI_ERROR (Status)) {
439 return EFI_INVALID_PARAMETER;
446 HdaStreamNextBlock = HdaStreamCurrentBlock + 1;
450 "HDA: Stream %u DMA pos 0x%X\n",
478 "%u (0x%X) bytes written to 0x%X (block %u of %u)\n",
479 HdaStreamDmaRemainingLength,
480 HdaStreamDmaRemainingLength,
482 HdaStreamCurrentBlock,
497 "%u (0x%X) bytes written to 0x%X (block %u of %u)\n",
498 HdaStreamDmaRemainingLength,
499 HdaStreamDmaRemainingLength,
509 if (EFI_ERROR (Status)) {
515 Status = EFI_INVALID_PARAMETER;
546 return EFI_INVALID_PARAMETER;
561 return EFI_INVALID_PARAMETER;
565 if (HdaStreamId == 0) {
566 return EFI_NOT_READY;
570 Status =
gBS->SetTimer (HdaStream->
PollTimer, TimerCancel, 0);
571 if (EFI_ERROR (Status)) {
577 return EFI_INVALID_PARAMETER;
#define TPL_DXE_CORE_TIMER
EFI_STATUS EFIAPI HdaControllerSendCommands(IN HDA_CONTROLLER_DEV *HdaDev, IN UINT8 CodecAddress, IN UINT8 Node, IN EFI_HDA_IO_VERB_LIST *Verbs)
#define HDA_STREAM_BUF_SIZE
#define HDA_STREAM_ID_MIN
BOOLEAN HdaControllerResetStream(IN HDA_STREAM *HdaStream)
BOOLEAN HdaControllerSetStreamId(IN HDA_STREAM *HdaStream, IN UINT8 Index)
#define HDA_BDL_BLOCKSIZE
#define HDA_BDL_ENTRY_COUNT
#define HDA_IO_PRIVATE_DATA_FROM_THIS(This)
BOOLEAN HdaControllerSetStreamState(IN HDA_STREAM *HdaStream, IN BOOLEAN Run)
#define HDA_STREAM_POLL_TIME
BOOLEAN HdaControllerGetStreamState(IN HDA_STREAM *HdaStream, OUT BOOLEAN *Run)
BOOLEAN HdaControllerGetStreamId(IN HDA_STREAM *HdaStream, OUT UINT8 *Index)
#define HDA_STREAM_ID_MAX
EFI_STATUS EFIAPI HdaControllerHdaIoSendCommand(IN EFI_HDA_IO_PROTOCOL *This, IN UINT8 Node, IN UINT32 Verb, OUT UINT32 *Response)
EFI_STATUS EFIAPI HdaControllerHdaIoStopStream(IN EFI_HDA_IO_PROTOCOL *This, IN EFI_HDA_IO_PROTOCOL_TYPE Type)
EFI_GUID gEfiHdaIoDevicePathGuid
EFI_STATUS EFIAPI HdaControllerHdaIoGetAddress(IN EFI_HDA_IO_PROTOCOL *This, OUT UINT8 *CodecAddress)
EFI_STATUS EFIAPI HdaControllerHdaIoGetStream(IN EFI_HDA_IO_PROTOCOL *This, IN EFI_HDA_IO_PROTOCOL_TYPE Type, OUT BOOLEAN *State)
EFI_STATUS EFIAPI HdaControllerHdaIoCloseStream(IN EFI_HDA_IO_PROTOCOL *This, IN EFI_HDA_IO_PROTOCOL_TYPE Type)
EFI_STATUS EFIAPI HdaControllerHdaIoSetupStream(IN EFI_HDA_IO_PROTOCOL *This, IN EFI_HDA_IO_PROTOCOL_TYPE Type, IN UINT16 Format, OUT UINT8 *StreamId)
EFI_STATUS EFIAPI HdaControllerHdaIoStartStream(IN EFI_HDA_IO_PROTOCOL *This, IN EFI_HDA_IO_PROTOCOL_TYPE Type, IN VOID *Buffer, IN UINTN BufferLength, IN UINTN BufferPosition OPTIONAL, IN EFI_HDA_IO_STREAM_CALLBACK Callback OPTIONAL, IN VOID *Context1 OPTIONAL, IN VOID *Context2 OPTIONAL, IN VOID *Context3 OPTIONAL)
EFI_STATUS EFIAPI HdaControllerHdaIoSendCommands(IN EFI_HDA_IO_PROTOCOL *This, IN UINT8 Node, IN EFI_HDA_IO_VERB_LIST *Verbs)
VOID(EFIAPI * EFI_HDA_IO_STREAM_CALLBACK)(IN EFI_HDA_IO_PROTOCOL_TYPE Type, IN VOID *Context1, IN VOID *Context2, IN VOID *Context3)
#define EFI_HDA_IO_DEVICE_PATH_GUID
#define HDA_REG_SDNSTS_BCIS
#define HDA_REG_SDNSTS(n)
#define HDA_REG_SDNLPIB(n)
#define HDA_REG_SDNFMT(n)
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
HDA_DMA_POS_ENTRY * DmaPositions
EFI_PCI_IO_PROTOCOL * PciIo
HDA_STREAM * HdaInputStream
HDA_CONTROLLER_DEV * HdaControllerDev
HDA_STREAM * HdaOutputStream
EFI_HDA_IO_STREAM_CALLBACK Callback
UINT32 BufferSourcePosition
UINT32 BufferSourceLength
HDA_CONTROLLER_DEV * HdaDev