Skip to content

Commit

Permalink
ALSA: hdspm - Refactor sample rate acquisition
Browse files Browse the repository at this point in the history
This commit introduces hdspm_get_pll_freq() to avoid code duplication.
Reading the sample rate from the DDS register will be required by
upcoming code.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Adrian Knoth authored and Takashi Iwai committed Mar 11, 2013
1 parent 93c9d8a commit 3f7bf91
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions sound/pci/rme9652/hdspm.c
Original file line number Diff line number Diff line change
Expand Up @@ -969,6 +969,7 @@ static int snd_hdspm_create_pcm(struct snd_card *card,
struct hdspm *hdspm);

static inline void snd_hdspm_initialize_midi_flush(struct hdspm *hdspm);
static inline int hdspm_get_pll_freq(struct hdspm *hdspm);
static int hdspm_update_simple_mixer_controls(struct hdspm *hdspm);
static int hdspm_autosync_ref(struct hdspm *hdspm);
static int snd_hdspm_set_defaults(struct hdspm *hdspm);
Expand Down Expand Up @@ -1979,16 +1980,25 @@ static void hdspm_midi_tasklet(unsigned long arg)
/* get the system sample rate which is set */


static inline int hdspm_get_pll_freq(struct hdspm *hdspm)
{
unsigned int period, rate;

period = hdspm_read(hdspm, HDSPM_RD_PLL_FREQ);
rate = hdspm_calc_dds_value(hdspm, period);

return rate;
}

/**
* Calculate the real sample rate from the
* current DDS value.
**/
static int hdspm_get_system_sample_rate(struct hdspm *hdspm)
{
unsigned int period, rate;
unsigned int rate;

period = hdspm_read(hdspm, HDSPM_RD_PLL_FREQ);
rate = hdspm_calc_dds_value(hdspm, period);
rate = hdspm_get_pll_freq(hdspm);

if (rate > 207000) {
/* Unreasonable high sample rate as seen on PCI MADI cards. */
Expand Down

0 comments on commit 3f7bf91

Please sign in to comment.