Lines Matching refs:state

421 	CS_state_t		*state;  in audiocs_ddi_power()  local
427 state = ddi_get_driver_private(dip); in audiocs_ddi_power()
429 ASSERT(!mutex_owned(&state->cs_lock)); in audiocs_ddi_power()
432 mutex_enter(&state->cs_lock); in audiocs_ddi_power()
438 if (!state->cs_suspended) { in audiocs_ddi_power()
441 if (level == CS4231_PWR_OFF && state->cs_powered) { in audiocs_ddi_power()
444 audiocs_power_down(state); in audiocs_ddi_power()
445 state->cs_powered = B_FALSE; in audiocs_ddi_power()
447 } else if (level == CS4231_PWR_ON && !state->cs_powered) { in audiocs_ddi_power()
450 audiocs_power_up(state); in audiocs_ddi_power()
451 state->cs_powered = B_TRUE; in audiocs_ddi_power()
455 mutex_exit(&state->cs_lock); in audiocs_ddi_power()
457 ASSERT(!mutex_owned(&state->cs_lock)); in audiocs_ddi_power()
465 audiocs_destroy(CS_state_t *state) in audiocs_destroy() argument
467 if (state == NULL) in audiocs_destroy()
471 audiocs_free_engine(state->cs_engines[i]); in audiocs_destroy()
473 audiocs_del_controls(state); in audiocs_destroy()
475 if (state->cs_adev) { in audiocs_destroy()
476 audio_dev_free(state->cs_adev); in audiocs_destroy()
480 CS4231_DMA_UNMAP_REGS(state); in audiocs_destroy()
483 mutex_destroy(&state->cs_lock); in audiocs_destroy()
484 kmem_free(state, sizeof (*state)); in audiocs_destroy()
505 CS_state_t *state; in audiocs_attach() local
509 state = kmem_zalloc(sizeof (*state), KM_SLEEP); in audiocs_attach()
510 state->cs_dip = dip; in audiocs_attach()
511 ddi_set_driver_private(dip, state); in audiocs_attach()
514 mutex_init(&state->cs_lock, NULL, MUTEX_DRIVER, NULL); in audiocs_attach()
520 if ((state->cs_adev = audio_dev_alloc(dip, 0)) == NULL) { in audiocs_attach()
523 adev = state->cs_adev; in audiocs_attach()
528 if ((audiocs_init_state(state)) == DDI_FAILURE) { in audiocs_attach()
533 mutex_enter(&state->cs_lock); in audiocs_attach()
536 if ((audiocs_chip_init(state)) == DDI_FAILURE) { in audiocs_attach()
537 mutex_exit(&state->cs_lock); in audiocs_attach()
542 state->cs_powered = B_TRUE; in audiocs_attach()
544 mutex_exit(&state->cs_lock); in audiocs_attach()
547 if (audio_dev_register(state->cs_adev) != DDI_SUCCESS) { in audiocs_attach()
548 audio_dev_warn(state->cs_adev, "unable to register audio dev"); in audiocs_attach()
557 audiocs_destroy(state); in audiocs_attach()
577 CS_state_t *state; in audiocs_resume() local
581 state = ddi_get_driver_private(dip); in audiocs_resume()
582 adev = state->cs_adev; in audiocs_resume()
584 ASSERT(dip == state->cs_dip); in audiocs_resume()
585 ASSERT(!mutex_owned(&state->cs_lock)); in audiocs_resume()
588 (void) pm_busy_component(state->cs_dip, CS4231_COMPONENT); in audiocs_resume()
591 audiocs_power_up(state); in audiocs_resume()
592 state->cs_powered = B_TRUE; in audiocs_resume()
594 mutex_enter(&state->cs_lock); in audiocs_resume()
597 if ((audiocs_chip_init(state)) == DDI_FAILURE) { in audiocs_resume()
598 mutex_exit(&state->cs_lock); in audiocs_resume()
600 (void) pm_idle_component(state->cs_dip, CS4231_COMPONENT); in audiocs_resume()
604 state->cs_suspended = B_FALSE; in audiocs_resume()
606 mutex_exit(&state->cs_lock); in audiocs_resume()
613 (void) pm_idle_component(state->cs_dip, CS4231_COMPONENT); in audiocs_resume()
615 audio_dev_resume(state->cs_adev); in audiocs_resume()
636 CS_state_t *state; in audiocs_detach() local
641 state = ddi_get_driver_private(dip); in audiocs_detach()
643 adev = state->cs_adev; in audiocs_detach()
650 if (state->cs_powered) { in audiocs_detach()
654 SELIDX(state, INTC_REG); in audiocs_detach()
655 ANDIDX(state, ~(INTC_PEN|INTC_CEN), INTC_VALID_MASK); in audiocs_detach()
658 CS4231_DMA_RESET(state); in audiocs_detach()
667 audiocs_destroy(state); in audiocs_detach()
688 CS_state_t *state; in audiocs_suspend() local
691 state = ddi_get_driver_private(dip); in audiocs_suspend()
693 mutex_enter(&state->cs_lock); in audiocs_suspend()
695 ASSERT(!state->cs_suspended); in audiocs_suspend()
697 audio_dev_suspend(state->cs_adev); in audiocs_suspend()
699 if (state->cs_powered) { in audiocs_suspend()
701 audiocs_power_down(state); in audiocs_suspend()
702 state->cs_powered = B_FALSE; in audiocs_suspend()
704 state->cs_suspended = B_TRUE; /* stop new ops */ in audiocs_suspend()
705 mutex_exit(&state->cs_lock); in audiocs_suspend()
733 audiocs_alloc_ctrl(CS_state_t *state, uint32_t num, uint64_t val) in audiocs_alloc_ctrl() argument
740 cc->cc_state = state; in audiocs_alloc_ctrl()
776 desc.acd_minvalue = state->cs_imask; in audiocs_alloc_ctrl()
777 desc.acd_maxvalue = state->cs_imask; in audiocs_alloc_ctrl()
789 desc.acd_minvalue = state->cs_omod; in audiocs_alloc_ctrl()
790 desc.acd_maxvalue = state->cs_omask; in audiocs_alloc_ctrl()
809 cc->cc_ctrl = audio_dev_add_control(state->cs_adev, &desc, in audiocs_alloc_ctrl()
848 audiocs_add_controls(CS_state_t *state) in audiocs_add_controls() argument
851 state->cs_##CTL = audiocs_alloc_ctrl(state, ID, VAL); \ in audiocs_add_controls()
852 if (state->cs_##CTL == NULL) { \ in audiocs_add_controls()
853 audio_dev_warn(state->cs_adev, \ in audiocs_add_controls()
862 ADD_CTRL(outputs, CTL_OUTPUTS, (state->cs_omask & ~state->cs_omod) | in audiocs_add_controls()
879 audiocs_del_controls(CS_state_t *state) in audiocs_del_controls() argument
881 audiocs_free_ctrl(state->cs_ogain); in audiocs_del_controls()
882 audiocs_free_ctrl(state->cs_igain); in audiocs_del_controls()
883 audiocs_free_ctrl(state->cs_mgain); in audiocs_del_controls()
884 audiocs_free_ctrl(state->cs_micboost); in audiocs_del_controls()
885 audiocs_free_ctrl(state->cs_inputs); in audiocs_del_controls()
886 audiocs_free_ctrl(state->cs_outputs); in audiocs_del_controls()
905 audiocs_chip_init(CS_state_t *state) in audiocs_chip_init() argument
910 CS4231_DMA_POWER(state, CS4231_PWR_ON); in audiocs_chip_init()
912 CS4231_DMA_RESET(state); in audiocs_chip_init()
915 if (audiocs_poll_ready(state) == DDI_FAILURE) { in audiocs_chip_init()
920 SELIDX(state, MID_REG); in audiocs_chip_init()
924 SELIDX(state, VID_REG); in audiocs_chip_init()
926 state->cs_revA = B_TRUE; in audiocs_chip_init()
928 state->cs_revA = B_FALSE; in audiocs_chip_init()
932 SELIDX(state, LDACO_REG); in audiocs_chip_init()
933 PUTIDX(state, LDACO_LDM | LDACO_MID_GAIN, LDAC0_VALID_MASK); in audiocs_chip_init()
934 SELIDX(state, RDACO_REG); in audiocs_chip_init()
935 PUTIDX(state, RDACO_RDM | RDACO_MID_GAIN, RDAC0_VALID_MASK); in audiocs_chip_init()
938 SELIDX(state, LAUX1_REG); in audiocs_chip_init()
939 PUTIDX(state, LAUX1_LX1M | LAUX1_UNITY_GAIN, LAUX1_VALID_MASK); in audiocs_chip_init()
940 SELIDX(state, RAUX1_REG); in audiocs_chip_init()
941 PUTIDX(state, RAUX1_RX1M | RAUX1_UNITY_GAIN, RAUX1_VALID_MASK); in audiocs_chip_init()
942 SELIDX(state, LAUX2_REG); in audiocs_chip_init()
943 PUTIDX(state, LAUX2_LX2M | LAUX2_UNITY_GAIN, LAUX2_VALID_MASK); in audiocs_chip_init()
944 SELIDX(state, RAUX2_REG); in audiocs_chip_init()
945 PUTIDX(state, RAUX2_RX2M | RAUX2_UNITY_GAIN, RAUX2_VALID_MASK); in audiocs_chip_init()
948 SELIDX(state, LLIC_REG); in audiocs_chip_init()
949 PUTIDX(state, LLIC_LLM | LLIC_UNITY_GAIN, LLIC_VALID_MASK); in audiocs_chip_init()
950 SELIDX(state, RLIC_REG); in audiocs_chip_init()
951 PUTIDX(state, RLIC_RLM | RLIC_UNITY_GAIN, RLIC_VALID_MASK); in audiocs_chip_init()
954 SELIDX(state, FSDF_REG | IAR_MCE); in audiocs_chip_init()
955 PUTIDX(state, FS_48000 | PDF_LINEAR16NE | PDF_STEREO, FSDF_VALID_MASK); in audiocs_chip_init()
956 if (audiocs_poll_ready(state) == DDI_FAILURE) { in audiocs_chip_init()
960 SELIDX(state, CDF_REG | IAR_MCE); in audiocs_chip_init()
961 PUTIDX(state, CDF_LINEAR16NE | CDF_STEREO, CDF_VALID_MASK); in audiocs_chip_init()
962 if (audiocs_poll_ready(state) == DDI_FAILURE) { in audiocs_chip_init()
970 SELIDX(state, (INTC_REG | IAR_MCE)); in audiocs_chip_init()
971 PUTIDX(state, INTC_DDC | INTC_PDMA | INTC_CDMA, INTC_VALID_MASK); in audiocs_chip_init()
972 if (audiocs_poll_ready(state) == DDI_FAILURE) { in audiocs_chip_init()
980 SELIDX(state, AFE1_REG); in audiocs_chip_init()
981 PUTIDX(state, AFE1_OLB, AFE1_VALID_MASK); in audiocs_chip_init()
984 SELIDX(state, AFE2_REG); in audiocs_chip_init()
985 if (state->cs_revA) { in audiocs_chip_init()
986 PUTIDX(state, AFE2_HPF, AFE2_VALID_MASK); in audiocs_chip_init()
988 PUTIDX(state, 0, AFE2_VALID_MASK); in audiocs_chip_init()
993 SELIDX(state, AFS_REG); in audiocs_chip_init()
999 SELIDX(state, LDACO_REG); in audiocs_chip_init()
1000 ANDIDX(state, ~LDACO_LDM, LDAC0_VALID_MASK); in audiocs_chip_init()
1001 SELIDX(state, RDACO_REG); in audiocs_chip_init()
1002 ANDIDX(state, ~RDACO_RDM, RDAC0_VALID_MASK); in audiocs_chip_init()
1005 SELIDX(state, MIOC_REG); in audiocs_chip_init()
1006 PUTIDX(state, MIOC_MIM, MIOC_VALID_MASK); in audiocs_chip_init()
1008 audiocs_configure_output(state); in audiocs_chip_init()
1009 audiocs_configure_input(state); in audiocs_chip_init()
1033 audiocs_init_state(CS_state_t *state) in audiocs_init_state() argument
1035 audio_dev_t *adev = state->cs_adev; in audiocs_init_state()
1036 dev_info_t *dip = state->cs_dip; in audiocs_init_state()
1054 state->cs_dma_engine = EB2_DMA; in audiocs_init_state()
1055 state->cs_dma_ops = &cs4231_eb2dma_ops; in audiocs_init_state()
1057 state->cs_dma_engine = APC_DMA; in audiocs_init_state()
1058 state->cs_dma_ops = &cs4231_apcdma_ops; in audiocs_init_state()
1062 state->cs_dma_engine = APC_DMA; in audiocs_init_state()
1063 state->cs_dma_ops = &cs4231_apcdma_ops; in audiocs_init_state()
1070 audiocs_get_ports(state); in audiocs_init_state()
1073 if ((audiocs_alloc_engine(state, CS4231_PLAY) != DDI_SUCCESS) || in audiocs_init_state()
1074 (audiocs_alloc_engine(state, CS4231_REC) != DDI_SUCCESS)) { in audiocs_init_state()
1079 if (CS4231_DMA_MAP_REGS(state) == DDI_FAILURE) { in audiocs_init_state()
1085 if (audiocs_add_controls(state) != DDI_SUCCESS) { in audiocs_init_state()
1089 state->cs_suspended = B_FALSE; in audiocs_init_state()
1090 state->cs_powered = B_FALSE; in audiocs_init_state()
1145 audiocs_get_ports(CS_state_t *state) in audiocs_get_ports() argument
1147 dev_info_t *dip = state->cs_dip; in audiocs_get_ports()
1148 audio_dev_t *adev = state->cs_adev; in audiocs_get_ports()
1152 state->cs_omask = state->cs_omod = in audiocs_get_ports()
1156 state->cs_imask = in audiocs_get_ports()
1167 state->cs_imask |= (1U << INPUT_CD); in audiocs_get_ports()
1168 state->cs_omod = (1U << OUTPUT_SPEAKER); in audiocs_get_ports()
1211 if (state->cs_dma_engine == EB2_DMA) { in audiocs_get_ports()
1224 state->cs_imask |= (1U << INPUT_CD); in audiocs_get_ports()
1244 audiocs_power_up(CS_state_t *state) in audiocs_power_up() argument
1250 CS4231_DMA_POWER(state, CS4231_PWR_ON); in audiocs_power_up()
1253 CS4231_DMA_RESET(state); in audiocs_power_up()
1255 (void) audiocs_poll_ready(state); in audiocs_power_up()
1262 SELIDX(state, MID_REG); in audiocs_power_up()
1263 PUTIDX(state, state->cs_save[MID_REG], MID_VALID_MASK); in audiocs_power_up()
1267 SELIDX(state, (i | IAR_MCE)); in audiocs_power_up()
1268 ddi_put8(handle, &CS4231_IDR, state->cs_save[i]); in audiocs_power_up()
1269 (void) audiocs_poll_ready(state); in audiocs_power_up()
1272 SELIDX(state, 0); in audiocs_power_up()
1287 audiocs_power_down(CS_state_t *state) in audiocs_power_down() argument
1292 handle = state->cs_handles.cs_codec_hndl; in audiocs_power_down()
1302 SELIDX(state, i); in audiocs_power_down()
1303 state->cs_save[i] = ddi_get8(handle, &CS4231_IDR); in audiocs_power_down()
1307 CS4231_DMA_POWER(state, CS4231_PWR_OFF); in audiocs_power_down()
1321 audiocs_configure_input(CS_state_t *state) in audiocs_configure_input() argument
1327 ASSERT(mutex_owned(&state->cs_lock)); in audiocs_configure_input()
1329 inputs = state->cs_inputs->cc_val; in audiocs_configure_input()
1330 micboost = state->cs_micboost->cc_val; in audiocs_configure_input()
1331 r = (state->cs_igain->cc_val & 0xff); in audiocs_configure_input()
1332 l = ((state->cs_igain->cc_val & 0xff00) >> 8); in audiocs_configure_input()
1365 SELIDX(state, LADCI_REG); in audiocs_configure_input()
1366 PUTIDX(state, l, LADCI_VALID_MASK); in audiocs_configure_input()
1368 SELIDX(state, RADCI_REG); in audiocs_configure_input()
1369 PUTIDX(state, r, RADCI_VALID_MASK); in audiocs_configure_input()
1382 audiocs_configure_output(CS_state_t *state) in audiocs_configure_output() argument
1392 ASSERT(mutex_owned(&state->cs_lock)); in audiocs_configure_output()
1394 outputs = state->cs_outputs->cc_val; in audiocs_configure_output()
1397 SELIDX(state, MIOC_REG); in audiocs_configure_output()
1399 ANDIDX(state, ~MIOC_MONO_SPKR_MUTE, MIOC_VALID_MASK); in audiocs_configure_output()
1401 ORIDX(state, MIOC_MONO_SPKR_MUTE, MIOC_VALID_MASK); in audiocs_configure_output()
1403 SELIDX(state, PC_REG); in audiocs_configure_output()
1405 ANDIDX(state, ~PC_HEADPHONE_MUTE, PC_VALID_MASK); in audiocs_configure_output()
1407 ORIDX(state, PC_HEADPHONE_MUTE, PC_VALID_MASK); in audiocs_configure_output()
1409 SELIDX(state, PC_REG); in audiocs_configure_output()
1411 ANDIDX(state, ~PC_LINE_OUT_MUTE, PC_VALID_MASK); in audiocs_configure_output()
1413 ORIDX(state, PC_LINE_OUT_MUTE, PC_VALID_MASK); in audiocs_configure_output()
1417 mgain = cs4231_atten[((state->cs_mgain->cc_val * 255) / 100) & 0xff]; in audiocs_configure_output()
1418 SELIDX(state, LC_REG); in audiocs_configure_output()
1421 PUTIDX(state, LC_OFF, LC_VALID_MASK); in audiocs_configure_output()
1424 PUTIDX(state, (mgain << 2) | LC_LBE, LC_VALID_MASK); in audiocs_configure_output()
1428 l = ((state->cs_ogain->cc_val >> 8) & 0xff); in audiocs_configure_output()
1429 r = (state->cs_ogain->cc_val & 0xff); in audiocs_configure_output()
1441 SELIDX(state, LDACO_REG); in audiocs_configure_output()
1442 PUTIDX(state, l, LDAC0_VALID_MASK); in audiocs_configure_output()
1443 SELIDX(state, RDACO_REG); in audiocs_configure_output()
1444 PUTIDX(state, r, RDAC0_VALID_MASK); in audiocs_configure_output()
1464 CS_state_t *state = cc->cc_state; in audiocs_get_value() local
1466 mutex_enter(&state->cs_lock); in audiocs_get_value()
1468 mutex_exit(&state->cs_lock); in audiocs_get_value()
1490 CS_state_t *state = cc->cc_state; in audiocs_set_ogain() local
1497 mutex_enter(&state->cs_lock); in audiocs_set_ogain()
1499 audiocs_configure_output(state); in audiocs_set_ogain()
1500 mutex_exit(&state->cs_lock); in audiocs_set_ogain()
1521 CS_state_t *state = cc->cc_state; in audiocs_set_micboost() local
1523 mutex_enter(&state->cs_lock); in audiocs_set_micboost()
1525 audiocs_configure_input(state); in audiocs_set_micboost()
1526 mutex_exit(&state->cs_lock); in audiocs_set_micboost()
1547 CS_state_t *state = cc->cc_state; in audiocs_set_igain() local
1554 mutex_enter(&state->cs_lock); in audiocs_set_igain()
1556 audiocs_configure_input(state); in audiocs_set_igain()
1557 mutex_exit(&state->cs_lock); in audiocs_set_igain()
1579 CS_state_t *state = cc->cc_state; in audiocs_set_inputs() local
1581 if (val & ~(state->cs_imask)) in audiocs_set_inputs()
1584 mutex_enter(&state->cs_lock); in audiocs_set_inputs()
1586 audiocs_configure_input(state); in audiocs_set_inputs()
1587 mutex_exit(&state->cs_lock); in audiocs_set_inputs()
1609 CS_state_t *state = cc->cc_state; in audiocs_set_outputs() local
1611 if ((val & ~(state->cs_omod)) != in audiocs_set_outputs()
1612 (state->cs_omask & ~state->cs_omod)) in audiocs_set_outputs()
1615 mutex_enter(&state->cs_lock); in audiocs_set_outputs()
1617 audiocs_configure_output(state); in audiocs_set_outputs()
1618 mutex_exit(&state->cs_lock); in audiocs_set_outputs()
1640 CS_state_t *state = cc->cc_state; in audiocs_set_mgain() local
1645 mutex_enter(&state->cs_lock); in audiocs_set_mgain()
1647 audiocs_configure_output(state); in audiocs_set_mgain()
1648 mutex_exit(&state->cs_lock); in audiocs_set_mgain()
1673 CS_state_t *state = eng->ce_state; in audiocs_open() local
1674 dev_info_t *dip = state->cs_dip; in audiocs_open()
1685 audio_dev_warn(state->cs_adev, "power up failed"); in audiocs_open()
1710 CS_state_t *state = eng->ce_state; in audiocs_close() local
1712 (void) pm_idle_component(state->cs_dip, CS4231_COMPONENT); in audiocs_close()
1729 CS_state_t *state = eng->ce_state; in audiocs_stop() local
1732 mutex_enter(&state->cs_lock); in audiocs_stop()
1736 CS4231_DMA_STOP(state, eng); in audiocs_stop()
1741 SELIDX(state, INTC_REG); in audiocs_stop()
1742 ANDIDX(state, ~(eng->ce_codec_en), INTC_VALID_MASK); in audiocs_stop()
1743 mutex_exit(&state->cs_lock); in audiocs_stop()
1762 CS_state_t *state = eng->ce_state; in audiocs_start() local
1769 mutex_enter(&state->cs_lock); in audiocs_start()
1784 SELIDX(state, reg | IAR_MCE); in audiocs_start()
1785 PUTIDX(state, value, mask); in audiocs_start()
1787 if (audiocs_poll_ready(state) != DDI_SUCCESS) { in audiocs_start()
1789 } else if (CS4231_DMA_START(state, eng) != DDI_SUCCESS) { in audiocs_start()
1795 SELIDX(state, INTC_REG); in audiocs_start()
1796 ORIDX(state, eng->ce_codec_en, INTC_VALID_MASK); in audiocs_start()
1800 mutex_exit(&state->cs_lock); in audiocs_start()
1880 CS_state_t *state = eng->ce_state; in audiocs_count() local
1884 mutex_enter(&state->cs_lock); in audiocs_count()
1886 off = CS4231_DMA_ADDR(state, eng); in audiocs_count()
1912 CS4231_DMA_RELOAD(state, eng); in audiocs_count()
1913 mutex_exit(&state->cs_lock); in audiocs_count()
1951 audiocs_alloc_engine(CS_state_t *state, int num) in audiocs_alloc_engine() argument
1969 adev = state->cs_adev; in audiocs_alloc_engine()
1970 dip = state->cs_dip; in audiocs_alloc_engine()
1973 eng->ce_state = state; in audiocs_alloc_engine()
1995 state->cs_engines[num] = eng; in audiocs_alloc_engine()
1998 rc = ddi_dma_alloc_handle(dip, CS4231_DMA_ATTR(state), DDI_DMA_SLEEP, in audiocs_alloc_engine()
2048 CS_state_t *state = eng->ce_state; in audiocs_free_engine() local
2049 audio_dev_t *adev = state->cs_adev; in audiocs_free_engine()
2088 audiocs_poll_ready(CS_state_t *state) in audiocs_poll_ready() argument
2095 ASSERT(state->cs_regs != NULL); in audiocs_poll_ready()
2116 SELIDX(state, ESI_REG); in audiocs_poll_ready()
2151 audiocs_sel_index(CS_state_t *state, uint8_t reg, int n) in audiocs_sel_index() argument
2153 audiocs_sel_index(CS_state_t *state, uint8_t reg) in audiocs_sel_index()
2171 audio_dev_warn(state->cs_adev, in audiocs_sel_index()
2178 audio_dev_warn(state->cs_adev, in audiocs_sel_index()
2201 audiocs_put_index(CS_state_t *state, uint8_t val, uint8_t mask, int n) in audiocs_put_index() argument
2203 audiocs_put_index(CS_state_t *state, uint8_t val, uint8_t mask) in audiocs_put_index()
2224 audio_dev_warn(state->cs_adev, in audiocs_put_index()
2227 audio_dev_warn(state->cs_adev, in audiocs_put_index()
2230 audio_dev_warn(state->cs_adev, in audiocs_put_index()