diff options
Diffstat (limited to 'sound/pci/rme9652')
-rw-r--r-- | sound/pci/rme9652/hdspm.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c index 223c3d9cc69e..50cba5ce54fe 100644 --- a/sound/pci/rme9652/hdspm.c +++ b/sound/pci/rme9652/hdspm.c | |||
@@ -969,6 +969,7 @@ static int snd_hdspm_create_pcm(struct snd_card *card, | |||
969 | struct hdspm *hdspm); | 969 | struct hdspm *hdspm); |
970 | 970 | ||
971 | static inline void snd_hdspm_initialize_midi_flush(struct hdspm *hdspm); | 971 | static inline void snd_hdspm_initialize_midi_flush(struct hdspm *hdspm); |
972 | static inline int hdspm_get_pll_freq(struct hdspm *hdspm); | ||
972 | static int hdspm_update_simple_mixer_controls(struct hdspm *hdspm); | 973 | static int hdspm_update_simple_mixer_controls(struct hdspm *hdspm); |
973 | static int hdspm_autosync_ref(struct hdspm *hdspm); | 974 | static int hdspm_autosync_ref(struct hdspm *hdspm); |
974 | static int snd_hdspm_set_defaults(struct hdspm *hdspm); | 975 | static int snd_hdspm_set_defaults(struct hdspm *hdspm); |
@@ -1979,16 +1980,25 @@ static void hdspm_midi_tasklet(unsigned long arg) | |||
1979 | /* get the system sample rate which is set */ | 1980 | /* get the system sample rate which is set */ |
1980 | 1981 | ||
1981 | 1982 | ||
1983 | static inline int hdspm_get_pll_freq(struct hdspm *hdspm) | ||
1984 | { | ||
1985 | unsigned int period, rate; | ||
1986 | |||
1987 | period = hdspm_read(hdspm, HDSPM_RD_PLL_FREQ); | ||
1988 | rate = hdspm_calc_dds_value(hdspm, period); | ||
1989 | |||
1990 | return rate; | ||
1991 | } | ||
1992 | |||
1982 | /** | 1993 | /** |
1983 | * Calculate the real sample rate from the | 1994 | * Calculate the real sample rate from the |
1984 | * current DDS value. | 1995 | * current DDS value. |
1985 | **/ | 1996 | **/ |
1986 | static int hdspm_get_system_sample_rate(struct hdspm *hdspm) | 1997 | static int hdspm_get_system_sample_rate(struct hdspm *hdspm) |
1987 | { | 1998 | { |
1988 | unsigned int period, rate; | 1999 | unsigned int rate; |
1989 | 2000 | ||
1990 | period = hdspm_read(hdspm, HDSPM_RD_PLL_FREQ); | 2001 | rate = hdspm_get_pll_freq(hdspm); |
1991 | rate = hdspm_calc_dds_value(hdspm, period); | ||
1992 | 2002 | ||
1993 | if (rate > 207000) { | 2003 | if (rate > 207000) { |
1994 | /* Unreasonable high sample rate as seen on PCI MADI cards. */ | 2004 | /* Unreasonable high sample rate as seen on PCI MADI cards. */ |