Writing device drivers: How to access a specific memory area?
Andre Albsmeier
Andre.Albsmeier at siemens.com
Thu Dec 25 01:53:35 PST 2008
Hello all,
I am writing a driver which needs to access memory at a
specific location. The location depends on what the BIOS
has configured into the host bridge. For example, my
current machine uses an Intel 975X chipset and the memory
location I am interested in has been set to 0xFED14000 and
is 16KB in size (this is MCHBAR of the 975X memory hub).
I have no idea how to access this space from my driver.
I have played around with bus_alloc_resource() but this
only gives me back NULL.
However, a devinfo -r gives me:
nexus0
npx0
acpi0
Interrupt request lines:
9
I/O ports:
0x10-0x1f
...
0x800-0x87f
I/O memory addresses:
0x0-0x9ffff
0xc0000-0xdffff
0xe0000-0xfffff
0x100000-0x7fffffff
0xf0000000-0xf3ffffff
0xfec00000-0xfec00fff
0xfed13000-0xfed19fff <---
0xfed1c000-0xfed1ffff
0xfed20000-0xfed3ffff
0xfed50000-0xfed8ffff
0xfee00000-0xfee00fff
0xffb00000-0xffbfffff
0xfff00000-0xffffffff
cpu0
...
The line marked with <--- shows the range which includes
the location I am interested in. It is probably assigned
to the acpi0 device.
How do I proceed from this? Do I have to hack around in
the ACPI-Code? I don't hope so ;-)
I only need access to this memory location during the
probe of my driver to read some configuration data.
I do not need to access it later anymore...
Thanks a lot for any hints,
-Andre
More information about the freebsd-hackers
mailing list