/* pci_mgr.h - hypervisor PCI bus manager */

/*
 * Copyright (c) 2009-2011, 2013-2014 Wind River Systems, Inc.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_INCLUDE_DRIVERS_PCI_PCI_MGR_H_
#define ZEPHYR_INCLUDE_DRIVERS_PCI_PCI_MGR_H_

#ifdef __cplusplus
extern "C" {

/* Remapped reserved  C++ words */
#define class _class

#endif /* __cplusplus */

/* requests available from the PCI bus manager */

#define SYS_PCI_REQUEST_READ_DATA 1
#define SYS_PCI_REQUEST_WRITE_DATA 2
#define SYS_PCI_REQUEST_READ_ADDR 3
#define SYS_PCI_REQUEST_WRITE_ADDR 4

/* requests results */

#define SYS_PCI_REQUEST_OK 0
#define SYS_PCI_REQUEST_FAILED 1

/* data access sizes */

#define SYS_PCI_ACCESS_8BIT 0
#define SYS_PCI_ACCESS_16BIT 1
#define SYS_PCI_ACCESS_32BIT 3

#define PCI_MAX_ADDR_CACHE 8 /* cache up to 8 addr writes */

#define PCI_HEADER_WORDS 64 /* 64 32-bit words in the header */

#define PCI_NO_OFFSET 0

/* default controller to use */

#define DEFAULT_PCI_CONTROLLER 0
#define NO_PCI_CONTROLLER 0xffff

/* maximum number of controllers supported */

#define PCI_MAX_CONTROLLER 4
#define PCI_MAX_MGR PCI_MAX_CONTROLLER

/* maximum number of extended capabilities */

#define PCI_MAX_ECP 32

/* invalid pci controller */

#define PCI_INVALID_CONTROLLER_ID 0xffffffff

#ifndef _ASMLANGUAGE

/*
 *
 * PCI Address Register
 *
 * The configuration address register is a 32-bit register with the format
 * shown below. Bit 31 is an enable flag for determining when accesses to the
 * configuration data should be translated to configuration cycles. Bits 23
 * through 16 allow the configuration software to choose a specific PCI bus in
 * the system. Bits 15 through 11 select the specific device on the PCI Bus.
 * Bits 10 through 8 choose a specific function in a device (if the device
 * supports multiple functions). Bits 7 through 2 select the specific 32-bit
 * area in the device's configuration space.
 *
 * +--------------------------------------------------------+
 * |      Bit 31      |    Bits 30-24    |    Bits 23-16    |
 * +------------------+------------------+------------------+
 * |      Enable      |     Reserved     |    Bus Number    |
 * +--------------------------------------------------------+
 *
 * +---------------------------------------------------------------------------+
 * |    Bits 15-11    |    Bits 10-8     |    Bits 7-2      |    Bits 1-0      |
 * +------------------+------------------+------------------+------------------+
 * |   Device Number  | Function Number  | Register Number  |        00        |
 * +---------------------------------------------------------------------------+
 *
 */

union pci_addr_reg {
	struct {
#ifdef _BIG_ENDIAN
		u32_t enable : 1; /* access enabled */
		u32_t reserved1 : 7;
		u32_t bus : 8;    /* PCI bus number */
		u32_t device : 5; /* PCI device number */
		u32_t func : 3;   /* device function number */
		u32_t reg : 6;    /* config space register number */
		u32_t offset : 2; /* offset for access data */
#else
		u32_t offset : 2; /* offset for access data */
		u32_t reg : 6;    /* config space register number */
		u32_t func : 3;   /* device function number */
		u32_t device : 5; /* PCI device number */
		u32_t bus : 8;    /* PCI bus number */
		u32_t reserved1 : 7;
		u32_t enable : 1; /* access enabled */
#endif
	} field;
	u32_t value;
};


/*
 *
 * PCI Extended Address Register
 *
 * The configuration address register is a 32-bit register with the format
 * shown below. Bit 31 is an enable flag for determining when accesses to the9
 * configuration data should be translated to configuration cycles. Bits 23
 * through 16 allow the configuration software to choose a specific PCI bus in
 * the system. Bits 15 through 11 select the specific device on the PCI Bus.
 * Bits 10 through 8 choose a specific function in a device (if the device
 * supports multiple functions). Bits 7 through 2 select the specific 32-bit
 * area in the device's configuration space.
 *
 * +--------------------------------------------------------+
 * |      Bit 31      |    Bits 30-24    |    Bits 23-16    |
 * +------------------+------------------+------------------+
 * |      Enable      |     Reserved     |    Bus Number    |
 * +--------------------------------------------------------+
 *
 * +---------------------------------------------------------------------------+
 * |    Bits 15-11    |    Bits 10-8     |    Bits 7-2      |    Bits 1-0      |
 * +------------------+------------------+------------------+------------------+
 * |   Device Number  | Function Number  | Register Number  |        00        |
 * +---------------------------------------------------------------------------+
 */

union pcie_addr_reg {
	struct {
#ifdef _BIG_ENDIAN
		u32_t reserved1 : 4;
		u32_t bus : 8;    /* PCI bus number */
		u32_t device : 5; /* PCI device number */
		u32_t func : 3;   /* device function number */
		u32_t reg : 10;   /* config space register number */
		u32_t reserved0 : 2;
#else
		u32_t reserved0 : 2;
		u32_t reg : 10;   /* config space register number */
		u32_t func : 3;   /* device function number */
		u32_t device : 5; /* PCI device number */
		u32_t bus : 8;    /* PCI bus number */
		u32_t reserved1 : 4;
#endif
	} field;
	u32_t value;
};

/*
 * PCI Device Structure
 *
 * The PCI Specification defines the organization of the 256-byte Configuration
 * Space registers and imposes a specific template for the space. The table
 * below shows the layout of the 256-byte Configuration space. All PCI
 * compliant devices must support the Vendor ID, Device ID, Command and Status,
 * Revision ID, Class Code and Header Type fields. Implementation of the other
 * registers is optional, depending upon the devices functionality.
 *
 * The PCI devices follow little ENDIAN ordering. The lower addresses contain
 * the least significant portions of the field. Software to manipulate this
 * structure must take particular care that the endian-ordering follows the PCI
 * devices, not the CPUs.
 *
 * Header Type 0x00:
 *
 * +---------------------------------------------------------------------------+
 * | Register |   Bits 31-24  |   Bits 23-16   |    Bits 15-8   |   Bits 7-0   |
 * +----------+---------------+----------------+----------------+--------------+
 * |    00    | Device ID                      |  Vendor ID                    |
 * +----------+--------------------------------+-------------------------------+
 * |    04    | Status                         |  Command                      |
 * +----------+---------------+----------------+-------------------------------+
 * |    08    | Class Code    |  Subclass      |  Register IF   |  Revision ID |
 * +----------+---------------+----------------+----------------+--------------+
 * |    0C    | BIST          | Header type    |Latency Timer  |Cache Line Size|
 * +----------+---------------+----------------+----------------+--------------+
 * |    10    | Base address #0 (BAR0)                                         |
 * +----------+----------------------------------------------------------------+
 * |    14    | Base address #1 (BAR1)                                         |
 * +----------+----------------------------------------------------------------+
 * |    18    | Base address #2 (BAR2)                                         |
 * +----------+----------------------------------------------------------------+
 * |    1C    | Base address #3 (BAR3)                                         |
 * +----------+----------------------------------------------------------------+
 * |    20    | Base address #4 (BAR4)                                         |
 * +----------+----------------------------------------------------------------+
 * |    24    | Base address #5 (BAR5)                                         |
 * +----------+----------------------------------------------------------------+
 * |    28    | Cardbus CIS Pointer                                            |
 * +----------+--------------------------------+-------------------------------+
 * |    2C    | Subsystem ID                   |  Subsystem Vendor ID          |
 * +----------+--------------------------------+-------------------------------+
 * |    30    | Expansion ROM base address                                     |
 * +----------+----------------------------------------------------------------+
 * |    34    | Reserved                                        |Capability Ptr|
 * +----------+----------------------------------------------------------------+
 * |    38    | Reserved                                                       |
 * +----------+---------------+----------------+----------------+--------------+
 * |    3C    | Max Latency   |  Min Grant     | Interrupt PIN  |Interrupt Line|
 * +---------------------------------------------------------------------------+
 *
 *
 * Header Type 0x01 (PCI-to-PCI bridge):
 *
 * +---------------------------------------------------------------------------+
 * | Register |   Bits 31-24   |   Bits 23-16   |   Bits 15-8   |   Bits 7-0   |
 * +----------+----------------+----------------+---------------+--------------+
 * |    00    |  Device ID                      |  Vendor ID                   |
 * +----------+---------------------------------+------------------------------+
 * |    04    |  Status                         |  Command                     |
 * +----------+----------------+----------------+------------------------------+
 * |    08    |  Class Code    |  Subclass                      | Revision ID  |
 * +----------+----------------+----------------+---------------+--------------+
 * |    0C    |  BIST          | Header type    | Latency Timer |CacheLine Size|
 * +----------+----------------+----------------+---------------+--------------+
 * |    10    |  Base address #0 (BAR0)                                        |
 * +----------+----------------------------------------------------------------+
 * |    14    |  Base address #1 (BAR1)                                        |
 * +----------+----------------+----------------+----------------+-------------+
 * |    18    |  Sec Latency   | Subordinate Bus|  Secondary Bus | Primary Bus |
 * +----------+----------------+----------------+----------------+-------------+
 * |    1C    |  Secondary Status               |    I/O Limit   |    I/O Base |
 * +----------+---------------------------------+----------------+-------------+
 * |    20    |  Memory Limit                   |  Memory Base                 |
 * +----------+---------------------------------+------------------------------+
 * |    24    |  Prefetchable Memory Limit      |  Prefetchable Memory Base    |
 * +----------+---------------------------------+------------------------------+
 * |    28    |  Prefetchable Base Upper 32 Bits                               |
 * +----------+----------------------------------------------------------------+
 * |    2C    |  Prefetchable Limit Upper 32 Bits                              |
 * +----------+---------------------------------+------------------------------+
 * |    30    |  I/O Limit Upper 16 Bits        | I/O Base Upper 16 Bits       |
 * +----------+---------------------------------+----------------+-------------+
 * |    34    |  Reserved                                        |CapabilityPtr|
 * +----------+--------------------------------------------------+-------------+
 * |    38    |  Expansion ROM base address                                    |
 * +----------+----------------------------------------------------------------+
 * |    3C    |  Bridge Control                 | Interrupt PIN  |InterruptLine|
 * +---------------------------------------------------------------------------+
 */

