Lines Matching refs:dev

115 	struct audioens_dev	*dev;  member
170 #define GET8(dev, offset) \ argument
171 ddi_get8(dev->acch, (uint8_t *)(dev->regs + (offset)))
172 #define GET16(dev, offset) \ argument
173 ddi_get16(dev->acch, (uint16_t *)(void *)(dev->regs + (offset)))
174 #define GET32(dev, offset) \ argument
175 ddi_get32(dev->acch, (uint32_t *)(void *)(dev->regs + (offset)))
176 #define PUT8(dev, offset, v) \ argument
177 ddi_put8(dev->acch, (uint8_t *)(dev->regs + (offset)), v)
178 #define PUT16(dev, offset, v) \ argument
179 ddi_put16(dev->acch, (uint16_t *)(void *)(dev->regs + (offset)), v)
180 #define PUT32(dev, offset, v) \ argument
181 ddi_put32(dev->acch, (uint32_t *)(void *)(dev->regs + (offset)), v)
183 #define CLR8(dev, offset, v) PUT8(dev, offset, GET8(dev, offset) & ~(v)) argument
184 #define SET8(dev, offset, v) PUT8(dev, offset, GET8(dev, offset) | (v)) argument
185 #define CLR32(dev, offset, v) PUT32(dev, offset, GET32(dev, offset) & ~(v)) argument
186 #define SET32(dev, offset, v) PUT32(dev, offset, GET32(dev, offset) | (v)) argument
193 audioens_dev_t *dev = dev_; in audioens_rd97() local
196 mutex_enter(&dev->mutex); in audioens_rd97()
197 dtemp = GET32(dev, CONC_dCODECCTL_OFF); in audioens_rd97()
200 dtemp = GET32(dev, CONC_dCODECCTL_OFF); in audioens_rd97()
206 PUT32(dev, CONC_dCODECCTL_OFF, ((int)wAddr << 16) | (1UL << 23)); in audioens_rd97()
210 dtemp = GET32(dev, CONC_dCODECCTL_OFF); in audioens_rd97()
214 dtemp = GET32(dev, CONC_dCODECCTL_OFF); in audioens_rd97()
215 mutex_exit(&dev->mutex); in audioens_rd97()
223 audioens_dev_t *dev = dev_; in audioens_wr97() local
226 mutex_enter(&dev->mutex); in audioens_wr97()
229 dtemp = GET32(dev, CONC_dCODECCTL_OFF); in audioens_wr97()
234 PUT32(dev, CONC_dCODECCTL_OFF, ((int)wAddr << 16) | wData); in audioens_wr97()
236 mutex_exit(&dev->mutex); in audioens_wr97()
240 SRCRegRead(audioens_dev_t *dev, unsigned short reg) in SRCRegRead() argument
244 dtemp = GET32(dev, CONC_dSRCIO_OFF); in SRCRegRead()
247 dtemp = GET32(dev, CONC_dSRCIO_OFF); in SRCRegRead()
253 PUT32(dev, CONC_dSRCIO_OFF, (dtemp & SRC_CTLMASK) | ((int)reg << 25)); in SRCRegRead()
257 dtemp = GET32(dev, CONC_dSRCIO_OFF); in SRCRegRead()
266 SRCRegWrite(audioens_dev_t *dev, unsigned short reg, unsigned short val) in SRCRegWrite() argument
271 dtemp = GET32(dev, CONC_dSRCIO_OFF); in SRCRegWrite()
274 dtemp = GET32(dev, CONC_dSRCIO_OFF); in SRCRegWrite()
282 PUT32(dev, CONC_dSRCIO_OFF, writeval); in SRCRegWrite()
286 SRCSetRate(audioens_dev_t *dev, unsigned char base, unsigned short rate) in SRCSetRate() argument
296 if (!(GET32(dev, CONC_dSRCIO_OFF) & SRC_BUSY)) in SRCSetRate()
299 PUT32(dev, CONC_dSRCIO_OFF, in SRCSetRate()
300 (GET32(dev, CONC_dSRCIO_OFF) & SRC_CTLMASK) | dtemp); in SRCSetRate()
304 SRCRegWrite(dev, (unsigned short) base + SRC_INT_REGS_OFF, in SRCSetRate()
305 (SRCRegRead(dev, (unsigned short) base + SRC_INT_REGS_OFF) in SRCSetRate()
307 SRCRegWrite(dev, (unsigned short) base + SRC_VFREQ_FRAC_OFF, in SRCSetRate()
312 if (!(GET32(dev, CONC_dSRCIO_OFF) & SRC_BUSY)) in SRCSetRate()
314 PUT32(dev, CONC_dSRCIO_OFF, in SRCSetRate()
315 (GET32(dev, CONC_dSRCIO_OFF) & SRC_CTLMASK) & ~dtemp); in SRCSetRate()
329 SRCRegWrite(dev, base + SRC_TRUNC_N_OFF, in SRCSetRate()
336 SRCRegWrite(dev, base + SRC_TRUNC_N_OFF, in SRCSetRate()
342 SRCRegWrite(dev, base + SRC_INT_REGS_OFF, in SRCSetRate()
343 (SRCRegRead(dev, (unsigned short) base + SRC_INT_REGS_OFF) in SRCSetRate()
345 SRCRegWrite(dev, base + SRC_VFREQ_FRAC_OFF, in SRCSetRate()
348 SRCRegWrite(dev, SRC_ADC_VOL_L, N << 8); in SRCSetRate()
349 SRCRegWrite(dev, SRC_ADC_VOL_R, N << 8); in SRCSetRate()
354 SRCInit(audioens_dev_t *dev) in SRCInit() argument
360 if (!(GET32(dev, CONC_dSRCIO_OFF) & SRC_BUSY)) in SRCInit()
363 PUT32(dev, CONC_dSRCIO_OFF, SRC_DISABLE); in SRCInit()
366 SRCRegWrite(dev, (unsigned short) i, 0U); in SRCInit()
368 SRCRegWrite(dev, SRC_DAC1_BASE + SRC_TRUNC_N_OFF, 16 << 4); in SRCInit()
369 SRCRegWrite(dev, SRC_DAC1_BASE + SRC_INT_REGS_OFF, 16 << 10); in SRCInit()
370 SRCRegWrite(dev, SRC_DAC2_BASE + SRC_TRUNC_N_OFF, 16 << 4); in SRCInit()
371 SRCRegWrite(dev, SRC_DAC2_BASE + SRC_INT_REGS_OFF, 16 << 10); in SRCInit()
372 SRCRegWrite(dev, SRC_DAC1_VOL_L, 1 << 12); in SRCInit()
373 SRCRegWrite(dev, SRC_DAC1_VOL_R, 1 << 12); in SRCInit()
374 SRCRegWrite(dev, SRC_DAC2_VOL_L, 1 << 12); in SRCInit()
375 SRCRegWrite(dev, SRC_DAC2_VOL_R, 1 << 12); in SRCInit()
376 SRCRegWrite(dev, SRC_ADC_VOL_L, 1 << 12); in SRCInit()
377 SRCRegWrite(dev, SRC_ADC_VOL_R, 1 << 12); in SRCInit()
380 SRCSetRate(dev, SRC_DAC1_BASE, 48000); in SRCInit()
381 SRCSetRate(dev, SRC_DAC2_BASE, 48000); in SRCInit()
382 SRCSetRate(dev, SRC_ADC_BASE, 48000); in SRCInit()
386 if (!(GET32(dev, CONC_dSRCIO_OFF) & SRC_BUSY)) in SRCInit()
389 PUT32(dev, CONC_dSRCIO_OFF, 0); in SRCInit()
393 audioens_writemem(audioens_dev_t *dev, uint32_t page, uint32_t offs, in audioens_writemem() argument
397 PUT32(dev, CONC_bMEMPAGE_OFF, page); in audioens_writemem()
398 PUT32(dev, offs, data); in audioens_writemem()
402 audioens_readmem(audioens_dev_t *dev, uint32_t page, uint32_t offs) in audioens_readmem() argument
404 PUT32(dev, CONC_bMEMPAGE_OFF, page); /* Select memory page */ in audioens_readmem()
405 return (GET32(dev, offs)); in audioens_readmem()
412 audioens_dev_t *dev = (void *)arg1; in audioens_intr() local
420 mutex_enter(&dev->mutex); in audioens_intr()
421 if (dev->suspended || !dev->useintr) { in audioens_intr()
422 mutex_exit(&dev->mutex); in audioens_intr()
426 status = GET32(dev, CONC_dSTATUS_OFF); in audioens_intr()
428 mutex_exit(&dev->mutex); in audioens_intr()
435 port = &dev->port[PORT_DAC]; in audioens_intr()
438 frameno = audioens_readmem(dev, in audioens_intr()
445 CLR8(dev, CONC_bSERCTL_OFF, CONC_SERCTL_DAC1IE); in audioens_intr()
446 SET8(dev, CONC_bSERCTL_OFF, CONC_SERCTL_DAC1IE); in audioens_intr()
449 port = &dev->port[PORT_ADC]; in audioens_intr()
452 frameno = audioens_readmem(dev, in audioens_intr()
459 CLR8(dev, CONC_bSERCTL_OFF, CONC_SERCTL_ADCIE); in audioens_intr()
460 SET8(dev, CONC_bSERCTL_OFF, CONC_SERCTL_ADCIE); in audioens_intr()
463 CLR8(dev, CONC_bSERCTL_OFF, CONC_SERCTL_DAC2IE); in audioens_intr()
464 SET8(dev, CONC_bSERCTL_OFF, CONC_SERCTL_DAC2IE); in audioens_intr()
471 while (GET8(dev, CONC_bUARTCSTAT_OFF) & CONC_UART_RXRDY) in audioens_intr()
474 mutex_exit(&dev->mutex); in audioens_intr()
480 audioens_setup_intr(audioens_dev_t *dev) in audioens_setup_intr() argument
485 if ((ddi_intr_alloc(dev->dip, &dev->intrh, DDI_INTR_TYPE_FIXED, 0, 1, in audioens_setup_intr()
487 audio_dev_warn(dev->osdev, "can't alloc intr handle"); in audioens_setup_intr()
491 if (ddi_intr_get_pri(dev->intrh, &ipri) != DDI_SUCCESS) { in audioens_setup_intr()
492 audio_dev_warn(dev->osdev, "can't get interrupt priority"); in audioens_setup_intr()
495 if (ddi_intr_add_handler(dev->intrh, audioens_intr, dev, NULL) != in audioens_setup_intr()
497 audio_dev_warn(dev->osdev, "cannot add interrupt handler"); in audioens_setup_intr()
500 dev->intrpri = ipri; in audioens_setup_intr()
504 if (dev->intrh != NULL) { in audioens_setup_intr()
505 (void) ddi_intr_free(dev->intrh); in audioens_setup_intr()
506 dev->intrh = NULL; in audioens_setup_intr()
545 audioens_dev_t *dev = port->dev; in audioens_open() local
549 mutex_enter(&dev->mutex); in audioens_open()
555 mutex_exit(&dev->mutex); in audioens_open()
564 audioens_dev_t *dev = port->dev; in audioens_start() local
567 mutex_enter(&dev->mutex); in audioens_start()
572 audioens_writemem(dev, CONC_DAC1CTL_PAGE, CONC_dDAC1PADDR_OFF, in audioens_start()
574 audioens_writemem(dev, CONC_DAC2CTL_PAGE, CONC_dDAC2PADDR_OFF, in audioens_start()
578 SRCSetRate(dev, SRC_DAC1_BASE, port->speed); in audioens_start()
579 SRCSetRate(dev, SRC_DAC2_BASE, port->speed); in audioens_start()
582 tmp = GET32(dev, CONC_dSTATUS_OFF); in audioens_start()
585 PUT32(dev, CONC_dSTATUS_OFF, tmp); in audioens_start()
588 PUT8(dev, CONC_bSKIPC_OFF, 0x10); in audioens_start()
589 SET8(dev, CONC_bSERFMT_OFF, in audioens_start()
594 audioens_writemem(dev, CONC_DAC1CTL_PAGE, CONC_wDAC1FC_OFF, in audioens_start()
596 audioens_writemem(dev, CONC_DAC2CTL_PAGE, CONC_wDAC2FC_OFF, in audioens_start()
599 PUT16(dev, CONC_wDAC1IC_OFF, port->iframes - 1); in audioens_start()
600 PUT16(dev, CONC_wDAC2IC_OFF, port->iframes - 1); in audioens_start()
601 SET8(dev, CONC_bDEVCTL_OFF, in audioens_start()
604 if (dev->useintr) { in audioens_start()
605 SET8(dev, CONC_bSERCTL_OFF, CONC_SERCTL_DAC1IE); in audioens_start()
613 audioens_writemem(dev, CONC_ADCCTL_PAGE, CONC_dADCPADDR_OFF, in audioens_start()
617 SRCSetRate(dev, SRC_ADC_BASE, port->speed); in audioens_start()
620 tmp = GET8(dev, CONC_bSERFMT_OFF); in audioens_start()
624 PUT8(dev, CONC_bSKIPC_OFF, 0x10); in audioens_start()
626 PUT8(dev, CONC_bSERFMT_OFF, tmp); in audioens_start()
629 audioens_writemem(dev, CONC_ADCCTL_PAGE, CONC_wADCFC_OFF, in audioens_start()
633 PUT16(dev, CONC_wADCIC_OFF, port->iframes - 1); in audioens_start()
635 SET8(dev, CONC_bDEVCTL_OFF, CONC_DEVCTL_ADC_EN); in audioens_start()
637 if (dev->useintr) { in audioens_start()
638 SET8(dev, CONC_bSERCTL_OFF, CONC_SERCTL_ADCIE); in audioens_start()
645 mutex_exit(&dev->mutex); in audioens_start()
654 audioens_dev_t *dev = port->dev; in audioens_stop() local
656 mutex_enter(&dev->mutex); in audioens_stop()
659 CLR8(dev, CONC_bDEVCTL_OFF, in audioens_stop()
663 CLR8(dev, CONC_bDEVCTL_OFF, CONC_DEVCTL_ADC_EN); in audioens_stop()
666 mutex_exit(&dev->mutex); in audioens_stop()
673 audioens_dev_t *dev = port->dev; in audioens_count() local
692 mutex_enter(&dev->mutex); in audioens_count()
694 if (!dev->useintr) { in audioens_count()
700 frameno = audioens_readmem(port->dev, page, offs) >> 16; in audioens_count()
712 mutex_exit(&dev->mutex); in audioens_count()
768 audioens_init_hw(audioens_dev_t *dev) in audioens_init_hw() argument
772 if ((dev->devid == ENSONIQ_ES5880) || in audioens_init_hw()
773 (dev->devid == ENSONIQ_ES5880A) || in audioens_init_hw()
774 (dev->devid == ENSONIQ_ES5880B) || in audioens_init_hw()
775 (dev->devid == 0x1371 && dev->revision == 7) || in audioens_init_hw()
776 (dev->devid == 0x1371 && dev->revision >= 9)) { in audioens_init_hw()
779 tmp = GET8(dev, CONC_bINTSUMM_OFF) & 0xff; in audioens_init_hw()
781 PUT8(dev, CONC_bINTSUMM_OFF, tmp); in audioens_init_hw()
786 SRCInit(dev); in audioens_init_hw()
791 tmp = GET32(dev, CONC_bDEVCTL_OFF) & 0xff; in audioens_init_hw()
793 PUT8(dev, CONC_bDEVCTL_OFF, tmp); in audioens_init_hw()
794 PUT8(dev, CONC_bUARTCSTAT_OFF, 0x00); in audioens_init_hw()
797 tmp = GET8(dev, CONC_bMISCCTL_OFF) & 0xff; in audioens_init_hw()
798 PUT8(dev, CONC_bMISCCTL_OFF, tmp | CONC_MISCCTL_SYNC_RES); in audioens_init_hw()
800 PUT8(dev, CONC_bMISCCTL_OFF, tmp); in audioens_init_hw()
803 if (dev->revision >= 4) { in audioens_init_hw()
807 PUT32(dev, 0x04, GET32(dev, 0x04) | (1 << 18)); in audioens_init_hw()
809 PUT32(dev, 0x00, GET32(dev, 0x00) | (1 << 26)); in audioens_init_hw()
810 CLR32(dev, CONC_dSPDIF_OFF, CONC_SPDIF_AC3); in audioens_init_hw()
814 PUT32(dev, 0x04, GET32(dev, 0x04) & ~(1 << 18)); in audioens_init_hw()
815 PUT32(dev, 0x00, GET32(dev, 0x00) & ~(1 << 26)); in audioens_init_hw()
819 CLR32(dev, CONC_dSTATUS_OFF, CONC_STATUS_ECHO); in audioens_init_hw()
824 audioens_init(audioens_dev_t *dev) in audioens_init() argument
827 audioens_init_hw(dev); in audioens_init()
834 (void) ddi_prop_update_int(DDI_DEV_T_NONE, dev->dip, AC97_PROP_SPEAKER, in audioens_init()
841 dev->ac97 = ac97_alloc(dev->dip, audioens_rd97, audioens_wr97, dev); in audioens_init()
842 if (dev->ac97 == NULL) in audioens_init()
845 if (ac97_init(dev->ac97, dev->osdev) != 0) { in audioens_init()
858 port = &dev->port[i]; in audioens_init()
859 port->dev = dev; in audioens_init()
895 if (ddi_dma_alloc_handle(dev->dip, &dma_attr, DDI_DMA_SLEEP, in audioens_init()
897 audio_dev_warn(dev->osdev, in audioens_init()
904 audio_dev_warn(dev->osdev, in audioens_init()
913 audio_dev_warn(dev->osdev, in audioens_init()
924 audio_dev_warn(dev->osdev, in audioens_init()
930 audio_dev_add_engine(dev->osdev, port->engine); in audioens_init()
933 if (audio_dev_register(dev->osdev) != DDI_SUCCESS) { in audioens_init()
934 audio_dev_warn(dev->osdev, in audioens_init()
943 audioens_destroy(audioens_dev_t *dev) in audioens_destroy() argument
948 if (dev->useintr && dev->intrh != NULL) { in audioens_destroy()
949 (void) ddi_intr_disable(dev->intrh); in audioens_destroy()
950 (void) ddi_intr_remove_handler(dev->intrh); in audioens_destroy()
951 (void) ddi_intr_free(dev->intrh); in audioens_destroy()
952 dev->intrh = NULL; in audioens_destroy()
956 mutex_destroy(&dev->mutex); in audioens_destroy()
960 audioens_port_t *port = &dev->port[i]; in audioens_destroy()
970 audio_dev_remove_engine(dev->osdev, port->engine); in audioens_destroy()
975 if (dev->acch != NULL) { in audioens_destroy()
976 ddi_regs_map_free(&dev->acch); in audioens_destroy()
979 if (dev->ac97) { in audioens_destroy()
980 ac97_free(dev->ac97); in audioens_destroy()
983 if (dev->osdev != NULL) { in audioens_destroy()
984 audio_dev_free(dev->osdev); in audioens_destroy()
987 kmem_free(dev, sizeof (*dev)); in audioens_destroy()
995 audioens_dev_t *dev; in audioens_attach() local
1000 dev = kmem_zalloc(sizeof (*dev), KM_SLEEP); in audioens_attach()
1001 dev->dip = dip; in audioens_attach()
1002 ddi_set_driver_private(dip, dev); in audioens_attach()
1003 mutex_init(&dev->mutex, NULL, MUTEX_DRIVER, NULL); in audioens_attach()
1006 audio_dev_warn(dev->osdev, "pci_config_setup failed"); in audioens_attach()
1018 audio_dev_warn(dev->osdev, "unrecognized device"); in audioens_attach()
1064 dev->revision = revision; in audioens_attach()
1065 dev->devid = device; in audioens_attach()
1067 dev->osdev = audio_dev_alloc(dip, 0); in audioens_attach()
1068 if (dev->osdev == NULL) { in audioens_attach()
1072 audio_dev_set_description(dev->osdev, chip_name); in audioens_attach()
1073 audio_dev_set_version(dev->osdev, chip_vers); in audioens_attach()
1087 if (ddi_regs_map_setup(dip, 1, &dev->regs, 0, 0, &acc_attr, in audioens_attach()
1088 &dev->acch) != DDI_SUCCESS) { in audioens_attach()
1089 audio_dev_warn(dev->osdev, "can't map registers"); in audioens_attach()
1099 dev->useintr = B_FALSE; in audioens_attach()
1101 dev->useintr = B_TRUE; in audioens_attach()
1102 if (audioens_setup_intr(dev) != DDI_SUCCESS) { in audioens_attach()
1106 mutex_destroy(&dev->mutex); in audioens_attach()
1107 mutex_init(&dev->mutex, NULL, MUTEX_DRIVER, in audioens_attach()
1108 DDI_INTR_PRI(dev->intrpri)); in audioens_attach()
1113 if (audioens_init(dev) != DDI_SUCCESS) { in audioens_attach()
1114 audio_dev_warn(dev->osdev, "can't init device"); in audioens_attach()
1119 if (dev->useintr) { in audioens_attach()
1120 (void) ddi_intr_enable(dev->intrh); in audioens_attach()
1132 audioens_destroy(dev); in audioens_attach()
1138 audioens_detach(audioens_dev_t *dev) in audioens_detach() argument
1143 if (audio_dev_unregister(dev->osdev) != DDI_SUCCESS) in audioens_detach()
1146 mutex_enter(&dev->mutex); in audioens_detach()
1148 tmp = GET8(dev, CONC_bSERCTL_OFF) & in audioens_detach()
1150 PUT8(dev, CONC_bSERCTL_OFF, tmp); in audioens_detach()
1151 PUT8(dev, CONC_bSERCTL_OFF, tmp); in audioens_detach()
1152 PUT8(dev, CONC_bSERCTL_OFF, tmp); in audioens_detach()
1153 PUT8(dev, CONC_bSERCTL_OFF, tmp); in audioens_detach()
1155 tmp = GET8(dev, CONC_bDEVCTL_OFF) & in audioens_detach()
1157 PUT8(dev, CONC_bDEVCTL_OFF, tmp); in audioens_detach()
1158 PUT8(dev, CONC_bDEVCTL_OFF, tmp); in audioens_detach()
1159 PUT8(dev, CONC_bDEVCTL_OFF, tmp); in audioens_detach()
1160 PUT8(dev, CONC_bDEVCTL_OFF, tmp); in audioens_detach()
1162 mutex_exit(&dev->mutex); in audioens_detach()
1164 audioens_destroy(dev); in audioens_detach()
1170 audioens_resume(audioens_dev_t *dev) in audioens_resume() argument
1172 mutex_enter(&dev->mutex); in audioens_resume()
1173 dev->suspended = B_FALSE; in audioens_resume()
1174 mutex_exit(&dev->mutex); in audioens_resume()
1177 audioens_init_hw(dev); in audioens_resume()
1180 ac97_reset(dev->ac97); in audioens_resume()
1182 audio_dev_resume(dev->osdev); in audioens_resume()
1188 audioens_suspend(audioens_dev_t *dev) in audioens_suspend() argument
1190 audio_dev_suspend(dev->osdev); in audioens_suspend()
1192 mutex_enter(&dev->mutex); in audioens_suspend()
1193 CLR8(dev, CONC_bDEVCTL_OFF, in audioens_suspend()
1195 dev->suspended = B_TRUE; in audioens_suspend()
1196 mutex_exit(&dev->mutex); in audioens_suspend()
1204 audioens_dev_t *dev; in audioens_quiesce() local
1207 if ((dev = ddi_get_driver_private(dip)) == NULL) { in audioens_quiesce()
1212 tmp = GET8(dev, CONC_bSERCTL_OFF) & in audioens_quiesce()
1214 PUT8(dev, CONC_bSERCTL_OFF, tmp); in audioens_quiesce()
1215 PUT8(dev, CONC_bSERCTL_OFF, tmp); in audioens_quiesce()
1216 PUT8(dev, CONC_bSERCTL_OFF, tmp); in audioens_quiesce()
1217 PUT8(dev, CONC_bSERCTL_OFF, tmp); in audioens_quiesce()
1219 tmp = GET8(dev, CONC_bDEVCTL_OFF) & in audioens_quiesce()
1221 PUT8(dev, CONC_bDEVCTL_OFF, tmp); in audioens_quiesce()
1222 PUT8(dev, CONC_bDEVCTL_OFF, tmp); in audioens_quiesce()
1223 PUT8(dev, CONC_bDEVCTL_OFF, tmp); in audioens_quiesce()
1224 PUT8(dev, CONC_bDEVCTL_OFF, tmp); in audioens_quiesce()
1233 audioens_dev_t *dev; in audioens_ddi_attach() local
1240 if ((dev = ddi_get_driver_private(dip)) == NULL) { in audioens_ddi_attach()
1243 return (audioens_resume(dev)); in audioens_ddi_attach()
1253 audioens_dev_t *dev; in audioens_ddi_detach() local
1255 if ((dev = ddi_get_driver_private(dip)) == NULL) { in audioens_ddi_detach()
1261 return (audioens_detach(dev)); in audioens_ddi_detach()
1264 return (audioens_suspend(dev)); in audioens_ddi_detach()