[ALSA] via82xx: add support for VIA VT8251 (AC'97)

Add support for VIA VT8251 AC'97. Includes a workaround which ensures sound
won't stop playing after one second of playback.

Signed-off-by: Bastiaan Jacques <b.jacques@planet.nl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c
index 0f171dd..1b740dd 100644
--- a/sound/pci/via82xx.c
+++ b/sound/pci/via82xx.c
@@ -123,6 +123,7 @@
 #define VIA_REV_8233A		0x40	/* 1 rec, 1 multi-pb, spdf */
 #define VIA_REV_8235		0x50	/* 2 rec, 4 pb, 1 multi-pb, spdif */
 #define VIA_REV_8237		0x60
+#define VIA_REV_8251		0x70
 
 /*
  *  Direct registers
@@ -863,8 +864,15 @@
 		status = inb(VIADEV_REG(viadev, OFFSET_STATUS));
 
 	if (!(status & VIA_REG_STAT_ACTIVE)) {
-		res = 0;
-		goto unlock;
+		/* An apparent bug in the 8251 is worked around by sending
+		 * a REG_CTRL_START. */
+		if (chip->revision == VIA_REV_8251)
+			snd_via82xx_pcm_trigger(substream,
+						SNDRV_PCM_TRIGGER_START);
+		else {
+			res = 0;
+			goto unlock;
+		}
 	}
 	if (count & 0xffffff) {
 		idx = count >> 24;
@@ -2313,6 +2321,7 @@
 	{ VIA_REV_8233A, "VIA 8233A", TYPE_VIA8233A },
 	{ VIA_REV_8235, "VIA 8235", TYPE_VIA8233 },
 	{ VIA_REV_8237, "VIA 8237", TYPE_VIA8233 },
+	{ VIA_REV_8251, "VIA 8251", TYPE_VIA8233 },
 };
 
 /*
@@ -2342,6 +2351,7 @@
 		{ .subvendor = 0x1043, .subdevice = 0x810d, .action = VIA_DXS_SRC }, /* ASUS */
 		{ .subvendor = 0x1043, .subdevice = 0x812a, .action = VIA_DXS_SRC    }, /* ASUS A8V Deluxe */ 
 		{ .subvendor = 0x1043, .subdevice = 0x8174, .action = VIA_DXS_SRC    }, /* ASUS */
+		{ .subvendor = 0x1043, .subdevice = 0x81b9, .action = VIA_DXS_SRC    }, /* ASUS A8V-MX */
 		{ .subvendor = 0x1071, .subdevice = 0x8375, .action = VIA_DXS_NO_VRA }, /* Vobis/Yakumo/Mitac notebook */
 		{ .subvendor = 0x1071, .subdevice = 0x8399, .action = VIA_DXS_NO_VRA }, /* Umax AB 595T (VIA K8N800A - VT8237) */
 		{ .subvendor = 0x10cf, .subdevice = 0x118e, .action = VIA_DXS_ENABLE }, /* FSC laptop */