Skip site navigation (1)Skip section navigation (2)
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>