diff options
| author | Stefan Eßer <se@FreeBSD.org> | 1997-03-11 23:17:28 +0000 |
|---|---|---|
| committer | Stefan Eßer <se@FreeBSD.org> | 1997-03-11 23:17:28 +0000 |
| commit | e93e9e73927f48b89239dda88ddf67ca82fdea3e (patch) | |
| tree | e7b0a732ad5f71d75506ac8515b7fe84c5b53e7f /sys/pci | |
| parent | cf078de0079f8bcb4fdd904474dc66b3d7251c5a (diff) | |
Notes
Diffstat (limited to 'sys/pci')
| -rw-r--r-- | sys/pci/wdc_p.c | 79 |
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 */ |