union pci_dev {

	/* Header Type 0x00: standard device */

	struct {
/* offset 00:				*/
#ifdef _BIG_ENDIAN
		u32_t device_id
			: 16; /*   device identification		*/
		u32_t vendor_id
			: 16; /*   vendor identification		*/
#else
		u32_t vendor_id
			: 16; /*   vendor identification		*/
		u32_t device_id
			: 16; /*   device identification		*/
#endif

/* offset 04:				*/

#ifdef _BIG_ENDIAN
		u32_t status : 16;  /*   device status */
		u32_t command : 16; /*   device command register	*/
#else
		u32_t command : 16; /*   device command register	*/
		u32_t status : 16;  /*   device status */
#endif

/* offset 08:				*/
#ifdef _BIG_ENDIAN
		u32_t class : 8;
		u32_t subclass : 8;
		u32_t reg_if : 8;
		u32_t revision : 8;
#else
		u32_t revision : 8;
		u32_t reg_if : 8;
		u32_t subclass : 8;
		u32_t class : 8;
#endif

/* offset 0C:				*/
#ifdef _BIG_ENDIAN
		u32_t bist : 8;
		u32_t hdr_type : 8;
		u32_t latency_timer : 8;
		u32_t cache_line : 8;
#else
		u32_t cache_line : 8;
		u32_t latency_timer : 8;
		u32_t hdr_type : 8;
		u32_t bist : 8;
#endif

		u32_t bar0;    /* offset 10: base address register 0	*/
		u32_t bar1;    /* offset 14: base address register 0	*/
		u32_t bar2;    /* offset 18: base address register 0	*/
		u32_t bar3;    /* offset 1C: base address register 0	*/
		u32_t bar4;    /* offset 20: base address register 0	*/
		u32_t bar5;    /* offset 24: base address register 0	*/
		u32_t cardbus; /* offset 28: base address register 0	*/

/* offset 2C:				*/
#ifdef _BIG_ENDIAN
		u32_t subsys_id
			: 16; /*   subsystem identifier		*/
		u32_t subvendor_id
			: 16; /*   subsystem vendor identifier	*/
#else
		u32_t subvendor_id
			: 16; /*   subsystem vendor identifier	*/
		u32_t subsys_id
			: 16; /*   subsystem identifier		*/
#endif

		/* offset 30:				*/
		u32_t rom_address;

/* offset 34:				*/

#ifdef _BIG_ENDIAN
		u32_t reserved1 : 24;
		u32_t capability_ptr : 8;
#else
		u32_t capability_ptr : 8;
		u32_t reserved1 : 24;
#endif

		u32_t reserved2; /* offset 38: */

/* offset 3C:				*/
#ifdef _BIG_ENDIAN
		u32_t max_latency : 8;
		u32_t min_grant : 8;
		u32_t interrupt_pin
			: 8; /*   interrupt pin assignment		*/
		u32_t interrupt_line
			: 8; /*   interrupt line assignment		*/
#else
		u32_t interrupt_line
			: 8; /*   interrupt line assignment		*/
		u32_t interrupt_pin
			: 8; /*   interrupt pin assignment		*/
		u32_t min_grant : 8;
		u32_t max_latency : 8;
#endif
	} field;

	/* Header Type 0x01: PCI-to-PCI bridge */

	struct {
/* offset 00:				*/
#ifdef _BIG_ENDIAN
		u32_t device_id
			: 16; /*   device identification		*/
		u32_t vendor_id
			: 16; /*   vendor identification		*/
#else
		u32_t vendor_id
			: 16; /*   vendor identification		*/
		u32_t device_id
			: 16; /*   device identification		*/
#endif

/* offset 04:				*/
#ifdef _BIG_ENDIAN
		u32_t status : 16; /*   device status */
		u32_t command
			: 16; /*   device command register		*/
#else
		u32_t command
			: 16; /*   device command register		*/
		u32_t status : 16; /*   device status */
#endif

/* offset 08:				*/
#ifdef _BIG_ENDIAN
		u32_t class : 8;
		u32_t subclass : 8;
		u32_t reg_if : 8;
		u32_t revision : 8;
#else
		u32_t revision : 8;
		u32_t reg_if : 8;
		u32_t subclass : 8;
		u32_t class : 8;
#endif

/* offset 0C:				*/
#ifdef _BIG_ENDIAN
		u32_t bist : 8;
		u32_t hdr_type : 8;
		u32_t latency_timer : 8;
		u32_t cache_line : 8;
#else
		u32_t cache_line : 8;
		u32_t latency_timer : 8;
		u32_t hdr_type : 8;
		u32_t bist : 8;
#endif

		u32_t bar0; /* offset 10: base address register 0	*/
		u32_t bar1; /* offset 14: base address register 0	*/

/* offset 18:				*/
#ifdef _BIG_ENDIAN
		u32_t secondary_latency : 8;
		u32_t subord_bus : 8;
		u32_t secondary_bus : 8;
		u32_t primary_bus : 8;
#else
		u32_t primary_bus : 8;
		u32_t secondary_bus : 8;
		u32_t subord_bus : 8;
		u32_t secondary_latency : 8;

#endif

/* offset 1C:				*/
#ifdef _BIG_ENDIAN
		u32_t secondary_status : 16;
		u32_t io_limit : 8;
		u32_t io_base : 8;
#else
		u32_t io_base : 8;
		u32_t io_limit : 8;
		u32_t secondary_status : 16;
#endif

/* offset 20:				*/
#ifdef _BIG_ENDIAN
		u32_t mem_limit : 16;
		u32_t mem_base : 16;
#else
		u32_t mem_base : 16;
		u32_t mem_limit : 16;
#endif

/* offset 24:				*/
#ifdef _BIG_ENDIAN
		u32_t pre_mem_limit : 16;
		u32_t pre_mem_base : 16;
#else
		u32_t pre_mem_base : 16;
		u32_t pre_mem_limit : 16;
#endif

		/* offset 28:				*/
		u32_t pre_mem_base_upper;

		/* offset 2C:				*/
		u32_t pre_mem_limit_upper;

/* offset 30:				*/
#ifdef _BIG_ENDIAN
		u32_t io_limit_upper : 16;
		u32_t io_base_upper : 16;
#else
		u32_t io_base_upper : 16;
		u32_t io_limit_upper : 16;
#endif

/* offset 34:				*/
#ifdef _BIG_ENDIAN
		u32_t reserved : 24;
		u32_t capability_ptr : 8;
#else
		u32_t capability_ptr : 8;
		u32_t reserved : 24;
#endif

		/* offset 38:				*/
		u32_t rom_address;

/* offset 3C:				*/
#ifdef _BIG_ENDIAN
		u32_t bridge_control : 16;
		u32_t interrupt_pin
			: 8; /*   interrupt pin assignment		*/
		u32_t interrupt_line
			: 8; /*   interrupt line assignment		*/
#else
		u32_t interrupt_line
			: 8; /*   interrupt line assignment		*/
		u32_t interrupt_pin
			: 8; /*   interrupt pin assignment		*/
		u32_t bridge_control : 16;
#endif

	} bridge_field;

	/* direct access to each word in the PCI header */

	struct {
		u32_t word0;  /* word  0: offset 00			*/
		u32_t word1;  /* word  1: offset 04			*/
		u32_t word2;  /* word  2: offset 08			*/
		u32_t word3;  /* word  3: offset 0C			*/
		u32_t word4;  /* word  4: offset 10			*/
		u32_t word5;  /* word  5: offset 14			*/
		u32_t word6;  /* word  6: offset 18			*/
		u32_t word7;  /* word  7: offset 1C			*/
		u32_t word8;  /* word  8: offset 20			*/
		u32_t word9;  /* word  9: offset 24			*/
		u32_t word10; /* word 10: offset 28			*/
		u32_t word11; /* word 11: offset 2C			*/
		u32_t word12; /* word 12: offset 30			*/
		u32_t word13; /* word 13: offset 34			*/
		u32_t word14; /* word 14: offset 38			*/
		u32_t word15; /* word 15: offset 3C			*/
	} word;

	struct {
		/* array of words for the header */
		u32_t word[PCI_HEADER_WORDS];
	} words;

};

/*
 * Generic Capability register set header:
 *
 * +---------------------------------------------------------------------------+
 * | Register |   Bits 31-24   |   Bits 23-16   |   Bits 15-8   |  Bits 7-0    |
 * +----------+----------------+----------------+---------------+--------------+
 * |    00    |  Capability specific data       | Next Pointer  |   Cap ID     |
 * +---------------------------------------------------------------------------+
 */

typedef union pci_cap_hdr {
	struct {
		/* offset 00:				*/
		u32_t id : 8; /*   capability ID			*/
		u32_t next_ptr
			: 8; /*   pointer to next capability		*/
		u32_t feature
			: 16; /*   capability specific field		*/
	} field;

	u32_t word; /* array of words for the header	*/
} pci_cap_hdr_t;

union pcie_cap_hdr {
	struct {
		/* offset 00:				*/
		u32_t id : 16;     /*   capability ID			*/
		u32_t version : 4; /*   version		*/
		u32_t next_ptr
			: 12; /*   pointer to next capability		*/
	} field;

	u32_t word; /* array of words for the header	*/
};

