From owner-freebsd-hackers@FreeBSD.ORG Sat Jul 18 09:03:52 2009 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 100CE106571C; Sat, 18 Jul 2009 09:03:52 +0000 (UTC) (envelope-from Andre.Albsmeier@siemens.com) Received: from thoth.sbs.de (thoth.sbs.de [192.35.17.2]) by mx1.freebsd.org (Postfix) with ESMTP id 64C4C8FC0C; Sat, 18 Jul 2009 09:03:51 +0000 (UTC) (envelope-from Andre.Albsmeier@siemens.com) Received: from mail3.siemens.de (localhost [127.0.0.1]) by thoth.sbs.de (8.12.11.20060308/8.12.11) with ESMTP id n6I8ABSD012596; Sat, 18 Jul 2009 10:10:11 +0200 Received: from curry.mchp.siemens.de (curry.mchp.siemens.de [139.25.40.130]) by mail3.siemens.de (8.12.11.20060308/8.12.11) with ESMTP id n6I8ABFZ016013; Sat, 18 Jul 2009 10:10:11 +0200 Received: (from localhost) by curry.mchp.siemens.de (8.14.3/8.14.3) id n6I8ABZX083995; Date: Sat, 18 Jul 2009 10:10:11 +0200 From: Andre Albsmeier To: Julian Elischer Message-ID: <20090718081011.GA6920@curry.mchp.siemens.de> References: <20090717190450.GA4697@curry.mchp.siemens.de> <4A60D6D1.3050703@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A60D6D1.3050703@elischer.org> X-Echelon: X-Advice: Drop that crappy M$-Outlook, I'm tired of your viruses! User-Agent: Mutt/1.5.20 (2009-06-14) Cc: freebsd-hackers@freebsd.org, Rui Paulo , Andre Albsmeier Subject: Re: Reading acpi memory from a driver attached to hostb X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jul 2009 09:03:52 -0000 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