Ignore:
Timestamp:
Jan 8, 2018, 2:07:36 AM (8 years ago)
Author:
David Azarewicz
Message:

Incorporated changes from Andy.
Added limited MSI support.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GPL/trunk/include/linux/pci.h

    r598 r604  
    11/*
    2  *      PCI defines and function prototypes
    3  *      Copyright 1994, Drew Eckhardt
    4  *      Copyright 1997--1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
     2 *  PCI defines and function prototypes
     3 *  Copyright 1994, Drew Eckhardt
     4 *  Copyright 1997--1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
    55 *
    6  *      For more information, please consult the following manuals (look at
    7  *      http://www.pcisig.com/ for how to get them):
     6 *  For more information, please consult the following manuals (look at
     7 *  http://www.pcisig.com/ for how to get them):
    88 *
    9  *      PCI BIOS Specification
    10  *      PCI Local Bus Specification
    11  *      PCI to PCI Bridge Specification
    12  *      PCI System Design Guide
     9 *  PCI BIOS Specification
     10 *  PCI Local Bus Specification
     11 *  PCI to PCI Bridge Specification
     12 *  PCI System Design Guide
    1313 */
    1414
     
    2323 * of which the first 64 bytes are standardized as follows:
    2424 */
    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   /* 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   
     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 /* 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
    4747#define  PCI_STATUS_DEVSEL_MEDIUM 0x200
    4848#define  PCI_STATUS_DEVSEL_SLOW 0x400
     
    5353#define  PCI_STATUS_DETECTED_PARITY 0x8000 /* Set on parity error */
    5454
    55 #define PCI_CLASS_REVISION      0x08    /* High 24 bits are class, low 8
    56                                            revision */
     55#define PCI_CLASS_REVISION  0x08  /* High 24 bits are class, low 8
     56             revision */
    5757#define PCI_REVISION_ID         0x08    /* Revision ID */
    5858#define PCI_CLASS_PROG          0x09    /* Reg. Level Programming Interface */
    5959#define PCI_CLASS_DEVICE        0x0a    /* Device class */
    6060
    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
     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
    6565#define  PCI_HEADER_TYPE_BRIDGE 1
    6666#define  PCI_HEADER_TYPE_CARDBUS 2
    6767
    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 */
    7272
    7373/*
     
    7777 * 1 bits are decoded.
    7878 */
    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 */
    8686#define  PCI_BASE_ADDRESS_SPACE_IO 0x01
    8787#define  PCI_BASE_ADDRESS_SPACE_MEMORY 0x00
    8888#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      (~0x0fUL)
    94 #define  PCI_BASE_ADDRESS_IO_MASK       (~0x03UL)
     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)
    9595/* bit 1 is reserved if address_space = 1 */
    9696
    9797/* Header type 0 (normal devices) */
    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 */
     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 */
    106106
    107107/* 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 */
    112112
    113113/* 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            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
     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
    127127#define  PCI_MEMORY_RANGE_TYPE_MASK 0x0f
    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
     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
    131131#define  PCI_PREF_RANGE_TYPE_MASK 0x0f
    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
     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
    139139/* 0x34 same as for htype 0 */
    140140/* 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 */
    142142/* 0x3c-0x3d are same as for htype 0 */
    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 */
     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 */
    148148#define  PCI_BRIDGE_CTL_MASTER_ABORT 0x20  /* Report master aborts */
    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 */
     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 */
    151151
    152152/* Header type 2 (CardBus bridges) */
    153153/* 0x14-0x15 reserved */
    154154#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    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
     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
    173173/* 0x3c-0x3d are same as for htype 0 */
    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 */
     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 */
    183183#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200
    184 #define  PCI_CB_BRIDGE_CTL_POST_WRITES  0x400
     184#define  PCI_CB_BRIDGE_CTL_POST_WRITES  0x400
    185185#define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40
    186 #define PCI_CB_SUBSYSTEM_ID     0x42
    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) */
    188188/* 0x48-0x7f reserved */
    189189
    190190/* Capability lists */
    191191
    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
     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
    202202
    203203/* Power Management Registers */
    204204#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          8
     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
    223223
    224224/* AGP registers */
    225225
    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 */
    237237#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          12
     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
    246246
    247247/* Slot Identification */
    248248
    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 */
    253253
    254254/* Message Signalled Interrupts registers */
    255255
    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 */
    266266
    267267/* Include the ID list */
     
    274274 * in a single byte as follows:
    275275 *
    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)
     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)
    282282
    283283#ifdef __KERNEL__
     
    287287
    288288#include <asm/pci.h>
    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
     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
    294294
    295295typedef struct pci_dev;
     
    303303
    304304typedef struct device {
    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 */
     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 */
    311311#ifdef CONFIG_SBUS
    312     struct sbus_dev *sbus;      /* for SBUS type */
     312    struct sbus_dev *sbus;  /* for SBUS type */
    313313#endif
    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];
     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];
    320320} device;
    321321
     
    324324 */
    325325struct 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 */
    335335
    336336        struct device   dev;
    337337
    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);
    375376#ifdef TARGET_OS2
    376         unsigned int picirq;
    377         unsigned int apicirq;
    378         unsigned long hAdapter;
    379         unsigned long hDevice;
    380         void *pcidriver;
     377//DAZ unsigned int picirq;
     378//DAZ unsigned int apicirq;
     379  unsigned long hAdapter;
     380  unsigned long hDevice;
     381  void *pcidriver;
    381382#endif
    382383};
     
    385386 *  For PCI devices, the region numbers are assigned this way:
    386387 *
    387  *      0-5     standard PCI regions
    388  *      6       expansion ROM
    389  *      7-10    bridges: address space assigned to buses behind the bridge
     388 *  0-5 standard PCI regions
     389 *  6 expansion ROM
     390 *  7-10  bridges: address space assigned to buses behind the bridge
    390391 */
    391392
     
    394395#define PCI_NUM_RESOURCES 11
    395396
    396 #define PCI_REGION_FLAG_MASK 0x0f       /* These bits of resource flags tell us the PCI region flags */
     397#define PCI_REGION_FLAG_MASK 0x0f /* These bits of resource flags tell us the PCI region flags */
    397398
    398399struct 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         char            name[48];
    417         unsigned short  vendor;
    418         unsigned short  device;
    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 char   pad1;
     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;
    424425};
    425426
    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 */
    428429
    429430/*
    430431 * Error values that may be returned by PCI functions.
    431432 */
    432 #define PCIBIOS_SUCCESSFUL              0x00
    433 #define PCIBIOS_FUNC_NOT_SUPPORTED      0x81
    434 #define PCIBIOS_BAD_VENDOR_ID           0x83
    435 #define PCIBIOS_DEVICE_NOT_FOUND        0x86
    436 #define PCIBIOS_BAD_REGISTER_NUMBER     0x87
    437 #define PCIBIOS_SET_FAILED              0x88
    438 #define PCIBIOS_BUFFER_TOO_SMALL        0x89
     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
    439440
    440441/* Low-level architecture-dependent routines */
    441442
    442443struct pci_ops {
    443         int (*read_byte)(struct pci_dev *, int where, u8 *val);
    444         int (*read_word)(struct pci_dev *, int where, u16 *val);
    445         int (*read_dword)(struct pci_dev *, int where, u32 *val);
    446         int (*write_byte)(struct pci_dev *, int where, u8 val);
    447         int (*write_word)(struct pci_dev *, int where, u16 val);
    448         int (*write_dword)(struct pci_dev *, int where, u32 val);
     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);
    449450};
    450451
     
    455456
    456457void pcibios_update_resource(struct pci_dev *, struct resource *,
    457                              struct resource *, int);
     458           struct resource *, int);
    458459void pcibios_update_irq(struct pci_dev *, int irq);
    459460
     
    463464#define pci_present pcibios_present
    464465int pcibios_read_config_byte (unsigned char bus, unsigned char dev_fn,
    465                               unsigned char where, unsigned char *val);
     466            unsigned char where, unsigned char *val);
    466467int pcibios_read_config_word (unsigned char bus, unsigned char dev_fn,
    467                               unsigned char where, unsigned short *val);
     468            unsigned char where, unsigned short *val);
    468469int pcibios_read_config_dword (unsigned char bus, unsigned char dev_fn,
    469                                unsigned char where, unsigned int *val);
     470             unsigned char where, unsigned int *val);
    470471int pcibios_write_config_byte (unsigned char bus, unsigned char dev_fn,
    471                                unsigned char where, unsigned char val);
     472             unsigned char where, unsigned char val);
    472473int pcibios_write_config_word (unsigned char bus, unsigned char dev_fn,
    473                                unsigned char where, unsigned short val);
     474             unsigned char where, unsigned short val);
    474475int pcibios_write_config_dword (unsigned char bus, unsigned char dev_fn,
    475                                 unsigned char where, unsigned int val);
     476        unsigned char where, unsigned int val);
    476477int pcibios_find_class (unsigned int class_code, unsigned short index, unsigned char *bus, unsigned char *dev_fn);
    477478int pcibios_find_device (unsigned short vendor, unsigned short dev_id,
    478                         unsigned short index, unsigned char *bus,
    479                         unsigned char *dev_fn);
     479      unsigned short index, unsigned char *bus,
     480      unsigned char *dev_fn);
    480481
    481482/* Generic PCI interface functions */
     
    491492struct pci_dev *pci_find_device (unsigned int vendor, unsigned int device, struct pci_dev *from);
    492493struct pci_dev *pci_find_subsys (unsigned int vendor, unsigned int device,
    493                                 unsigned int ss_vendor, unsigned int ss_device,
    494                                 struct pci_dev *from);
     494        unsigned int ss_vendor, unsigned int ss_device,
     495        struct pci_dev *from);
    495496struct pci_dev *pci_find_class (unsigned int _class, struct pci_dev *from);
    496497struct pci_dev *pci_find_slot (unsigned int bus, unsigned int devfn);
     
    516517void pci_set_bus_ranges(void);
    517518void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
    518                     int (*)(struct pci_dev *, u8, u8));
     519        int (*)(struct pci_dev *, u8, u8));
    519520
    520521/*
     
    524525struct pci_simple_probe_entry;
    525526typedef int (*pci_simple_probe_callback) (struct pci_dev *dev, int match_num,
    526                                           const struct pci_simple_probe_entry *ent,
    527                                           void *drvr_data);
     527              const struct pci_simple_probe_entry *ent,
     528            void *drvr_data);
    528529
    529530struct 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         unsigned short subsys_vendor; /* subsystem vendor id, 0 for don't care */
    533         unsigned short subsys_device; /* subsystem device id, 0 for don't care */
    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 */
    535536};
    536537
    537538int pci_simple_probe (const struct pci_simple_probe_entry *list,
    538                       size_t match_limit, pci_simple_probe_callback cb,
    539                       void *drvr_data);
     539          size_t match_limit, pci_simple_probe_callback cb,
     540          void *drvr_data);
    540541
    541542
     
    554555
    555556struct pci_fixup {
    556         int pass;
    557         u16 vendor, device;                     /* You can use PCI_ANY_ID here of course */
    558         void (*hook)(struct pci_dev *dev);
     557  int pass;
     558  u16 vendor, device;     /* You can use PCI_ANY_ID here of course */
     559  void (*hook)(struct pci_dev *dev);
    559560};
    560561
    561562extern struct pci_fixup pcibios_fixups[];
    562563
    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 */
    565566
    566567void pci_fixup_device(int pass, struct pci_dev *dev);
    567568
    568569extern int pci_pci_problems;
    569 #define PCIPCI_FAIL             1
    570 #define PCIPCI_TRITON           2
    571 #define PCIPCI_NATOMA           4
     570#define PCIPCI_FAIL   1
     571#define PCIPCI_TRITON   2
     572#define PCIPCI_NATOMA   4
    572573
    573574
     
    590591#else
    591592struct pci_driver {
    592         struct list_head node;
    593         struct pci_dev *dev;
    594         char *name;
    595         const struct pci_device_id *id_table;   /* NULL if wants all devices */
    596         int (*probe)(struct pci_dev *dev, const struct pci_device_id *id); /* New device inserted */
    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 */
    600601};
    601602#endif
     
    619620
    620621#define pci_for_each_dev(dev) \
    621         for(dev = pci_devices; dev; dev = dev->next)
     622  for(dev = pci_devices; dev; dev = dev->next)
    622623
    623624#define pci_resource_start(dev,bar) \
     
    692693static inline unsigned char snd_pci_revision(struct pci_dev *pci)
    693694{
    694         unsigned char rev;
    695         pci_read_config_byte(pci, PCI_REVISION_ID, &rev);
    696         return rev;
     695  unsigned char rev;
     696  pci_read_config_byte(pci, PCI_REVISION_ID, &rev);
     697  return rev;
    697698}
    698699
     
    701702
    702703/* MSI */
    703 static inline int snd_pci_enable_msi(struct pci_dev *dev) { return -1; }
     704extern int snd_pci_enable_msi(struct pci_dev *dev);
    704705#undef pci_enable_msi
    705706#define pci_enable_msi(dev) snd_pci_enable_msi(dev)
     
    711712static inline void *pci_ioremap_bar(struct pci_dev *pdev, int bar)
    712713{
    713         return __ioremap(pci_resource_start(pdev, bar),
    714                                pci_resource_len(pdev, bar),0x010);
     714  return __ioremap(pci_resource_start(pdev, bar),
     715             pci_resource_len(pdev, bar),0x010);
    715716}
    716717
    717 #define PCI_VDEVICE(vendor, device)             \
    718         PCI_VENDOR_ID_##vendor, (device),       \
    719         PCI_ANY_ID, PCI_ANY_ID, 0, 0
     718#define PCI_VDEVICE(vendor, device)   \
     719  PCI_VENDOR_ID_##vendor, (device), \
     720  PCI_ANY_ID, PCI_ANY_ID, 0, 0
    720721
    721722#define pci_clear_master(x)
     
    725726 */
    726727#define DEFINE_PCI_DEVICE_TABLE(_table) \
    727         const struct pci_device_id _table[] __devinitdata
     728  const struct pci_device_id _table[] __devinitdata
    728729
    729730#endif /* LINUX_PCI_H */
Note: See TracChangeset for help on using the changeset viewer.