/*
 * MSI Capability register set (32-bit):
 *
 * +---------------------------------------------------------------------------+
 * |Register|   Bits 31-24   |   Bits 23-16   |    Bits 15-8   |   Bits 7-0    |
 * +--------+----------------+----------------+----------------+---------------+
 * |    00  |  Message Control Register       |  Next Pointer  |    Cap ID     |
 * +--------+---------------------------------+----------------+---------------+
 * |    04  |                      Message Address Register                0 0 |
 * +--------+---------------------------------+--------------------------------+
 * |    0C  |                                 |      Message Data Register     |
 * +---------------------------------------------------------------------------+
 *
 * MSI Capability register set (64-bit):
 *
 * +---------------------------------------------------------------------------+
 * |Register|   Bits 31-24   |   Bits 23-16   |    Bits 15-8   |   Bits 7-0    |
 * +--------+----------------+----------------+----------------+---------------+
 * |    00  |  Message Control Register       |  Next Pointer  |    Cap ID     |
 * +--------+---------------------------------+----------------+---------------+
 * |    04  |  Least-Significant 32-bits of Message Address Register       0 0 |
 * +--------+--------------------------------------------------+---------------+
 * |    08  |  Most-Significant 32-bits of Message Address Register            |
 * +--------+---------------------------------+--------------------------------+
 * |    0C  |                                 |      Message Data Register     |
 * +---------------------------------------------------------------------------+
 */

struct _pci_msi_hdr {
	/* common MSI header */
	union {
		struct {
						/* offset 00:		      */
			u32_t id : 8;	/* capability ID              */
			u32_t next_ptr : 8;	/* pointer to next capability */
			u32_t enabled : 1;	/* MSI enabled		      */
			u32_t msg_req : 3;	/* requested message count    */
			u32_t msg_grant : 3; /* granted message count      */
			u32_t is_64_bit : 1; /* 64-bit capable             */
			u32_t reserved : 8;	/*			      */
		} msi_cap;

		struct {
						/* offset 00:		      */
			u32_t id : 8;	/* capability ID              */
			u32_t next_ptr : 8;	/* pointer to next capability */
			u32_t table_size : 11; /* MSI-x table size         */
			u32_t reserved : 3;	/*		              */
			u32_t func_mask : 1; /* 1 for vectors masked	      */
			u32_t enabled : 1;	/* MSI-x enabled              */
		} msix_cap;
	} cap;

	union {
		/* 32-bit MSI header */
		struct {
						/* offset 04:		      */
			u32_t addr;          /* message address register   */
						/* offset 08		      */
			u32_t data : 16;	/*   message data register    */
			u32_t spare : 16;	/*			      */
		} regs32;
		/* 64-bit MSI header */
		struct {
						/* offset 04:		      */
			u32_t addr_low;	/*  message address register
						 *  (lower)
						 */
						/* offset 08:		      */
			u32_t addr_high;	/*   message address register
						 * (upper)
						 */
						/* offset 0C:		      */
			u32_t data : 16;	/*  message data register     */
			u32_t spare : 16;	/*			      */
		} regs64;
	} regs;
};

union pci_msi_hdr {
	struct _pci_msi_hdr field; /* MSI header fields		  */
	u32_t word[4];   /* array of words for the header	  */
};

/*
 * number of pci controllers; initialized to 0 until the controllers have been
 * created
 */
extern u32_t pci_controller_cnt;

struct pci_msix_table {
	u32_t msg_addr;
	u32_t msg_addr_high;
	u32_t msg_data;
	u32_t vec_ctrl;
};

struct pci_msix_entry {
	u32_t vector; /* guest to write a vector */
	u16_t entry;  /* driver to specify entry, guest OS writes */
};

struct pci_msix_info {
	u32_t bus_no;
	u32_t dev_no;
	u32_t func_no;
	u32_t msix_vec;
};

/* manager interface API */

extern void pci_read(u32_t controller,
		    union pci_addr_reg addr,
		    u32_t size,
		    u32_t *data);
extern void pci_write(u32_t controller,
		     union pci_addr_reg addr,
		     u32_t size,
		     u32_t data);

extern void pci_header_get(u32_t controller,
			 union pci_addr_reg pci_ctrl_addr,
			 union pci_dev *pci_dev_header);

/* General PCI configuration access routines */

extern void pci_config_out_long(u32_t bus,    /* bus number */
			     u32_t dev,    /* device number */
			     u32_t func,   /* function number */
			     u32_t offset, /* offset into the configuration
					       * space
					       */
			     u32_t data /* data written to the offset */
			     );

extern void pci_config_out_word(u32_t bus,    /* bus number */
			     u32_t dev,    /* device number */
			     u32_t func,   /* function number */
			     u32_t offset, /* offset into the configuration
					       * space
					       */
			     u16_t data /* data written to the offset */
			     );

extern void pci_config_out_byte(u32_t bus,    /* bus number */
			     u32_t dev,    /* device number */
			     u32_t func,   /* function number */
			     u32_t offset, /* offset into the configuration
					       * space
					       */
			     u8_t data /* data written to the offset */
			     );

extern void pci_config_in_long(u32_t bus,    /* bus number */
			    u32_t dev,    /* device number */
			    u32_t func,   /* function number */
			    u32_t offset, /* offset into the configuration
					      * space
					      */
			    u32_t *data /* return value address */
			    );

extern void pci_config_in_word(u32_t bus,    /* bus number */
			    u32_t dev,    /* device number */
			    u32_t func,   /* function number */
			    u32_t offset, /* offset into the configuration
					      * space
					      */
			    u16_t *data /* return value address */
			    );

extern void pci_config_in_byte(u32_t bus,    /* bus number */
			    u32_t dev,    /* device number */
			    u32_t func,   /* function number */
			    u32_t offset, /* offset into the configuration
					      * space
					      */
			    u8_t *data /* return value address */
			    );

extern int pci_config_ext_cap_ptr_find(
	u8_t ext_cap_find_id, /* Extended capabilities ID to search for */
	u32_t bus,	 /* PCI bus number */
	u32_t device,      /* PCI device number */
	u32_t function,    /* PCI function number */
	u8_t *p_offset      /* returned config space offset */
	);

#endif /* _ASMLANGUAGE */

#define PCI_CMD 4 /* command register */

/* PCI command bits */

#define PCI_CMD_IO_ENABLE 0x0001     /* IO access enable */
#define PCI_CMD_MEM_ENABLE 0x0002    /* memory access enable */
#define PCI_CMD_MASTER_ENABLE 0x0004 /* bus master enable */
#define PCI_CMD_MON_ENABLE 0x0008    /* monitor special cycles enable */
#define PCI_CMD_WI_ENABLE 0x0010     /* write and invalidate enable */
#define PCI_CMD_SNOOP_ENABLE 0x0020  /* palette snoop enable */
#define PCI_CMD_PERR_ENABLE 0x0040   /* parity error enable */
#define PCI_CMD_WC_ENABLE 0x0080     /* wait cycle enable */
#define PCI_CMD_SERR_ENABLE 0x0100   /* system error enable */
#define PCI_CMD_FBTB_ENABLE 0x0200   /* fast back to back enable */
#define PCI_CMD_INTX_DISABLE 0x0400  /* INTx disable */

/* PCI status bits */

#define PCI_STATUS_NEW_CAP 0x0010
#define PCI_STATUS_66_MHZ 0x0020
#define PCI_STATUS_UDF 0x0040
#define PCI_STATUS_FAST_BB 0x0080
#define PCI_STATUS_DATA_PARITY_ERR 0x0100
#define PCI_STATUS_TARGET_ABORT_GEN 0x0800
#define PCI_STATUS_TARGET_ABORT_RCV 0x1000
#define PCI_STATUS_MASTER_ABORT_RCV 0x2000
#define PCI_STATUS_ASSERT_SERR 0x4000
#define PCI_STATUS_PARITY_ERROR 0x8000

/* Standard device Type 0 configuration register offsets */
/* Note that only modulo-4 addresses are written to the address register */

#define PCI_CFG_VENDOR_ID 0x00
#define PCI_CFG_DEVICE_ID 0x02
#define PCI_CFG_COMMAND 0x04
#define PCI_CFG_STATUS 0x06
#define PCI_CFG_REVISION 0x08
#define PCI_CFG_PROGRAMMING_IF 0x09
#define PCI_CFG_SUBCLASS 0x0a
#define PCI_CFG_CLASS 0x0b
#define PCI_CFG_CACHE_LINE_SIZE 0x0c
#define PCI_CFG_LATENCY_TIMER 0x0d
#define PCI_CFG_HEADER_TYPE 0x0e
#define PCI_CFG_BIST 0x0f
#define PCI_CFG_BASE_ADDRESS_0 0x10
#define PCI_CFG_BASE_ADDRESS_1 0x14
#define PCI_CFG_BASE_ADDRESS_2 0x18
#define PCI_CFG_BASE_ADDRESS_3 0x1c
#define PCI_CFG_BASE_ADDRESS_4 0x20
#define PCI_CFG_BASE_ADDRESS_5 0x24
#define PCI_CFG_CIS 0x28
#define PCI_CFG_SUB_VENDER_ID 0x2c
#define PCI_CFG_SUB_SYSTEM_ID 0x2e
#define PCI_CFG_EXPANSION_ROM 0x30
#define PCI_CFG_CAP_PTR 0x34
#define PCI_CFG_RESERVED_0 0x35
#define PCI_CFG_RESERVED_1 0x38
#define PCI_CFG_DEV_INT_LINE 0x3c
#define PCI_CFG_DEV_INT_PIN 0x3d
#define PCI_CFG_MIN_GRANT 0x3e
#define PCI_CFG_MAX_LATENCY 0x3f
#define PCI_CFG_SPECIAL_USE 0x41
#define PCI_CFG_MODE 0x43
#define PCI_NUM_BARS 6 /* Number of BARs */

/* PCI base address mask bits */

#define PCI_MEMBASE_MASK ~0xf  /* mask for memory base address */
#define PCI_IOBASE_MASK ~0x3   /* mask for IO base address */
#define PCI_BASE_IO 0x1	/* IO space indicator */
#define PCI_BASE_BELOW_1M 0x2  /* memory locate below 1MB */
#define PCI_BASE_IN_64BITS 0x4 /* memory locate anywhere in 64 bits */
#define PCI_BASE_PREFETCH 0x8  /* memory prefetchable */

