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

📄 pci.h

📁 linux 内核源代码
💻 H
字号:
/* *	Low-Level PCI Access for i386 machines. * *	(c) 1999 Martin Mares <mj@ucw.cz> */#undef DEBUG#ifdef DEBUG#define DBG(x...) printk(x)#else#define DBG(x...)#endif#define PCI_PROBE_BIOS		0x0001#define PCI_PROBE_CONF1		0x0002#define PCI_PROBE_CONF2		0x0004#define PCI_PROBE_MMCONF	0x0008#define PCI_PROBE_MASK		0x000f#define PCI_PROBE_NOEARLY	0x0010#define PCI_NO_SORT		0x0100#define PCI_BIOS_SORT		0x0200#define PCI_NO_CHECKS		0x0400#define PCI_USE_PIRQ_MASK	0x0800#define PCI_ASSIGN_ROMS		0x1000#define PCI_BIOS_IRQ_SCAN	0x2000#define PCI_ASSIGN_ALL_BUSSES	0x4000#define PCI_CAN_SKIP_ISA_ALIGN	0x8000#define PCI_USE__CRS		0x10000extern unsigned int pci_probe;extern unsigned long pirq_table_addr;enum pci_bf_sort_state {	pci_bf_sort_default,	pci_force_nobf,	pci_force_bf,	pci_dmi_bf,};/* pci-i386.c */extern unsigned int pcibios_max_latency;void pcibios_resource_survey(void);int pcibios_enable_resources(struct pci_dev *, int);/* pci-pc.c */extern int pcibios_last_bus;extern struct pci_bus *pci_root_bus;extern struct pci_ops pci_root_ops;/* pci-irq.c */struct irq_info {	u8 bus, devfn;			/* Bus, device and function */	struct {		u8 link;		/* IRQ line ID, chipset dependent, 0=not routed */		u16 bitmap;		/* Available IRQs */	} __attribute__((packed)) irq[4];	u8 slot;			/* Slot number, 0=onboard */	u8 rfu;} __attribute__((packed));struct irq_routing_table {	u32 signature;			/* PIRQ_SIGNATURE should be here */	u16 version;			/* PIRQ_VERSION */	u16 size;			/* Table size in bytes */	u8 rtr_bus, rtr_devfn;		/* Where the interrupt router lies */	u16 exclusive_irqs;		/* IRQs devoted exclusively to PCI usage */	u16 rtr_vendor, rtr_device;	/* Vendor and device ID of interrupt router */	u32 miniport_data;		/* Crap */	u8 rfu[11];	u8 checksum;			/* Modulo 256 checksum must give zero */	struct irq_info slots[0];} __attribute__((packed));extern unsigned int pcibios_irq_mask;extern int pcibios_scanned;extern spinlock_t pci_config_lock;extern int (*pcibios_enable_irq)(struct pci_dev *dev);extern void (*pcibios_disable_irq)(struct pci_dev *dev);extern int pci_conf1_write(unsigned int seg, unsigned int bus,			   unsigned int devfn, int reg, int len, u32 value);extern int pci_conf1_read(unsigned int seg, unsigned int bus,			  unsigned int devfn, int reg, int len, u32 *value);extern int pci_direct_probe(void);extern void pci_direct_init(int type);extern void pci_pcbios_init(void);extern void pci_mmcfg_init(int type);extern void pcibios_sort(void);/* pci-mmconfig.c *//* Verify the first 16 busses. We assume that systems with more busses   get MCFG right. */#define PCI_MMCFG_MAX_CHECK_BUS 16extern DECLARE_BITMAP(pci_mmcfg_fallback_slots, 32*PCI_MMCFG_MAX_CHECK_BUS);extern int __init pci_mmcfg_arch_reachable(unsigned int seg, unsigned int bus,					   unsigned int devfn);extern int __init pci_mmcfg_arch_init(void);/* * AMD Fam10h CPUs are buggy, and cannot access MMIO config space * on their northbrige except through the * %eax register. As such, you MUST * NOT use normal IOMEM accesses, you need to only use the magic mmio-config * accessor functions. * In fact just use pci_config_*, nothing else please. */static inline unsigned char mmio_config_readb(void __iomem *pos){	u8 val;	asm volatile("movb (%1),%%al" : "=a" (val) : "r" (pos));	return val;}static inline unsigned short mmio_config_readw(void __iomem *pos){	u16 val;	asm volatile("movw (%1),%%ax" : "=a" (val) : "r" (pos));	return val;}static inline unsigned int mmio_config_readl(void __iomem *pos){	u32 val;	asm volatile("movl (%1),%%eax" : "=a" (val) : "r" (pos));	return val;}static inline void mmio_config_writeb(void __iomem *pos, u8 val){	asm volatile("movb %%al,(%1)" :: "a" (val), "r" (pos) : "memory");}static inline void mmio_config_writew(void __iomem *pos, u16 val){	asm volatile("movw %%ax,(%1)" :: "a" (val), "r" (pos) : "memory");}static inline void mmio_config_writel(void __iomem *pos, u32 val){	asm volatile("movl %%eax,(%1)" :: "a" (val), "r" (pos) : "memory");}

⌨️ 快捷键说明

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