I have a PCI card which has a commercially available Intel
PCI chip on it. The HW designer added four extra
functions which are only accessible through the Expansion
ROM interface (to save $ and space without a bridge chip)
and which generates interrupts. This is a single function
card, no bridge chip, and the PCI chip currently has an
unsigned driver developed by Intel, although I expect it
will be signed someday.

We need to support XP and 2000 only.

And yes SW needs to fix this issue as the HW will not be
re-designed.

Any ideas on how to develop and release our drivers to get
to Expansion ROM or comments on the following ideas?


1. I must allocate PCI memory and assign it to the
expansion ROM to work in all systems. I can simply enable
the expansion ROM on my test PC for initial tests.

2. I did a test driver on one functionality and simply
installed my driver on the device (without the regular
one) and then forced accesses to Expansion ROM space and
it works but is not releasable.

3. I tried a "virtual" driver and could get PCI memory but
could not attach to the interrupt. Not sure if it is
illegal to have interrupts in virtual driver or I was
supplying bad parameters.

4. I though about installing a multifunction inf to break
out PCI function and 4 exp ROM functions and modifying the
PCI chip inf to look at name not PCI ID. But what happens
when becomes signed driver?

Thanks,

Stefan

Re: How to access Expansion ROM space by Brian

Brian
Fri Nov 21 13:40:40 CST 2003

"Stefan Levie" <stefanatnospam@technobox.com> wrote in message
news:046c01c3ae24$0ff78040$a401280a@phx.gbl...
> I have a PCI card which has a commercially available Intel
> PCI chip on it. The HW designer added four extra
> functions which are only accessible through the Expansion
> ROM interface (to save $ and space without a bridge chip)
> and which generates interrupts. This is a single function
> card, no bridge chip, and the PCI chip currently has an
> unsigned driver developed by Intel, although I expect it
> will be signed someday.
>
> We need to support XP and 2000 only.

The Intel driver may very well get signed, but your driver probably will not.

> And yes SW needs to fix this issue as the HW will not be
> re-designed.

It's all very well for a manager to make such a statement, but I find it very
unlikely that you will succeed. Your hardware is fundamentally BROKEN, and no
amount of edicts from management is going to change that. Your hardware
engineer played fast and loose with the spec, and now you're going to pay for
it: you are unlikely to get certified.

> Any ideas on how to develop and release our drivers to get
> to Expansion ROM or comments on the following ideas?
>
>
> 1. I must allocate PCI memory and assign it to the
> expansion ROM to work in all systems. I can simply enable
> the expansion ROM on my test PC for initial tests.

If the hardware's requirements are not in the BARs (Base Address Registers),
then you're not going to get the hardware resources you need. Also, I believe
that Microsoft won't certify anything that doesn't accurately describe its
hardware resources in the BARs.

You might be able to get what you need by fixing up what the hardware is
reporting, by catching the IRP_MN_FILTER_RESOURCE_REQUIREMENTS and updating the
IO_RESOURCE_REQUIREMENTS list.

-Brian

Brian Catlin, Sannas Consulting 310-944-9492
Windows Network, Video, WDM Device Driver Training & Consulting
See WWW.AZIUS.COM.bad for courses and scheduling
REMOVE .BAD FROM EMAIL AND WEB ADDRESS


> 2. I did a test driver on one functionality and simply
> installed my driver on the device (without the regular
> one) and then forced accesses to Expansion ROM space and
> it works but is not releasable.
>
> 3. I tried a "virtual" driver and could get PCI memory but
> could not attach to the interrupt. Not sure if it is
> illegal to have interrupts in virtual driver or I was
> supplying bad parameters.
>
> 4. I though about installing a multifunction inf to break
> out PCI function and 4 exp ROM functions and modifying the
> PCI chip inf to look at name not PCI ID. But what happens
> when becomes signed driver?
>
> Thanks,
>
> Stefan