summaryrefslogtreecommitdiffstats
path: root/sys/pci/cy_pci.c
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1999-01-11 23:35:01 +0000
committerbde <bde@FreeBSD.org>1999-01-11 23:35:01 +0000
commitdf01e48688fc7962b89828ca767a9e9e04fb56f4 (patch)
tree6c4aab42088c23f442ec664a005d9ac05b4db6fc /sys/pci/cy_pci.c
parent8369d989949cd7848e85f00813c1e46e4207a78f (diff)
downloadFreeBSD-src-df01e48688fc7962b89828ca767a9e9e04fb56f4.zip
FreeBSD-src-df01e48688fc7962b89828ca767a9e9e04fb56f4.tar.gz
Updated for not-so-new version of Cyclom-Y PCI boards (with a custom
register for the PLX id). Merge the vendor's modification of the 2.2.* release version into -current for reference. Will be cleaned up in next commit. Obtained from: ftp://ftp.cyclades.com/pub/cyclades/cyclom-y/freebsd/3.0/cyy30.tar.gz
Diffstat (limited to 'sys/pci/cy_pci.c')
-rw-r--r--sys/pci/cy_pci.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/sys/pci/cy_pci.c b/sys/pci/cy_pci.c
index a406308..4245cdf 100644
--- a/sys/pci/cy_pci.c
+++ b/sys/pci/cy_pci.c
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: cy_pci.c,v 1.6 1997/09/02 20:06:24 bde Exp $
+ * $Id: cy_pci.c,v 1.7 1998/12/14 06:32:55 dillon Exp $
*/
/*
@@ -82,6 +82,7 @@ cy_attach(config_id, unit)
void *vaddr;
u_int32_t ioport;
int adapter;
+ u_int16_t plx_ver;
ioport = (u_int32_t) pci_conf_read(config_id, CY_PCI_BASE_ADDR1) & ~0x3;
paddr = pci_conf_read(config_id, CY_PCI_BASE_ADDR2) & ~0xf;
@@ -119,8 +120,23 @@ cy_attach(config_id, unit)
* Enable the "local" interrupt input to generate a
* PCI interrupt.
*/
- outw(ioport + CY_PLX_ICS, inw(ioport + CY_PLX_ICS) |
- CY_PLX_ICS_IENABLE | CY_PLX_ICS_LOCAL_IENABLE);
+ plx_ver = (*((char *)vaddr + PLX_VER)) & 0x0f;
+ switch (plx_ver) {
+ case PLX_9050:
+
+ outw(ioport + CY_PLX_9050_ICS,
+ inw(ioport + CY_PLX_9050_ICS) | CY_PLX_9050_ICS_IENABLE |
+ CY_PLX_9050_ICS_LOCAL_IENABLE);
+ break;
+
+ case PLX_9060:
+ case PLX_9080:
+ default: /* Old boards, use PLX_9060 */
+
+ outw(ioport + CY_PLX_9060_ICS, inw(ioport + CY_PLX_9060_ICS) |
+ CY_PLX_9060_ICS_IENABLE | CY_PLX_9060_ICS_LOCAL_IENABLE);
+ break;
+ }
return;
OpenPOWER on IntegriCloud