aboutsummaryrefslogtreecommitdiff
path: root/sys/pci
diff options
context:
space:
mode:
authorStefan Eßer <se@FreeBSD.org>1997-03-11 23:17:28 +0000
committerStefan Eßer <se@FreeBSD.org>1997-03-11 23:17:28 +0000
commite93e9e73927f48b89239dda88ddf67ca82fdea3e (patch)
treee7b0a732ad5f71d75506ac8515b7fe84c5b53e7f /sys/pci
parentcf078de0079f8bcb4fdd904474dc66b3d7251c5a (diff)
Notes
Diffstat (limited to 'sys/pci')
-rw-r--r--sys/pci/wdc_p.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/sys/pci/wdc_p.c b/sys/pci/wdc_p.c
new file mode 100644
index 000000000000..7f2cd707703c
--- /dev/null
+++ b/sys/pci/wdc_p.c
@@ -0,0 +1,79 @@
+/*
+ *
+ * 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$
+ */
+
+/*
+ * 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
+#ifdef CMD640
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/malloc.h>
+#include <sys/kernel.h>
+#include <pci/pcireg.h>
+#include <pci/pcivar.h>
+#include <i386/isa/wdc_p.h>
+
+#include "wdc.h"
+
+/*
+ * PCI-ID's of IDE-Controller
+ */
+
+#define CMD640B_PCI_ID 0x06401095
+
+static 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 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 /* CMD640 */
+#endif /* NPCI > 0 */