6 /* --------------------------------------------------------------------- */
9 typedef struct HDACodecBus HDACodecBus
;
10 typedef struct HDACodecDevice HDACodecDevice
;
11 typedef struct HDACodecDeviceInfo HDACodecDeviceInfo
;
13 typedef void (*hda_codec_response_func
)(HDACodecDevice
*dev
,
14 bool solicited
, uint32_t response
);
15 typedef bool (*hda_codec_xfer_func
)(HDACodecDevice
*dev
,
16 uint32_t stnr
, bool output
,
17 uint8_t *buf
, uint32_t len
);
22 hda_codec_response_func response
;
23 hda_codec_xfer_func xfer
;
26 struct HDACodecDevice
{
28 HDACodecDeviceInfo
*info
;
29 uint32_t cad
; /* codec address */
32 struct HDACodecDeviceInfo
{
34 int (*init
)(HDACodecDevice
*dev
);
35 int (*exit
)(HDACodecDevice
*dev
);
36 void (*command
)(HDACodecDevice
*dev
, uint32_t nid
, uint32_t data
);
37 void (*stream
)(HDACodecDevice
*dev
, uint32_t stnr
, bool running
, bool output
);
40 void hda_codec_bus_init(DeviceState
*dev
, HDACodecBus
*bus
,
41 hda_codec_response_func response
,
42 hda_codec_xfer_func xfer
);
43 void hda_codec_register(HDACodecDeviceInfo
*info
);
44 HDACodecDevice
*hda_codec_find(HDACodecBus
*bus
, uint32_t cad
);
46 void hda_codec_response(HDACodecDevice
*dev
, bool solicited
, uint32_t response
);
47 bool hda_codec_xfer(HDACodecDevice
*dev
, uint32_t stnr
, bool output
,
48 uint8_t *buf
, uint32_t len
);
50 /* --------------------------------------------------------------------- */
52 #define dprint(_dev, _level, _fmt, ...) \
54 if (_dev->debug >= _level) { \
55 fprintf(stderr, "%s: ", _dev->name); \
56 fprintf(stderr, _fmt, ## __VA_ARGS__); \
60 /* --------------------------------------------------------------------- */