Lines Matching defs:devc

137 	auvia_devc_t *devc = arg;
142 OUTL(devc, devc->base + REG_CODEC, val);
149 if (INL(devc, devc->base + REG_CODEC) & CODEC_STA_VALID)
159 val = INL(devc, devc->base + REG_CODEC);
160 OUTB(devc, devc->base + REG_CODEC + 3, 0x02);
172 auvia_devc_t *devc = arg;
177 OUTL(devc, devc->base + REG_CODEC, val);
183 if (!(INL(devc, devc->base + REG_CODEC) & CODEC_IN_CMD))
218 auvia_devc_t *devc = portc->devc;
221 OUTB(devc, portc->base + OFF_CTRL, CTRL_START | CTRL_AUTOSTART);
229 auvia_devc_t *devc = portc->devc;
231 OUTB(devc, portc->base + OFF_CTRL, CTRL_TERMINATE);
271 auvia_devc_t *devc = portc->devc;
275 pos = INL(devc, portc->base + OFF_COUNT);
296 auvia_devc_t *devc = portc->devc;
301 OUTB(devc, portc->base + OFF_CTRL, CTRL_TERMINATE); /* Stop */
302 OUTL(devc, portc->base + OFF_DMA, portc->sgd_paddr);
304 OUTB(devc, portc->base + OFF_PLAYFMT,
308 if (devc->chip_type != CHIP_8233A) {
337 OUTL(devc, portc->base + OFF_CHANNELS, cmap | 0xFF000000U);
344 auvia_devc_t *devc = portc->devc;
349 OUTB(devc, portc->base + OFF_CTRL, CTRL_TERMINATE); /* Stop */
350 OUTL(devc, portc->base + OFF_DMA, portc->sgd_paddr);
354 if (devc->chip_type != CHIP_8233A) {
358 OUTB(devc, portc->base + OFF_RECFIFO, RECFIFO_ENABLE);
359 OUTL(devc, portc->base + OFF_RECFMT, fmt);
363 auvia_alloc_port(auvia_devc_t *devc, int num)
374 adev = devc->adev;
376 devc->portc[num] = portc;
377 portc->devc = devc;
381 portc->base = devc->base + REG_RECBASE;
389 portc->base = devc->base + REG_PLAYBASE;
401 OUTB(portc->devc, portc->base + OFF_CTRL, CTRL_TERMINATE);
407 if (ddi_dma_alloc_handle(devc->dip, &dma_attr_sgd,
429 if (ddi_dma_alloc_handle(devc->dip, &dma_attr_buf, DDI_DMA_SLEEP, NULL,
471 auvia_destroy(auvia_devc_t *devc)
474 auvia_portc_t *portc = devc->portc[i];
478 audio_dev_remove_engine(devc->adev, portc->engine);
502 if (devc->ac97 != NULL) {
503 ac97_free(devc->ac97);
505 if (devc->adev != NULL) {
506 audio_dev_free(devc->adev);
508 if (devc->regsh != NULL) {
509 ddi_regs_map_free(&devc->regsh);
511 if (devc->pcih != NULL) {
512 pci_config_teardown(&devc->pcih);
514 kmem_free(devc, sizeof (*devc));
518 auvia_hwinit(auvia_devc_t *devc)
520 ddi_acc_handle_t pcih = devc->pcih;
545 auvia_devc_t *devc;
549 devc = kmem_zalloc(sizeof (*devc), KM_SLEEP);
550 devc->dip = dip;
551 ddi_set_driver_private(dip, devc);
553 if ((devc->adev = audio_dev_alloc(dip, 0)) == NULL) {
559 audio_dev_warn(devc->adev, "pci_config_setup failed");
562 devc->pcih = pcih;
568 audio_dev_warn(devc->adev, "Hardware not recognized "
573 devc->chip_type = CHIP_8233;
574 devc->chip_name = "VIA VT8233";
580 devc->chip_name = "VIA VT8235";
585 devc->chip_name = "VIA VT8237";
591 devc->chip_type = CHIP_8233A;
592 devc->chip_name = "VIA VT8233A";
595 audio_dev_set_description(devc->adev, devc->chip_name);
596 audio_dev_set_version(devc->adev, version);
602 if ((ddi_regs_map_setup(dip, 1, &devc->base, 0, 0, &dev_attr,
603 &devc->regsh)) != DDI_SUCCESS) {
604 audio_dev_warn(devc->adev, "failed to map registers");
608 auvia_hwinit(devc);
610 if ((auvia_alloc_port(devc, AUVIA_PLAY_SGD_NUM) != DDI_SUCCESS) ||
611 (auvia_alloc_port(devc, AUVIA_REC_SGD_NUM) != DDI_SUCCESS)) {
615 devc->ac97 = ac97_alloc(dip, auvia_read_ac97, auvia_write_ac97, devc);
616 if (devc->ac97 == NULL) {
617 audio_dev_warn(devc->adev, "failed to allocate ac97 handle");
621 if (ac97_init(devc->ac97, devc->adev) != DDI_SUCCESS) {
622 audio_dev_warn(devc->adev, "failed to init ac97");
626 if (audio_dev_register(devc->adev) != DDI_SUCCESS) {
627 audio_dev_warn(devc->adev, "unable to register with framework");
636 auvia_destroy(devc);
643 auvia_devc_t *devc;
645 devc = ddi_get_driver_private(dip);
647 auvia_hwinit(devc);
649 ac97_reset(devc->ac97);
651 audio_dev_resume(devc->adev);
658 auvia_detach(auvia_devc_t *devc)
660 if (audio_dev_unregister(devc->adev) != DDI_SUCCESS)
663 auvia_destroy(devc);
668 auvia_suspend(auvia_devc_t *devc)
670 audio_dev_suspend(devc->adev);
752 auvia_devc_t *devc;
754 devc = ddi_get_driver_private(dip);
758 return (auvia_detach(devc));
761 return (auvia_suspend(devc));
771 auvia_devc_t *devc;
773 devc = ddi_get_driver_private(dip);
777 auvia_portc_t *portc = devc->portc[i];
778 OUTB(devc, portc->base + OFF_CTRL, CTRL_TERMINATE);