Reading acpi memory from a driver attached to hostb

Andre Albsmeier Andre.Albsmeier at siemens.com
Sat Jul 18 09:03:52 UTC 2009


On Fri, 17-Jul-2009 at 12:53:53 -0700, Julian Elischer wrote:
> Andre Albsmeier wrote:
> > [CC'ing this to Rui Paulo since he tried to help me a while ago]
> > 
> > Since my driver is a child of hostb0, I have no idea of how to access
> > acpi0's memory area. Here is a devinfo -r to make things clear:
> > 
> ...
> > 
> > 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?
> > 
> 
> You can probably make two drivers in one which cooperate to
> allow access to both sets of resources.

Hmm, that's what I meant by: Attach two drivers -- one as child of acpi
and another as child of hostb...

And that's similar to Rui Paulo's suggestion a while ago:

> You'll probably need to create a fake ACPI child driver to access it.
> 
> Create your identify routine with something like:
> 
> static void mydriver_identify(driver_t *driver, device_t parent)
> {
>         if (device_find_child(parent, "mydriver", -1) == NULL &&
>             mydriver_match(parent))
>                 device_add_child(parent, "mydriver", -1);
> }
> 
> mydriver_match() should check if you were given the acpi0 device.

But in order to attach to acpi0, I need to say

DRIVER_MODULE( eccmon, acpi, eccmon_driver, eccmon_devclass,  NULL, NULL );

instead of

DRIVER_MODULE( eccmon, hostb, eccmon_driver, eccmon_devclass,  NULL, NULL );

This way I could attach to acpi but not to hostb anymore....

I have searched the net for solutions, I have read newbus-draft.txt
and newbus-intro.txt and Warner Losh's newbus-led.c (thanks to all
of these my driver is working on other mainboards where it doesn't
have to access foreign memory) but didn't find anything.

Thanks,

	-Andre


More information about the freebsd-hackers mailing list