/* Base Address Register Memory/IO Attribute bits */

#define PCI_BAR_MEM_TYPE_MASK (0x06)
#define PCI_BAR_MEM_ADDR32 (0x00)
#define PCI_BAR_MEM_BELOW_1MB (0x02)
#define PCI_BAR_MEM_ADDR64 (0x04)
#define PCI_BAR_MEM_RESERVED (0x06)

#define PCI_BAR_MEM_PREF_MASK (0x08)
#define PCI_BAR_MEM_PREFETCH (0x08)
#define PCI_BAR_MEM_NON_PREF (0x00)

#define PCI_BAR_ALL_MASK \
	(PCI_BAR_SPACE_MASK | PCI_BAR_MEM_TYPE_MASK | PCI_BAR_MEM_PREF_MASK)

#define PCI_BAR_SPACE_MASK (0x01)
#define PCI_BAR_SPACE_IO (0x01)
#define PCI_BAR_SPACE_MEM (0x00)
#define PCI_BAR_SPACE_NONE PCI_BAR_MEM_RESERVED

#define PCI_BAR_NONE 0
#define PCI_BAR_IO 0x1
#define PCI_BAR_MEM 0x2

#define PCI_EXP_2_CAP 0x24	 /* Dev 2 cap */
#define PCI_EXP_2_CTRL 0x28	/* Dev 2 control */
#define PCI_EXP_2_STATUS 0x2a      /* Dev 2 status */
#define PCI_EXP_2_LINK_CAP 0x2c    /* Dev 2 Link cap */
#define PCI_EXP_2_LINK_CTRL 0x30   /* Dev 2 Link control */
#define PCI_EXP_2_LINK_STATUS 0x32 /* Dev 2 Link status */
#define PCI_EXP_2_SLOT_CAP 0x34    /* Dev 2 Slot cap */
#define PCI_EXP_2_SLOT_CTRL 0x38   /* Dev 2 slot control */
#define PCI_EXP_2_SLOT_STATUS 0x3a /* Dev 2 slot status */

#define PCI_CFG_SPACE_SIZE 0x100
#define PCIE_CFG_SPACE_SIZE 0x1000
#define PCIE_CFG_SPACE_TOTAL ((PCIE_CFG_SPACE_SIZE - PCI_CFG_SPACE_SIZE) / 4)

/* Extended Capabilities (PCI-X 2.0 and Express) */
#define PCIE_EXT_CAP_ID(header) (header & 0x0000ffff)
#define PCIE_EXT_CAP_VER(header) ((header >> 16) & 0xf)
#define PCIE_EXT_CAP_NEXT(header) ((header >> 20) & 0xffc)

#define PCIE_EXT_CAP_ID_ERR 1
#define PCIE_EXT_CAP_ID_VC 2
#define PCIE_EXT_CAP_ID_DSN 3
#define PCIE_EXT_CAP_ID_PWR 4
#define PCIE_EXT_CAP_ID_ARI 14
#define PCIE_EXT_CAP_ID_ATS 15
#define PCIE_EXT_CAP_ID_SRIOV 16

/* Advanced Error Reporting */

#define PCIE_ERR_UNCOR_STATUS 4			 /* Uncorrectable Error Status*/
#define PCIE_ERR_UNC_TRAIN 0x00000001		 /* Training */
#define PCIE_ERR_UNC_DLP 0x00000010		 /* Data Link Protocol */
#define PCIE_ERR_UNC_POISON_TLP 0x00001000       /* Poisoned TLP */
#define PCIE_ERR_UNC_FCP 0x00002000		 /* Flow Control Protocol */
#define PCIE_ERR_UNC_COMP_TIME 0x00004000	/* Completion Timeout */
#define PCIE_ERR_UNC_COMP_ABORT 0x00008000       /* Completer Abort */
#define PCIE_ERR_UNC_UNX_COMP 0x00010000	 /* Unexpected Completion */
#define PCIE_ERR_UNC_RX_OVER 0x00020000		 /* Receiver Overflow */
#define PCIE_ERR_UNC_MALF_TLP 0x00040000	 /* Malformed TLP */
#define PCIE_ERR_UNC_ECRC 0x00080000		 /* ECRC Error Status */
#define PCIE_ERR_UNC_UNSUP 0x00100000		 /* Unsupported Request */
#define PCIE_ERR_UNCOR_MASK 8			 /* Uncorrectable Error Mask */
						 /* Same bits as above */
#define PCIE_ERR_UNCOR_SEVER 12			 /* Uncorrectable Erro Sev. */
						 /* Same bits as above */
#define PCIE_ERR_COR_STATUS 16			 /* Correctable Error Status */
#define PCIE_ERR_COR_RCVR 0x00000001		 /* Receiver Error Status */
#define PCIE_ERR_COR_BAD_TLP 0x00000040		 /* Bad TLP Status */
#define PCIE_ERR_COR_BAD_DLLP 0x00000080	 /* Bad DLLP Status */
#define PCIE_ERR_COR_REP_ROLL 0x00000100	 /* REPLAY_NUM Rollover */
#define PCIE_ERR_COR_REP_TIMER 0x00001000	/* Replay Timer Timeout */
#define PCIE_ERR_COR_MASK 20			 /* Correctable Error Mask */
						 /* Same bits as above */
#define PCIE_ERR_CAP 24				 /* Advanced Error Cap */
#define PCIE_ERR_CAP_FEP(x) ((x) & 31)		 /* First Error Pointer */
#define PCIE_ERR_CAP_ECRC_GENC 0x00000020	/* ECRC Generation Capable */
#define PCIE_ERR_CAP_ECRC_GENE 0x00000040	/* ECRC Generation Enable */
#define PCIE_ERR_CAP_ECRC_CHKC 0x00000080	/* ECRC Check Capable */
#define PCIE_ERR_CAP_ECRC_CHKE 0x00000100	/* ECRC Check Enable */
#define PCIE_ERR_HEADER_LOG 28			 /* Header Log Reg (16 bytes) */
#define PCIE_ERR_ROOT_COMMAND 44		 /* Root Error Command */
#define PCIE_ERR_ROOT_CMD_COR_EN 0x00000001      /* Correctable Err Report */
#define PCIE_ERR_ROOT_CMD_NONFATAL_EN 0x00000002 /* Non-fatal Err Reporting */
#define PCIE_ERR_ROOT_CMD_FATAL_EN 0x00000004    /* Fatal Err Reporting En */
#define PCIE_ERR_ROOT_STATUS 48
#define PCIE_ERR_ROOT_COR_RCV 0x00000001	 /* ERR_COR Received */
#define PCIE_ERR_ROOT_MULTI_COR_RCV 0x00000002   /* Multi ERR_COR Received */
#define PCIE_ERR_ROOT_UNCOR_RCV 0x00000004       /* ERR_FATAL/NONFATAL Rcv */
#define PCIE_ERR_ROOT_MULTI_UNCOR_RCV 0x00000008 /* Multi ERR_FATAL/NONFATAL*/
#define PCIE_ERR_ROOT_FIRST_FATAL 0x00000010     /* First Fatal */
#define PCIE_ERR_ROOT_NONFATAL_RCV 0x00000020    /* Non-Fatal Received */
#define PCIE_ERR_ROOT_FATAL_RCV 0x00000040       /* Fatal Received */
#define PCIE_ERR_ROOT_COR_SRC 52
#define PCIE_ERR_ROOT_SRC 54

/* Virtual Channel */

#define PCIE_VC_PORT_REG1 4
#define PCIE_VC_PORT_REG2 8
#define PCIE_VC_PORT_CTRL 12
#define PCIE_VC_PORT_STATUS 14
#define PCIE_VC_RES_CAP 16
#define PCIE_VC_RES_CTRL 20
#define PCIE_VC_RES_STATUS 26

/* Power Budgeting */

#define PCIE_PWR_DSR 4				    /* Data Select Register */
#define PCIE_PWR_DATA 8				    /* Data Register */
#define PCIE_PWR_DATA_BASE(x) ((x) & 0xff)	  /* Base Power */
#define PCIE_PWR_DATA_SCALE(x) (((x) >> 8) & 3)     /* Data Scale */
#define PCIE_PWR_DATA_PM_SUB(x) (((x) >> 10) & 7)   /* PM Sub State */
#define PCIE_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3) /* PM State */
#define PCIE_PWR_DATA_TYPE(x) (((x) >> 15) & 7)     /* Type */
#define PCIE_PWR_DATA_RAIL(x) (((x) >> 18) & 7)     /* Power Rail */
#define PCIE_PWR_CAP 12				    /* Capability */
#define PCIE_PWR_CAP_BUDGET(x) ((x) & 1)	    /* Included in sys budget */

/*
 * Hypertransport sub capability types
 *
 * Unfortunately there are both 3 bit and 5 bit capability types defined
 * in the HT spec, catering for that is a little messy. You probably don't
 * want to use these directly, just use pci_find_ht_capability() and it
 * will do the right thing for you.
 */

#define HT_3BIT_CAP_MASK 0xE0
#define HT_CAPTYPE_SLAVE 0x00 /* Slave/Primary link configuration */
#define HT_CAPTYPE_HOST 0x20  /* Host/Secondary link configuration */

#define HT_5BIT_CAP_MASK 0xF8
#define HT_CAPTYPE_IRQ 0x80	  /* IRQ Configuration */
#define HT_CAPTYPE_REMAPPING_40 0xA0 /* 40 bit address remapping */
#define HT_CAPTYPE_REMAPPING_64 0xA2 /* 64 bit address remapping */
#define HT_CAPTYPE_UNITID_CLUMP 0x90 /* Unit ID clumping */
#define HT_CAPTYPE_EXTCONF 0x98      /* Extended Configuration Space Access*/
#define HT_CAPTYPE_MSI_MAPPING 0xA8  /* MSI Mapping Capability */
#define HT_MSI_FLAGS 0x02	    /* Offset to flags */
#define HT_MSI_FLAGS_ENABLE 0x1      /* Mapping enable */
#define HT_MSI_FLAGS_FIXED 0x2       /* Fixed mapping only */
				     /* Fixed addr */
