⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pci.h

📁 xen 3.2.2 源码
💻 H
📖 第 1 页 / 共 3 页
字号:
};struct pci_raw_ops {	int (*read)(unsigned int domain, unsigned int bus, unsigned int devfn,		    int reg, int len, u32 *val);	int (*write)(unsigned int domain, unsigned int bus, unsigned int devfn,		     int reg, int len, u32 val);};extern struct pci_raw_ops *raw_pci_ops;struct pci_bus_region {	unsigned long start;	unsigned long end;};struct pci_dynids {	spinlock_t lock;            /* protects list, index */	struct list_head list;      /* for IDs added at runtime */	unsigned int use_driver_data:1; /* pci_driver->driver_data is used */};/* ---------------------------------------------------------------- *//** PCI Error Recovery System (PCI-ERS).  If a PCI device driver provides *  a set fof callbacks in struct pci_error_handlers, then that device driver *  will be notified of PCI bus errors, and will be driven to recovery *  when an error occurs. */typedef unsigned int __bitwise pci_ers_result_t;enum pci_ers_result {	/* no result/none/not supported in device driver */	PCI_ERS_RESULT_NONE = (__force pci_ers_result_t) 1,	/* Device driver can recover without slot reset */	PCI_ERS_RESULT_CAN_RECOVER = (__force pci_ers_result_t) 2,	/* Device driver wants slot to be reset. */	PCI_ERS_RESULT_NEED_RESET = (__force pci_ers_result_t) 3,	/* Device has completely failed, is unrecoverable */	PCI_ERS_RESULT_DISCONNECT = (__force pci_ers_result_t) 4,	/* Device driver is fully recovered and operational */	PCI_ERS_RESULT_RECOVERED = (__force pci_ers_result_t) 5,};/* PCI bus error event callbacks */struct pci_error_handlers{	/* PCI bus error detected on this device */	pci_ers_result_t (*error_detected)(struct pci_dev *dev,	                      enum pci_channel_state error);	/* MMIO has been re-enabled, but not DMA */	pci_ers_result_t (*mmio_enabled)(struct pci_dev *dev);	/* PCI Express link has been reset */	pci_ers_result_t (*link_reset)(struct pci_dev *dev);	/* PCI slot has been reset */	pci_ers_result_t (*slot_reset)(struct pci_dev *dev);	/* Device driver may resume normal operations */	void (*resume)(struct pci_dev *dev);};/* ---------------------------------------------------------------- */struct module;struct pci_driver {	struct list_head node;	char *name;	const struct pci_device_id *id_table;	/* must be non-NULL for probe to be called */	int  (*probe)  (struct pci_dev *dev, const struct pci_device_id *id);	/* New device inserted */	void (*remove) (struct pci_dev *dev);	/* Device removed (NULL if not a hot-plug capable driver) */	int  (*suspend) (struct pci_dev *dev, pm_message_t state);	/* Device suspended */	int  (*suspend_late) (struct pci_dev *dev, pm_message_t state);	int  (*resume_early) (struct pci_dev *dev);	int  (*resume) (struct pci_dev *dev);	                /* Device woken up */	int  (*enable_wake) (struct pci_dev *dev, pci_power_t state, int enable);   /* Enable wake event */	void (*shutdown) (struct pci_dev *dev);	struct pci_error_handlers *err_handler;	struct device_driver	driver;	struct pci_dynids dynids;	int multithread_probe;};#define	to_pci_driver(drv) container_of(drv,struct pci_driver, driver)/** * PCI_DEVICE - macro used to describe a specific pci device * @vend: the 16 bit PCI Vendor ID * @dev: the 16 bit PCI Device ID * * This macro is used to create a struct pci_device_id that matches a * specific device.  The subvendor and subdevice fields will be set to * PCI_ANY_ID. */#define PCI_DEVICE(vend,dev) \	.vendor = (vend), .device = (dev), \	.subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID/** * PCI_DEVICE_CLASS - macro used to describe a specific pci device class * @dev_class: the class, subclass, prog-if triple for this device * @dev_class_mask: the class mask for this device * * This macro is used to create a struct pci_device_id that matches a * specific PCI class.  The vendor, device, subvendor, and subdevice * fields will be set to PCI_ANY_ID. */#define PCI_DEVICE_CLASS(dev_class,dev_class_mask) \	.class = (dev_class), .class_mask = (dev_class_mask), \	.vendor = PCI_ANY_ID, .device = PCI_ANY_ID, \	.subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID/* * pci_module_init is obsolete, this stays here till we fix up all usages of it * in the tree. */#define pci_module_init	pci_register_driver/* these external functions are only available when PCI support is enabled */#ifdef CONFIG_PCIextern struct bus_type pci_bus_type;/* Do NOT directly access these two variables, unless you are arch specific pci * code, or pci core code. */extern struct list_head pci_root_buses;	/* list of all known PCI buses */extern struct list_head pci_devices;	/* list of all devices */void pcibios_fixup_bus(struct pci_bus *);int __must_check pcibios_enable_device(struct pci_dev *, int mask);char *pcibios_setup (char *str);/* Used only when drivers/pci/setup.c is used */void pcibios_align_resource(void *, struct resource *, resource_size_t,				resource_size_t);void pcibios_update_irq(struct pci_dev *, int irq);/* Generic PCI functions used internally */extern struct pci_bus *pci_find_bus(int domain, int busnr);void pci_bus_add_devices(struct pci_bus *bus);struct pci_bus *pci_scan_bus_parented(struct device *parent, int bus, struct pci_ops *ops, void *sysdata);static inline struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata){	struct pci_bus *root_bus;	root_bus = pci_scan_bus_parented(NULL, bus, ops, sysdata);	if (root_bus)		pci_bus_add_devices(root_bus);	return root_bus;}struct pci_bus *pci_create_bus(struct device *parent, int bus, struct pci_ops *ops, void *sysdata);struct pci_bus * pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr);int pci_scan_slot(struct pci_bus *bus, int devfn);struct pci_dev * pci_scan_single_device(struct pci_bus *bus, int devfn);void pci_device_add(struct pci_dev *dev, struct pci_bus *bus);unsigned int pci_scan_child_bus(struct pci_bus *bus);int __must_check pci_bus_add_device(struct pci_dev *dev);void pci_read_bridge_bases(struct pci_bus *child);struct resource *pci_find_parent_resource(const struct pci_dev *dev, struct resource *res);int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge);extern struct pci_dev *pci_dev_get(struct pci_dev *dev);extern void pci_dev_put(struct pci_dev *dev);extern void pci_remove_bus(struct pci_bus *b);extern void pci_remove_bus_device(struct pci_dev *dev);extern void pci_stop_bus_device(struct pci_dev *dev);void pci_setup_cardbus(struct pci_bus *bus);extern void pci_sort_breadthfirst(void);/* Generic PCI functions exported to card drivers */struct pci_dev *pci_find_device (unsigned int vendor, unsigned int device, const struct pci_dev *from);struct pci_dev *pci_find_device_reverse (unsigned int vendor, unsigned int device, const struct pci_dev *from);struct pci_dev *pci_find_slot (unsigned int bus, unsigned int devfn);int pci_find_capability (struct pci_dev *dev, int cap);int pci_find_next_capability (struct pci_dev *dev, u8 pos, int cap);int pci_find_ext_capability (struct pci_dev *dev, int cap);struct pci_bus *pci_find_next_bus(const struct pci_bus *from);struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device,				struct pci_dev *from);struct pci_dev *pci_get_device_reverse(unsigned int vendor, unsigned int device,				struct pci_dev *from);struct pci_dev *pci_get_subsys (unsigned int vendor, unsigned int device,				unsigned int ss_vendor, unsigned int ss_device,				struct pci_dev *from);struct pci_dev *pci_get_slot (struct pci_bus *bus, unsigned int devfn);struct pci_dev *pci_get_bus_and_slot (unsigned int bus, unsigned int devfn);struct pci_dev *pci_get_class (unsigned int class, struct pci_dev *from);int pci_dev_present(const struct pci_device_id *ids);int pci_bus_read_config_byte (struct pci_bus *bus, unsigned int devfn, int where, u8 *val);int pci_bus_read_config_word (struct pci_bus *bus, unsigned int devfn, int where, u16 *val);int pci_bus_read_config_dword (struct pci_bus *bus, unsigned int devfn, int where, u32 *val);int pci_bus_write_config_byte (struct pci_bus *bus, unsigned int devfn, int where, u8 val);int pci_bus_write_config_word (struct pci_bus *bus, unsigned int devfn, int where, u16 val);int pci_bus_write_config_dword (struct pci_bus *bus, unsigned int devfn, int where, u32 val);static inline int pci_read_config_byte(struct pci_dev *dev, int where, u8 *val){	return pci_bus_read_config_byte (dev->bus, dev->devfn, where, val);}static inline int pci_read_config_word(struct pci_dev *dev, int where, u16 *val){	return pci_bus_read_config_word (dev->bus, dev->devfn, where, val);}static inline int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val){	return pci_bus_read_config_dword (dev->bus, dev->devfn, where, val);}static inline int pci_write_config_byte(struct pci_dev *dev, int where, u8 val){	return pci_bus_write_config_byte (dev->bus, dev->devfn, where, val);}static inline int pci_write_config_word(struct pci_dev *dev, int where, u16 val){	return pci_bus_write_config_word (dev->bus, dev->devfn, where, val);}static inline int pci_write_config_dword(struct pci_dev *dev, int where, u32 val){	return pci_bus_write_config_dword (dev->bus, dev->devfn, where, val);}int __must_check pci_enable_device(struct pci_dev *dev);int __must_check pci_enable_device_bars(struct pci_dev *dev, int mask);void pci_disable_device(struct pci_dev *dev);void pci_set_master(struct pci_dev *dev);#define HAVE_PCI_SET_MWIint __must_check pci_set_mwi(struct pci_dev *dev);void pci_clear_mwi(struct pci_dev *dev);void pci_intx(struct pci_dev *dev, int enable);int pci_set_dma_mask(struct pci_dev *dev, u64 mask);int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask);void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno);int __must_check pci_assign_resource(struct pci_dev *dev, int i);int __must_check pci_assign_resource_fixed(struct pci_dev *dev, int i);void pci_restore_bars(struct pci_dev *dev);/* ROM control related routines */void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size);void __iomem __must_check *pci_map_rom_copy(struct pci_dev *pdev, size_t *size);void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom);void pci_remove_rom(struct pci_dev *pdev);/* Power management related routines */int pci_save_state(struct pci_dev *dev);int pci_restore_state(struct pci_dev *dev);int pci_set_power_state(struct pci_dev *dev, pci_power_t state);pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state);int pci_enable_wake(struct pci_dev *dev, pci_power_t state, int enable);/* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */void pci_bus_assign_resources(struct pci_bus *bus);void pci_bus_size_bridges(struct pci_bus *bus);int pci_claim_resource(struct pci_dev *, int);void pci_assign_unassigned_resources(void);void pdev_enable_device(struct pci_dev *);void pdev_sort_resources(struct pci_dev *, struct resource_list *);void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),		    int (*)(struct pci_dev *, u8, u8));#define HAVE_PCI_REQ_REGIONS	2int __must_check pci_request_regions(struct pci_dev *, const char *);void pci_release_regions(struct pci_dev *);int __must_check pci_request_region(struct pci_dev *, int, const char *);void pci_release_region(struct pci_dev *, int);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -