when I used Inprocomm 11g card (WLAN), I found nonstandard tuple in this card. CISTPL_NAME code is 3, 8 ,1 and first tuple's code is 7 (Base Address Register tuple).What can I do to support this nonstandard tuple ?
I think you need to give me a little more to go on here because I have no idea what you're talking about. What is a "CISTPL_NAME code"? Are you talking about writing a device driver for this card? For what OS? Why do you think you need to "support" something in the CIS?
Generally the CIS for a CardBus card is ignored by common OS's (i.e. Windows, Linux).
When I perform 'cardmgr' , if card is inserted, console can display some messages ( product info and manfid , etc). But when Inprocomm 11g card is inserted , no messages is dispalyed. Refering to book (CARDBUS SYSTEM ARCHITECTURE), I found nonstandard tuple in this card . Whether do drivers not use card's CIS at all ?
Well you've chosen to not answer any of my questions...
I still don't understand the "nonstandard tuple" claim. Linux provides the "dump_cis" command. Did you use this to examine the CIS? Can you show the output?
Windows and Linux do not use the CIS for CardBus cards. The reason is that CardBus cards are configured the same way as PCI devices, and there is a standard method for PCI device configuration that does not require additional CIS data. Using the PCI configuration method provides a more uniform treatment of CardBus and PCI devices.
I used OS is embeded Linux(MontaVista). You said "Windows and Linux do not use the CIS for CardBus cards", in other words , I port device's PCI driver to device's CardBus driver need little modify?
I need not read information from CardBus's CIS.
I found that command 'cardmgr' read information (product info and manfid) from CardBus's CIS , than search suited driver in script ( etc\pcmcia\config). But I cann't read manfid from CIS , how can I do ?
With the kernel PCMCIA subsystem, CardBus cards are not configured by cardmgr; they are managed by the hotplug scripts. The driver for a CardBus device is chosen based on the PCI vendor and device ID information, which is separate from the CIS data.
With the kernel PCMCIA subsystem, no porting is required for a properly written PCI driver to also support CardBus cards. The two are basically treated exactly the same.
PCI driver invoke pci_register_driver() to register driver to system, but CardBus driver invoke egister_pccard_driver() to register to system, the two are different ! Is there Only this difference in PCI driver and CardBus drvier ?
CardBus drivers in the pcmcia-cs package actually use register_driver(), which is a special API defined in the cb_enabler module, and is not used in the kernel PCMCIA subsystem.
PCMCIA drivers for 16-bit cards use register_pccard_driver().
Current kernel PCI drivers use pci_register_driver(), and this API also transparently supports CardBus devices.