#define HT_MSI_FIXED_ADDR 0x00000000FEE00000ULL
#define HT_MSI_ADDR_LO 0x04 /* Offset to low addr bits */
				/* Low address bit mask */
#define HT_MSI_ADDR_LO_MASK 0xFFF00000
#define HT_MSI_ADDR_HI 0x08	  /* Offset to high addr bits */
#define HT_CAPTYPE_DIRECT_ROUTE 0xB0 /* Direct routing configuration */
#define HT_CAPTYPE_VCSET 0xB8	/* Virtual Channel configuration */
#define HT_CAPTYPE_ERROR_RETRY 0xC0  /* Retry on error configuration */
#define HT_CAPTYPE_GEN3 0xD0	 /* Generation 3 hypertransport config */
#define HT_CAPTYPE_PM 0xE0	   /* Hypertransport powermanagement cfg */

/* Alternative Routing-ID Interpretation */
#define PCIE_ARI_CAP 0x04	/* ARI Capability Register */
#define PCIE_ARI_CAP_MFVC 0x0001 /* MFVC Function Groups Capability */
#define PCIE_ARI_CAP_ACS 0x0002  /* ACS Function Groups Capability */
				 /* Next Function Number */
#define PCIE_ARI_CAP_NFN(x) (((x) >> 8) & 0xff)
#define PCIE_ARI_CTRL 0x06	/* ARI Control Register */
#define PCIE_ARI_CTRL_MFVC 0x0001 /* MFVC Function Groups Enable */
#define PCIE_ARI_CTRL_ACS 0x0002  /* ACS Function Groups Enable */
				  /* Function Group */
#define PCIE_ARI_CTRL_FG(x) (((x) >> 4) & 7)

/* Address Translation Service */
#define PCIE_ATS_CAP 0x04 /* ATS Capability Register */
			  /* Invalidate Queue Depth */
#define PCIE_ATS_CAP_QDEP(x) ((x) & 0x1f)
#define PCIE_ATS_MAX_QDEP 32	/* Max Invalidate Queue Depth */
#define PCIE_ATS_CTRL 0x06	  /* ATS Control Register */
#define PCIE_ATS_CTRL_ENABLE 0x8000 /* ATS Enable */
					/* Smallest Translation Unit */
#define PCIE_ATS_CTRL_STU(x) ((x) & 0x1f)
#define PCIE_ATS_MIN_STU 12 /* shift of minimum STU block */

/* Single Root I/O Virtualization */
#define PCIE_SRIOV_CAP 0x04     /* SR-IOV Capabilities */
#define PCIE_SRIOV_CAP_VFM 0x01 /* VF Migration Capable */
				/* Interrupt Message Number */
#define PCIE_SRIOV_CAP_INTR(x) ((x) >> 21)
#define PCIE_SRIOV_CTRL 0x08       /* SR-IOV Control */
#define PCIE_SRIOV_CTRL_VFE 0x01   /* VF Enable */
#define PCIE_SRIOV_CTRL_VFM 0x02   /* VF Migration Enable */
#define PCIE_SRIOV_CTRL_INTR 0x04  /* VF Migration Interrupt Enable */
#define PCIE_SRIOV_CTRL_MSE 0x08   /* VF Memory Space Enable */
#define PCIE_SRIOV_CTRL_ARI 0x10   /* ARI Capable Hierarchy */
#define PCIE_SRIOV_STATUS 0x0a     /* SR-IOV Status */
#define PCIE_SRIOV_STATUS_VFM 0x01 /* VF Migration Status */
#define PCIE_SRIOV_INITIAL_VF 0x0c /* Initial VFs */
#define PCIE_SRIOV_TOTAL_VF 0x0e   /* Total VFs */
#define PCIE_SRIOV_NUM_VF 0x10     /* Number of VFs */
#define PCIE_SRIOV_FUNC_LINK 0x12  /* Function Dependency Link */
#define PCIE_SRIOV_VF_OFFSET 0x14  /* First VF Offset */
#define PCIE_SRIOV_VF_STRIDE 0x16  /* Following VF Stride */
#define PCIE_SRIOV_VF_DID 0x1a     /* VF Device ID */
#define PCIE_SRIOV_SUP_PGSIZE 0x1c /* Supported Page Sizes */
#define PCIE_SRIOV_SYS_PGSIZE 0x20 /* System Page Size */
#define PCIE_SRIOV_BAR0 0x24       /* VF BAR0 */
#define PCIE_SRIOV_BAR0_UPPER 0x28 /* VF BAR0 upper*/
#define PCIE_SRIOV_BAR3 0x30       /* VF BAR3 */
#define PCIE_SRIOV_BAR3_UPPER 0x34 /* VF BAR3 upper */

#define PCIE_SRIOV_NUM_BARS 6 /* Number of VF BARs */
#define PCIE_SRIOV_VFM 0x3c   /* VF Migration State Array Offset*/
			      /* State BIR */
#define PCIE_SRIOV_VFM_BIR(x) ((x) & 7)
/* State Offset */
#define PCIE_SRIOV_VFM_OFFSET(x) ((x) & ~7)
#define PCIE_SRIOV_VFM_UA 0x0 /* Inactive.Unavailable */
#define PCIE_SRIOV_VFM_MI 0x1 /* Dormant.MigrateIn */
#define PCIE_SRIOV_VFM_MO 0x2 /* Active.MigrateOut */
#define PCIE_SRIOV_VFM_AV 0x3 /* Active.Available */

/* Extended Capabilities (PCI-X 2.0 and Express) */

#define PCI_EXT_CAP_ID(header) (header & 0x0000ffff)
#define PCI_EXT_CAP_VER(header) ((header >> 16) & 0xf)
#define PCI_EXT_CAP_NEXT(header) ((header >> 20) & 0xffc)

#define PCI_MSIX_ENTRY_SIZE 16
#define PCI_MSIX_ENTRY_LOWER_ADDR 0
#define PCI_MSIX_ENTRY_UPPER_ADDR 4
#define PCI_MSIX_ENTRY_DATA 8
#define PCI_MSIX_ENTRY_VECTOR_CTRL 12
#define PCI_MSIX_ENTRY_VECTOR_MASKED 0x1

/* PCI-to-PCI bridge Type 1 configuration register offsets */
/* Note that only modulo-4 addresses are written to the address register */

#define PCI_CFG_PRIMARY_BUS 0x18
#define PCI_CFG_SECONDARY_BUS 0x19
#define PCI_CFG_SUBORDINATE_BUS 0x1a
#define PCI_CFG_SEC_LATENCY 0x1b
#define PCI_CFG_IO_BASE 0x1c
#define PCI_CFG_IO_LIMIT 0x1d
#define PCI_CFG_SEC_STATUS 0x1e
#define PCI_CFG_MEM_BASE 0x20
#define PCI_CFG_MEM_LIMIT 0x22
#define PCI_CFG_PRE_MEM_BASE 0x24
#define PCI_CFG_PRE_MEM_LIMIT 0x26
#define PCI_CFG_PRE_MEM_BASE_U 0x28
#define PCI_CFG_PRE_MEM_LIMIT_U 0x2c
#define PCI_CFG_IO_BASE_U 0x30
#define PCI_CFG_IO_LIMIT_U 0x32
#define PCI_CFG_ROM_BASE 0x38
#define PCI_CFG_BRG_INT_LINE 0x3c
#define PCI_CFG_BRG_INT_PIN 0x3d
#define PCI_CFG_BRIDGE_CONTROL 0x3e

/* PCI-to-CardBus bridge Type 2 configuration register offsets */

#define PCI_CFG_CB_CAP_PTR 0x14
/*  0x15 - reserved */
#define PCI_CFG_CB_SEC_STATUS 0x16
#define PCI_CFG_CB_PRIMARY_BUS 0x18     /* PCI bus no. */
#define PCI_CFG_CB_BUS 0x19		/* CardBus bus no */
#define PCI_CFG_CB_SUBORDINATE_BUS 0x1a /* Subordinate bus no. */
#define PCI_CFG_CB_LATENCY_TIMER 0x1b   /* CardBus latency timer */
#define PCI_CFG_CB_MEM_BASE_0 0x1c
#define PCI_CFG_CB_MEM_LIMIT_0 0x20
#define PCI_CFG_CB_MEM_BASE_1 0x24
#define PCI_CFG_CB_MEM_LIMIT_1 0x28
#define PCI_CFG_CB_IO_BASE_0 0x2c
#define PCI_CFG_CB_IO_BASE_0_HI 0x2e
#define PCI_CFG_CB_IO_LIMIT_0 0x30
#define PCI_CFG_CB_IO_LIMIT_0_HI 0x32
#define PCI_CFG_CB_IO_BASE_1 0x34
#define PCI_CFG_CB_IO_BASE_1_HI 0x36
#define PCI_CFG_CB_IO_LIMIT_1 0x38
#define PCI_CFG_CB_IO_LIMIT_1_HI 0x3a
#define PCI_CFG_CB_BRIDGE_CONTROL 0x3e
#define PCI_CFG_CB_SUB_VENDOR_ID 0x40
#define PCI_CFG_CB_SUB_SYSTEM_ID 0x42
#define PCI_CFG_CB_16BIT_LEGACY 0x44
/* 0x48 - 0x7f are reserved */

/* PCI Bridge Control Register (0x3E) bits */

#define PCI_CFG_PARITY_ERROR 0x01  /* Enable parity detection */
#define PCI_CFG_SERR 0x02	  /* SERR enable */
#define PCI_CFG_ISA_ENABLE 0x04    /* ISA Disable - bit set = disable*/
#define PCI_CFG_VGA_ENABLE 0x08    /* Enable VGA addresses */
#define PCI_CFG_MASTER_ABORT 0x20  /* Signal master abort */
#define PCI_CFG_SEC_BUS_RESET 0x40 /* secondary bus reset */
#define PCI_CFG_FAST_BACK 0x80     /* FBB enabled on secondary */
#define PCI_CFG_PRI_DIS_TO 0x100 /* Primary Discard Timeout: *2^10 PCI cycles */
#define PCI_CFG_SEC_DIS_TO 0x200 /* 2ndary Discard Timeout: * 2^10 PCI cycles */
#define PCI_CFG_DIS_TIMER_STAT 0x400   /* Discard Timer status */
#define PCI_CFG_DIS_TIMER_ENABLE 0x800 /* Discard Timer enable */

