6 0xA69F886E, 0x6CEB, 0x4594, 0xA4, 0x1F, 0x7B, 0x5D, 0xCE, 0x24, 0xC5, 0x53);
13 _Out_ WDFMEMORY* outputBufferMemoryArg
17 WDFMEMORY inputBufferMemory =
NULL;
21 WDFMEMORY outputBufferMemory =
NULL;
25 ULONG inputBufferSize =
39 (
PVOID*)&inputBuffer);
41 SklHdAudBusPrint(DEBUG_LEVEL_ERROR, DBG_INIT,
"Failed to create input buffer\n");
53 SklHdAudBusPrint(DEBUG_LEVEL_ERROR, DBG_INIT,
"Failed to write method name\n");
57 inputBuffer->
Size = inputBufferSize;
59 inputArgument = inputBuffer->Argument;
64 sizeof(GUID_SST_NHLT));
75 inputArgument->DataLength = 0;
83 sizeof(outputHeader));
85 status = WdfIoTargetSendIoctlSynchronously(WdfDeviceGetIoTarget(
FxDevice),
88 &inputBufferMemoryDescriptor,
89 &outputBufferMemoryDescriptor,
108 SklHdAudBusPrint(DEBUG_LEVEL_ERROR, DBG_INIT,
"Failed to create output buffer\n");
115 status = WdfIoTargetSendIoctlSynchronously(WdfDeviceGetIoTarget(
FxDevice),
118 &inputBufferMemoryDescriptor,
119 &outputBufferMemoryDescriptor,
129 if (inputBufferMemory !=
NULL) {
130 WdfObjectDelete(inputBufferMemory);
131 inputBufferMemory =
NULL;
135 if (outputBufferMemory !=
NULL) {
136 WdfObjectDelete(outputBufferMemory);
137 outputBufferMemory =
NULL;
141 *outputBufferMemoryArg = outputBufferMemory;
147 WDFMEMORY outputBufferMemory;
152 if (!outputBufferMemory) {
157 if (outputBuffer->Count < 1) {
165 UCHAR supportedQueries = argument->Data[0];
167 if ((supportedQueries & 0x3) == 0) {
173 if (outputBufferMemory !=
NULL) {
174 WdfObjectDelete(outputBufferMemory);
175 outputBufferMemory =
NULL;
183 WDFMEMORY outputBufferMemory;
188 if (!outputBufferMemory) {
193 if (outputBuffer->Count < 1) {
202 UINT32 sz = argument->DataLength;
209 if (nhltAddr == 0 || nhltSz == 0) {
214 if (outputBufferMemory !=
NULL) {
215 WdfObjectDelete(outputBufferMemory);
216 outputBufferMemory =
NULL;
223#define ACPI_RESOURCE_NAME_ADDRESS64 0x8A
228#define AML_RESOURCE_LARGE_HEADER_COMMON \
229 UINT8 DescriptorType;\
230 UINT16 ResourceLength;
232#define AML_RESOURCE_ADDRESS_COMMON \
233 UINT8 ResourceType; \
260 *nhltAddr = address64->
Minimum;
ACPI_METHOD_ARGUMENT UNALIGNED * PACPI_METHOD_ARGUMENT
#define ACPI_METHOD_NEXT_ARGUMENT(Argument)
#define ACPI_METHOD_ARGUMENT_LENGTH(DataLength)
#define ACPI_METHOD_SET_ARGUMENT_INTEGER(MethodArgument, IntData)
#define IOCTL_ACPI_EVAL_METHOD_EX
#define ACPI_METHOD_SET_ARGUMENT_BUFFER(Argument, BuffData, BuffLength)
#define ACPI_METHOD_ARGUMENT_PACKAGE_EX
#define ACPI_EVAL_INPUT_BUFFER_COMPLEX_SIGNATURE_V1_EX
ACPI_EVAL_OUTPUT_BUFFER UNALIGNED * PACPI_EVAL_OUTPUT_BUFFER
COMPILER_DEPENDENT_UINT64 UINT64
#define STATUS_NOT_SUPPORTED
#define NT_SUCCESS(StatCode)
#define SKLHDAUDBUS_POOL_TAG
#define SklHdAudBusPrint(dbglevel, fmt,...)
#define memcpy(s1, s2, n)
#define AML_RESOURCE_ADDRESS_COMMON
#define ACPI_RESOURCE_NAME_ADDRESS64
struct aml_resource_address64 AML_RESOURCE_ADDRESS64
void parseACPI(UINT8 *res, UINT32 offset, UINT32 sz, UINT64 *nhltAddr, UINT64 *nhltSz)
#define AML_RESOURCE_LARGE_HEADER_COMMON
NTSTATUS NHLTCheckSupported(_In_ WDFDEVICE FxDevice)
void parseACPIMemory64(UINT8 *res, UINT32 offset, UINT32 sz, UINT64 *nhltAddr, UINT64 *nhltSz)
NTSTATUS NHLTQueryTableAddress(_In_ WDFDEVICE FxDevice, UINT64 *nhltAddr, UINT64 *nhltSz)
#define STATUS_INVALID_DEVICE_OBJECT_PARAMETER
#define STATUS_ACPI_NOT_INITIALIZED
NTSTRSAFEVAPI RtlStringCchPrintfA(_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cchDest, _In_ _Printf_format_string_ NTSTRSAFE_PCSTR pszFormat,...)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define STATUS_BUFFER_OVERFLOW
AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_ADDRESS_COMMON UINT64 Granularity
#define FIELD_OFFSET(t, f)
#define RtlZeroMemory(Destination, Length)
#define STATUS_UNSUCCESSFUL
FORCEINLINE VOID WDF_MEMORY_DESCRIPTOR_INIT_BUFFER(_Out_ PWDF_MEMORY_DESCRIPTOR Descriptor, _In_ PVOID Buffer, _In_ ULONG BufferLength)
FORCEINLINE VOID WDF_MEMORY_DESCRIPTOR_INIT_HANDLE(_Out_ PWDF_MEMORY_DESCRIPTOR Descriptor, _In_ WDFMEMORY Memory, _In_opt_ PWDFMEMORY_OFFSET Offsets)
#define WDF_NO_OBJECT_ATTRIBUTES