Date: Sun, 13 Dec 1998 16:16:10 +0100 (MET) From: Luigi Rizzo <luigi@labinfo.iet.unipi.it> To: multimedia@FreeBSD.ORG Subject: Re: Dell latitude sound.... (fwd) Message-ID: <199812131516.QAA02169@labinfo.iet.unipi.it>
next in thread | raw e-mail | index | archive | help
As Soren noticed, the BIOS in the Dell Latitude laptop maps the codec registers of the CS423x at 0x530 -- this is a bit unusual because these registers are usually at 0x534 (0x530 is the offset for the configuration registers, which are not present in most modern boards...). For historical reasons, the "pcm" driver looks for the codec registers at ioaddr+4, so in order to find the codec ion the Dell and probably other machines you either need to specify the base address as 0x52c, or apply the following patch to sys/i386/isa/snd/ad1848.c cheers luigi int mss_detect(struct isa_device *dev) { int i; u_char tmp, tmp1, tmp2 ; snddev_info *d = &(pcm_info[dev->id_unit]); char *name; + int retry = 1 ; + + again: d->io_base = dev->id_iobase; d->bd_flags |= BD_F_MCE_BIT ; ... for (i=0; i<10; i++) if (inb(io_Index_Addr(d)) & IA_BUSY) DELAY(10000); /* maybe busy, wait & retry later */ else break ; if ((inb(io_Index_Addr(d)) & IA_BUSY) != 0x00) { /* Not a AD1848 */ + if (retry) { + retry = 0 ; + dev->id_iobase = dev->id_iobase - 4 ; + goto again ; } BVDDB(printf("mss_detect error, busy still set (0x%02x)\n", inb(io_Index_Addr(d)))); return 0; } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-multimedia" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199812131516.QAA02169>