Re: newbus ioport usage

From: Nate Lawson (nate_at_root.org)
Date: 01/27/04

  • Next message: Nate Lawson: "Re: newbus ioport usage"
    Date: Mon, 26 Jan 2004 17:44:39 -0800 (PST)
    To: "M. Warner Losh" <imp@bsdimp.com>
    
    

    On Mon, 26 Jan 2004, M. Warner Losh wrote:
    > In message: <20040126172211.J30603@root.org>
    > Nate Lawson <nate@root.org> writes:
    > : On Mon, 26 Jan 2004, M. Warner Losh wrote:
    > : > In message: <20040126165523.W30461@root.org>
    > : > Nate Lawson <nate@root.org> writes:
    > : > : Ok, I'm doing the set/alloc and it works. However, one weird thing. If I
    > : > : allocate all ports at boot time, it succeeds. My driver goes through
    > : > : multiple release/allocate cycles and it all works as expected. However if
    > : > : I boot and attach to only one of the registers, subsequent attempts to
    > : > : attach the second one fail. The resources are 2 IO ports, 0x101c and
    > : > : 0x101d. Both are 1 byte.
    > : >
    > : > Deos devinfo -r show any cause for the problem? Maybe you aren't
    > : > releasing them properly? Also, why not allocate them as a block of 2?
    > :
    > : I'll look into that. I can't allocate them in one block as they come and
    > : go, based on system state. In one state, one is available and in another,
    > : both are available. If I boot while only one is available and then you
    > : plug in the AC adapter, new ones appear. This is acpi, btw.
    >
    > Ummm, wouldn't they both always be allocated to the driver, even if
    > you could only talk to one of them at any given time?

    No, the object you evaluate for a list of registers changes dynamically at
    runtime. The _CST method returns one of the below objects, depending on
    AC adapter state. If you evaluate it at boot and get CST1, you have no
    info about CST2, which you might get later.

                Name (CST1, Package (0x02) {
                    Package (0x04) {
                        ResourceTemplate () {
                            Register (FFixedHW, 0x08, 0x00, 0x0000000000000000)
                        },
                    }
                })
                Name (CST2, Package (0x03) {
                    Package (0x04) {
                        ResourceTemplate () {
                            Register (FFixedHW, 0x08, 0x00, 0x0000000000000000)
                        },
                    },

                    Package (0x04) {
                        ResourceTemplate () {
                            Register (SystemIO, 0x08, 0x00, 0x0000000000001014)
                        },
                    }
                })

    -Nate
    _______________________________________________
    freebsd-arch@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-arch
    To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"


  • Next message: Nate Lawson: "Re: newbus ioport usage"

    Relevant Pages

    • Re: newbus ioport usage
      ... : On Mon, 26 Jan 2004, M. Warner Losh wrote: ... :>: allocate all ports at boot time, ... Have acpi bus own the resources that acpi_sysresource0 uses. ...
      (freebsd-arch)
    • Re: newbus ioport usage
      ... : On Mon, 26 Jan 2004, M. Warner Losh wrote: ... :>: allocate all ports at boot time, ... go, based on system state. ...
      (freebsd-arch)
    • Re: [1/2] [NET] link_watch: Move link watch list into net_device
      ... network subsystem as it manages the carrier status. ... makes sense to allocate some memory for it in net_device rather ... since its that loop which seems to be ... Five minutes after boot is when jiffies wraps. ...
      (Linux-Kernel)
    • Re: No more floppy drive
      ... M. Warner Losh wrote: ... correct and we need to only allocate those ports. ... allocate 0x3f0-0x3f1 unless on a PS/2 system. ... assumes a base of 0x3f0 and that's why people report error messages like: ...
      (freebsd-current)
    • Re: Allocating kernel memory
      ... >> approach of simply reserving a large amount of memory to my driver at ... >> boot time and handle the management of it myself completely. ... > to allocate high memory pages and map them into kernel ... Linux chooses to map all of its segments the same ...
      (comp.os.linux.development.system)