On 18 Jul 2009, at 09:10, Andre Albsmeier wrote:
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.
I'm out of ideas.
John, do you know if this is a newbus limitation or if it can be
worked around ?
--
Rui Paulo
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"