/* Cardbus Bridge Control Register (0x3E) bits */

#define PCI_CFG_CB_PARITY_ERROR 0x01  /* Enable parity detection */
#define PCI_CFG_CB_SERR 0x02	  /* SERR enable */
#define PCI_CFG_CB_ISA_ENABLE 0x04    /* ISA Disable - bit set = disable*/
#define PCI_CFG_CB_VGA_ENABLE 0x08    /* Enable VGA addresses */
#define PCI_CFG_CB_MASTER_ABORT 0x20  /* Signal master abort */
#define PCI_CFG_CB_RESET 0x40	 /* Cardbus reset */
#define PCI_CFG_CB_16BIT_INT 0x80     /* Enable ints for 16-bit cards */
#define PCI_CFG_CB_PREFETCH0 0x0100   /* Memory 0 prefetch enable */
#define PCI_CFG_CB_PREFETCH1 0x0200   /* Memory 1 prefetch enable */
#define PCI_CFG_CB_POST_WRITES 0x0400 /* Posted Writes */

/* Power Management registers */

#define PCI_PM_CTRL 4		  /* PM control register */
#define PCI_PM_CTRL_NO_RST 0x0008 /* No reset issued by d3-d0 */

#define PCI_PSTATE_MASK 0x0003 /* Power state bits */
#define PCI_PSTATE_D0 0x0000
#define PCI_PSTATE_D1 0x0001
#define PCI_PSTATE_D2 0x0002
#define PCI_PSTATE_D3_HOT 0x0003
#define PCI_PSTATE_D3_COLD 0x0004

/* Advanced Features */

#define PCI_AF_CAP 3
#define PCI_AF_CAP_TRPND 0x01
#define PCI_AF_CAP_FLR 0x02
#define PCI_AF_CTRL 4
#define PCI_AF_CTRL_FLR 0x01
#define PCI_AF_STATUS 5
#define PCI_AF_STATUS_TRPND 0x01

/* CompactPCI Hot Swap Control & Status Register (HSCSR) defines */

#define PCI_HS_CSR_RSVD0 0x01 /* Reserved */
#define PCI_HS_CSR_EIM 0x02   /* ENUM Interrupt Mask */
#define PCI_HS_CSR_RSVD2 0x04 /* Reserved */
#define PCI_HS_CSR_LOO 0x08   /* Blue LED On/Off */
#define PCI_HS_CSR_RSVD4 0x10 /* Reserved */
#define PCI_HS_CSR_RSVD5 0x20 /* Reserved */
#define PCI_HS_CSR_EXT 0x40   /* ENUM Status - EXTract */
#define PCI_HS_CSR_INS 0x80   /* ENUM Status - INSert */

/* PCI Standard Classifications */

/*
 * PCI classifications are composed from the concatenation of four byte-size
 * components: primary (base) class, sub-class, register interface, and
 * revision ID.  The following comprise the standard PCI classification
 * definitions.
 */

/*
 * PCI Primary (Base) Class definitions for find by class function
 * Classes 0x12 - 0xFE are reserved for future enhancements
 */

#define PCI_CLASS_PRE_PCI20 0x00
#define PCI_CLASS_MASS_STORAGE 0x01
#define PCI_CLASS_NETWORK_CTLR 0x02
#define PCI_CLASS_DISPLAY_CTLR 0x03
#define PCI_CLASS_MMEDIA_DEVICE 0x04
#define PCI_CLASS_MEM_CTLR 0x05
#define PCI_CLASS_BRIDGE_CTLR 0x06
#define PCI_CLASS_COMM_CTLR 0x07
#define PCI_CLASS_BASE_PERIPH 0x08
#define PCI_CLASS_INPUT_DEVICE 0x09
#define PCI_CLASS_DOCK_DEVICE 0x0A
#define PCI_CLASS_PROCESSOR 0x0B
#define PCI_CLASS_SERIAL_BUS 0x0C
#define PCI_CLASS_WIRELESS 0x0D
#define PCI_CLASS_INTLGNT_IO 0x0E
#define PCI_CLASS_SAT_COMM 0x0F
#define PCI_CLASS_EN_DECRYPTION 0x10
#define PCI_CLASS_DAQ_DSP 0x11
#define PCI_CLASS_UNDEFINED 0xFF

/* PCI Subclass definitions */

#define PCI_SUBCLASS_00 0x00
#define PCI_SUBCLASS_01 0x01
#define PCI_SUBCLASS_02 0x02
#define PCI_SUBCLASS_03 0x03
#define PCI_SUBCLASS_04 0x04
#define PCI_SUBCLASS_05 0x05
#define PCI_SUBCLASS_06 0x06
#define PCI_SUBCLASS_07 0x07
#define PCI_SUBCLASS_08 0x08
#define PCI_SUBCLASS_09 0x09
#define PCI_SUBCLASS_0A 0x0A
#define PCI_SUBCLASS_10 0x10
#define PCI_SUBCLASS_11 0x11
#define PCI_SUBCLASS_12 0x12
#define PCI_SUBCLASS_20 0x20
#define PCI_SUBCLASS_40 0x40
#define PCI_SUBCLASS_80 0x80
#define PCI_SUBCLASS_UNDEFINED 0xFF

/* Base Class 00 are Rev 1.0 and are not defined here. */

/* Mass Storage subclasses - Base Class 01h */

#define PCI_SUBCLASS_MASS_SCSI (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_MASS_IDE (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_MASS_FLOPPY (PCI_SUBCLASS_02)
#define PCI_SUBCLASS_MASS_IPI (PCI_SUBCLASS_03)
#define PCI_SUBCLASS_MASS_RAID (PCI_SUBCLASS_04)
#define PCI_SUBCLASS_MASS_ATA (PCI_SUBCLASS_05)
#define PCI_REG_IF_ATA_SNGL 0x20
#define PCI_REG_IF_ATA_CHND 0x30
#define PCI_SUBCLASS_MASS_OTHER (PCI_SUBCLASS_80)

/* Network subclasses - Base Class 02h */

#define PCI_SUBCLASS_NET_ETHERNET (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_NET_TOKEN_RING (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_NET_FDDI (PCI_SUBCLASS_02)
#define PCI_SUBCLASS_NET_ATM (PCI_SUBCLASS_03)
#define PCI_SUBCLASS_NET_ISDN (PCI_SUBCLASS_04)
#define PCI_SUBCLASS_NET_WFIP (PCI_SUBCLASS_05)
#define PCI_SUBCLASS_NET_PCMIG214 (PCI_SUBCLASS_06)
#define PCI_SUBCLASS_NET_OTHER (PCI_SUBCLASS_80)

/* Display subclasses - Base Class 03h */

#define PCI_SUBCLASS_DISPLAY_VGA (PCI_SUBCLASS_00)
#define PCI_REG_IF_VGA_STD 0x00
#define PCI_REG_IF_VGA_8514 0x01
#define PCI_SUBCLASS_DISPLAY_XGA (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_DISPLAY_3D (PCI_SUBCLASS_02)
#define PCI_SUBCLASS_DISPLAY_OTHER (PCI_SUBCLASS_80)

/* Multimedia subclasses  - Base Class 04h */

#define PCI_SUBCLASS_MMEDIA_VIDEO (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_MMEDIA_AUDIO (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_MMEDIA_PHONY (PCI_SUBCLASS_02)
#define PCI_SUBCLASS_MMEDIA_OTHER (PCI_SUBCLASS_80)

/* Memory subclasses - Base Class 05h */

#define PCI_SUBCLASS_MEM_RAM (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_MEM_FLASH (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_MEM_OTHER (PCI_SUBCLASS_80)

/* Bus Bridge Device subclasses - Base Class 06h */

#define PCI_SUBCLASS_HOST_PCI_BRIDGE (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_ISA_BRIDGE (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_EISA_BRIDGE (PCI_SUBCLASS_02)
#define PCI_SUBCLASS_MCA_BRIDGE (PCI_SUBCLASS_03)
#define PCI_SUBCLASS_P2P_BRIDGE (PCI_SUBCLASS_04)
#define PCI_REG_IF_P2P_STD 0x00
#define PCI_REG_IF_P2P_SUB_DECODE 0x01
#define PCI_SUBCLASS_PCMCIA_BRIDGE (PCI_SUBCLASS_05)
#define PCI_SUBCLASS_NUBUS_BRIDGE (PCI_SUBCLASS_06)
#define PCI_SUBCLASS_CARDBUS_BRIDGE (PCI_SUBCLASS_07)
#define PCI_SUBCLASS_RACEWAY_BRIDGE (PCI_SUBCLASS_08)
#define PCI_REG_IF_RACEWAY_XPARENT 0x00
#define PCI_REG_IF_RACEWAY_END_PNT 0x01
#define PCI_SUBCLASS_SEMI_XPARENT (PCI_SUBCLASS_09)
#define PCI_REG_IF_SEMI_XPARENT_PRI 0x40
#define PCI_REG_IF_SEMI_XPARENT_SEC 0x80
#define PCI_SUBCLASS_INFINI2PCI (PCI_SUBCLASS_0A)
#define PCI_SUBCLASS_OTHER_BRIDGE (PCI_SUBCLASS_80)

/* Simple Communications Controller subclasses - Base Class 07h */

