struct pci_bridge_emul_ops { /* * Called when reading from the regular PCI bridge * configuration space. Return PCI_BRIDGE_EMUL_HANDLED when the * operation has handled the read operation and filled in the * *value, or PCI_BRIDGE_EMUL_NOT_HANDLED when the read should * be emulated by the common code by reading from the * in-memory copy of the configuration space.
*/
pci_bridge_emul_read_status_t (*read_base)(struct pci_bridge_emul *bridge, int reg, u32 *value);
/* * Same as ->read_base(), except it is for reading from the * PCIe capability configuration space.
*/
pci_bridge_emul_read_status_t (*read_pcie)(struct pci_bridge_emul *bridge, int reg, u32 *value);
/* * Same as ->read_base(), except it is for reading from the * PCIe extended capability configuration space.
*/
pci_bridge_emul_read_status_t (*read_ext)(struct pci_bridge_emul *bridge, int reg, u32 *value);
/* * Called when writing to the regular PCI bridge configuration * space. old is the current value, new is the new value being * written, and mask indicates which parts of the value are * being changed.
*/ void (*write_base)(struct pci_bridge_emul *bridge, int reg,
u32 old, u32 new, u32 mask);
/* * Same as ->write_base(), except it is for writing from the * PCIe capability configuration space.
*/ void (*write_pcie)(struct pci_bridge_emul *bridge, int reg,
u32 old, u32 new, u32 mask);
/* * Same as ->write_base(), except it is for writing from the * PCIe extended capability configuration space.
*/ void (*write_ext)(struct pci_bridge_emul *bridge, int reg,
u32 old, u32 new, u32 mask);
};
enum { /* * PCI bridge does not support forwarding of prefetchable memory * requests between primary and secondary buses.
*/
PCI_BRIDGE_EMUL_NO_PREFMEM_FORWARD = BIT(0),
/* * PCI bridge does not support forwarding of IO requests between * primary and secondary buses.
*/
PCI_BRIDGE_EMUL_NO_IO_FORWARD = BIT(1),
};
int pci_bridge_emul_init(struct pci_bridge_emul *bridge, unsignedint flags); void pci_bridge_emul_cleanup(struct pci_bridge_emul *bridge);
int pci_bridge_emul_conf_read(struct pci_bridge_emul *bridge, int where, int size, u32 *value); int pci_bridge_emul_conf_write(struct pci_bridge_emul *bridge, int where, int size, u32 value);
#endif/* __PCI_BRIDGE_EMUL_H__ */
Messung V0.5
¤ 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.0.9Bemerkung:
Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können
¤
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.