Changeset 604 for GPL/trunk/include/linux/pci.h
- Timestamp:
- Jan 8, 2018, 2:07:36 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GPL/trunk/include/linux/pci.h
r598 r604 1 1 /* 2 * 3 * 4 * 2 * PCI defines and function prototypes 3 * Copyright 1994, Drew Eckhardt 4 * Copyright 1997--1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz> 5 5 * 6 * 7 * 6 * For more information, please consult the following manuals (look at 7 * http://www.pcisig.com/ for how to get them): 8 8 * 9 * 10 * 11 * 12 * 9 * PCI BIOS Specification 10 * PCI Local Bus Specification 11 * PCI to PCI Bridge Specification 12 * PCI System Design Guide 13 13 */ 14 14 … … 23 23 * of which the first 64 bytes are standardized as follows: 24 24 */ 25 #define PCI_VENDOR_ID 0x00/* 16 bits */26 #define PCI_DEVICE_ID 0x02/* 16 bits */27 #define PCI_COMMAND 0x04/* 16 bits */28 #define PCI_COMMAND_IO 0x1/* Enable response in I/O space */29 #define PCI_COMMAND_MEMORY 0x2/* Enable response in Memory space */30 #define PCI_COMMAND_MASTER 0x4/* Enable bus mastering */31 #define PCI_COMMAND_SPECIAL 0x8/* Enable response to special cycles */32 #define PCI_COMMAND_INVALIDATE 0x10/* Use memory write and invalidate */33 #define PCI_COMMAND_VGA_PALETTE 0x20 34 #define PCI_COMMAND_PARITY 0x40/* Enable parity checking */35 #define PCI_COMMAND_WAIT 0x80/* Enable address/data stepping */36 #define PCI_COMMAND_SERR 0x100/* Enable SERR */37 #define PCI_COMMAND_FAST_BACK 0x200/* Enable back-to-back writes */38 39 #define PCI_STATUS 0x06/* 16 bits */40 #define PCI_STATUS_CAP_LIST 0x10/* Support Capability List */41 #define PCI_STATUS_66MHZ 0x20/* Support 66 Mhz PCI 2.1 bus */42 #define PCI_STATUS_UDF 0x40/* Support User Definable Features [obsolete] */43 #define PCI_STATUS_FAST_BACK 0x80/* Accept fast-back to back */44 #define PCI_STATUS_PARITY 0x100/* Detected parity error */45 #define PCI_STATUS_DEVSEL_MASK 0x600/* DEVSEL timing */46 #define PCI_STATUS_DEVSEL_FAST 0x00025 #define PCI_VENDOR_ID 0x00 /* 16 bits */ 26 #define PCI_DEVICE_ID 0x02 /* 16 bits */ 27 #define PCI_COMMAND 0x04 /* 16 bits */ 28 #define PCI_COMMAND_IO 0x1 /* Enable response in I/O space */ 29 #define PCI_COMMAND_MEMORY 0x2 /* Enable response in Memory space */ 30 #define PCI_COMMAND_MASTER 0x4 /* Enable bus mastering */ 31 #define PCI_COMMAND_SPECIAL 0x8 /* Enable response to special cycles */ 32 #define PCI_COMMAND_INVALIDATE 0x10 /* Use memory write and invalidate */ 33 #define PCI_COMMAND_VGA_PALETTE 0x20 /* Enable palette snooping */ 34 #define PCI_COMMAND_PARITY 0x40 /* Enable parity checking */ 35 #define PCI_COMMAND_WAIT 0x80 /* Enable address/data stepping */ 36 #define PCI_COMMAND_SERR 0x100 /* Enable SERR */ 37 #define PCI_COMMAND_FAST_BACK 0x200 /* Enable back-to-back writes */ 38 39 #define PCI_STATUS 0x06 /* 16 bits */ 40 #define PCI_STATUS_CAP_LIST 0x10 /* Support Capability List */ 41 #define PCI_STATUS_66MHZ 0x20 /* Support 66 Mhz PCI 2.1 bus */ 42 #define PCI_STATUS_UDF 0x40 /* Support User Definable Features [obsolete] */ 43 #define PCI_STATUS_FAST_BACK 0x80 /* Accept fast-back to back */ 44 #define PCI_STATUS_PARITY 0x100 /* Detected parity error */ 45 #define PCI_STATUS_DEVSEL_MASK 0x600 /* DEVSEL timing */ 46 #define PCI_STATUS_DEVSEL_FAST 0x000 47 47 #define PCI_STATUS_DEVSEL_MEDIUM 0x200 48 48 #define PCI_STATUS_DEVSEL_SLOW 0x400 … … 53 53 #define PCI_STATUS_DETECTED_PARITY 0x8000 /* Set on parity error */ 54 54 55 #define PCI_CLASS_REVISION 0x08/* High 24 bits are class, low 856 55 #define PCI_CLASS_REVISION 0x08 /* High 24 bits are class, low 8 56 revision */ 57 57 #define PCI_REVISION_ID 0x08 /* Revision ID */ 58 58 #define PCI_CLASS_PROG 0x09 /* Reg. Level Programming Interface */ 59 59 #define PCI_CLASS_DEVICE 0x0a /* Device class */ 60 60 61 #define PCI_CACHE_LINE_SIZE 0x0c/* 8 bits */62 #define PCI_LATENCY_TIMER 0x0d/* 8 bits */63 #define PCI_HEADER_TYPE 0x0e/* 8 bits */64 #define PCI_HEADER_TYPE_NORMAL 61 #define PCI_CACHE_LINE_SIZE 0x0c /* 8 bits */ 62 #define PCI_LATENCY_TIMER 0x0d /* 8 bits */ 63 #define PCI_HEADER_TYPE 0x0e /* 8 bits */ 64 #define PCI_HEADER_TYPE_NORMAL 0 65 65 #define PCI_HEADER_TYPE_BRIDGE 1 66 66 #define PCI_HEADER_TYPE_CARDBUS 2 67 67 68 #define PCI_BIST 0x0f/* 8 bits */69 #define PCI_BIST_CODE_MASK 0x0f/* Return result */70 #define PCI_BIST_START 0x40/* 1 to start BIST, 2 secs or less */71 #define PCI_BIST_CAPABLE 0x80/* 1 if BIST capable */68 #define PCI_BIST 0x0f /* 8 bits */ 69 #define PCI_BIST_CODE_MASK 0x0f /* Return result */ 70 #define PCI_BIST_START 0x40 /* 1 to start BIST, 2 secs or less */ 71 #define PCI_BIST_CAPABLE 0x80 /* 1 if BIST capable */ 72 72 73 73 /* … … 77 77 * 1 bits are decoded. 78 78 */ 79 #define PCI_BASE_ADDRESS_0 0x10/* 32 bits */80 #define PCI_BASE_ADDRESS_1 0x14/* 32 bits [htype 0,1 only] */81 #define PCI_BASE_ADDRESS_2 0x18/* 32 bits [htype 0 only] */82 #define PCI_BASE_ADDRESS_3 0x1c/* 32 bits */83 #define PCI_BASE_ADDRESS_4 0x20/* 32 bits */84 #define PCI_BASE_ADDRESS_5 0x24/* 32 bits */85 #define PCI_BASE_ADDRESS_SPACE 0x01/* 0 = memory, 1 = I/O */79 #define PCI_BASE_ADDRESS_0 0x10 /* 32 bits */ 80 #define PCI_BASE_ADDRESS_1 0x14 /* 32 bits [htype 0,1 only] */ 81 #define PCI_BASE_ADDRESS_2 0x18 /* 32 bits [htype 0 only] */ 82 #define PCI_BASE_ADDRESS_3 0x1c /* 32 bits */ 83 #define PCI_BASE_ADDRESS_4 0x20 /* 32 bits */ 84 #define PCI_BASE_ADDRESS_5 0x24 /* 32 bits */ 85 #define PCI_BASE_ADDRESS_SPACE 0x01 /* 0 = memory, 1 = I/O */ 86 86 #define PCI_BASE_ADDRESS_SPACE_IO 0x01 87 87 #define PCI_BASE_ADDRESS_SPACE_MEMORY 0x00 88 88 #define PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06 89 #define PCI_BASE_ADDRESS_MEM_TYPE_32 0x00/* 32 bit address */90 #define PCI_BASE_ADDRESS_MEM_TYPE_1M 0x02/* Below 1M [obsolete] */91 #define PCI_BASE_ADDRESS_MEM_TYPE_64 0x04/* 64 bit address */92 #define PCI_BASE_ADDRESS_MEM_PREFETCH 0x08/* prefetchable? */93 #define PCI_BASE_ADDRESS_MEM_MASK 94 #define PCI_BASE_ADDRESS_IO_MASK 89 #define PCI_BASE_ADDRESS_MEM_TYPE_32 0x00 /* 32 bit address */ 90 #define PCI_BASE_ADDRESS_MEM_TYPE_1M 0x02 /* Below 1M [obsolete] */ 91 #define PCI_BASE_ADDRESS_MEM_TYPE_64 0x04 /* 64 bit address */ 92 #define PCI_BASE_ADDRESS_MEM_PREFETCH 0x08 /* prefetchable? */ 93 #define PCI_BASE_ADDRESS_MEM_MASK (~0x0fUL) 94 #define PCI_BASE_ADDRESS_IO_MASK (~0x03UL) 95 95 /* bit 1 is reserved if address_space = 1 */ 96 96 97 97 /* Header type 0 (normal devices) */ 98 #define PCI_CARDBUS_CIS 99 #define PCI_SUBSYSTEM_VENDOR_ID 100 #define PCI_SUBSYSTEM_ID 101 #define PCI_ROM_ADDRESS 0x30/* Bits 31..11 are address, 10..1 reserved */102 #define PCI_ROM_ADDRESS_ENABLE 103 #define PCI_ROM_ADDRESS_MASK 104 105 #define PCI_CAPABILITY_LIST 0x34/* Offset of first capability list entry */98 #define PCI_CARDBUS_CIS 0x28 99 #define PCI_SUBSYSTEM_VENDOR_ID 0x2c 100 #define PCI_SUBSYSTEM_ID 0x2e 101 #define PCI_ROM_ADDRESS 0x30 /* Bits 31..11 are address, 10..1 reserved */ 102 #define PCI_ROM_ADDRESS_ENABLE 0x01 103 #define PCI_ROM_ADDRESS_MASK (~0x7ffUL) 104 105 #define PCI_CAPABILITY_LIST 0x34 /* Offset of first capability list entry */ 106 106 107 107 /* 0x35-0x3b are reserved */ 108 #define PCI_INTERRUPT_LINE 0x3c/* 8 bits */109 #define PCI_INTERRUPT_PIN 0x3d/* 8 bits */110 #define PCI_MIN_GNT 0x3e/* 8 bits */111 #define PCI_MAX_LAT 0x3f/* 8 bits */108 #define PCI_INTERRUPT_LINE 0x3c /* 8 bits */ 109 #define PCI_INTERRUPT_PIN 0x3d /* 8 bits */ 110 #define PCI_MIN_GNT 0x3e /* 8 bits */ 111 #define PCI_MAX_LAT 0x3f /* 8 bits */ 112 112 113 113 /* Header type 1 (PCI-to-PCI bridges) */ 114 #define PCI_PRIMARY_BUS 0x18/* Primary bus number */115 #define PCI_SECONDARY_BUS 0x19/* Secondary bus number */116 #define PCI_SUBORDINATE_BUS 0x1a/* Highest bus number behind the bridge */117 #define PCI_SEC_LATENCY_TIMER 0x1b/* Latency timer for secondary interface */118 #define PCI_IO_BASE 0x1c/* I/O range behind the bridge */119 #define PCI_IO_LIMIT 120 #define PCI_IO_RANGE_TYPE_MASK 0x0f/* I/O bridging type */121 #define PCI_IO_RANGE_TYPE_16 122 #define PCI_IO_RANGE_TYPE_32 123 #define PCI_IO_RANGE_MASK 124 #define PCI_SEC_STATUS 0x1e/* Secondary status register, only bit 14 used */125 #define PCI_MEMORY_BASE 0x20/* Memory range behind */126 #define PCI_MEMORY_LIMIT 114 #define PCI_PRIMARY_BUS 0x18 /* Primary bus number */ 115 #define PCI_SECONDARY_BUS 0x19 /* Secondary bus number */ 116 #define PCI_SUBORDINATE_BUS 0x1a /* Highest bus number behind the bridge */ 117 #define PCI_SEC_LATENCY_TIMER 0x1b /* Latency timer for secondary interface */ 118 #define PCI_IO_BASE 0x1c /* I/O range behind the bridge */ 119 #define PCI_IO_LIMIT 0x1d 120 #define PCI_IO_RANGE_TYPE_MASK 0x0f /* I/O bridging type */ 121 #define PCI_IO_RANGE_TYPE_16 0x00 122 #define PCI_IO_RANGE_TYPE_32 0x01 123 #define PCI_IO_RANGE_MASK ~0x0f 124 #define PCI_SEC_STATUS 0x1e /* Secondary status register, only bit 14 used */ 125 #define PCI_MEMORY_BASE 0x20 /* Memory range behind */ 126 #define PCI_MEMORY_LIMIT 0x22 127 127 #define PCI_MEMORY_RANGE_TYPE_MASK 0x0f 128 #define PCI_MEMORY_RANGE_MASK 129 #define PCI_PREF_MEMORY_BASE 0x24/* Prefetchable memory range behind */130 #define PCI_PREF_MEMORY_LIMIT 128 #define PCI_MEMORY_RANGE_MASK ~0x0f 129 #define PCI_PREF_MEMORY_BASE 0x24 /* Prefetchable memory range behind */ 130 #define PCI_PREF_MEMORY_LIMIT 0x26 131 131 #define PCI_PREF_RANGE_TYPE_MASK 0x0f 132 #define PCI_PREF_RANGE_TYPE_32 133 #define PCI_PREF_RANGE_TYPE_64 134 #define PCI_PREF_RANGE_MASK 135 #define PCI_PREF_BASE_UPPER32 0x28/* Upper half of prefetchable memory range */136 #define PCI_PREF_LIMIT_UPPER32 137 #define PCI_IO_BASE_UPPER16 0x30/* Upper half of I/O addresses */138 #define PCI_IO_LIMIT_UPPER16 132 #define PCI_PREF_RANGE_TYPE_32 0x00 133 #define PCI_PREF_RANGE_TYPE_64 0x01 134 #define PCI_PREF_RANGE_MASK ~0x0f 135 #define PCI_PREF_BASE_UPPER32 0x28 /* Upper half of prefetchable memory range */ 136 #define PCI_PREF_LIMIT_UPPER32 0x2c 137 #define PCI_IO_BASE_UPPER16 0x30 /* Upper half of I/O addresses */ 138 #define PCI_IO_LIMIT_UPPER16 0x32 139 139 /* 0x34 same as for htype 0 */ 140 140 /* 0x35-0x3b is reserved */ 141 #define PCI_ROM_ADDRESS1 0x38/* Same as PCI_ROM_ADDRESS, but for htype 1 */141 #define PCI_ROM_ADDRESS1 0x38 /* Same as PCI_ROM_ADDRESS, but for htype 1 */ 142 142 /* 0x3c-0x3d are same as for htype 0 */ 143 #define PCI_BRIDGE_CONTROL 144 #define PCI_BRIDGE_CTL_PARITY 0x01/* Enable parity detection on secondary interface */145 #define PCI_BRIDGE_CTL_SERR 0x02/* The same for SERR forwarding */146 #define PCI_BRIDGE_CTL_NO_ISA 0x04/* Disable bridging of ISA ports */147 #define PCI_BRIDGE_CTL_VGA 0x08/* Forward VGA addresses */143 #define PCI_BRIDGE_CONTROL 0x3e 144 #define PCI_BRIDGE_CTL_PARITY 0x01 /* Enable parity detection on secondary interface */ 145 #define PCI_BRIDGE_CTL_SERR 0x02 /* The same for SERR forwarding */ 146 #define PCI_BRIDGE_CTL_NO_ISA 0x04 /* Disable bridging of ISA ports */ 147 #define PCI_BRIDGE_CTL_VGA 0x08 /* Forward VGA addresses */ 148 148 #define PCI_BRIDGE_CTL_MASTER_ABORT 0x20 /* Report master aborts */ 149 #define PCI_BRIDGE_CTL_BUS_RESET 0x40 150 #define PCI_BRIDGE_CTL_FAST_BACK 0x80 149 #define PCI_BRIDGE_CTL_BUS_RESET 0x40 /* Secondary bus reset */ 150 #define PCI_BRIDGE_CTL_FAST_BACK 0x80 /* Fast Back2Back enabled on secondary interface */ 151 151 152 152 /* Header type 2 (CardBus bridges) */ 153 153 /* 0x14-0x15 reserved */ 154 154 #define PCI_CB_CAPABILITY_LIST 0x14 155 #define PCI_CB_SEC_STATUS 0x16/* Secondary status */156 #define PCI_CB_PRIMARY_BUS 0x18/* PCI bus number */157 #define PCI_CB_CARD_BUS 0x19/* CardBus bus number */158 #define PCI_CB_SUBORDINATE_BUS 0x1a/* Subordinate bus number */159 #define PCI_CB_LATENCY_TIMER 0x1b/* CardBus latency timer */160 #define PCI_CB_MEMORY_BASE_0 161 #define PCI_CB_MEMORY_LIMIT_0 162 #define PCI_CB_MEMORY_BASE_1 163 #define PCI_CB_MEMORY_LIMIT_1 164 #define PCI_CB_IO_BASE_0 165 #define PCI_CB_IO_BASE_0_HI 166 #define PCI_CB_IO_LIMIT_0 167 #define PCI_CB_IO_LIMIT_0_HI 168 #define PCI_CB_IO_BASE_1 169 #define PCI_CB_IO_BASE_1_HI 170 #define PCI_CB_IO_LIMIT_1 171 #define PCI_CB_IO_LIMIT_1_HI 172 #define PCI_CB_IO_RANGE_MASK 155 #define PCI_CB_SEC_STATUS 0x16 /* Secondary status */ 156 #define PCI_CB_PRIMARY_BUS 0x18 /* PCI bus number */ 157 #define PCI_CB_CARD_BUS 0x19 /* CardBus bus number */ 158 #define PCI_CB_SUBORDINATE_BUS 0x1a /* Subordinate bus number */ 159 #define PCI_CB_LATENCY_TIMER 0x1b /* CardBus latency timer */ 160 #define PCI_CB_MEMORY_BASE_0 0x1c 161 #define PCI_CB_MEMORY_LIMIT_0 0x20 162 #define PCI_CB_MEMORY_BASE_1 0x24 163 #define PCI_CB_MEMORY_LIMIT_1 0x28 164 #define PCI_CB_IO_BASE_0 0x2c 165 #define PCI_CB_IO_BASE_0_HI 0x2e 166 #define PCI_CB_IO_LIMIT_0 0x30 167 #define PCI_CB_IO_LIMIT_0_HI 0x32 168 #define PCI_CB_IO_BASE_1 0x34 169 #define PCI_CB_IO_BASE_1_HI 0x36 170 #define PCI_CB_IO_LIMIT_1 0x38 171 #define PCI_CB_IO_LIMIT_1_HI 0x3a 172 #define PCI_CB_IO_RANGE_MASK ~0x03 173 173 /* 0x3c-0x3d are same as for htype 0 */ 174 #define PCI_CB_BRIDGE_CONTROL 175 #define PCI_CB_BRIDGE_CTL_PARITY 0x01/* Similar to standard bridge control register */176 #define PCI_CB_BRIDGE_CTL_SERR 177 #define PCI_CB_BRIDGE_CTL_ISA 178 #define PCI_CB_BRIDGE_CTL_VGA 179 #define PCI_CB_BRIDGE_CTL_MASTER_ABORT 180 #define PCI_CB_BRIDGE_CTL_CB_RESET 0x40/* CardBus reset */181 #define PCI_CB_BRIDGE_CTL_16BIT_INT 0x80/* Enable interrupt for 16-bit cards */182 #define PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100 174 #define PCI_CB_BRIDGE_CONTROL 0x3e 175 #define PCI_CB_BRIDGE_CTL_PARITY 0x01 /* Similar to standard bridge control register */ 176 #define PCI_CB_BRIDGE_CTL_SERR 0x02 177 #define PCI_CB_BRIDGE_CTL_ISA 0x04 178 #define PCI_CB_BRIDGE_CTL_VGA 0x08 179 #define PCI_CB_BRIDGE_CTL_MASTER_ABORT 0x20 180 #define PCI_CB_BRIDGE_CTL_CB_RESET 0x40 /* CardBus reset */ 181 #define PCI_CB_BRIDGE_CTL_16BIT_INT 0x80 /* Enable interrupt for 16-bit cards */ 182 #define PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100 /* Prefetch enable for both memory regions */ 183 183 #define PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200 184 #define PCI_CB_BRIDGE_CTL_POST_WRITES 184 #define PCI_CB_BRIDGE_CTL_POST_WRITES 0x400 185 185 #define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40 186 #define PCI_CB_SUBSYSTEM_ID 187 #define PCI_CB_LEGACY_MODE_BASE 0x44/* 16-bit PC Card legacy mode base address (ExCa) */186 #define PCI_CB_SUBSYSTEM_ID 0x42 187 #define PCI_CB_LEGACY_MODE_BASE 0x44 /* 16-bit PC Card legacy mode base address (ExCa) */ 188 188 /* 0x48-0x7f reserved */ 189 189 190 190 /* Capability lists */ 191 191 192 #define PCI_CAP_LIST_ID 0/* Capability ID */193 #define PCI_CAP_ID_PM 0x01/* Power Management */194 #define PCI_CAP_ID_AGP 0x02/* Accelerated Graphics Port */195 #define PCI_CAP_ID_VPD 0x03/* Vital Product Data */196 #define PCI_CAP_ID_SLOTID 0x04/* Slot Identification */197 #define PCI_CAP_ID_MSI 0x05/* Message Signalled Interrupts */198 #define PCI_CAP_ID_CHSWP 0x06/* CompactPCI HotSwap */199 #define PCI_CAP_LIST_NEXT 1/* Next capability in the list */200 #define PCI_CAP_FLAGS 2/* Capability defined flags (16 bits) */201 #define PCI_CAP_SIZEOF 192 #define PCI_CAP_LIST_ID 0 /* Capability ID */ 193 #define PCI_CAP_ID_PM 0x01 /* Power Management */ 194 #define PCI_CAP_ID_AGP 0x02 /* Accelerated Graphics Port */ 195 #define PCI_CAP_ID_VPD 0x03 /* Vital Product Data */ 196 #define PCI_CAP_ID_SLOTID 0x04 /* Slot Identification */ 197 #define PCI_CAP_ID_MSI 0x05 /* Message Signalled Interrupts */ 198 #define PCI_CAP_ID_CHSWP 0x06 /* CompactPCI HotSwap */ 199 #define PCI_CAP_LIST_NEXT 1 /* Next capability in the list */ 200 #define PCI_CAP_FLAGS 2 /* Capability defined flags (16 bits) */ 201 #define PCI_CAP_SIZEOF 4 202 202 203 203 /* Power Management Registers */ 204 204 #define PCI_PM_PMC 2 /* PM Capabilities Register */ 205 #define PCI_PM_CAP_VER_MASK 0x0007/* Version */206 #define PCI_PM_CAP_PME_CLOCK 0x0008/* PME clock required */207 #define PCI_PM_CAP_AUX_POWER 0x0010/* Auxilliary power support */208 #define PCI_PM_CAP_DSI 0x0020/* Device specific initialization */209 #define PCI_PM_CAP_D1 0x0200/* D1 power state support */210 #define PCI_PM_CAP_D2 0x0400/* D2 power state support */211 #define PCI_PM_CAP_PME 0x0800/* PME pin supported */212 #define PCI_PM_CTRL 4/* PM control and status register */213 #define PCI_PM_CTRL_STATE_MASK 0x0003/* Current power state (D0 to D3) */214 #define PCI_PM_CTRL_PME_ENABLE 0x0100/* PME pin enable */215 #define PCI_PM_CTRL_DATA_SEL_MASK 0x1e00/* Data select (??) */216 #define PCI_PM_CTRL_DATA_SCALE_MASK 0x6000/* Data scale (??) */217 #define PCI_PM_CTRL_PME_STATUS 0x8000/* PME pin status */218 #define PCI_PM_PPB_EXTENSIONS 6/* PPB support extensions (??) */219 #define PCI_PM_PPB_B2_B3 0x40/* Stop clock when in D3hot (??) */220 #define PCI_PM_BPCC_ENABLE 0x80/* Bus power/clock control enable (??) */221 #define PCI_PM_DATA_REGISTER 7/* (??) */222 #define PCI_PM_SIZEOF 205 #define PCI_PM_CAP_VER_MASK 0x0007 /* Version */ 206 #define PCI_PM_CAP_PME_CLOCK 0x0008 /* PME clock required */ 207 #define PCI_PM_CAP_AUX_POWER 0x0010 /* Auxilliary power support */ 208 #define PCI_PM_CAP_DSI 0x0020 /* Device specific initialization */ 209 #define PCI_PM_CAP_D1 0x0200 /* D1 power state support */ 210 #define PCI_PM_CAP_D2 0x0400 /* D2 power state support */ 211 #define PCI_PM_CAP_PME 0x0800 /* PME pin supported */ 212 #define PCI_PM_CTRL 4 /* PM control and status register */ 213 #define PCI_PM_CTRL_STATE_MASK 0x0003 /* Current power state (D0 to D3) */ 214 #define PCI_PM_CTRL_PME_ENABLE 0x0100 /* PME pin enable */ 215 #define PCI_PM_CTRL_DATA_SEL_MASK 0x1e00 /* Data select (??) */ 216 #define PCI_PM_CTRL_DATA_SCALE_MASK 0x6000 /* Data scale (??) */ 217 #define PCI_PM_CTRL_PME_STATUS 0x8000 /* PME pin status */ 218 #define PCI_PM_PPB_EXTENSIONS 6 /* PPB support extensions (??) */ 219 #define PCI_PM_PPB_B2_B3 0x40 /* Stop clock when in D3hot (??) */ 220 #define PCI_PM_BPCC_ENABLE 0x80 /* Bus power/clock control enable (??) */ 221 #define PCI_PM_DATA_REGISTER 7 /* (??) */ 222 #define PCI_PM_SIZEOF 8 223 223 224 224 /* AGP registers */ 225 225 226 #define PCI_AGP_VERSION 2/* BCD version number */227 #define PCI_AGP_RFU 3/* Rest of capability flags */228 #define PCI_AGP_STATUS 4/* Status register */229 #define PCI_AGP_STATUS_RQ_MASK 0xff000000/* Maximum number of requests - 1 */230 #define PCI_AGP_STATUS_SBA 0x0200/* Sideband addressing supported */231 #define PCI_AGP_STATUS_64BIT 0x0020/* 64-bit addressing supported */232 #define PCI_AGP_STATUS_FW 0x0010/* FW transfers supported */233 #define PCI_AGP_STATUS_RATE4 0x0004/* 4x transfer rate supported */234 #define PCI_AGP_STATUS_RATE2 0x0002/* 2x transfer rate supported */235 #define PCI_AGP_STATUS_RATE1 0x0001/* 1x transfer rate supported */236 #define PCI_AGP_COMMAND 8/* Control register */226 #define PCI_AGP_VERSION 2 /* BCD version number */ 227 #define PCI_AGP_RFU 3 /* Rest of capability flags */ 228 #define PCI_AGP_STATUS 4 /* Status register */ 229 #define PCI_AGP_STATUS_RQ_MASK 0xff000000 /* Maximum number of requests - 1 */ 230 #define PCI_AGP_STATUS_SBA 0x0200 /* Sideband addressing supported */ 231 #define PCI_AGP_STATUS_64BIT 0x0020 /* 64-bit addressing supported */ 232 #define PCI_AGP_STATUS_FW 0x0010 /* FW transfers supported */ 233 #define PCI_AGP_STATUS_RATE4 0x0004 /* 4x transfer rate supported */ 234 #define PCI_AGP_STATUS_RATE2 0x0002 /* 2x transfer rate supported */ 235 #define PCI_AGP_STATUS_RATE1 0x0001 /* 1x transfer rate supported */ 236 #define PCI_AGP_COMMAND 8 /* Control register */ 237 237 #define PCI_AGP_COMMAND_RQ_MASK 0xff000000 /* Master: Maximum number of requests */ 238 #define PCI_AGP_COMMAND_SBA 0x0200/* Sideband addressing enabled */239 #define PCI_AGP_COMMAND_AGP 0x0100/* Allow processing of AGP transactions */240 #define PCI_AGP_COMMAND_64BIT 0x0020/* Allow processing of 64-bit addresses */241 #define PCI_AGP_COMMAND_FW 0x0010/* Force FW transfers */242 #define PCI_AGP_COMMAND_RATE4 0x0004/* Use 4x rate */243 #define PCI_AGP_COMMAND_RATE2 0x0002/* Use 4x rate */244 #define PCI_AGP_COMMAND_RATE1 0x0001/* Use 4x rate */245 #define PCI_AGP_SIZEOF 238 #define PCI_AGP_COMMAND_SBA 0x0200 /* Sideband addressing enabled */ 239 #define PCI_AGP_COMMAND_AGP 0x0100 /* Allow processing of AGP transactions */ 240 #define PCI_AGP_COMMAND_64BIT 0x0020 /* Allow processing of 64-bit addresses */ 241 #define PCI_AGP_COMMAND_FW 0x0010 /* Force FW transfers */ 242 #define PCI_AGP_COMMAND_RATE4 0x0004 /* Use 4x rate */ 243 #define PCI_AGP_COMMAND_RATE2 0x0002 /* Use 4x rate */ 244 #define PCI_AGP_COMMAND_RATE1 0x0001 /* Use 4x rate */ 245 #define PCI_AGP_SIZEOF 12 246 246 247 247 /* Slot Identification */ 248 248 249 #define PCI_SID_ESR 2/* Expansion Slot Register */250 #define PCI_SID_ESR_NSLOTS 0x1f/* Number of expansion slots available */251 #define PCI_SID_ESR_FIC 0x20/* First In Chassis Flag */252 #define PCI_SID_CHASSIS_NR 3/* Chassis Number */249 #define PCI_SID_ESR 2 /* Expansion Slot Register */ 250 #define PCI_SID_ESR_NSLOTS 0x1f /* Number of expansion slots available */ 251 #define PCI_SID_ESR_FIC 0x20 /* First In Chassis Flag */ 252 #define PCI_SID_CHASSIS_NR 3 /* Chassis Number */ 253 253 254 254 /* Message Signalled Interrupts registers */ 255 255 256 #define PCI_MSI_FLAGS 2/* Various flags */257 #define PCI_MSI_FLAGS_64BIT 0x80/* 64-bit addresses allowed */258 #define PCI_MSI_FLAGS_QSIZE 0x70/* Message queue size configured */259 #define PCI_MSI_FLAGS_QMASK 0x0e/* Maximum queue size available */260 #define PCI_MSI_FLAGS_ENABLE 0x01/* MSI feature enabled */261 #define PCI_MSI_RFU 3/* Rest of capability flags */262 #define PCI_MSI_ADDRESS_LO 4/* Lower 32 bits */263 #define PCI_MSI_ADDRESS_HI 8/* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */264 #define PCI_MSI_DATA_32 8/* 16 bits of data for 32-bit devices */265 #define PCI_MSI_DATA_64 12/* 16 bits of data for 64-bit devices */256 #define PCI_MSI_FLAGS 2 /* Various flags */ 257 #define PCI_MSI_FLAGS_64BIT 0x80 /* 64-bit addresses allowed */ 258 #define PCI_MSI_FLAGS_QSIZE 0x70 /* Message queue size configured */ 259 #define PCI_MSI_FLAGS_QMASK 0x0e /* Maximum queue size available */ 260 #define PCI_MSI_FLAGS_ENABLE 0x01 /* MSI feature enabled */ 261 #define PCI_MSI_RFU 3 /* Rest of capability flags */ 262 #define PCI_MSI_ADDRESS_LO 4 /* Lower 32 bits */ 263 #define PCI_MSI_ADDRESS_HI 8 /* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */ 264 #define PCI_MSI_DATA_32 8 /* 16 bits of data for 32-bit devices */ 265 #define PCI_MSI_DATA_64 12 /* 16 bits of data for 64-bit devices */ 266 266 267 267 /* Include the ID list */ … … 274 274 * in a single byte as follows: 275 275 * 276 * 277 * 278 */ 279 #define PCI_DEVFN(slot,func) 280 #define PCI_SLOT(devfn) 281 #define PCI_FUNC(devfn) 276 * 7:3 = slot 277 * 2:0 = function 278 */ 279 #define PCI_DEVFN(slot,func) ((((slot) & 0x1f) << 3) | ((func) & 0x07)) 280 #define PCI_SLOT(devfn) (((devfn) >> 3) & 0x1f) 281 #define PCI_FUNC(devfn) ((devfn) & 0x07) 282 282 283 283 #ifdef __KERNEL__ … … 287 287 288 288 #include <asm/pci.h> 289 #define BUS_ID_SIZE 290 #define DEVICE_COUNT_COMPATIBLE 291 #define DEVICE_COUNT_IRQ 292 #define DEVICE_COUNT_DMA 293 #define DEVICE_COUNT_RESOURCE 289 #define BUS_ID_SIZE 20 290 #define DEVICE_COUNT_COMPATIBLE 4 291 #define DEVICE_COUNT_IRQ 2 292 #define DEVICE_COUNT_DMA 2 293 #define DEVICE_COUNT_RESOURCE 12 294 294 295 295 typedef struct pci_dev; … … 303 303 304 304 typedef struct device { 305 struct pci_dev *pci; 306 struct device* parent;307 struct bus_type * bus;/* type of bus device is on */308 char bus_id[BUS_ID_SIZE];/* position on parent bus */309 void(*release)(struct device * dev);310 unsigned int flags; 305 struct pci_dev *pci; /* for PCI and PCI-SG types */ 306 struct device * parent; 307 struct bus_type * bus; /* type of bus device is on */ 308 char bus_id[BUS_ID_SIZE]; /* position on parent bus */ 309 void (*release)(struct device * dev); 310 unsigned int flags; /* GFP_XXX for continous and ISA types */ 311 311 #ifdef CONFIG_SBUS 312 struct sbus_dev *sbus; 312 struct sbus_dev *sbus; /* for SBUS type */ 313 313 #endif 314 315 316 317 318 319 charbus_id[20];314 void *private_data; 315 void *platform_data; 316 317 struct device_driver *driver; 318 struct pm_dev *pm_dev; 319 char bus_id[20]; 320 320 } device; 321 321 … … 324 324 */ 325 325 struct pci_dev { 326 int active;/* device is active */327 int ro;/* Read/Only */328 329 struct pci_bus *bus;/* bus this device is on */330 struct pci_dev *sibling;/* next device on this bus */331 struct pci_dev *next;/* chain of all devices */332 333 void *sysdata;/* hook for sys-specific extension */334 struct proc_dir_entry *procent;/* device entry in /proc/bus/pci */326 int active; /* device is active */ 327 int ro; /* Read/Only */ 328 329 struct pci_bus *bus; /* bus this device is on */ 330 struct pci_dev *sibling; /* next device on this bus */ 331 struct pci_dev *next; /* chain of all devices */ 332 333 void *sysdata; /* hook for sys-specific extension */ 334 struct proc_dir_entry *procent; /* device entry in /proc/bus/pci */ 335 335 336 336 struct device dev; 337 337 338 unsigned int devfn; /* encoded device & function index */ 339 unsigned short vendor; 340 unsigned short device; 341 unsigned short subsystem_vendor; 342 unsigned short subsystem_device; 343 unsigned int _class; /* 3 bytes: (base,sub,prog-if) */ 344 u8 hdr_type; /* PCI header type (`multi' flag masked out) */ 345 u8 rom_base_reg; /* Which config register controls the ROM */ 346 347 unsigned short regs; 348 349 u32 current_state; /* Current operating state. In ACPI-speak, 350 this is D0-D3, D0 being fully functional, 351 and D3 being off. */ 352 353 /* device is compatible with these IDs */ 354 unsigned short vendor_compatible[DEVICE_COUNT_COMPATIBLE]; 355 unsigned short device_compatible[DEVICE_COUNT_COMPATIBLE]; 356 357 /* 358 * Instead of touching interrupt line and base address registers 359 * directly, use the values stored here. They might be different! 360 */ 361 unsigned int irq; 362 struct resource resource[DEVICE_COUNT_RESOURCE]; /* I/O and memory regions + expansion ROMs */ 363 struct resource dma_resource[DEVICE_COUNT_DMA]; 364 struct resource irq_resource[DEVICE_COUNT_IRQ]; 365 366 char name[48]; /* Device name */ 367 char slot_name[8]; /* Slot name */ 368 369 void *driver_data; 370 unsigned long dma_mask; 371 372 int (*prepare)(struct pci_dev *dev); 373 int (*activate)(struct pci_dev *dev); 374 int (*deactivate)(struct pci_dev *dev); 338 unsigned int devfn; /* encoded device & function index */ 339 unsigned short vendor; 340 unsigned short device; 341 unsigned short subsystem_vendor; 342 unsigned short subsystem_device; 343 unsigned int _class; /* 3 bytes: (base,sub,prog-if) */ 344 u8 hdr_type; /* PCI header type (`multi' flag masked out) */ 345 u8 rom_base_reg; /* Which config register controls the ROM */ 346 347 unsigned short regs; 348 349 u32 current_state; /* Current operating state. In ACPI-speak, 350 this is D0-D3, D0 being fully functional, 351 and D3 being off. */ 352 353 /* device is compatible with these IDs */ 354 unsigned short vendor_compatible[DEVICE_COUNT_COMPATIBLE]; 355 unsigned short device_compatible[DEVICE_COUNT_COMPATIBLE]; 356 357 /* 358 * Instead of touching interrupt line and base address registers 359 * directly, use the values stored here. They might be different! 360 */ 361 unsigned int irq; 362 unsigned char irq_pin; 363 struct resource resource[DEVICE_COUNT_RESOURCE]; /* I/O and memory regions + expansion ROMs */ 364 struct resource dma_resource[DEVICE_COUNT_DMA]; 365 struct resource irq_resource[DEVICE_COUNT_IRQ]; 366 367 char name[48]; /* Device name */ 368 char slot_name[8]; /* Slot name */ 369 370 void *driver_data; 371 unsigned long dma_mask; 372 373 int (*prepare)(struct pci_dev *dev); 374 int (*activate)(struct pci_dev *dev); 375 int (*deactivate)(struct pci_dev *dev); 375 376 #ifdef TARGET_OS2 376 377 378 379 380 377 //DAZ unsigned int picirq; 378 //DAZ unsigned int apicirq; 379 unsigned long hAdapter; 380 unsigned long hDevice; 381 void *pcidriver; 381 382 #endif 382 383 }; … … 385 386 * For PCI devices, the region numbers are assigned this way: 386 387 * 387 * 0-5standard PCI regions388 * 6expansion ROM389 * 7-10bridges: address space assigned to buses behind the bridge388 * 0-5 standard PCI regions 389 * 6 expansion ROM 390 * 7-10 bridges: address space assigned to buses behind the bridge 390 391 */ 391 392 … … 394 395 #define PCI_NUM_RESOURCES 11 395 396 396 #define PCI_REGION_FLAG_MASK 0x0f 397 #define PCI_REGION_FLAG_MASK 0x0f /* These bits of resource flags tell us the PCI region flags */ 397 398 398 399 struct pci_bus { 399 struct pci_bus *parent;/* parent bus this bridge is on */400 struct pci_bus *children;/* chain of P2P bridges on this bus */401 struct pci_bus *next;/* chain of all PCI buses */402 struct pci_ops *ops;/* configuration access functions */403 404 struct pci_dev *self;/* bridge device as seen by parent */405 struct pci_dev *devices;/* devices behind this bridge */406 struct resource *resource[4];/* address space routed to this bus */407 408 void *sysdata;/* hook for sys-specific extension */409 struct proc_dir_entry *procdir;/* directory entry in /proc/bus/pci */410 411 unsigned char number;/* bus number */412 unsigned char primary;/* number of primary bridge */413 unsigned char secondary;/* number of secondary bridge */414 unsigned char subordinate;/* max number of subordinate buses */415 416 charname[48];417 unsigned shortvendor;418 unsigned shortdevice;419 unsigned int serial;/* serial number */420 unsigned char pnpver;/* Plug & Play version */421 unsigned char productver;/* product version */422 unsigned char checksum;/* if zero - checksum passed */423 unsigned charpad1;400 struct pci_bus *parent; /* parent bus this bridge is on */ 401 struct pci_bus *children; /* chain of P2P bridges on this bus */ 402 struct pci_bus *next; /* chain of all PCI buses */ 403 struct pci_ops *ops; /* configuration access functions */ 404 405 struct pci_dev *self; /* bridge device as seen by parent */ 406 struct pci_dev *devices; /* devices behind this bridge */ 407 struct resource *resource[4]; /* address space routed to this bus */ 408 409 void *sysdata; /* hook for sys-specific extension */ 410 struct proc_dir_entry *procdir; /* directory entry in /proc/bus/pci */ 411 412 unsigned char number; /* bus number */ 413 unsigned char primary; /* number of primary bridge */ 414 unsigned char secondary; /* number of secondary bridge */ 415 unsigned char subordinate; /* max number of subordinate buses */ 416 417 char name[48]; 418 unsigned short vendor; 419 unsigned short device; 420 unsigned int serial; /* serial number */ 421 unsigned char pnpver; /* Plug & Play version */ 422 unsigned char productver; /* product version */ 423 unsigned char checksum; /* if zero - checksum passed */ 424 unsigned char pad1; 424 425 }; 425 426 426 //extern struct pci_bus *pci_root;/* root bus */427 //extern struct pci_dev *pci_devices;/* list of all devices */427 //extern struct pci_bus *pci_root; /* root bus */ 428 //extern struct pci_dev *pci_devices; /* list of all devices */ 428 429 429 430 /* 430 431 * Error values that may be returned by PCI functions. 431 432 */ 432 #define PCIBIOS_SUCCESSFUL 433 #define PCIBIOS_FUNC_NOT_SUPPORTED 434 #define PCIBIOS_BAD_VENDOR_ID 435 #define PCIBIOS_DEVICE_NOT_FOUND 436 #define PCIBIOS_BAD_REGISTER_NUMBER 437 #define PCIBIOS_SET_FAILED 438 #define PCIBIOS_BUFFER_TOO_SMALL 433 #define PCIBIOS_SUCCESSFUL 0x00 434 #define PCIBIOS_FUNC_NOT_SUPPORTED 0x81 435 #define PCIBIOS_BAD_VENDOR_ID 0x83 436 #define PCIBIOS_DEVICE_NOT_FOUND 0x86 437 #define PCIBIOS_BAD_REGISTER_NUMBER 0x87 438 #define PCIBIOS_SET_FAILED 0x88 439 #define PCIBIOS_BUFFER_TOO_SMALL 0x89 439 440 440 441 /* Low-level architecture-dependent routines */ 441 442 442 443 struct pci_ops { 443 444 445 446 447 448 444 int (*read_byte)(struct pci_dev *, int where, u8 *val); 445 int (*read_word)(struct pci_dev *, int where, u16 *val); 446 int (*read_dword)(struct pci_dev *, int where, u32 *val); 447 int (*write_byte)(struct pci_dev *, int where, u8 val); 448 int (*write_word)(struct pci_dev *, int where, u16 val); 449 int (*write_dword)(struct pci_dev *, int where, u32 val); 449 450 }; 450 451 … … 455 456 456 457 void pcibios_update_resource(struct pci_dev *, struct resource *, 457 458 struct resource *, int); 458 459 void pcibios_update_irq(struct pci_dev *, int irq); 459 460 … … 463 464 #define pci_present pcibios_present 464 465 int pcibios_read_config_byte (unsigned char bus, unsigned char dev_fn, 465 466 unsigned char where, unsigned char *val); 466 467 int pcibios_read_config_word (unsigned char bus, unsigned char dev_fn, 467 468 unsigned char where, unsigned short *val); 468 469 int pcibios_read_config_dword (unsigned char bus, unsigned char dev_fn, 469 470 unsigned char where, unsigned int *val); 470 471 int pcibios_write_config_byte (unsigned char bus, unsigned char dev_fn, 471 472 unsigned char where, unsigned char val); 472 473 int pcibios_write_config_word (unsigned char bus, unsigned char dev_fn, 473 474 unsigned char where, unsigned short val); 474 475 int pcibios_write_config_dword (unsigned char bus, unsigned char dev_fn, 475 476 unsigned char where, unsigned int val); 476 477 int pcibios_find_class (unsigned int class_code, unsigned short index, unsigned char *bus, unsigned char *dev_fn); 477 478 int pcibios_find_device (unsigned short vendor, unsigned short dev_id, 478 479 479 unsigned short index, unsigned char *bus, 480 unsigned char *dev_fn); 480 481 481 482 /* Generic PCI interface functions */ … … 491 492 struct pci_dev *pci_find_device (unsigned int vendor, unsigned int device, struct pci_dev *from); 492 493 struct pci_dev *pci_find_subsys (unsigned int vendor, unsigned int device, 493 494 494 unsigned int ss_vendor, unsigned int ss_device, 495 struct pci_dev *from); 495 496 struct pci_dev *pci_find_class (unsigned int _class, struct pci_dev *from); 496 497 struct pci_dev *pci_find_slot (unsigned int bus, unsigned int devfn); … … 516 517 void pci_set_bus_ranges(void); 517 518 void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *), 518 519 int (*)(struct pci_dev *, u8, u8)); 519 520 520 521 /* … … 524 525 struct pci_simple_probe_entry; 525 526 typedef int (*pci_simple_probe_callback) (struct pci_dev *dev, int match_num, 526 527 527 const struct pci_simple_probe_entry *ent, 528 void *drvr_data); 528 529 529 530 struct pci_simple_probe_entry { 530 unsigned short vendor;/* vendor id, PCI_ANY_ID, or 0 for last entry */531 unsigned short device;/* device id, PCI_ANY_ID, or 0 for last entry */532 533 534 void *dev_data;/* driver-private, entry-specific data */531 unsigned short vendor; /* vendor id, PCI_ANY_ID, or 0 for last entry */ 532 unsigned short device; /* device id, PCI_ANY_ID, or 0 for last entry */ 533 unsigned short subsys_vendor; /* subsystem vendor id, 0 for don't care */ 534 unsigned short subsys_device; /* subsystem device id, 0 for don't care */ 535 void *dev_data; /* driver-private, entry-specific data */ 535 536 }; 536 537 537 538 int pci_simple_probe (const struct pci_simple_probe_entry *list, 538 539 539 size_t match_limit, pci_simple_probe_callback cb, 540 void *drvr_data); 540 541 541 542 … … 554 555 555 556 struct pci_fixup { 556 557 u16 vendor, device;/* You can use PCI_ANY_ID here of course */558 557 int pass; 558 u16 vendor, device; /* You can use PCI_ANY_ID here of course */ 559 void (*hook)(struct pci_dev *dev); 559 560 }; 560 561 561 562 extern struct pci_fixup pcibios_fixups[]; 562 563 563 #define PCI_FIXUP_HEADER 1/* Called immediately after reading configuration header */564 #define PCI_FIXUP_FINAL 2/* Final phase of device fixups */564 #define PCI_FIXUP_HEADER 1 /* Called immediately after reading configuration header */ 565 #define PCI_FIXUP_FINAL 2 /* Final phase of device fixups */ 565 566 566 567 void pci_fixup_device(int pass, struct pci_dev *dev); 567 568 568 569 extern int pci_pci_problems; 569 #define PCIPCI_FAIL 570 #define PCIPCI_TRITON 571 #define PCIPCI_NATOMA 570 #define PCIPCI_FAIL 1 571 #define PCIPCI_TRITON 2 572 #define PCIPCI_NATOMA 4 572 573 573 574 … … 590 591 #else 591 592 struct pci_driver { 592 593 594 595 const struct pci_device_id *id_table;/* NULL if wants all devices */596 597 void (*remove)(struct pci_dev *dev);/* Device removed (NULL if not a hot-plug capable driver) */598 int (*suspend)(struct pci_dev *dev, u32 stgate);/* Device suspended */599 int (*resume)(struct pci_dev *dev);/* Device woken up */593 struct list_head node; 594 struct pci_dev *dev; 595 char *name; 596 const struct pci_device_id *id_table; /* NULL if wants all devices */ 597 int (*probe)(struct pci_dev *dev, const struct pci_device_id *id); /* New device inserted */ 598 void (*remove)(struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */ 599 int (*suspend)(struct pci_dev *dev, u32 stgate); /* Device suspended */ 600 int (*resume)(struct pci_dev *dev); /* Device woken up */ 600 601 }; 601 602 #endif … … 619 620 620 621 #define pci_for_each_dev(dev) \ 621 622 for(dev = pci_devices; dev; dev = dev->next) 622 623 623 624 #define pci_resource_start(dev,bar) \ … … 692 693 static inline unsigned char snd_pci_revision(struct pci_dev *pci) 693 694 { 694 695 696 695 unsigned char rev; 696 pci_read_config_byte(pci, PCI_REVISION_ID, &rev); 697 return rev; 697 698 } 698 699 … … 701 702 702 703 /* MSI */ 703 static inline int snd_pci_enable_msi(struct pci_dev *dev) { return -1; } 704 extern int snd_pci_enable_msi(struct pci_dev *dev); 704 705 #undef pci_enable_msi 705 706 #define pci_enable_msi(dev) snd_pci_enable_msi(dev) … … 711 712 static inline void *pci_ioremap_bar(struct pci_dev *pdev, int bar) 712 713 { 713 714 714 return __ioremap(pci_resource_start(pdev, bar), 715 pci_resource_len(pdev, bar),0x010); 715 716 } 716 717 717 #define PCI_VDEVICE(vendor, device) 718 PCI_VENDOR_ID_##vendor, (device),\719 718 #define PCI_VDEVICE(vendor, device) \ 719 PCI_VENDOR_ID_##vendor, (device), \ 720 PCI_ANY_ID, PCI_ANY_ID, 0, 0 720 721 721 722 #define pci_clear_master(x) … … 725 726 */ 726 727 #define DEFINE_PCI_DEVICE_TABLE(_table) \ 727 728 const struct pci_device_id _table[] __devinitdata 728 729 729 730 #endif /* LINUX_PCI_H */
Note:
See TracChangeset
for help on using the changeset viewer.