#define PCI_SUBCLASS_SCC_SERIAL (PCI_SUBCLASS_00)
#define PCI_REG_IF_SERIAL_XT 0x00
#define PCI_REG_IF_SERIAL_16450 0x01
#define PCI_REG_IF_SERIAL_16550 0x02
#define PCI_REG_IF_SERIAL_16650 0x03
#define PCI_REG_IF_SERIAL_16750 0x04
#define PCI_REG_IF_SERIAL_16850 0x05
#define PCI_REG_IF_SERIAL_16950 0x06
#define PCI_SUBCLASS_SCC_PARLEL (PCI_SUBCLASS_01)
#define PCI_REG_IF_PARLEL_XT 0x00
#define PCI_REG_IF_PARLEL_BIDIR 0x01
#define PCI_REG_IF_PARLEL_ECP 0x02
#define PCI_REG_IF_PARLEL_1284CTLR 0x03
#define PCI_REG_IF_PARLEL_1284TGT 0xFE
#define PCI_SUBCLASS_SCC_MULTI (PCI_SUBCLASS_02)
#define PCI_SUBCLASS_SCC_MODEM (PCI_SUBCLASS_03)
#define PCI_REG_IF_MODEM_GENERIC 0x00
#define PCI_REG_IF_MODEM_16450 0x01
#define PCI_REG_IF_MODEM_16550 0x02
#define PCI_REG_IF_MODEM_16650 0x03
#define PCI_REG_IF_MODEM_16750 0x04
#define PCI_SUBCLASS_SCC_GPIB (PCI_SUBCLASS_04)
#define PCI_SUBCLASS_SCC_SMRTCRD (PCI_SUBCLASS_05)
#define PCI_SUBCLASS_SCC_OTHER (PCI_SUBCLASS_80)

/* Base System subclasses - Base Class 08h */

#define PCI_SUBCLASS_BASESYS_PIC (PCI_SUBCLASS_00)
#define PCI_REG_IF_PIC_GEN8259 0x00
#define PCI_REG_IF_PIC_ISA 0x01
#define PCI_REG_IF_PIC_EISA 0x02
#define PCI_REG_IF_PIC_APIC 0x10
#define PCI_REG_IF_PIC_xAPIC 0x20
#define PCI_SUBCLASS_BASESYS_DMA (PCI_SUBCLASS_01)
#define PCI_REG_IF_DMA_GEN8237 0x00
#define PCI_REG_IF_DMA_ISA 0x01
#define PCI_REG_IF_DMA_EISA 0x02
#define PCI_SUBCLASS_BASESYS_TIMER (PCI_SUBCLASS_02)
#define PCI_REG_IF_TIMER_GEN8254 0x00
#define PCI_REG_IF_TIMER_ISA 0x01
#define PCI_REG_IF_TIMER_EISA 0x02
#define PCI_SUBCLASS_BASESYS_RTC (PCI_SUBCLASS_03)
#define PCI_REG_IF_RTC_GENERIC 0x00
#define PCI_REG_IF_RTC_ISA 0x01
#define PCI_SUBCLASS_BASESYS_HOTPLUG (PCI_SUBCLASS_04)
#define PCI_SUBCLASS_BASESYS_OTHER (PCI_SUBCLASS_80)

/* Input Device subclasses - Base Class 09h */

#define PCI_SUBCLASS_INPUT_KEYBD (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_INPUT_PEN (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_INPUT_MOUSE (PCI_SUBCLASS_02)
#define PCI_SUBCLASS_INPUT_SCANR (PCI_SUBCLASS_03)
#define PCI_SUBCLASS_INPUT_GAMEPORT (PCI_SUBCLASS_04)
#define PCI_REG_IF_GAMEPORT_GENERIC 0x00
#define PCI_REG_IF_GAMEPORT_LEGACY 0x10
#define PCI_SUBCLASS_INPUT_OTHER (PCI_SUBCLASS_80)

/* Docking Station subclasses - Base Class 0Ah */

#define PCI_SUBCLASS_DOCSTATN_GENERIC (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_DOCSTATN_OTHER (PCI_SUBCLASS_80)

/* Processor subclasses - Base Class 0Bh */

#define PCI_SUBCLASS_PROCESSOR_386 (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_PROCESSOR_486 (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_PROCESSOR_PENTIUM (PCI_SUBCLASS_02)
#define PCI_SUBCLASS_PROCESSOR_ALPHA (PCI_SUBCLASS_10)
#define PCI_SUBCLASS_PROCESSOR_POWERPC (PCI_SUBCLASS_20)
#define PCI_SUBCLASS_PROCESSOR_MIPS (PCI_SUBCLASS_30)
#define PCI_SUBCLASS_PROCESSOR_COPROC (PCI_SUBCLASS_40)

/* Serial bus subclasses - Base Class 0Ch */

#define PCI_SUBCLASS_SERBUS_FIREWIRE (PCI_SUBCLASS_00)
#define PCI_REG_IF_FIREWIRE_1394 0x00
#define PCI_REG_IF_FIREWIRE_HCI1394 0x10
#define PCI_SUBCLASS_SERBUS_ACCESS (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_SERBUS_SSA (PCI_SUBCLASS_02)
#define PCI_SUBCLASS_SERBUS_USB (PCI_SUBCLASS_03)
#define PCI_REG_IF_USB_UHCI 0x00
#define PCI_REG_IF_USB_OHCI 0x10
#define PCI_REG_IF_USB_EHCI 0x20
#define PCI_REG_IF_USB_XHCI 0x30
#define PCI_REG_IF_USB_ANY 0x80
#define PCI_REG_IF_USB_NONHOST 0xFE
#define PCI_SUBCLASS_SERBUS_FIBRE_CHAN (PCI_SUBCLASS_04)
#define PCI_SUBCLASS_SERBUS_SMBUS (PCI_SUBCLASS_05)
#define PCI_SUBCLASS_SERBUS_INFINI (PCI_SUBCLASS_06)
#define PCI_SUBCLASS_SERBUS_IPMI (PCI_SUBCLASS_07)
#define PCI_REG_IF_IPMI_SMIC 0x00
#define PCI_REG_IF_IPMI_KYBD 0x01
#define PCI_REG_IF_IPMI_BLCK 0x02
#define PCI_SUBCLASS_SERBUS_SERCOS (PCI_SUBCLASS_08)
#define PCI_SUBCLASS_SERBUS_CAN (PCI_SUBCLASS_09)
#define PCI_SUBCLASS_SERBUS_OTHER (PCI_SUBCLASS_80)

/* Wireless subclasses - Base Class 0Dh */

#define PCI_SUBCLASS_WIRELESS_IRDA (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_WIRELESS_OTHER_IR (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_WIRELESS_RF (PCI_SUBCLASS_10)
#define PCI_SUBCLASS_WIRELESS_BTOOTH (PCI_SUBCLASS_11)
#define PCI_SUBCLASS_WIRELESS_BBAND (PCI_SUBCLASS_12)
#define PCI_SUBCLASS_WIRELESS_OTHER (PCI_SUBCLASS_80)

/*
 * Intelligent I/O subclasses - Base Class 0Eh
 * REG_IF values greater than 0x00 are reserved for I2O
 */

#define PCI_SUBCLASS_INTELIO (PCI_SUBCLASS_00)
#define PCI_REG_IF_INTELIO_MSG_FIFO 0x00
#define PCI_8UBCLASS_INTELIO_OTHER (PCI_SUBCLASS_00)

/* Satellite Device Communication subclasses - Base Class 0Fh */

#define PCI_SUBCLASS_SATCOM_TV (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_SATCOM_AUDIO (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_SATCOM_VOICE (PCI_SUBCLASS_03)
#define PCI_SUBCLASS_SATCOM_DATA (PCI_SUBCLASS_04)
#define PCI_SUBCLASS_SATCOM_OTHER (PCI_SUBCLASS_80)

/* Encryption/Decryption subclasses - Base Class 10h */

#define PCI_SUBCLASS_EN_DECRYP_NETWORK (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_EN_DECRYP_ENTRTMNT (PCI_SUBCLASS_10)
#define PCI_SUBCLASS_EN_DECRYP_OTHER (PCI_SUBCLASS_80)

/* Data Acquisition and Signal Processing subclasses - Base Class 11h */

#define PCI_SUBCLASS_DAQ_DSP_DPIO (PCI_SUBCLASS_00)
#define PCI_SUBCLASS_DAQ_DSP_PCTRS (PCI_SUBCLASS_01)
#define PCI_SUBCLASS_DAQ_DSP_COMM (PCI_SUBCLASS_10)
#define PCI_SUBCLASS_DAQ_DSP_MGMT (PCI_SUBCLASS_20)
#define PCI_SUBCLASS_DAQ_DSP_OTHER (PCI_SUBCLASS_80)

/* PCI status field bit definitions */

#define PCI_STATUS_RESERVED_0 0x0001
#define PCI_STATUS_RESERVED_1 0x0002
#define PCI_STATUS_RESERVED_2 0x0004
#define PCI_STATUS_INT_STATUS 0x0008
#define PCI_STATUS_CAPABILITY_LIST 0x0010
#define PCI_STATUS_66MHZ 0x0020
#define PCI_STATUS_UDF_SUPPORTED 0x0040
#define PCI_STATUS_FAST_B_TO_B 0x0080
#define PCI_STATUS_DATA_PARITY_ERROR 0x0100
#define PCI_STATUS_DEVSEL_TIMING 0x0600
#define PCI_STATUS_SIG_TGT_ABORT 0x0800
#define PCI_STATUS_RCV_TGT_ABORT 0x1000
#define PCI_STATUS_RCV_MAST_ABORT 0x2000
#define PCI_STATUS_SIG_SYS_ERROR 0x4000
#define PCI_STATUS_DETECT_PARITY_ERROR 0x8000

/* PCI Capability register set identification */

