summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound
diff options
context:
space:
mode:
authororion <orion@FreeBSD.org>2003-04-04 07:15:19 +0000
committerorion <orion@FreeBSD.org>2003-04-04 07:15:19 +0000
commit63feb030828623898c121d244076fc52a9785bc5 (patch)
tree0ae5ddb592104f5adbc05652e5a769d78933d5c1 /sys/dev/sound
parent8bcc5c907b67ddddfcfd2440f148e273323db7bc (diff)
downloadFreeBSD-src-63feb030828623898c121d244076fc52a9785bc5.zip
FreeBSD-src-63feb030828623898c121d244076fc52a9785bc5.tar.gz
Fix mismatch between bus address stored for buffer descriptors and
actual address of buffer descriptor. This should fix the reported calibration failures and subsequent speed problems with ich chipsets. Minor calibration comment updates.
Diffstat (limited to 'sys/dev/sound')
-rw-r--r--sys/dev/sound/pci/ich.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/dev/sound/pci/ich.c b/sys/dev/sound/pci/ich.c
index 1adff85..610dee4 100644
--- a/sys/dev/sound/pci/ich.c
+++ b/sys/dev/sound/pci/ich.c
@@ -249,7 +249,8 @@ ichchan_init(kobj_t obj, void *devinfo, struct snd_dbuf *b, struct pcm_channel *
ch->parent = sc;
ch->run = 0;
ch->dtbl = sc->dtbl + (ch->num * ICH_DTBL_LENGTH);
- ch->desc_addr = sc->desc_addr + (ch->num * ICH_DTBL_LENGTH);
+ ch->desc_addr = sc->desc_addr + (ch->num * ICH_DTBL_LENGTH) *
+ sizeof(struct ich_desc);
ch->blkcnt = 2;
ch->blksz = sc->bufsz / ch->blkcnt;
@@ -442,7 +443,9 @@ ich_intr(void *p)
}
/* ------------------------------------------------------------------------- */
-/* Sysctl to control ac97 speed (some boards overclocked ac97). */
+/* Sysctl to control ac97 speed (some boards appear to end up using
+ * XTAL_IN rather than BIT_CLK for link timing).
+ */
static int
ich_initsys(struct sc_info* sc)
@@ -458,7 +461,9 @@ ich_initsys(struct sc_info* sc)
}
/* -------------------------------------------------------------------- */
-/* Calibrate card (some boards are overclocked and need scaling) */
+/* Calibrate card to determine the clock source. The source maybe a
+ * function of the ac97 codec initialization code (to be investigated).
+ */
static
void ich_calibrate(void *arg)
OpenPOWER on IntegriCloud