/* * Memory address shift values for the byte-level address that * can be used when accessing the PCI Express Configuration Space.
*/
/* * Enhanced Configuration Access Mechanism (ECAM) * * See PCI Express Base Specification, Revision 5.0, Version 1.0, * Section 7.2.2, Table 7-1, p. 677.
*/ #define PCIE_ECAM_BUS_SHIFT 20 /* Bus number */ #define PCIE_ECAM_DEVFN_SHIFT 12 /* Device and Function number */
#define PCIE_ECAM_BUS_MASK 0xff #define PCIE_ECAM_DEVFN_MASK 0xff #define PCIE_ECAM_REG_MASK 0xfff /* Limit offset to a maximum of 4K */
/* * struct to hold pci ops and bus shift of the config window * for a PCI controller.
*/ struct pci_config_window; struct pci_ecam_ops { unsignedint bus_shift; struct pci_ops pci_ops; int (*init)(struct pci_config_window *); int (*enable_device)(struct pci_host_bridge *, struct pci_dev *); void (*disable_device)(struct pci_host_bridge *, struct pci_dev *);
};
/* * struct to hold the mappings of a config space window. This * is expected to be used as sysdata for PCI controllers that * use ECAM.
*/ struct pci_config_window { struct resource res; struct resource busr; unsignedint bus_shift; void *priv; conststruct pci_ecam_ops *ops; union { void __iomem *win; /* 64-bit single mapping */ void __iomem **winp; /* 32-bit per-bus mapping */
}; struct device *parent;/* ECAM res was from this dev */
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.