Lines Matching refs:mgr
49 #define PCXHR_INPB(mgr, x) inb((mgr)->port[PCXHR_DSP] + (x)) argument
50 #define PCXHR_OUTPB(mgr, x, data) outb((data), (mgr)->port[PCXHR_DSP] + (x)) argument
219 static void hr222_config_akm(struct pcxhr_mgr *mgr, unsigned short data) in hr222_config_akm() argument
223 PCXHR_INPB(mgr, PCXHR_XLX_HIFREQ); in hr222_config_akm()
226 PCXHR_OUTPB(mgr, PCXHR_XLX_DATA, in hr222_config_akm()
231 PCXHR_INPB(mgr, PCXHR_XLX_RUER); in hr222_config_akm()
235 static int hr222_set_hw_playback_level(struct pcxhr_mgr *mgr, in hr222_set_hw_playback_level() argument
252 hr222_config_akm(mgr, cmd); in hr222_set_hw_playback_level()
257 static int hr222_set_hw_capture_level(struct pcxhr_mgr *mgr, in hr222_set_hw_capture_level() argument
264 if (!mgr->capture_chips) in hr222_set_hw_capture_level()
272 PCXHR_INPB(mgr, PCXHR_XLX_DATA); /* activate input codec */ in hr222_set_hw_capture_level()
275 PCXHR_OUTPB(mgr, PCXHR_XLX_DATA, in hr222_set_hw_capture_level()
278 PCXHR_INPB(mgr, PCXHR_XLX_RUER); /* close input level codec */ in hr222_set_hw_capture_level()
282 static void hr222_micro_boost(struct pcxhr_mgr *mgr, int level);
284 int hr222_sub_init(struct pcxhr_mgr *mgr) in hr222_sub_init() argument
288 mgr->board_has_analog = 1; /* analog always available */ in hr222_sub_init()
289 mgr->xlx_cfg = PCXHR_CFG_SYNCDSP_MASK; in hr222_sub_init()
291 reg = PCXHR_INPB(mgr, PCXHR_XLX_STATUS); in hr222_sub_init()
293 mgr->board_has_mic = 1; /* microphone available */ in hr222_sub_init()
294 dev_dbg(&mgr->pci->dev, in hr222_sub_init()
295 "MIC input available = %d\n", mgr->board_has_mic); in hr222_sub_init()
298 PCXHR_OUTPB(mgr, PCXHR_DSP_RESET, in hr222_sub_init()
301 mgr->dsp_reset = PCXHR_DSP_RESET_DSP | in hr222_sub_init()
304 PCXHR_OUTPB(mgr, PCXHR_DSP_RESET, mgr->dsp_reset); in hr222_sub_init()
309 hr222_config_akm(mgr, AKM_POWER_CONTROL_CMD); in hr222_sub_init()
310 hr222_config_akm(mgr, AKM_CLOCK_INF_55K_CMD); in hr222_sub_init()
311 hr222_config_akm(mgr, AKM_UNMUTE_CMD); in hr222_sub_init()
312 hr222_config_akm(mgr, AKM_RESET_OFF_CMD); in hr222_sub_init()
315 hr222_micro_boost(mgr, 0); in hr222_sub_init()
351 int hr222_sub_set_clock(struct pcxhr_mgr *mgr, in hr222_sub_set_clock() argument
359 switch (mgr->use_clock_type) { in hr222_sub_set_clock()
365 mgr->xlx_cfg &= ~(PCXHR_CFG_CLOCKIN_SEL_MASK | in hr222_sub_set_clock()
369 mgr->xlx_cfg |= PCXHR_CFG_CLOCKIN_SEL_MASK; in hr222_sub_set_clock()
370 mgr->xlx_cfg &= ~PCXHR_CFG_CLOCK_UER1_SEL_MASK; in hr222_sub_set_clock()
373 if (!mgr->board_has_aes1) in hr222_sub_set_clock()
376 mgr->xlx_cfg |= (PCXHR_CFG_CLOCKIN_SEL_MASK | in hr222_sub_set_clock()
382 hr222_config_akm(mgr, AKM_MUTE_CMD); in hr222_sub_set_clock()
384 if (mgr->use_clock_type == HR22_CLOCK_TYPE_INTERNAL) { in hr222_sub_set_clock()
385 PCXHR_OUTPB(mgr, PCXHR_XLX_HIFREQ, pllreg >> 8); in hr222_sub_set_clock()
386 PCXHR_OUTPB(mgr, PCXHR_XLX_LOFREQ, pllreg & 0xff); in hr222_sub_set_clock()
390 PCXHR_OUTPB(mgr, PCXHR_XLX_CFG, mgr->xlx_cfg); in hr222_sub_set_clock()
394 if (mgr->codec_speed != speed) { in hr222_sub_set_clock()
395 mgr->codec_speed = speed; in hr222_sub_set_clock()
397 hr222_config_akm(mgr, AKM_CLOCK_INF_55K_CMD); in hr222_sub_set_clock()
399 hr222_config_akm(mgr, AKM_CLOCK_SUP_55K_CMD); in hr222_sub_set_clock()
402 mgr->sample_rate_real = realfreq; in hr222_sub_set_clock()
403 mgr->cur_clock_type = mgr->use_clock_type; in hr222_sub_set_clock()
408 hr222_config_akm(mgr, AKM_UNMUTE_CMD); in hr222_sub_set_clock()
410 dev_dbg(&mgr->pci->dev, "set_clock to %dHz (realfreq=%d pllreg=%x)\n", in hr222_sub_set_clock()
415 int hr222_get_external_clock(struct pcxhr_mgr *mgr, in hr222_get_external_clock() argument
429 } else if (clock_type == HR22_CLOCK_TYPE_AES_1 && mgr->board_has_aes1) { in hr222_get_external_clock()
436 dev_dbg(&mgr->pci->dev, in hr222_get_external_clock()
442 if ((PCXHR_INPB(mgr, PCXHR_XLX_CSUER) & mask) != mask) { in hr222_get_external_clock()
443 dev_dbg(&mgr->pci->dev, in hr222_get_external_clock()
449 PCXHR_OUTPB(mgr, PCXHR_XLX_STATUS, reg); /* calculate freq */ in hr222_get_external_clock()
454 if (mgr->last_reg_stat != reg) { in hr222_get_external_clock()
456 mgr->last_reg_stat = reg; in hr222_get_external_clock()
459 PCXHR_OUTPB(mgr, PCXHR_XLX_STATUS, reg); /* save */ in hr222_get_external_clock()
462 ticks = (unsigned int)PCXHR_INPB(mgr, PCXHR_XLX_CFG); in hr222_get_external_clock()
464 ticks |= (unsigned int)PCXHR_INPB(mgr, PCXHR_DSP_RESET); in hr222_get_external_clock()
502 dev_dbg(&mgr->pci->dev, "External clock is at %d Hz (measured %d Hz)\n", in hr222_get_external_clock()
509 int hr222_read_gpio(struct pcxhr_mgr *mgr, int is_gpi, int *value) in hr222_read_gpio() argument
512 unsigned char reg = PCXHR_INPB(mgr, PCXHR_XLX_STATUS); in hr222_read_gpio()
516 *value = (int)(mgr->dsp_reset & PCXHR_DSP_RESET_GPO_MASK) >> in hr222_read_gpio()
523 int hr222_write_gpo(struct pcxhr_mgr *mgr, int value) in hr222_write_gpo() argument
525 unsigned char reg = mgr->dsp_reset & ~PCXHR_DSP_RESET_GPO_MASK; in hr222_write_gpo()
530 PCXHR_OUTPB(mgr, PCXHR_DSP_RESET, reg); in hr222_write_gpo()
531 mgr->dsp_reset = reg; in hr222_write_gpo()
535 int hr222_manage_timecode(struct pcxhr_mgr *mgr, int enable) in hr222_manage_timecode() argument
538 mgr->dsp_reset |= PCXHR_DSP_RESET_SMPTE; in hr222_manage_timecode()
540 mgr->dsp_reset &= ~PCXHR_DSP_RESET_SMPTE; in hr222_manage_timecode()
542 PCXHR_OUTPB(mgr, PCXHR_DSP_RESET, mgr->dsp_reset); in hr222_manage_timecode()
566 return hr222_set_hw_capture_level(chip->mgr, in hr222_update_analog_audio_level()
574 return hr222_set_hw_playback_level(chip->mgr, channel, vol); in hr222_update_analog_audio_level()
590 chip->mgr->xlx_cfg &= ~(PCXHR_CFG_SRC_MASK | in hr222_set_audio_source()
595 chip->mgr->xlx_cfg |= PCXHR_CFG_SRC_MASK; in hr222_set_audio_source()
602 chip->mgr->xlx_cfg |= PCXHR_CFG_DATAIN_SEL_MASK; in hr222_set_audio_source()
603 if (chip->mgr->board_has_aes1) { in hr222_set_audio_source()
605 chip->mgr->xlx_cfg |= PCXHR_CFG_DATA_UER1_SEL_MASK; in hr222_set_audio_source()
631 PCXHR_OUTPB(chip->mgr, PCXHR_XLX_CFG, chip->mgr->xlx_cfg); in hr222_set_audio_source()
641 unsigned char mask = chip->mgr->board_has_aes1 ? in hr222_iec958_capture_byte()
645 PCXHR_OUTPB(chip->mgr, PCXHR_XLX_RUER, idx++); /* idx < 192 */ in hr222_iec958_capture_byte()
647 if (PCXHR_INPB(chip->mgr, PCXHR_XLX_CSUER) & mask) in hr222_iec958_capture_byte()
667 PCXHR_OUTPB(chip->mgr, PCXHR_XLX_RUER, idx); in hr222_iec958_update_byte()
669 PCXHR_OUTPB(chip->mgr, PCXHR_XLX_CSUER, new_bits&0x01 ? in hr222_iec958_update_byte()
680 static void hr222_micro_boost(struct pcxhr_mgr *mgr, int level) in hr222_micro_boost() argument
687 mgr->xlx_selmic &= ~PCXHR_SELMIC_PREAMPLI_MASK; in hr222_micro_boost()
688 mgr->xlx_selmic |= boost_mask; in hr222_micro_boost()
690 PCXHR_OUTPB(mgr, PCXHR_XLX_SELMIC, mgr->xlx_selmic); in hr222_micro_boost()
692 dev_dbg(&mgr->pci->dev, "hr222_micro_boost : set %x\n", boost_mask); in hr222_micro_boost()
695 static void hr222_phantom_power(struct pcxhr_mgr *mgr, int power) in hr222_phantom_power() argument
698 mgr->xlx_selmic |= PCXHR_SELMIC_PHANTOM_ALIM; in hr222_phantom_power()
700 mgr->xlx_selmic &= ~PCXHR_SELMIC_PHANTOM_ALIM; in hr222_phantom_power()
702 PCXHR_OUTPB(mgr, PCXHR_XLX_SELMIC, mgr->xlx_selmic); in hr222_phantom_power()
704 dev_dbg(&mgr->pci->dev, "hr222_phantom_power : set %d\n", power); in hr222_phantom_power()
726 mutex_lock(&chip->mgr->mixer_mutex); in hr222_mic_vol_get()
728 mutex_unlock(&chip->mgr->mixer_mutex); in hr222_mic_vol_get()
737 mutex_lock(&chip->mgr->mixer_mutex); in hr222_mic_vol_put()
743 mutex_unlock(&chip->mgr->mixer_mutex); in hr222_mic_vol_put()
776 mutex_lock(&chip->mgr->mixer_mutex); in hr222_mic_boost_get()
778 mutex_unlock(&chip->mgr->mixer_mutex); in hr222_mic_boost_get()
787 mutex_lock(&chip->mgr->mixer_mutex); in hr222_mic_boost_put()
791 hr222_micro_boost(chip->mgr, chip->mic_boost); in hr222_mic_boost_put()
793 mutex_unlock(&chip->mgr->mixer_mutex); in hr222_mic_boost_put()
816 mutex_lock(&chip->mgr->mixer_mutex); in hr222_phantom_power_get()
818 mutex_unlock(&chip->mgr->mixer_mutex); in hr222_phantom_power_get()
828 mutex_lock(&chip->mgr->mixer_mutex); in hr222_phantom_power_put()
831 hr222_phantom_power(chip->mgr, power); in hr222_phantom_power_put()
835 mutex_unlock(&chip->mgr->mixer_mutex); in hr222_phantom_power_put()
851 if (!chip->mgr->board_has_mic) in hr222_add_mic_controls()