| /* |
| * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. |
| * All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License along |
| * with this program; if not, write to the Free Software Foundation, Inc., |
| * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * |
| * File: tpci.h |
| * |
| * Purpose: PCI routines |
| * |
| * Author: Tevin Chen |
| * |
| * Date: May 21, 1996 |
| * |
| */ |
| |
| |
| #ifndef __TPCI_H__ |
| #define __TPCI_H__ |
| |
| #if !defined(__TTYPE_H__) |
| #include "ttype.h" |
| #endif |
| |
| |
| |
| |
| /*--------------------- Export Definitions -------------------------*/ |
| #define MAX_PCI_BUS 4 // max. # of PCI bus that we support |
| #define MAX_PCI_DEVICE 32 // max. # of PCI devices |
| |
| |
| // |
| // Registers in the PCI configuration space |
| // |
| #define PCI_REG_VENDOR_ID 0x00 // |
| #define PCI_REG_DEVICE_ID 0x02 // |
| #define PCI_REG_COMMAND 0x04 // |
| #define PCI_REG_STATUS 0x06 // |
| #define PCI_REG_REV_ID 0x08 // |
| #define PCI_REG_CLASS_CODE 0x09 // |
| #define PCI_REG_CACHELINE_SIZE 0x0C // |
| #define PCI_REG_LAT_TIMER 0x0D // |
| #define PCI_REG_HDR_TYPE 0x0E // |
| #define PCI_REG_BIST 0x0F // |
| |
| #define PCI_REG_BAR0 0x10 // |
| #define PCI_REG_BAR1 0x14 // |
| #define PCI_REG_BAR2 0x18 // |
| #define PCI_REG_CARDBUS_CIS_PTR 0x28 // |
| |
| #define PCI_REG_SUB_VEN_ID 0x2C // |
| #define PCI_REG_SUB_SYS_ID 0x2E // |
| #define PCI_REG_EXP_ROM_BAR 0x30 // |
| #define PCI_REG_CAP 0x34 // |
| |
| #define PCI_REG_INT_LINE 0x3C // |
| #define PCI_REG_INT_PIN 0x3D // |
| #define PCI_REG_MIN_GNT 0x3E // |
| #define PCI_REG_MAX_LAT 0x3F // |
| |
| #define PCI_REG_MAX_SIZE 0x100 // maximun total PCI registers |
| |
| |
| // |
| // Bits in the COMMAND register |
| // |
| #define COMMAND_BUSM 0x04 // |
| #define COMMAND_WAIT 0x80 // |
| |
| /*--------------------- Export Types ------------------------------*/ |
| |
| /*--------------------- Export Macros ------------------------------*/ |
| |
| // macro MAKE Bus Dev Fun ID into WORD |
| #define MAKE_BDF_TO_WORD(byBusId, byDevId, byFunId) \ |
| MAKEWORD( \ |
| ((((BYTE)(byDevId)) & 0x1F) << 3) + \ |
| (((BYTE)(byFunId)) & 0x07), \ |
| (byBusId) \ |
| ) |
| |
| #define GET_BUSID(wBusDevFunId) \ |
| HIBYTE(wBusDevFunId) |
| |
| #define GET_DEVID(wBusDevFunId) \ |
| (LOBYTE(wBusDevFunId) >> 3) |
| |
| #define GET_FUNID(wBusDevFunId) \ |
| (LOBYTE(wBusDevFunId) & 0x07) |
| |
| |
| /*--------------------- Export Classes ----------------------------*/ |
| |
| /*--------------------- Export Variables --------------------------*/ |
| |
| /*--------------------- Export Functions --------------------------*/ |
| |
| |
| |
| |
| #endif // __TPCI_H__ |
| |
| |