Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci Enable auvia_reset_codec's code and wait until t...
details: https://anonhg.NetBSD.org/src/rev/bed9fdc7b74f
branches: trunk
changeset: 551957:bed9fdc7b74f
user: jmmv <jmmv%NetBSD.org@localhost>
date: Sun Sep 14 14:48:17 2003 +0000
description:
Enable auvia_reset_codec's code and wait until the card is available.
Fixes 'invalid codec' problems (at least with AD1980). Ok'ed by tsarna@.
diffstat:
sys/dev/pci/auvia.c | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)
diffs (49 lines):
diff -r 49dc4b4874f1 -r bed9fdc7b74f sys/dev/pci/auvia.c
--- a/sys/dev/pci/auvia.c Sun Sep 14 13:51:16 2003 +0000
+++ b/sys/dev/pci/auvia.c Sun Sep 14 14:48:17 2003 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: auvia.c,v 1.31 2003/05/03 18:11:32 wiz Exp $ */
+/* $NetBSD: auvia.c,v 1.32 2003/09/14 14:48:17 jmmv Exp $ */
/*-
* Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -47,7 +47,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: auvia.c,v 1.31 2003/05/03 18:11:32 wiz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: auvia.c,v 1.32 2003/09/14 14:48:17 jmmv Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -128,6 +128,7 @@
#define AUVIA_PCICONF_ACSGD 0x00000400 /* SGD enab */
#define AUVIA_PCICONF_ACFM 0x00000200 /* FM enab */
#define AUVIA_PCICONF_ACSB 0x00000100 /* SB enab */
+#define AUVIA_PCICONF_PRIVALID 0x00000001 /* primary codec rdy */
#define AUVIA_PLAY_BASE 0x00
#define AUVIA_RECORD_BASE 0x10
@@ -364,7 +365,7 @@
void
auvia_reset_codec(void *addr)
{
-#ifdef notyet /* XXX seems to make codec become unready... ??? */
+ int i;
struct auvia_softc *sc = addr;
pcireg_t r;
@@ -380,8 +381,11 @@
pci_conf_write(sc->sc_pc, sc->sc_pt, AUVIA_PCICONF_JUNK, r);
delay(200);
- auvia_waitready_codec(sc);
-#endif
+ for (i = 500000; i != 0 && !(pci_conf_read(sc->sc_pc, sc->sc_pt,
+ AUVIA_PCICONF_JUNK) & AUVIA_PCICONF_PRIVALID); i--)
+ DELAY(1);
+ if (i == 0)
+ printf("%s: codec reset timed out\n", sc->sc_dev.dv_xname);
}
Home |
Main Index |
Thread Index |
Old Index