- 论坛徽章:
- 4
|
- /*
- * Functions for accessing PCI base (first 256 bytes) and extended
- * (4096 bytes per PCI function) configuration space with type 1
- * accesses.
- */
- #define PCI_CONF1_ADDRESS(bus, devfn, reg) \
- (0x80000000 | ((reg & 0xF00) << 16) | (bus << 16) \
- | (devfn << 8) | (reg & 0xFC))
- static int pci_conf1_read(unsigned int seg, unsigned int bus,
- unsigned int devfn, int reg, int len, u32 *value)
- {
- unsigned long flags;
- if (seg || (bus > 255) || (devfn > 255) || (reg > 4095)) {《------为何跟4096做比较?不是256?
- *value = -1;
- return -EINVAL;
- }
- raw_spin_lock_irqsave(&pci_config_lock, flags);
- outl(PCI_CONF1_ADDRESS(bus, devfn, reg), 0xCF8);
- switch (len) {
- case 1:
- *value = inb(0xCFC + (reg & 3));
- break;
- case 2:
- *value = inw(0xCFC + (reg & 2));
- break;
- case 4:
- *value = inl(0xCFC);
- break;
- }
- raw_spin_unlock_irqrestore(&pci_config_lock, flags);
- return 0;
- }
复制代码 CONFIG_PCI_DIRECT打开时怎么也能支持4k?请指点啊,谢谢! |
|