• Home
  • Raw
  • Download

Lines Matching +full:clock +full:- +full:freq

20  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
30 * vx_modify_board_clock - tell the board that its clock has been modified
45 * vx_modify_board_inputs - resync audio inputs
57 * vx_read_one_cbit - read one bit from UER config
65 mutex_lock(&chip->lock); in vx_read_one_cbit()
66 if (chip->type >= VX_TYPE_VXPOCKET) { in vx_read_one_cbit()
75 mutex_unlock(&chip->lock); in vx_read_one_cbit()
80 * vx_write_one_cbit - write one bit to UER config
87 mutex_lock(&chip->lock); in vx_write_one_cbit()
95 mutex_unlock(&chip->lock); in vx_write_one_cbit()
99 * vx_read_uer_status - read the current UER status
107 int val, freq; in vx_read_uer_status() local
110 freq = 0; in vx_read_uer_status()
119 /* If clock is present, read frequency */ in vx_read_uer_status()
123 freq = 32000; in vx_read_uer_status()
126 freq = 44100; in vx_read_uer_status()
129 freq = 48000; in vx_read_uer_status()
140 return freq; in vx_read_uer_status()
145 * compute the sample clock value from frequency
153 * case 0x00000300: HexFreq -= 0x00000201 ;
157 * case 0x00000700: HexFreq = (dword) (((double) 28224000 / (double) (Frequency*2)) - 1)
158 * default : HexFreq = (dword) ((double) 28224000 / (double) (Frequency*4)) - 0x000001FF
161 static int vx_calc_clock_from_freq(struct vx_core *chip, int freq) in vx_calc_clock_from_freq() argument
165 if (snd_BUG_ON(freq <= 0)) in vx_calc_clock_from_freq()
168 hexfreq = (28224000 * 10) / freq; in vx_calc_clock_from_freq()
171 /* max freq = 55125 Hz */ in vx_calc_clock_from_freq()
176 return hexfreq - 0x00000201; in vx_calc_clock_from_freq()
178 return (hexfreq / 2) - 1; in vx_calc_clock_from_freq()
182 return 0x5fe; /* min freq = 6893 Hz */ in vx_calc_clock_from_freq()
187 * vx_change_clock_source - change the clock source
194 mutex_lock(&chip->lock); in vx_change_clock_source()
195 chip->ops->set_clock_source(chip, source); in vx_change_clock_source()
196 chip->clock_source = source; in vx_change_clock_source()
197 mutex_unlock(&chip->lock); in vx_change_clock_source()
204 * set the internal clock
206 void vx_set_internal_clock(struct vx_core *chip, unsigned int freq) in vx_set_internal_clock() argument
208 int clock; in vx_set_internal_clock() local
210 /* Get real clock value */ in vx_set_internal_clock()
211 clock = vx_calc_clock_from_freq(chip, freq); in vx_set_internal_clock()
212 snd_printdd(KERN_DEBUG "set internal clock to 0x%x from freq %d\n", clock, freq); in vx_set_internal_clock()
213 mutex_lock(&chip->lock); in vx_set_internal_clock()
215 vx_outb(chip, HIFREQ, (clock >> 8) & 0x0f); in vx_set_internal_clock()
216 vx_outb(chip, LOFREQ, clock & 0xff); in vx_set_internal_clock()
218 vx_outl(chip, HIFREQ, (clock >> 8) & 0x0f); in vx_set_internal_clock()
219 vx_outl(chip, LOFREQ, clock & 0xff); in vx_set_internal_clock()
221 mutex_unlock(&chip->lock); in vx_set_internal_clock()
227 * @bits: 32-bit status bits
233 if (chip->chip_status & VX_STAT_IS_STALE) in vx_set_iec958_status()
242 * vx_set_clock - change the clock and audio source if necessary
244 int vx_set_clock(struct vx_core *chip, unsigned int freq) in vx_set_clock() argument
248 if (chip->chip_status & VX_STAT_IS_STALE) in vx_set_clock()
254 if (chip->clock_mode == VX_CLOCK_MODE_EXTERNAL || in vx_set_clock()
255 (chip->clock_mode == VX_CLOCK_MODE_AUTO && in vx_set_clock()
256 chip->audio_source == VX_AUDIO_SRC_DIGITAL)) { in vx_set_clock()
257 if (chip->clock_source != UER_SYNC) { in vx_set_clock()
262 } else if (chip->clock_mode == VX_CLOCK_MODE_INTERNAL || in vx_set_clock()
263 (chip->clock_mode == VX_CLOCK_MODE_AUTO && in vx_set_clock()
264 chip->audio_source != VX_AUDIO_SRC_DIGITAL)) { in vx_set_clock()
265 if (chip->clock_source != INTERNAL_QUARTZ) { in vx_set_clock()
269 if (chip->freq == freq) in vx_set_clock()
271 vx_set_internal_clock(chip, freq); in vx_set_clock()
275 if (chip->freq == freq) in vx_set_clock()
277 chip->freq = freq; in vx_set_clock()
284 * vx_change_frequency - called from interrupt handler
288 int freq; in vx_change_frequency() local
290 if (chip->chip_status & VX_STAT_IS_STALE) in vx_change_frequency()
293 if (chip->clock_source == INTERNAL_QUARTZ) in vx_change_frequency()
298 freq = vx_read_uer_status(chip, &chip->uer_detected); in vx_change_frequency()
299 if (freq < 0) in vx_change_frequency()
300 return freq; in vx_change_frequency()
305 if (freq == 48000 || freq == 44100 || freq == 32000) in vx_change_frequency()
306 chip->freq_detected = freq; in vx_change_frequency()