|
@@ -1,4 +1,5 @@
|
|
|
Accessing PCI device resources through sysfs
|
|
|
+--------------------------------------------
|
|
|
|
|
|
sysfs, usually mounted at /sys, provides access to PCI resources on platforms
|
|
|
that support it. For example, a given bus might look like this:
|
|
@@ -47,14 +48,21 @@ files, each with their own function.
|
|
|
binary - file contains binary data
|
|
|
cpumask - file contains a cpumask type
|
|
|
|
|
|
-The read only files are informational, writes to them will be ignored.
|
|
|
-Writable files can be used to perform actions on the device (e.g. changing
|
|
|
-config space, detaching a device). mmapable files are available via an
|
|
|
-mmap of the file at offset 0 and can be used to do actual device programming
|
|
|
-from userspace. Note that some platforms don't support mmapping of certain
|
|
|
-resources, so be sure to check the return value from any attempted mmap.
|
|
|
+The read only files are informational, writes to them will be ignored, with
|
|
|
+the exception of the 'rom' file. Writable files can be used to perform
|
|
|
+actions on the device (e.g. changing config space, detaching a device).
|
|
|
+mmapable files are available via an mmap of the file at offset 0 and can be
|
|
|
+used to do actual device programming from userspace. Note that some platforms
|
|
|
+don't support mmapping of certain resources, so be sure to check the return
|
|
|
+value from any attempted mmap.
|
|
|
+
|
|
|
+The 'rom' file is special in that it provides read-only access to the device's
|
|
|
+ROM file, if available. It's disabled by default, however, so applications
|
|
|
+should write the string "1" to the file to enable it before attempting a read
|
|
|
+call, and disable it following the access by writing "0" to the file.
|
|
|
|
|
|
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,
|
|
@@ -75,6 +83,7 @@ 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.
|