diff options
author | orion <orion@FreeBSD.org> | 2003-04-04 07:15:19 +0000 |
---|---|---|
committer | orion <orion@FreeBSD.org> | 2003-04-04 07:15:19 +0000 |
commit | 63feb030828623898c121d244076fc52a9785bc5 (patch) | |
tree | 0ae5ddb592104f5adbc05652e5a769d78933d5c1 /sys/dev/sound | |
parent | 8bcc5c907b67ddddfcfd2440f148e273323db7bc (diff) | |
download | FreeBSD-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.c | 11 |
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) |