[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: PCI-ISA bridges and ISAPNP



Our device positively decodes reads and writes to the addresses reserved in
the BARs; by definition that's what we thought a PCI device should do.
We do have to use legacy addresses - not for Windows' sake, but for the sake
of various other applications & drivers that sit on top of Windows.
Unfortunately 3bc~3bfh isn't an option because it's an EPP port (needs 8
bytes)

My suggestion here is that a few design decisions have come together to
cause a fundamental non-compatibility issue. Let me derive that conclusion
from first principles:-
1) Writes to I/O port 279 need to get to the ISA bus for PNPISA to work
2) Therefore, a PCI-ISA PNPISA-compatible bridge needs to respond to writes
to I/O address 279h. It should not respond to reads.
3a) If the bridge does subtractive decoding, and another device grabs an I/O
range including 279, the bridge will then not respond to ISAPNP accesses and
ISAPNP will stop working.
3b) Otherwise, if the bridge does positive decoding, the other device should
_only_ respond to reads at 279h, or you get a bus contention.
4) Parallel ports need to respond to writes at 278, 27a, 27b etc...
5) Therefore a PCI parallel port needs decoding logic which responds to
reads and writes for most of its BAR, except for one location in the middle
of it which only responds to reads. Unless it's using 378-37f instead, where
it can just respond to all accesses.

Granted, it's only parallel ports that have any reason to use address 279h,
but there is (unfortunately) good reason to do so. In the case of this
mainboard, it seems that the PCI-ISA bridge is positively decoding both
reads and writes, so the question is moot, but any suggestions of what we
should do are welcome!

Thanks,
Andy



> -----Original Message-----
> From: Lame Brooks-G14738 [mailto:Brooks_Lame@mcg.mot.com]
> Sent: 21 September 1999 21:38
> To: Mailing List Recipients
> Subject: RE: PCI-ISA bridges and ISAPNP
>
>
> > > However, it seems that the PCI bridge responds to address
> > 279h for writes
> > > and reads (on some mainboards), which obviously causes a conflict.
> > > Since PCI tends not to have two devices at the same
> > location, one responding
> > > to reads and one responding to writes, does this basically
> > mean that I can't
> > > use location 279h?
>
> Dan brought up the point that the PCI--ISA bridge generally should be
> subtractively decoding 278~27Fh.  However, there are some chipsets,
> primarily designed for use with a second 'docking' PCI--ISA
> bridge that uses
> subtractive decoding; so, the first bridge does positive decoding.
>
> Some questions: on the motherboard you are having trouble with, is the
> PCI--ISA bridge positively decoding reads to 279h?  Or, is your device
> positively decoding writes?  Or, is your device waiting too long to claim
> the cycle?  How about using 3BC~3BFh?  If you are using a Windows device
> driver, does your device even _need_ to be at a legacy address?  I'm not a
> Windows guru, but I would hope that if the PCI base class, sub class, and
> register interface bytes say the device is a parallel port, that Windows
> would recognize it as such.
> --BrooksL
>