On Tue, 2005-03-08 at 23:35 -0500, Jon Smirl wrote: > This is from /linux-2.5/Documentation/filesystems/sysfs-pci.txt. It > describes how ia64 is achieving legacy IO. The VGA control code > probably needs to be coordinated with this.
This is a different thing, and I will implement it on ppc one of these days. This is for issuing the IO cycles on the bus. It has nothing to do with the actual arbitration work. > -------------------------------------------------------------------------- > > Accessing legacy resources through sysfs > > Legacy I/O port and ISA memory resources are also provided in sysfs if the > underlying platform supports them. They're located in the PCI class > heirarchy, > e.g. > > /sys/class/pci_bus/0000:17/ > |-- bridge -> ../../../devices/pci0000:17 > |-- cpuaffinity > |-- legacy_io > `-- legacy_mem > > The legacy_io file is a read/write file that can be used by applications to > do legacy port I/O. The application should open the file, seek to the desired > port (e.g. 0x3e8) and do a read or a write of 1, 2 or 4 bytes. The legacy_mem > file should be mmapped with an offset corresponding to the memory offset > desired, e.g. 0xa0000 for the VGA frame buffer. The application can then > simply dereference the returned pointer (after checking for errors of course) > to access legacy memory space. > > Supporting PCI access on new platforms > > In order to support PCI resource mapping as described above, Linux platform > code must define HAVE_PCI_MMAP and provide a pci_mmap_page_range function. > Platforms are free to only support subsets of the mmap functionality, but > useful return codes should be provided. > > Legacy resources are protected by the HAVE_PCI_LEGACY define. Platforms > wishing to support legacy functionality should define it and provide > pci_legacy_read, pci_legacy_write and pci_mmap_legacy_page_range functions. > > -- Benjamin Herrenschmidt <[EMAIL PROTECTED]> - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

