11 #define TAG_HDA 'bADH'
14 // include Haiku headers
17 #define MAKE_RATE(base, multiply, divide) \
18 ((base == 44100 ? FORMAT_44_1_BASE_RATE : 0) \
19 | ((multiply - 1) << FORMAT_MULTIPLY_RATE_SHIFT) \
20 | ((divide - 1) << FORMAT_DIVIDE_RATE_SHIFT))
22 #define HDAC_INPUT_STREAM_OFFSET(index) \
23 ((index) * HDAC_STREAM_SIZE)
24 #define HDAC_OUTPUT_STREAM_OFFSET(num_input_streams, index) \
25 ((num_input_streams + (index)) * HDAC_STREAM_SIZE)
26 #define HDAC_BIDIR_STREAM_OFFSET(num_input_streams, num_output_streams, index) \
27 ((num_input_streams + num_output_streams \
28 + (index)) * HDAC_STREAM_SIZE)
30 #define ALIGN(size, align) (((size) + align - 1) & ~(align - 1))
36 }RIRB_RESPONSE
, *PRIRB_RESPONSE
;
40 PDEVICE_OBJECT ChildPDO
;
43 }HDA_CODEC_AUDIO_GROUP
, *PHDA_CODEC_AUDIO_GROUP
;
55 ULONG Responses
[MAX_CODEC_RESPONSES
];
57 KSEMAPHORE ResponseSemaphore
;
59 PHDA_CODEC_AUDIO_GROUP AudioGroups
[HDA_MAX_AUDIO_GROUPS
];
60 ULONG AudioGroupCount
;
62 }HDA_CODEC_ENTRY
, *PHDA_CODEC_ENTRY
;
68 PDEVICE_OBJECT LowerDevice
;
72 PKINTERRUPT Interrupt
;
77 PRIRB_RESPONSE RirbBase
;
80 PVOID StreamPositions
;
82 PHDA_CODEC_ENTRY Codecs
[HDA_MAX_CODECS
+ 1];
84 }HDA_FDO_DEVICE_EXTENSION
, *PHDA_FDO_DEVICE_EXTENSION
;
89 BOOLEAN ReportedMissing
;
90 PHDA_CODEC_ENTRY Codec
;
91 PHDA_CODEC_AUDIO_GROUP AudioGroup
;
93 }HDA_PDO_DEVICE_EXTENSION
, *PHDA_PDO_DEVICE_EXTENSION
;
103 ULONG _reserved0
: 8;
105 ULONG _reserved1
: 8;
107 ULONG _reserved2
: 8;
108 }CODEC_RESPONSE
, *PCODEC_RESPONSE
;
113 IN POOL_TYPE PoolType
,
114 IN SIZE_T NumberOfBytes
);
121 KSERVICE_ROUTINE HDA_InterruptService
;
122 IO_DPC_ROUTINE HDA_DpcForIsr
;
127 IN PDEVICE_OBJECT DeviceObject
,
133 _In_ PDEVICE_OBJECT DeviceObject
,
138 HDA_FDOQueryBusRelations(
139 IN PDEVICE_OBJECT DeviceObject
,
144 IN PDEVICE_OBJECT DeviceObject
,
145 IN PHDA_CODEC_ENTRY Codec
,
147 OUT PULONG Responses
,
154 _In_ PDEVICE_OBJECT DeviceObject
);
157 HDA_PDOQueryBusInformation(
163 IN PDEVICE_OBJECT DeviceObject
,
167 HDA_PDOHandleQueryDeviceText(
171 HDA_PDOQueryBusDeviceCapabilities(
175 HDA_PDOQueryBusDevicePnpState(
178 /* businterface.cpp */
181 HDA_PDOHandleQueryInterface(
182 IN PDEVICE_OBJECT DeviceObject
,