On Llu, 2003-04-28 at 17:59, Seshadri, Harinarayanan wrote:
> which is essentially a Memory Mapped scheme to access this extended
> configuration region. Currently in Linux, the PCI Subsystem supports only
> type 1/ type 2 PCI configuration access, which is traditionally accessed
> through CF8/CFC mechanism.
(and BIOS, and IBM NUMA-Q/440)
> To support access to the extended configuration region of the PCI
> Express devices (Although legacy CF8/CFC scheme will still work, but the
> configuration access space will be limited to 256 bytes only), we need to
> modify the PCI subsystem. At the time of PCI initialization/device
> enumeration the pci_root_ops and hence pci_dev->ops structure is set to
> pci_express_ops for PCI Express devices (identified by the existence of the
> PCI Express capability structure).
Is this property dependant on the device or on the root bridge ? IE if I
have something like
PCIEXPRESS(root)---->PCIEXress/Cardbus bridge--->Ethernet card
Can I use the mmio interface to talk to the card - I'd assume so
(obviously it only has 256 bytes of data)
> static unsigned long __init pciexp_map_region(unsigned long
> phys)
> {
> unsigned long base, offset, mapped_area;
> base = ((unsigned long)phys) & PAGE_MASK;
> offset = ((unsigned long) phys) - base;
> mapped_area = (unsigned long) ioremap(base,
> PAGE_SIZE);
> return ( mapped_area? (mapped_area + offset): 0UL);
> }
ioremap is bright enough to do unaligned maps for you
> This will enable any existing pci driver to access the
> complete 4k config space (which include legacy 256 byte configuration region
> as well) using standard interface like pci_config_read/write call.
Looks pretty sound to me. The code was intended to support multiple
config mechanisms.
Alan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Wed Apr 30 2003 - 22:00:31 EST