#define PCI_CAP_RESERVED 0x00
#define PCI_CAP_POWER_MGMT 0x01      /* Power Management interface */
#define PCI_CAP_AGP 0x02	     /* AGP Capability	      */
#define PCI_CAP_VPD 0x03	     /* Vital Product Data	      */
#define PCI_CAP_SLOT_ID 0x04	 /* Bridge Slot Identification */
#define PCI_CAP_MSI 0x05	     /* Message Signaled Interrupts*/
#define PCI_CAP_HOT_SWAP 0x06	/* CompactPCI Hot Swap	      */
#define PCI_CAP_PCIX 0x07	    /* PCI-X features	      */
#define PCI_CAP_HYPERTRANSPORT 0x08  /* hypertransport support     */
#define PCI_CAP_VENDOR_SPECIFIC 0x09 /* vendor specific	      */
#define PCI_CAP_DEBUG_PORT 0x0a      /* debug port info	      */
#define PCI_CAP_CPCI_RES_CTRL 0x0b   /* CompactPCI resource control*/
#define PCI_CAP_SHPC 0x0c	    /* hot-plug controller	      */
#define PCI_CAP_P2P_SSID 0x0d	/* subsystem ID capability    */
#define PCI_CAP_AGP_TARGET 0x0e      /* Accelerated Graphics Port  */
#define PCI_CAP_SECURE 0x0f	  /* secure device	      */
#define PCI_CAP_PCI_EXPRESS 0x10     /* PCI Express		      */
#define PCI_CAP_MSIX 0x11	    /* optional extension to MSI  */
#define PCI_CAP_ADVANCED 0x13	/* advanced Features	      */

/* Extended Capability IDs */

#define PCI_EXT_CAP_PCI_PM PCI_CAP_POWER_MGMT
#define PCI_EXT_CAP_AGP PCI_CAP_AGP
#define PCI_EXT_CAP_VPD PCI_CAP_VPD
#define PCI_EXT_CAP_SLOTID PCI_CAP_SLOT_ID
#define PCI_EXT_CAP_MSI PCI_CAP_MSI
#define PCI_EXT_CAP_HOT_SWAP PCI_CAP_HOT_SWAP
#define PCI_EXT_CAP_PCIX PCI_CAP_PCIX
#define PCI_EXT_CAP_DBG_PORT PCI_CAP_DEBUG_PORT
#define PCI_EXT_CAP_CPCI_RES PCI_CAP_CPCI_RES_CTRL
#define PCI_EXT_CAP_HPC PCI_CAP_SHPC
#define PCI_EXT_CAP_EXP PCI_CAP_PCI_EXPRESS
#define PCI_EXT_CAP_MSIX PCI_CAP_MSIX
#define PCI_EXT_CAP_AF PCI_CAP_ADVANCED

/* Power Management Registers */

#define PCI_POWER_MGMT_CAP 2	  /* PM Capabilities Register */
#define PCI_POWER_MGMT_CSR 4	  /* PM CSR Register */
#define PCI_PM_STATE_MASK 0x0003      /* Current power state (D0 to D3) */
#define PCI_PM_NO_SOFT_RESET 0x0008   /* No reset for D3hot->D0 */
#define PCI_PM_PME_ENABLE 0x0100      /* PME pin enable */
#define PCI_PM_DATA_SEL_MASK 0x1e00   /* Data select (??) */
#define PCI_PM_DATA_SCALE_MASK 0x6000 /* Data scale (??) */
#define PCI_PM_PME_STATUS 0x8000      /* PME pin status */

#define PCI_PWR_D0 0
#define PCI_PWR_D1 1
#define PCI_PWR_D2 2
#define PCI_PWR_D3hot 3
#define PCI_PWR_D3cold 4
#define PCI_PWR_BOOTUP 5

#define PCI_MSI_FLAGS_ENABLE 0x1
#define PCI_MSI_FLAGS 2

/* MSI-X registers (these are at offset PCI_MSIX_FLAGS) */

#define PCI_MSIX_FLAGS 2
#define PCI_MSIX_FLAGS_QSIZE 0x7FF
#define PCI_MSIX_FLAGS_ENABLE BIT(15)
#define PCI_MSIX_FLAGS_MASKALL BIT(14)
#define PCI_MSIX_FLAGS_BIRMASK BIT(0)
#define PCI_MSIX_TABLE_OFFSET 0x4

/* Macros to support Intel VT-d code */

#define PCI_BUS(bdf) (((bdf) >> 8) & 0xff)
#define PCI_SLOT(bdf) (((bdf) >> 3) & 0x1f)
#define PCI_FUNC(bdf) ((bdf) & 0x07)
#define PCI_DEVFN(d, f) ((((d) & 0x1f) << 3) | ((f) & 0x07))
#define PCI_DEVFN2(bdf) ((bdf) & 0xff)
#define PCI_BDF(b, d, f) ((((b) & 0xff) << 8) | PCI_DEVFN(d, f))
#define PCI_BDF2(b, df) ((((b) & 0xff) << 8) | ((df) & 0xff))

/* PCI Express capability registers */

#define PCI_EXP_FLAGS 2			 /* Capabilities register */
#define PCI_EXP_FLAGS_VERS 0x000f	/* Capability version */
#define PCI_EXP_FLAGS_TYPE 0x00f0	/* Device/Port type */
#define PCI_EXP_TYPE_ENDPOINT 0x0	/* Express Endpoint */
#define PCI_EXP_TYPE_LEG_END 0x1	 /* Legacy Endpoint */
#define PCI_EXP_TYPE_ROOT_PORT 0x4       /* Root Port */
#define PCI_EXP_TYPE_UPSTREAM 0x5	/* Upstream Port */
#define PCI_EXP_TYPE_DOWNSTREAM 0x6      /* Downstream Port */
#define PCI_EXP_TYPE_PCI_BRIDGE 0x7      /* PCI/PCI-X Bridge */
#define PCI_EXP_TYPE_RC_END 0x9		 /* Root Complex Integrated endpt.*/
#define PCI_EXP_FLAGS_SLOT 0x0100	/* Slot implemented */
#define PCI_EXP_FLAGS_IRQ 0x3e00	 /* Interrupt message number */
#define PCI_EXP_DEVCAP 4		 /* Device capabilities */
#define PCI_EXP_DEVCAP_PAYLOAD 0x07      /* Max_Payload_Size */
#define PCI_EXP_DEVCAP_PHANTOM 0x18      /* Phantom functions */
#define PCI_EXP_DEVCAP_EXT_TAG 0x20      /* Extended tags */
#define PCI_EXP_DEVCAP_L0S 0x1c0	 /* L0s Acceptable Latency */
#define PCI_EXP_DEVCAP_L1 0xe00		 /* L1 Acceptable Latency */
#define PCI_EXP_DEVCAP_ATN_BUT 0x1000    /* Attention Button Present */
#define PCI_EXP_DEVCAP_ATN_IND 0x2000    /* Attention Indicator Present */
#define PCI_EXP_DEVCAP_PWR_IND 0x4000    /* Power Indicator Present */
#define PCI_EXP_DEVCAP_PWR_VAL 0x3fc0000 /* Slot Power Limit Value */
#define PCI_EXP_DEVCAP_PWR_SCL 0xc000000 /* Slot Power Limit Scale */
#define PCI_EXP_DEVCAP_FLR 0x10000000    /* Function Level Reset */
#define PCI_EXP_DEVCTL 8		 /* Device Control */
#define PCI_EXP_DEVCTL_CERE 0x0001       /* Correctable Error Reporting En*/
#define PCI_EXP_DEVCTL_NFERE 0x0002      /* Non-Fatal Error Reporting En */
#define PCI_EXP_DEVCTL_FERE 0x0004       /* Fatal Error Reporting Enable */
#define PCI_EXP_DEVCTL_URRE 0x0008       /* Unsupported Request Reporting */
#define PCI_EXP_DEVCTL_RELAX_EN 0x0010   /* Enable relaxed ordering */
#define PCI_EXP_DEVCTL_PAYLOAD 0x00e0    /* Max_Payload_Size */
#define PCI_EXP_DEVCTL_EXT_TAG 0x0100    /* Extended Tag Field Enable */
#define PCI_EXP_DEVCTL_PHANTOM 0x0200    /* Phantom Functions Enable */
#define PCI_EXP_DEVCTL_AUX_PME 0x0400    /* Auxiliary Power PM Enable */
#define PCI_EXP_DEVCTL_NOSNOOP_EN 0x0800 /* Enable No Snoop */
#define PCI_EXP_DEVCTL_READRQ 0x7000     /* Max_Read_Request_Size */
#define PCI_EXP_DEVCTL_BCR_FLR 0x8000    /* BCR / FLR */
#define PCI_EXP_DEVSTA 10		 /* Device Status */
#define PCI_EXP_DEVSTA_CED 0x01		 /* Correctable Error Detected */
#define PCI_EXP_DEVSTA_NFED 0x02	 /* Non-Fatal Error Detected */
#define PCI_EXP_DEVSTA_FED 0x04		 /* Fatal Error Detected */
#define PCI_EXP_DEVSTA_URD 0x08		 /* Unsupported Request Detected */
#define PCI_EXP_DEVSTA_AUXPD 0x10	/* AUX Power Detected */
#define PCI_EXP_DEVSTA_TRPND 0x20	/* Transactions Pending */
#define PCI_EXP_LNKCAP 12		 /* Link Capabilities */
#define PCI_EXP_LNKCTL 16		 /* Link Control */
#define PCI_EXP_LNKCTL_CLKREQ_EN 0x100   /* Enable clkreq */
#define PCI_EXP_LNKSTA 18		 /* Link Status */
#define PCI_EXP_SLTCAP 20		 /* Slot Capabilities */
#define PCI_EXP_SLTCTL 24		 /* Slot Control */
#define PCI_EXP_SLTSTA 26		 /* Slot Status */
#define PCI_EXP_RTCTL 28		 /* Root Control */
#define PCI_EXP_RTCTL_SECEE 0x01	 /* System Error on Corr. Error */
#define PCI_EXP_RTCTL_SENFEE 0x02	/* System Error on Non-Fatal Err */
#define PCI_EXP_RTCTL_SEFEE 0x04	 /* System Error on Fatal Error */
#define PCI_EXP_RTCTL_PMEIE 0x08	 /* PME Interrupt Enable */
#define PCI_EXP_RTCTL_CRSSVE 0x10	/* CRS Software Visibility En */
#define PCI_EXP_RTCAP 30		 /* Root Capabilities */
#define PCI_EXP_RTSTA 32		 /* Root Status */

/* PCI-X registers */

#define PCI_X_CMD 2

#ifdef __cplusplus

/* Remapped reserved C++ words */
#undef class
}
#endif /* __cplusplus */

#endif /* ZEPHYR_INCLUDE_DRIVERS_PCI_PCI_MGR_H_ */
