int hr222_sub_init(struct pcxhr_mgr *mgr) { unsigned char reg; mgr->board_has_analog = 1; /* analog always available */ mgr->xlx_cfg = PCXHR_CFG_SYNCDSP_MASK; reg = PCXHR_INPB(mgr, PCXHR_XLX_STATUS); if (reg & PCXHR_STAT_MIC_CAPS) mgr->board_has_mic = 1; /* microphone available */ snd_printdd("MIC input available = %d\n", mgr->board_has_mic); /* reset codec */ PCXHR_OUTPB(mgr, PCXHR_DSP_RESET, PCXHR_DSP_RESET_DSP); msleep(5); mgr->dsp_reset = PCXHR_DSP_RESET_DSP | PCXHR_DSP_RESET_MUTE | PCXHR_DSP_RESET_CODEC; PCXHR_OUTPB(mgr, PCXHR_DSP_RESET, mgr->dsp_reset); /* hr222_write_gpo(mgr, 0); does the same */ msleep(5); /* config AKM */ hr222_config_akm(mgr, AKM_POWER_CONTROL_CMD); hr222_config_akm(mgr, AKM_CLOCK_INF_55K_CMD); hr222_config_akm(mgr, AKM_UNMUTE_CMD); hr222_config_akm(mgr, AKM_RESET_OFF_CMD); /* init micro boost */ hr222_micro_boost(mgr, 0); return 0; }
int hr222_sub_init(struct pcxhr_mgr *mgr) { unsigned char reg; mgr->board_has_analog = 1; mgr->xlx_cfg = PCXHR_CFG_SYNCDSP_MASK; reg = PCXHR_INPB(mgr, PCXHR_XLX_STATUS); if (reg & PCXHR_STAT_MIC_CAPS) mgr->board_has_mic = 1; snd_printdd("MIC input available = %d\n", mgr->board_has_mic); PCXHR_OUTPB(mgr, PCXHR_DSP_RESET, PCXHR_DSP_RESET_DSP); msleep(5); mgr->dsp_reset = PCXHR_DSP_RESET_DSP | PCXHR_DSP_RESET_MUTE | PCXHR_DSP_RESET_CODEC; PCXHR_OUTPB(mgr, PCXHR_DSP_RESET, mgr->dsp_reset); msleep(5); hr222_config_akm(mgr, AKM_POWER_CONTROL_CMD); hr222_config_akm(mgr, AKM_CLOCK_INF_55K_CMD); hr222_config_akm(mgr, AKM_UNMUTE_CMD); hr222_config_akm(mgr, AKM_RESET_OFF_CMD); hr222_micro_boost(mgr, 0); return 0; }