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