Resources and ACPI

takawata at jp.freebsd.org takawata at jp.freebsd.org
Wed Apr 11 09:51:33 UTC 2007


In message <1176282333.4134.4.camel at hiro.auspc.com.au>, wrote:
>Hi all,
>
>When you have say :-
>
>----
>static int
>jnet_probe(device_t
>dev)                                                                          
>                                  
>{       
>        static char *jnet_ids[] = { "NWS8001",
>NULL };                                                                       
>       
>
>        if (acpi_disabled("jnet")
>||                                                                            
>                    
>                        ACPI_ID_PROBE(device_get_parent(dev), dev,
>jnet_ids) == NULL)                                               
>                return (ENXIO); 
>        
>        // Woo we found it, set the description s we know what we
>are.                                                              
>        device_set_desc(dev, "JNet Ethernet System
>Interface");                                                                  
>   
>        return (BUS_PROBE_DEFAULT);
>}       
>----
>
>and when the device is kldload'ed you get :-
>
>----
>jnet0: <JNet Ethernet System Interface> port 0xa8,0xae-0xaf irq 19 on
>acpi0
>----
>
>are these resources automagically allocated for me? Or do I have to
>allocate them myself?

You have to allocate the resource.
    

>I've got my driver mostly working but at the moment I've hard-coded in
>the resources and I'm thinking this isn't correct given the acpi bus
>knows what resources I'm expecting and lists them helpfully in the dmesg
>output.
>
>If the resources are allocated how do I access/see them?

    sc->sc_rid1 = 0;
    sc->sc_res1 = bus_alloc_resource_any(self, SYS_RES_IOPORT, &sc->sc_rid, RF_ACTIVE);
    sc->sc_rid2 = 0;
    sc->sc_res2 = bus_alloc_resource_any(self, SYS_RES_IOPORT, &sc->sc_rid, RF_ACTIVE);
    value_af =   bus_space_read_8(rman_get_bustag(sc->sc_res2), rman_get_bushandle(sc->sc_res2), 1);


>I've been all through device_t and bus.h this and acpi.h that, and I
>cannot find a good example of getting resources from the acpi bus.

It is almost same as ISA-PnP aware device driver for devices that 
requires I/O port resources.


More information about the freebsd-hackers mailing list