Reading acpi memory from a driver attached to hostb
Julian Elischer
julian at elischer.org
Fri Jul 17 19:53:55 UTC 2009
Andre Albsmeier wrote:
> [CC'ing this to Rui Paulo since he tried to help me a while ago]
>
> I have written a driver that is a child of hostb (similar to agp) for
> RELENG_7. However, on some chipsets (e.g. i975) it has to read some
> memory locations (not pci configuration space) which were registered
> by acpi as system resources.
>
> Since my driver is a child of hostb0, I have no idea of how to access
> this memory area. Here is a devinfo -r to make things clear:
>
> nexus0
> acpi0
> Interrupt request lines:
> 9
> I/O ports:
> 0x10-0x1f
> 0x22-0x3f
> ...
> 0x800-0x87f
> I/O memory addresses:
> 0xc0000-0xdffff
> 0xe0000-0xfffff
> 0xf0000000-0xf3ffffff
> 0xfec00000-0xfec00fff
> 0xfed13000-0xfed19fff <--- the memory needed
> 0xfed1c000-0xfed1ffff
> ....
> 0xfed20000-0xfed3ffff
> 0xfff00000-0xffffffff
> cpu0
> coretemp0
> acpi_throttle0
> ACPI I/O ports:
> 0x810-0x813
> cpufreq0
> cpu1
> coretemp1
> pcib0
> pci0
> I/O ports:
> 0x170-0x177
> 0x376
> hostb0
> I/O memory addresses:
> 0xe4000000-0xe7ffffff
> MYDRIVER0 <--- my driver
> agp0
> pcib1
> pci7
> vgapci0
> Interrupt request lines:
> 16
>
> I had the same problem under RELENG_6 six month ago which could be
> solved by a bus_set_resource() but since the driver now attaches to
> hostb, this is not possible anymore.
>
> Earlier, I was given the hint to attach as a child of acpi (see the
> old mail attached below) but in this case I didn't have access to the
> hostb registers which I need as well.
>
> The only thing I see is: Attach two drivers -- one as child of acpi
> and another as child of hostb and let them communicate somehow (no
> idea how to do this).
>
> I have also done crazy things like searching for acpi0 and trying
> to bus_alloc_resource() the memory I am interested in but this also
> failed.
>
> Or is it possible to free(!) somehow the address space from acpi0
> and pass it to hostb0 so I can bus_alloc_resource() it?
>
> Thanks a lot for all ideas,
>
> -Andre
>
You can probably make two drivers in one which cooperate to
allow access to both sets of resources.
>
More information about the freebsd-hackers
mailing list