Date: Thu, 15 Feb 2001 12:40:01 +1100 From: Peter Jeremy <peter.jeremy@alcatel.com.au> To: freebsd-current@freebsd.org Subject: Accessing a PCI device by `physical' address Message-ID: <20010215124001.A71053@gsmx07.alcatel.com.au>
next in thread | raw e-mail | index | archive | help
I'm trying to port an Alpha video driver (TGA) from -stable to
-current and have run into a problem converting some calls to
pci_cfgread() and pci_cfgwrite().
The Alpha firmware reports the location of the console video card as a
physical hose, bus type, bus, slot value. In -stable, the card can be
accessed by calling pci_cfg{read,write}() with this information.
In -current, pci_cfg{read,write}() have been replaced by
pci_{read,write}_config(), but the latter function needs a device_t
structure that defines both the device and it's parent.
Unfortunately, I don't have the relevant device_t available. In any
case, based on my reading of the code, I need to access the PCI config
registers before the video card has been probed/attached via the
normal bus/device scan.
Luckily, there's only one point at which I need this `physical' access.
The call backtrace is:
pci_cfg{read,write}()
tga_configure()
vid_configure()
scvidprobe()
sccnattach()
<<system_specific>>_cons_init()
alpha_init()
...
Does anyone have any useful suggestions?[1] Is there an `approved'
mechanism to bypass the bus abstraction layers? Is is practical to
hand-craft a device_t that will satisfy pci_{read,write}_config()?
[1] I don't count "throw out the TGA" as a useful suggestion.
Peter
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010215124001.A71053>
