diff options
author | bde <bde@FreeBSD.org> | 1999-01-11 23:35:01 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1999-01-11 23:35:01 +0000 |
commit | df01e48688fc7962b89828ca767a9e9e04fb56f4 (patch) | |
tree | 6c4aab42088c23f442ec664a005d9ac05b4db6fc /sys/pci/cy_pci.c | |
parent | 8369d989949cd7848e85f00813c1e46e4207a78f (diff) | |
download | FreeBSD-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.c | 22 |
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; |