Andre Albsmeier wrote:
[CC'ing this to Rui Paulo since he tried to help me a while ago]

I have written a driver that is a child of hostb (similar to agp) for
RELENG_7. However, on some chipsets (e.g. i975) it has to read some
memory locations (not pci configuration space) which were registered
by acpi as system resources.

Since my driver is a child of hostb0, I have no idea of how to access
this memory area. Here is a devinfo -r to make things clear:

nexus0
  acpi0
      Interrupt request lines:
          9
      I/O ports:
          0x10-0x1f
          0x22-0x3f
          ...
          0x800-0x87f
      I/O memory addresses:
          0xc0000-0xdffff
          0xe0000-0xfffff
          0xf0000000-0xf3ffffff
          0xfec00000-0xfec00fff
          0xfed13000-0xfed19fff         <--- the memory needed
          0xfed1c000-0xfed1ffff
          ....
          0xfed20000-0xfed3ffff
          0xfff00000-0xffffffff
    cpu0
      coretemp0
      acpi_throttle0
          ACPI I/O ports:
              0x810-0x813
      cpufreq0
    cpu1
      coretemp1
    pcib0
      pci0
          I/O ports:
              0x170-0x177
              0x376
        hostb0
            I/O memory addresses:
                0xe4000000-0xe7ffffff
          MYDRIVER0                      <--- my driver
          agp0
        pcib1
          pci7
            vgapci0
                Interrupt request lines:
                    16

I had the same problem under RELENG_6 six month ago which could be
solved by a bus_set_resource() but since the driver now attaches to
hostb, this is not possible anymore.

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?

Thanks a lot for all ideas,

        -Andre


You can probably make two drivers in one which cooperate to
allow access to both sets of resources.



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

Reply via email to