Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Apr 2007 18:51:04 +0900
From:      takawata@jp.freebsd.org
To:        Alan Garfield <alan@fromorbit.com>
Cc:        hackers@freebsd.org
Subject:   Re: Resources and ACPI
Message-ID:  <200704110951.l3B9p4hT024402@sana.init-main.com>
In-Reply-To: Your message of "Wed, 11 Apr 2007 19:05:33 %2B1000." <1176282333.4134.4.camel@hiro.auspc.com.au>

next in thread | previous in thread | raw e-mail | index | archive | help
In message <1176282333.4134.4.camel@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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200704110951.l3B9p4hT024402>