302 nulldev, /* devo_probe - not needed */
303 usb_ac_attach, /* devo_attach */
304 usb_ac_detach, /* devo_detach */
305 nodev, /* devo_reset */
306 NULL, /* devi_cb_ops */
307 NULL, /* devo_busb_ac_ops */
308 usb_ac_power, /* devo_power */
309 ddi_quiesce_not_needed, /* devo_quiesce */
310 };
311
312 /* Linkage structure for loadable drivers */
313 static struct modldrv usb_ac_modldrv = {
314 &mod_driverops, /* drv_modops */
315 "USB Audio Control Driver", /* drv_linkinfo */
316 &usb_ac_dev_ops /* drv_dev_ops */
317 };
318
319 /* Module linkage structure */
320 static struct modlinkage usb_ac_modlinkage = {
321 MODREV_1, /* ml_rev */
322 (void *)&usb_ac_modldrv, /* ml_linkage */
323 NULL /* NULL terminates the list */
324 };
325
326 static int usb_audio_register(usb_ac_state_t *);
327 static int usb_audio_unregister(usb_ac_state_t *);
328
329 static int usb_engine_open(void *, int, unsigned *, caddr_t *);
330 static void usb_engine_close(void *);
331 static uint64_t usb_engine_count(void *);
332 static int usb_engine_start(void *);
333 static void usb_engine_stop(void *);
334 static int usb_engine_format(void *);
335 static int usb_engine_channels(void *);
336 static int usb_engine_rate(void *);
337 static void usb_engine_sync(void *, unsigned);
338 static unsigned usb_engine_qlen(void *);
339
340 /* engine buffer size in terms of fragments */
341
342 audio_engine_ops_t usb_engine_ops = {
343 AUDIO_ENGINE_VERSION,
|
302 nulldev, /* devo_probe - not needed */
303 usb_ac_attach, /* devo_attach */
304 usb_ac_detach, /* devo_detach */
305 nodev, /* devo_reset */
306 NULL, /* devi_cb_ops */
307 NULL, /* devo_busb_ac_ops */
308 usb_ac_power, /* devo_power */
309 ddi_quiesce_not_needed, /* devo_quiesce */
310 };
311
312 /* Linkage structure for loadable drivers */
313 static struct modldrv usb_ac_modldrv = {
314 &mod_driverops, /* drv_modops */
315 "USB Audio Control Driver", /* drv_linkinfo */
316 &usb_ac_dev_ops /* drv_dev_ops */
317 };
318
319 /* Module linkage structure */
320 static struct modlinkage usb_ac_modlinkage = {
321 MODREV_1, /* ml_rev */
322 { (void *)&usb_ac_modldrv, NULL } /* ml_linkage */
323 };
324
325 static int usb_audio_register(usb_ac_state_t *);
326 static int usb_audio_unregister(usb_ac_state_t *);
327
328 static int usb_engine_open(void *, int, unsigned *, caddr_t *);
329 static void usb_engine_close(void *);
330 static uint64_t usb_engine_count(void *);
331 static int usb_engine_start(void *);
332 static void usb_engine_stop(void *);
333 static int usb_engine_format(void *);
334 static int usb_engine_channels(void *);
335 static int usb_engine_rate(void *);
336 static void usb_engine_sync(void *, unsigned);
337 static unsigned usb_engine_qlen(void *);
338
339 /* engine buffer size in terms of fragments */
340
341 audio_engine_ops_t usb_engine_ops = {
342 AUDIO_ENGINE_VERSION,
|