Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Dec 1998 22:29:06 -0600
From:      Alan Cox <alc@cs.rice.edu>
To:        current@FreeBSD.ORG
Cc:        lcremean@tidalwave.net
Subject:   Re: cvs commit: src/sys/pci pcisupport.c
Message-ID:  <19981219222906.A6315@cs.rice.edu>

next in thread | raw e-mail | index | archive | help
> I've been poking around ide_pci.c, and it seems that not having explicit
> Acer Aladdin support in there not only screws with UDMA support, it also
> keeps the second channel from working correctly. This chipset fsr has its
> BMISTA_SIMPLEX flag set, and ide_pci.c is seeing this and assuming (wrongly)
> that the Aladdin IDE controller is single-channel. (Yes, it says it's just
> disabling DMA, but the code actually disables _everything_ on the second
> channel since wd.c uses ide_pci.c to probe for devices. It'd probably be a
> good idea to not check for SIMPLEX anymore.)

Try following patch

Index: /usr/src/sys/i386/isa/wd.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/isa/wd.c,v
retrieving revision 1.181
diff -c -r1.181 wd.c
*** wd.c        1998/12/15 09:16:57     1.181
--- wd.c        1998/12/16 08:01:53
***************
*** 313,320 ****
        interface = du->dk_ctrlr / 2;
        du->dk_interface = interface;
  #if !defined(DISABLE_PCI_IDE) && (NPCI > 0)
!       if (wddma[interface].wdd_candma) {
!               du->dk_dmacookie = wddma[interface].wdd_candma(dvp->id_iobase, du->dk_ctrlr);
                du->dk_port = dvp->id_iobase;
                du->dk_altport = wddma[interface].wdd_altiobase(du->dk_dmacookie);
        } else {
--- 313,321 ----
        interface = du->dk_ctrlr / 2;
        du->dk_interface = interface;
  #if !defined(DISABLE_PCI_IDE) && (NPCI > 0)
!       if ((wddma[interface].wdd_candma != NULL) &&
!           ((du->dk_dmacookie = wddma[interface].wdd_candma(dvp->id_iobase,
!                                                            du->dk_ctrlr)) != NULL)) {
                du->dk_port = dvp->id_iobase;
                du->dk_altport = wddma[interface].wdd_altiobase(du->dk_dmacookie);
        } else {

DMA will still be limited to devices on wdc0, but at least the devices
attached to wdc1 will be detected (and accessible).

Alan


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19981219222906.A6315>