diff options
author | Yanteng Si <siyanteng@loongson.cn> | 2023-06-07 17:21:52 +0800 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2023-06-07 12:42:14 +0200 |
commit | a4d2b8537845c9a4f4b16dd31793af9c08548341 (patch) | |
tree | f3539fb9f8c077703aa31d179ddad08ea39b38a8 | |
parent | 942ccdd834f43b498abc3f022b73fb831d78f5f7 (diff) | |
download | linux-a4d2b8537845c9a4f4b16dd31793af9c08548341.tar.gz linux-a4d2b8537845c9a4f4b16dd31793af9c08548341.tar.bz2 linux-a4d2b8537845c9a4f4b16dd31793af9c08548341.zip |
ALSA: hda/intel: Workaround for WALLCLK register for loongson controller
On loongson controller, the value of WALLCLK register
is always 0, which is meaningless, so we return directly.
Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Signed-off-by: Yingkun Meng <mengyingkun@loongson.cn>
Acked-by: Huacai Chen <chenhuacai@loongson.cn>
Link: https://lore.kernel.org/r/185df71ef413ab190460eb377703214ee7288aeb.1686128807.git.siyanteng@loongson.cn
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/pci/hda/hda_intel.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index fc4787c7782a..ef831770ca7d 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -655,6 +655,13 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev) unsigned int pos; snd_pcm_uframes_t hwptr, target; + /* + * The value of the WALLCLK register is always 0 + * on the Loongson controller, so we return directly. + */ + if (chip->driver_type == AZX_DRIVER_LOONGSON) + return 1; + wallclk = azx_readl(chip, WALLCLK) - azx_dev->core.start_wallclk; if (wallclk < (azx_dev->core.period_wallclk * 2) / 3) return -1; /* bogus (too early) interrupt */ |