Q) PCI Expansion ROM for a CardBus.

device driver

    Sponsored Links


  • 1. About GPRS monitoring application for Pocket PC
    Hi, I am interested to develop an application for Pocket PC 2003 which could monitor the gprs connection (like connection established or not, number of bytes sent and received etc). I am looking for different ideas about how to do this. Should I use TAPI, should I use AT commands, or is there any other way also to do that. Thanks, Arsalan
  • 2. Tuning channels in xp + sp1 are chaos
    Hi, I built a bda driver for my dvb-t usb box. It works well in xp + sp2, but it is very strange in sp1. At first, it seems going well, but after 3 or 4 channels locked, the all channels of remains would be locked too. Then, I went to trace the frequency. I found out that after the last right channel was locked, the driver could not receive any frequency no longer. Now, I believe that it is not a bug in application. It should be a bug in my driver. Sigh~~ Could anybody add me some comments for this issue?
  • 3. miniportInitialize()
    I have let my driver to setup into Windows XP,the miniportInitialize() have be called, but driver have not workable I know some operation should be done, like registers sets and bus interface open ,and anymore? Thanks, Amon
  • 4. PCI resource allocation: CmResourceTypeDma not found
    I am trying to use slave dma with a pci device, but when PnP manager issues the IRP_MN_START_DEVICE packet, it does not contain the field CmResourceTypeDma. How do I allocate the resources if the PnP manager doesn't specify them? Thanks

Q) PCI Expansion ROM for a CardBus.

Postby Daum » Thu, 06 Oct 2005 06:03:24 GMT

Subject : Question about PCI Expansion ROM for a CardBus.

Dear all,

Im developing NDIS CardBus device driver at Win2K/Xp. It will use PCI
Expansion ROM for CardBus CIS only.

Q1) What kinds of resource type will I get after using
I found that CmResourceTypeInterrupt, CmResourceTypeMemory, and etc were
defined in ndis.h. But, there is no type for an expansion ROM. Will it be
treated as a memory(CmResourceTypeMemory) type?

Q2) Are there any side effects to BIOS or bus/bridge drivers that were from
Win2K/Xp because of PCI Expansion ROM? My expansion ROMs content is
completely empty except the CardBus CIS information.

Thank you for your attention to my question.

// Daum

Re: Q) PCI Expansion ROM for a CardBus.

Postby Stephan Wolf [MVP] » Thu, 06 Oct 2005 19:10:21 GMT

IIRC, PCI expansion ROM contents are copied by the BIOS during system
boot to the standard expansion ROM address window, i.e. somewhere
between C000:0h and F000:0h (seg:ofs).

The expansion ROM can/should have some initialization code sequence,
which will set the ROM size to be present *after* the initialization
has completed (i.e. it can shrink its own size).

Not sure, but I guess you will not see the address (below 1 MB) of the
*copied* ROM as a resource returned by NdisMQueryAdapterResources().
You will rather see the *actual* address of the ROM, i.e. somewhere in
32-bit address space.

IIRC, this is all documented in various dosuments like the PCI spec.,
Plug & Play BIOS specification, etc. See e.g. here for the latter

  > Plug and Play Specifications

You can get the PCI spec from  http://www.**--****.com/ "pci


Re: Q) PCI Expansion ROM for a CardBus.

Postby Pavel A. » Thu, 06 Oct 2005 20:00:40 GMT

Do you really need to read something from the CIS in your driver in runtime?
For cardbus, CIS is not used to describe resources.
You just define BARs and interrupt in the PCI config space as for regular PCI device,
and will get the allocated resources via NdisMQueryAdapterResources.


Similar Threads:

1.PCI Expansion ROM not executed

Recently, I had experienced that some latest desktop PCs are failing to
generate interrupt for a PCI card.  With the help of the PCI card
supplier, the issue is caused by new PCs are not compliant with the
portion of the PCI specification concerning expansion ROM. That is the
PCs completely ignore the instructions in the PCI card expansion ROM.
Unfortunately, the PCI card expansion ROM contains code that governs
interrupt generation.

My PCI card supplier also mentioned that whether or not the expansion
ROM is executed is a function of the BIOS. Here is my question:  what
setting(s) if any are in the BIOS governing the execution of a PCI card
expansion ROM?

2.How to access Expansion ROM space

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 

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?



3.PCI Slot Expansion

I want to design a pci board which will expand one pci slot through a
pci-bridge and pci-local bus and get two slot. I wonder if there is
any driver problem? say i plug a audio card into the expanded slot?



4.pci expansion support

I have finally found some time to rewrite a filter driver for a pci expansion 
system.  Given the product I have a requirment to increase the resource 
windows of buses that are upstream of my product, because the system may be 
hot plugged,  some BIOSes don't support us, and some of the devices 
downstream (third party) may require more then the default 64MB/64MB/4K.  

My driver acts as an upper filter to PCI.SYS.  I would like to modify the 
PCI config space of the upstream buses before PCI.SYS reads them.  The 
information I am looking for is at what point in the process does PCI.sys 
read the config space before resource arbitration to decide what resources to 
allocate?  I will figure it out through expirimentation, but if someone out 
there has some street knowledge, or can point me to some relevant 
documentaion in this area that could save me some time I would appreciate it.

The driver I am replacing makes modifications in the 
IRP_MN_FILTER_RESOURCE_REQUIREMENTS pnp IRP, this is a direction I could go 
as I have a mostly working example, it just seems like modifying the config 
space and letting PCI.sys do its job is an cleaner route to take.  My worry 
is that I have somewhat of a chicken and egg dilema as I need pci.sys to make 
modifications to the config space, but I don't want to make the modifications 
too late.  I want to work within the accepted practices of the OS as I want 
the driver to support Vista and 64 bit versions as well without too many 



5.Mac OS 8 driver for CSI pci serial expansion card

Does anyone have the driver for a CSI PCI Serial expansion card.  I need it 
for the MAC OS 8.6.  I have been having a hell of a time trying to find it, 
if someone has any type of information or the driver itself i would greatly 
appreciate it.


6. Wnidows 2000 and PCI-Cardbus bridge resources

7. IEEE 802.11g Wireless Cardbus/PCI Adapter Driver

8. Driver for TI PCI-1410 Cardbus Controller?

Return to device driver


Who is online

Users browsing this forum: No registered users and 7 guest