newbus questions

User Takawata takawata at
Mon Jul 14 19:20:16 PDT 2003

In message <20030714173017.F18544 at>, Nate Lawson wrote:
>I'm working on ECDT support for ACPI and ran into a couple newbus-related
>1. I'm using the identify entry as a way to get called early on in the
>boot process.  However, this does not happen before $PIR evaluation.  How
>should I hook in a routine for pre-$PIR execution?

It may be called in 
    if (ACPI_FAILURE(status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT,
                                                NULL, NULL))) {
        device_printf(dev, "could not initialise PciConfig handler: %s\n", AcpiF
        goto out;

at acpi_attach().

>2. I need to call bus_alloc_resource() to get access to some io ports.
>However, calling BUS_READ_IVAR in the identify routine gets a bad pointer
>deref.  So how do I get a handle to use for allocating the IO ports
>(first arg of bus_alloc_resource)?

If you want to use IDENTIFY method, you have to imprement 
'bus_driver_added' method on parent driver to initialize ivars in 
device object.

>3. It appears bus_alloc_resource() takes a range of values.  If I know the
>exact value to use, I request it via "value, value" instead of "0, ~0".
>Is this correct?

It is correct in that context. When parent driver enumlate device and
set the resorce for device, That is used for allocate 'default' resource.

>The framework for this code is in ec_identify() and ec_attach() in

You may want to set up ACPI EC register space before ACPI name space is 
probed. So I think it is possible to call the initialization routine
in acpi_attach() explicitly for the time being.

The generalized way is that we have to imprement simple ACPI table 
parser other than DSDT that is used before ACPI-CA initialization.

More information about the freebsd-current mailing list