summaryrefslogtreecommitdiffstats
path: root/libdha/sysdep/pci_ia64.c
diff options
context:
space:
mode:
authornick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-01-15 08:33:09 +0000
committernick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-01-15 08:33:09 +0000
commit5f3109cf1215c57e1dcada1fb27182240d01c79b (patch)
tree2a95aa1d83190202c9b3e0bf988080251bcb8645 /libdha/sysdep/pci_ia64.c
parent798a238afabbd6238469028da2109bd5d739a618 (diff)
downloadmpv-5f3109cf1215c57e1dcada1fb27182240d01c79b.tar.bz2
mpv-5f3109cf1215c57e1dcada1fb27182240d01c79b.tar.xz
Improved readability and new stuffs
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4165 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libdha/sysdep/pci_ia64.c')
-rw-r--r--libdha/sysdep/pci_ia64.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/libdha/sysdep/pci_ia64.c b/libdha/sysdep/pci_ia64.c
new file mode 100644
index 0000000000..a631887da3
--- /dev/null
+++ b/libdha/sysdep/pci_ia64.c
@@ -0,0 +1,60 @@
+/*
+ This file is based on:
+ $XFree86: xc/programs/Xserver/hw/xfree86/etc/scanpci.c,v 3.34.2.17 1998/11/10 11:55:40 dawes Exp $
+ Modified for readability by Nick Kurshev
+*/
+
+static int pci_config_type( void )
+{
+ unsigned long tmplong1, tmplong2;
+ unsigned char tmp1, tmp2;
+ int retval;
+ retval = 0;
+
+ outb(PCI_MODE2_ENABLE_REG, 0x00);
+ outb(PCI_MODE2_FORWARD_REG, 0x00);
+ tmp1 = inb(PCI_MODE2_ENABLE_REG);
+ tmp2 = inb(PCI_MODE2_FORWARD_REG);
+ if ((tmp1 == 0x00) && (tmp2 == 0x00)) {
+ retval = 2;
+ /*printf("PCI says configuration type 2\n");*/
+ } else {
+ tmplong1 = inl(PCI_MODE1_ADDRESS_REG);
+ outl(PCI_MODE1_ADDRESS_REG, PCI_EN);
+ tmplong2 = inl(PCI_MODE1_ADDRESS_REG);
+ outl(PCI_MODE1_ADDRESS_REG, tmplong1);
+ if (tmplong2 == PCI_EN) {
+ retval = 1;
+ /*printf("PCI says configuration type 1\n");*/
+ } else {
+ /*printf("No PCI !\n");*/
+ disable_os_io();
+ /*exit(1);*/
+ retval = 0xFFFF;
+ }
+ }
+ return retval;
+}
+
+static int pci_get_vendor(
+ unsigned char bus,
+ unsigned char dev,
+ int func)
+{
+ unsigned long config_cmd;
+ config_cmd = PCI_EN | (bus<<16) | (dev<<11) | (func<<8);
+ outl(PCI_MODE1_ADDRESS_REG, config_cmd);
+ return inl(PCI_MODE1_DATA_REG);
+}
+
+static long pci_config_read_long(
+ unsigned char bus,
+ unsigned char dev,
+ int func,
+ unsigned cmd)
+{
+ unsigned long config_cmd;
+ config_cmd = PCI_EN | (bus<<16) | (dev<<11) | (func<<8);
+ outl(PCI_MODE1_ADDRESS_REG, config_cmd | cmd);
+ return inl(PCI_MODE1_DATA_REG);
+}