summaryrefslogtreecommitdiffstats
path: root/sys/pci
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1999-04-13 20:22:34 +0000
committerpeter <peter@FreeBSD.org>1999-04-13 20:22:34 +0000
commitf9d40bf2df8300ce823dcffca1147560d58bc4ab (patch)
treeb54506928d570f6673a52871c24ffc636a56f6c7 /sys/pci
parent7d0299e0a54d7a75324ab8c53af872c54a8cb175 (diff)
downloadFreeBSD-src-f9d40bf2df8300ce823dcffca1147560d58bc4ab.zip
FreeBSD-src-f9d40bf2df8300ce823dcffca1147560d58bc4ab.tar.gz
Build the functionality of the wdc_p hack into the ide_pci.c code.
All it did was match a specific device ID and turn on a quirk for the wdc driver. Incidently, at line 1462 there is a return that prevents the generic ide_pci code from trying to look at the device. I'd be interested to know if we can take out the return and let the generic code "see" it. I've left the return in because that's the way it worked before. (Be sure to rerun config after cvsup or you'll get undefined files!)
Diffstat (limited to 'sys/pci')
-rw-r--r--sys/pci/ide_pci.c15
-rw-r--r--sys/pci/wdc_p.c73
2 files changed, 12 insertions, 76 deletions
diff --git a/sys/pci/ide_pci.c b/sys/pci/ide_pci.c
index feb54ee..524b873 100644
--- a/sys/pci/ide_pci.c
+++ b/sys/pci/ide_pci.c
@@ -26,7 +26,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ide_pci.c,v 1.29 1999/03/28 05:05:12 grog Exp $
+ * $Id: ide_pci.c,v 1.30 1999/04/13 19:38:12 peter Exp $
*/
#include "pci.h"
@@ -60,6 +60,7 @@
#endif
#define PROMISE_ULTRA33 0x4d33105a
+#define CMD640B_PCI_ID 0x06401095
struct ide_pci_cookie; /* structs vendor_fns, ide_pci_cookie are recursive */
@@ -1386,8 +1387,8 @@ ide_pci_probe(pcici_t tag, pcidi_t type)
return ("Acer Aladdin IV/V (M5229) Bus-master IDE controller");
if (type == 0x55131039)
return ("SiS 5591 Bus-master IDE Controller");
- if (type == 0x06401095) /* CMD 640B IDE */
- return NULL; /* Let wdc_p "find" it. */
+ if (type == CMD640B_PCI_ID)
+ return "CMD 640B IDE controller";
if (data & 0x8000)
return ("PCI IDE controller (busmaster capable)");
else
@@ -1455,6 +1456,14 @@ ide_pci_attach(pcici_t tag, int unit)
case 0x55131039: /* SiS 5591 */
vp = &vs_sis_5591;
break;
+ case CMD640B_PCI_ID: /* CMD 640B IDE */
+ wdc_pci(Q_CMD640B);
+/* I'm curious to know if we can disable this and remove the return */
+#if 1
+ return;
+#endif
+ vp = &vs_generic;
+ break;
default:
/* everybody else */
vp = &vs_generic;
diff --git a/sys/pci/wdc_p.c b/sys/pci/wdc_p.c
deleted file mode 100644
index 018908f..0000000
--- a/sys/pci/wdc_p.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *
- * Copyright (c) 1996 Wolfgang Helbig <helbig@ba-stuttgart.de>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice immediately at the beginning of the file, without modification,
- * this list of conditions, and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Absolutely no warranty of function or purpose is made by the author.
- * 4. Modifications may be freely made to this file if the above conditions
- * are met.
- *
- * $Id: wdc_p.c,v 1.4 1998/12/14 06:32:57 dillon Exp $
- */
-
-/*
- * The sole purpose of this code currently is to tell the ISA wdc driver,
- * whether there is a CMD640 IDE chip attached to the PCI bus.
- */
-
-#include "pci.h"
-#if NPCI > 0
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <pci/pcireg.h>
-#include <pci/pcivar.h>
-#include <i386/isa/wdc_p.h>
-
-/*
- * PCI-ID's of IDE-Controller
- */
-
-#define CMD640B_PCI_ID 0x06401095
-
-static const char* wdc_pci_probe __P((pcici_t tag, pcidi_t type));
-static void wdc_pci_attach __P((pcici_t config_id, int unit));
-
-static u_long wdc_pci_count = 0;
-
-static struct pci_device wdc_pci_driver = {
- "wdc",
- wdc_pci_probe,
- wdc_pci_attach,
- &wdc_pci_count,
- NULL
-};
-
-DATA_SET (pcidevice_set, wdc_pci_driver);
-
-static const char*
-wdc_pci_probe (pcici_t tag, pcidi_t type)
-{
- if (type == CMD640B_PCI_ID)
- return "CMD 640B IDE";
-
- return NULL;
-}
-
-static void
-wdc_pci_attach(pcici_t config_id, int unit)
-{
- if (pci_conf_read(config_id, PCI_ID_REG) == CMD640B_PCI_ID)
- wdc_pci(Q_CMD640B);
-}
-
-#endif /* NPCI > 0 */
OpenPOWER on IntegriCloud