diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 45cd02f1ad880a33c564c0491139837e1d3b28d2..5f2d05a8d0eb0257ed6cdd4a88797c42b31c046b 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -1866,7 +1866,7 @@ static unsigned int azx_via_get_position(struct azx *chip,
 	unsigned int fifo_size;
 
 	link_pos = azx_sd_readl(azx_dev, SD_LPIB);
-	if (azx_dev->index >= 4) {
+	if (azx_dev->substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
 		/* Playback, no problem using link position */
 		return link_pos;
 	}