Ok.  I've been looking at the kernel source for a bit, and come up with a
couple ideas how to do this.  I wanted to run it by you guys to see if this
is the "right way."

        I'm guessing I'm gonna need to write the address where I WANT the bios to
show up in the PCIR_BIOS register.  The problem is, how do I get that addr.
Do I:

                /* Alloc 4k region */
                /* XXX should I use kmem_alloc_nofault? */
                addr = kmem_alloc(kernel_map, PAGE_SIZE);

                /* Get physical addr */
                /* XXX do I need this? */
                paddr = vtophys(addr);

                /* Enable BIOS */
                pci_write_config(dev, PCIR_BIOS, paddr | PCIM_BIOS_ENABLE);

        Will this work?  I haven't tried it yet, but it sure looks like it's the
wrong way to do it.  It seems like as soon as I access the addr, i.e.:

                value = *addr;

        it will cause a fault to occur and have a page of physical memory attached
(& zero'd ??) and my read will return from the memory, instead of the bios.
Is that what will happen here?

- Steve

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of Steve Shoecraft
Sent: Tuesday, December 12, 2000 2:02 AM
To: [EMAIL PROTECTED]
Subject: Accessing the Video Bios on a PCI card??



        I have a ATI rage 128 all-in-blunder agp card.  I'm currently writing a
driver for video capture.  I got everything to work properly so far, but I'm
using "plugged-in" values for certain things that REQUIRE I get them from
the video bios on the card (multimedia table, tv-out table, etc.).  The
sample source that ATI doles out directly accesses the 0xC000-0xC800 region
to get the info (the example is a linux implementation).  This will only
work if the card is the primary adapter.  If it's not, another way must be
found.  No matter what, I still don't want to do that, as it seems "cheesy."

        I've tried using the pci_read_config(dev, PCIR_BIOS, 4) command to get the
base of the card's video bios, but it comes up empty.

        Ok, so, how do I get the address of the video bios of the card?  I've tried
writing to the PCIR_BIOS register with the BIOS_ENABLE bit, but I'm pretty
sure that's to SET the (physical) address of the video bios.  I need to GET
it.  Any ideas?  Suggestions?

- Steve



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to