aboutsummaryrefslogtreecommitdiff
path: root/sys/i386/pci/pcibios.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/i386/pci/pcibios.c')
-rw-r--r--sys/i386/pci/pcibios.c276
1 files changed, 0 insertions, 276 deletions
diff --git a/sys/i386/pci/pcibios.c b/sys/i386/pci/pcibios.c
deleted file mode 100644
index 2069387a594c..000000000000
--- a/sys/i386/pci/pcibios.c
+++ /dev/null
@@ -1,276 +0,0 @@
-/**************************************************************************
-**
-** $Id: pcibios.c,v 2.6 94/10/11 19:01:25 wolf Oct11 $
-**
-** #define for pci-bus bios functions.
-**
-** 386bsd / FreeBSD
-**
-**-------------------------------------------------------------------------
-**
-** Copyright (c) 1994 Wolfgang Stanglmeier. 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, 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. The name of the author may not be used to endorse or promote products
-** derived from this software without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-***************************************************************************
-*/
-
-#include <pci.h>
-#if NPCI > 0
-
-#if __FreeBSD__ >= 2
-#define HAS_CPUFUNC_H
-#endif
-
-#include <types.h>
-#include <i386/isa/isa.h>
-#include <i386/pci/pcireg.h>
-#ifdef HAS_CPUFUNC_H
-#include <i386/include/cpufunc.h>
-#endif
-
-extern int printf();
-
-static char pci_mode;
-
-
-/*--------------------------------------------------------------------
-**
-** Port access
-**
-**--------------------------------------------------------------------
-*/
-
-#ifndef HAS_CPUFUNC_H
-
-#undef inl
-#define inl(port) \
-({ u_long data; \
- __asm __volatile("inl %1, %0": "=a" (data): "d" ((u_short)(port))); \
- data; })
-
-
-#undef outl
-#define outl(port, data) \
-{__asm __volatile("outl %0, %1"::"a" ((u_long)(data)), "d" ((u_short)(port)));}
-
-
-#undef inb
-#define inb(port) \
-({ u_char data; \
- __asm __volatile("inb %1, %0": "=a" (data): "d" ((u_short)(port))); \
- data; })
-
-
-#undef outb
-#define outb(port, data) \
-{__asm __volatile("outb %0, %1"::"a" ((u_char)(data)), "d" ((u_short)(port)));}
-
-#endif /* HAS_CPUFUNC_H */
-
-/*--------------------------------------------------------------------
-**
-** Determine configuration mode
-**
-**--------------------------------------------------------------------
-*/
-
-
-#define CONF1_ENABLE 0x80000000ul
-#define CONF1_ADDR_PORT 0x0cf8
-#define CONF1_DATA_PORT 0x0cfc
-
-
-#define CONF2_ENABLE_PORT 0x0cf8
-#define CONF2_FORWARD_PORT 0x0cfa
-
-
-int pci_conf_mode (void)
-{
-#ifdef PCI_CONF_MODE
- return (PCI_CONF_MODE)
-#else /* PCI_CONF_MODE */
- u_long result, oldval;
-
- /*---------------------------------------
- ** Configuration mode 2 ?
- **---------------------------------------
- */
-
- outb (CONF2_ENABLE_PORT, 0);
- outb (CONF2_FORWARD_PORT, 0);
- if (!inb (CONF2_ENABLE_PORT) && !inb (CONF2_FORWARD_PORT)) {
- pci_mode = 2;
- return (2);
- };
-
- /*---------------------------------------
- ** Configuration mode 1 ?
- **---------------------------------------
- */
-
- oldval = inl (CONF1_ADDR_PORT);
- outl (CONF1_ADDR_PORT, CONF1_ENABLE);
- result = inl (CONF1_ADDR_PORT);
- outl (CONF1_ADDR_PORT, oldval);
-
- if (result == CONF1_ENABLE) {
- pci_mode = 1;
- return (1);
- };
-
- /*---------------------------------------
- ** No PCI bus available.
- **---------------------------------------
- */
- return (0);
-#endif /* PCI_CONF_MODE */
-}
-
-/*--------------------------------------------------------------------
-**
-** Build a pcitag from bus, device and function number
-**
-**--------------------------------------------------------------------
-*/
-
-pcici_t pcitag (unsigned char bus,
- unsigned char device,
- unsigned char func)
-{
- pcici_t tag;
-
- tag.cfg1 = 0;
- if (device >= 32) return tag;
- if (func >= 8) return tag;
-
- switch (pci_mode) {
-
- case 1:
- tag.cfg1 = CONF1_ENABLE
- | (((u_long) bus ) << 16ul)
- | (((u_long) device) << 11ul)
- | (((u_long) func ) << 8ul);
- break;
- case 2:
- if (device >= 16) break;
- tag.cfg2.port = 0xc000 | (device << 8ul);
- tag.cfg2.enable = 0xf1 | (func << 1ul);
- tag.cfg2.forward = bus;
- break;
- };
- return tag;
-}
-
-/*--------------------------------------------------------------------
-**
-** Read register from configuration space.
-**
-**--------------------------------------------------------------------
-*/
-
-
-u_long pci_conf_read (pcici_t tag, u_long reg)
-{
- u_long addr, data = 0;
-
- if (!tag.cfg1) return (0xfffffffful);
-
- switch (pci_mode) {
-
- case 1:
- addr = tag.cfg1 | (reg & 0xfc);
-#ifdef PCI_DEBUG
- printf ("pci_conf_read(1): addr=%x ", addr);
-#endif
- outl (CONF1_ADDR_PORT, addr);
- data = inl (CONF1_DATA_PORT);
- outl (CONF1_ADDR_PORT, 0 );
- break;
-
- case 2:
- addr = tag.cfg2.port | (reg & 0xfc);
-#ifdef PCI_DEBUG
- printf ("pci_conf_read(2): addr=%x ", addr);
-#endif
- outb (CONF2_ENABLE_PORT , tag.cfg2.enable );
- outb (CONF2_FORWARD_PORT, tag.cfg2.forward);
-
- data = inl ((u_short) addr);
-
- outb (CONF2_ENABLE_PORT, 0);
- outb (CONF2_FORWARD_PORT, 0);
- break;
- };
-
-#ifdef PCI_DEBUG
- printf ("data=%x\n", data);
-#endif
-
- return (data);
-}
-
-/*--------------------------------------------------------------------
-**
-** Write register into configuration space.
-**
-**--------------------------------------------------------------------
-*/
-
-
-void pci_conf_write (pcici_t tag, u_long reg, u_long data)
-{
- u_long addr;
-
- if (!tag.cfg1) return;
-
- switch (pci_mode) {
-
- case 1:
- addr = tag.cfg1 | (reg & 0xfc);
-#ifdef PCI_DEBUG
- printf ("pci_conf_write(1): addr=%x data=%x\n",
- addr, data);
-#endif
- outl (CONF1_ADDR_PORT, addr);
- outl (CONF1_DATA_PORT, data);
- outl (CONF1_ADDR_PORT, 0 );
- break;
-
- case 2:
- addr = tag.cfg2.port | (reg & 0xfc);
-#ifdef PCI_DEBUG
- printf ("pci_conf_write(2): addr=%x data=%x\n",
- addr, data);
-#endif
- outb (CONF2_ENABLE_PORT, tag.cfg2.enable);
- outb (CONF2_FORWARD_PORT, tag.cfg2.forward);
-
- outl ((u_short) addr, data);
-
- outb (CONF2_ENABLE_PORT, 0);
- outb (CONF2_FORWARD_PORT, 0);
- break;
- };
-}
-#endif /* NPCI > 0 */