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

📄 pci.h

📁 嵌入式系统设计与实例开发源码
💻 H
📖 第 1 页 / 共 3 页
字号:
			      unsigned char where, unsigned char *val);int pcibios_read_config_word (unsigned char bus, unsigned char dev_fn,			      unsigned char where, unsigned short *val);int pcibios_read_config_dword (unsigned char bus, unsigned char dev_fn,			       unsigned char where, unsigned int *val);int pcibios_write_config_byte (unsigned char bus, unsigned char dev_fn,			       unsigned char where, unsigned char val);int pcibios_write_config_word (unsigned char bus, unsigned char dev_fn,			       unsigned char where, unsigned short val);int pcibios_write_config_dword (unsigned char bus, unsigned char dev_fn,				unsigned char where, unsigned int val);int pcibios_find_class (unsigned int class_code, unsigned short index, unsigned char *bus, unsigned char *dev_fn);int pcibios_find_device (unsigned short vendor, unsigned short dev_id,			 unsigned short index, unsigned char *bus,			 unsigned char *dev_fn);/* Generic PCI functions used internally */void pci_init(void);int pci_bus_exists(const struct list_head *list, int nr);struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);struct pci_bus *pci_alloc_primary_bus(int bus);struct pci_dev *pci_scan_slot(struct pci_dev *temp);int pci_proc_attach_device(struct pci_dev *dev);int pci_proc_detach_device(struct pci_dev *dev);int pci_proc_attach_bus(struct pci_bus *bus);int pci_proc_detach_bus(struct pci_bus *bus);void pci_name_device(struct pci_dev *dev);char *pci_class_name(u32 class);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_setup_device(struct pci_dev *dev);int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge);/* 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_subsys (unsigned int vendor, unsigned int device,				 unsigned int ss_vendor, unsigned int ss_device,				 const struct pci_dev *from);struct pci_dev *pci_find_class (unsigned int class, 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_read_config_byte(struct pci_dev *dev, int where, u8 *val);int pci_read_config_word(struct pci_dev *dev, int where, u16 *val);int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val);int pci_write_config_byte(struct pci_dev *dev, int where, u8 val);int pci_write_config_word(struct pci_dev *dev, int where, u16 val);int pci_write_config_dword(struct pci_dev *dev, int where, u32 val);int pci_enable_device(struct pci_dev *dev);void pci_disable_device(struct pci_dev *dev);void pci_set_master(struct pci_dev *dev);int pci_set_dma_mask(struct pci_dev *dev, u64 mask);int pci_dac_set_dma_mask(struct pci_dev *dev, u64 mask);int pci_assign_resource(struct pci_dev *dev, int i);/* Power management related routines */int pci_save_state(struct pci_dev *dev, u32 *buffer);int pci_restore_state(struct pci_dev *dev, u32 *buffer);int pci_set_power_state(struct pci_dev *dev, int state);int pci_enable_wake(struct pci_dev *dev, u32 state, int enable);int pci_generic_suspend_save(struct pci_dev *pdev, u32 state);int pci_generic_resume_restore(struct pci_dev *pdev);/* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */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 *, u32);unsigned long pci_bridge_check_io(struct pci_dev *);void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),		    int (*)(struct pci_dev *, u8, u8));#define HAVE_PCI_REQ_REGIONSint pci_request_regions(struct pci_dev *, char *);void pci_release_regions(struct pci_dev *);/* New-style probing supporting hot-pluggable devices */int pci_register_driver(struct pci_driver *);void pci_unregister_driver(struct pci_driver *);void pci_insert_device(struct pci_dev *, struct pci_bus *);void pci_remove_device(struct pci_dev *);struct pci_driver *pci_dev_driver(const struct pci_dev *);const struct pci_device_id *pci_match_device(const struct pci_device_id *ids, const struct pci_dev *dev);void pci_announce_device_to_drivers(struct pci_dev *);unsigned int pci_do_scan_bus(struct pci_bus *bus);struct pci_bus * pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr);#endif /* CONFIG_PCI *//* kmem_cache style wrapper around pci_alloc_consistent() */struct pci_pool *pci_pool_create (const char *name, struct pci_dev *dev,		size_t size, size_t align, size_t allocation, int flags);void pci_pool_destroy (struct pci_pool *pool);void *pci_pool_alloc (struct pci_pool *pool, int flags, dma_addr_t *handle);void pci_pool_free (struct pci_pool *pool, void *vaddr, dma_addr_t addr);/* Include architecture-dependent settings and functions */#include <asm/pci.h>/* *  If the system does not have PCI, clearly these return errors.  Define *  these as simple inline functions to avoid hair in drivers. */#ifndef CONFIG_PCIstatic inline int pcibios_present(void) { return 0; }static inline int pcibios_find_class (unsigned int class_code, unsigned short index, unsigned char *bus, unsigned char *dev_fn) { 	return PCIBIOS_DEVICE_NOT_FOUND; }#define _PCI_NOP(o,s,t) \	static inline int pcibios_##o##_config_##s (u8 bus, u8 dfn, u8 where, t val) \		{ return PCIBIOS_FUNC_NOT_SUPPORTED; } \	static inline int pci_##o##_config_##s (struct pci_dev *dev, int where, t val) \		{ return PCIBIOS_FUNC_NOT_SUPPORTED; }#define _PCI_NOP_ALL(o,x)	_PCI_NOP(o,byte,u8 x) \				_PCI_NOP(o,word,u16 x) \				_PCI_NOP(o,dword,u32 x)_PCI_NOP_ALL(read, *)_PCI_NOP_ALL(write,)static inline struct pci_dev *pci_find_device(unsigned int vendor, unsigned int device, const struct pci_dev *from){ return NULL; }static inline struct pci_dev *pci_find_class(unsigned int class, const struct pci_dev *from){ return NULL; }static inline struct pci_dev *pci_find_slot(unsigned int bus, unsigned int devfn){ return NULL; }static inline struct pci_dev *pci_find_subsys(unsigned int vendor, unsigned int device,unsigned int ss_vendor, unsigned int ss_device, const struct pci_dev *from){ return NULL; }static inline void pci_set_master(struct pci_dev *dev) { }static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }static inline void pci_disable_device(struct pci_dev *dev) { }static inline int pci_module_init(struct pci_driver *drv) { return -ENODEV; }static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) { return -EIO; }static inline int pci_dac_set_dma_mask(struct pci_dev *dev, u64 mask) { return -EIO; }static inline int pci_assign_resource(struct pci_dev *dev, int i) { return -EBUSY;}static inline int pci_register_driver(struct pci_driver *drv) { return 0;}static inline void pci_unregister_driver(struct pci_driver *drv) { }static inline int scsi_to_pci_dma_dir(unsigned char scsi_dir) { return scsi_dir; }static inline int pci_find_capability (struct pci_dev *dev, int cap) {return 0; }static inline const struct pci_device_id *pci_match_device(const struct pci_device_id *ids, const struct pci_dev *dev) { return NULL; }/* Power management related routines */static inline int pci_save_state(struct pci_dev *dev, u32 *buffer) { return 0; }static inline int pci_restore_state(struct pci_dev *dev, u32 *buffer) { return 0; }static inline int pci_set_power_state(struct pci_dev *dev, int state) { return 0; }static inline int pci_enable_wake(struct pci_dev *dev, u32 state, int enable) { return 0; }#define pci_for_each_dev(dev) \	for(dev = NULL; 0; )#else/* * a helper function which helps ensure correct pci_driver * setup and cleanup for commonly-encountered hotplug/modular cases * * This MUST stay in a header, as it checks for -DMODULE */static inline int pci_module_init(struct pci_driver *drv){	int rc = pci_register_driver (drv);	if (rc > 0)		return 0;	/* iff CONFIG_HOTPLUG and built into kernel, we should	 * leave the driver around for future hotplug events.	 * For the module case, a hotplug daemon of some sort	 * should load a module in response to an insert event. */#if defined(CONFIG_HOTPLUG) && !defined(MODULE)	if (rc == 0)		return 0;#else	if (rc == 0)		rc = -ENODEV;		#endif	/* if we get here, we need to clean up pci driver instance	 * and return some sort of error */	pci_unregister_driver (drv);		return rc;}#endif /* !CONFIG_PCI *//* these helpers provide future and backwards compatibility * for accessing popular PCI BAR info */#define pci_resource_start(dev,bar)   ((dev)->resource[(bar)].start)#define pci_resource_end(dev,bar)     ((dev)->resource[(bar)].end)#define pci_resource_flags(dev,bar)   ((dev)->resource[(bar)].flags)#define pci_resource_len(dev,bar) \	((pci_resource_start((dev),(bar)) == 0 &&	\	  pci_resource_end((dev),(bar)) ==		\	  pci_resource_start((dev),(bar))) ? 0 :	\	  						\	 (pci_resource_end((dev),(bar)) -		\	  pci_resource_start((dev),(bar)) + 1))/* Similar to the helpers above, these manipulate per-pci_dev * driver-specific data.  Currently stored as pci_dev::driver_data, * a void pointer, but it is not present on older kernels. */static inline void *pci_get_drvdata (struct pci_dev *pdev){	return pdev->driver_data;}static inline void pci_set_drvdata (struct pci_dev *pdev, void *data){	pdev->driver_data = data;}/* *  The world is not perfect and supplies us with broken PCI devices. *  For at least a part of these bugs we need a work-around, so both *  generic (drivers/pci/quirks.c) and per-architecture code can define *  fixup hooks to be called for particular buggy devices. */struct pci_fixup {	int pass;	u16 vendor, device;			/* You can use PCI_ANY_ID here of course */	void (*hook)(struct pci_dev *dev);};extern struct pci_fixup pcibios_fixups[];#define PCI_FIXUP_HEADER	1		/* Called immediately after reading configuration header */#define PCI_FIXUP_FINAL		2		/* Final phase of device fixups */void pci_fixup_device(int pass, struct pci_dev *dev);extern int pci_pci_problems;#define PCIPCI_FAIL		1#define PCIPCI_TRITON		2#define PCIPCI_NATOMA		4#define PCIPCI_VIAETBF		8#define PCIPCI_VSFX		16#endif /* __KERNEL__ */#endif /* LINUX_PCI_H */

⌨️ 快捷键说明

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