ALSA: hda - disable delayed period-ack with bdl_pos_adj=0
authorTakashi Iwai <tiwai@suse.de>
Mon, 18 Aug 2008 15:11:09 +0000 (17:11 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 25 Aug 2008 07:57:07 +0000 (09:57 +0200)
When bdl_pos_adj=0 is given, disable the position-check and the delayed
period update mechanism.  Usually bdl_pos_adj=0 is set only for the
debugging purpose on really broken hardwares.  It's better to disable
the extra complexity in such a case.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
sound/pci/hda/hda_intel.c

index b2bcd94cf7a2d8f31561e0e2196e5f444863cb07..39f22318803d4650514a56f4c31f841a193cdad9 100644 (file)
@@ -1559,6 +1559,8 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev)
                        chip->position_fix = POS_FIX_POSBUF;
        }
 
+       if (!bdl_pos_adj[chip->dev_index])
+               return 1; /* no delayed ack */
        if (pos % azx_dev->period_bytes > azx_dev->period_bytes / 2)
                return 0; /* NG - it's below the period boundary */
        return 1; /* OK, it's fine */