This package is intended for making more use of CardBus cards.
Included parts
==============
* cbenable.sys - a device driver that uses OS/2 Card services to
enable any CardBus card you insert in a slot
and assign an IRQ line and and IO window.
* cbe_msg.exe - send a on off message to cbenable.sys
* oemhlp2.sys - some System BIOS do not scan on CardBus bus,
if they are asked to look for a PCI device.
Imagine that there would be a common PCI Chipset
with drivers and no special CardBus client.
if the device is present at boot time and the
PCI driver uses the OEMHLP$ driver (included in
OS2KRNL), chaning OEMHLP$ to OEMH2$ would let
the PCI driver find the CardBus device.
Of course you must make sure that the card
is in the socket all the time...
* ppcmcia.exe - original PCMCIA.SYS has a bug that prevents use
of CardBus cards. This program patches PCMCIA.SYS.
The patch was tested with version 10.056.
PPCMCIA creates a backup file if it can not find one.
* cscinfo.exe - simple program to show card informations
Usage
=====
1. First install Card Services. cbenable.sys checks for
version 5.00, make sure that you use
BaseDev=PCMCIA.SYS /R:500
in config.sys.
2. run ppcmcia.exe. It will patch PCMCIA.SYS on your boot drive,
it will try to find it in \os2\ and \os2\boot\.
You can specify the full path to PCMCIA.SYS if you run
from an maintenance partition.
3. Add CBENABLE.SYS and OEMHLP2.SYS to config.sys, OEMHLP2.SYS
CBENABLE.SYS must be after PCMCIA.SYS, OEMHLP2.SYS can be
earlier.
BaseDev=OEMHLP2.SYS
OEMHLP2.SYS has no parameters.
BaseDev=CBENABLE.SYS <CardBusBridge Bus> <CS Socket> <IRQ> <IO Window>
[/Patch_Ti1225_Burst:<Ti1225_Burst>]
[/Patch_Ti1225_IRQMode:<Ti1225_IRQMode>]
[/FunctionID:<Function_code>]
<CardBusBridge Bus> are 3 values for Bus, Device and Function
of the CardBus bridge. You have most likely only one chip and
let CBENABLE.SYS search for it by using * for each.
<CS Socket> is an number from 0 to 7.
<IRQ> is the set of allowed IRQ to use for the CardBus card.
Separate IRQs using ","
<IO Window> is the base address and the window size to assign
to the CardBus card. Make sure (RMVIEW /IO) this area is not
already used. Or use base address 0 to let the Card Services
find a free IO area. Window size of 256 ($100) should be
sufficient for most devices.
<Ti1225_Burst> Optional hardware depended Option for
Texas Instruments 1225 and compatible chips (values 0/1).
For value 1, the "Memory read burst enable upstream" bit
is set. Measured Realtek 8139 NETIO throughput goes
from 3,2 MB/s to 11 MB/s on the development system.
<Ti1225_IRQMode> Optional hardware dependend Option for
Texas Instruments 1225 and compatible chips (values 0/1/2/3).
Modifies Interrupt mode:
0 = Parallel PCI interrupts only
1 = Parallel IRQ and parallel PCI interrupts
2 = IRQ serialized interrupts and parallel PCI interrupt
3 = IRQ and PCI serialized interrupts (default)
<Function_code> Optional parameter to restrict card types
that are processed. Possible values are:
0 = Multi-Function
1 = Memory
2 = Serial Port
3 = Parallel Port
4 = Fixed Disk
5 = Video Adapter
6 = Network Adapter
7 = Auto Incrementing Mass Storage
8 = SCSI
9 = Security
10..253 = Reserved
254 = Vendor-Specific
* = ignore value (default)
Example:
BaseDev=CBENABLE.SYS * * 0 0 10,11,12 $1800 $0100
^^^^^ ^ ^^^^^^^^ ^^^^^^^^^^^
Bridge Socket IRQ IO-Window
Resource Manager
================
You will find CBENABLE.SYS and OEMHLP.SYS using "RMVIEW /D",
Resources allocated by CBENABLE will appear allocated by
"Socket_0", "Socket_1" ...
Currently, IRQ are assigned exclusive (driver only knows AT
and Microchannel ?).
Power on+off, Hotinsert
=======================
Power on/off and remove/reinsert is only possible if
the adapter device driver supports the notification hook
in CBENABLE.SYS. The "Realtek 8139 OS/2 NDIS" driver is
planed to include support for this. If you remove a card
or remove the power from it (Card Director) without
coordination with the driver, you most likely get a system
halt. Another way to power off a card is to execute the
included cbe_msg.exe program. Its parameters are socket
number (0..7) and 0/1 for off/on. Example for removing
power for first socket: "cbe_msg 0 0".
APM Suspend/Resume
==================
The "DEVICE=E:\OS2\boot\$ICPMOS2.SYS" driver in config.sys
prevents APM Suspend if CBENABLE.SYS has enabled a card.
You perhaps want to comment it off by inserting "REM "
in front of that line.
Enabler Conflicts
=================
CBENABLE would most likely conflict with similar enabler
clients, use for example "/FunctionID:6" to restrict CBENABLE
to only try Network cards.
Remember to hide any socket from Card Services, where
"point enabler" software (build-in card services) is used.
Example: cbendis/ibmcndis.os2 (Xircom/IBM EtherJet 10/100)
Beep codes
==========
short very high beep (8000 Hz)
card enabled successful.
medium/high/medium beep (2000/3000/2000)
card configuration failed
adjust IRQ or use Base IO address 0.
long low/middle beep (1000/2000/1000/2000 Hz)
can not get card configuration, bad pcmcia.sys detected
run ppcmcia.exe and reboot.
Known Problems
==============
* Removing powered on Cards causes Resource Manager IO reservations
leaks. This does not seem to happen if CBE_MSG is used.
Possible fix:
- search PCMCIA.SYS problem
- free RM resources in CBENABLE.SYS
Changes
=======
2003.01.07
?corrected errors in ppcmcia.cmd
?added TI 1225 interrupt and burst mode options
?Search IOBase if it does not work, or 0 is specified
?Uses OEMHLP$/OEMHLP2.SYS for PCI access
2003.01.27
?cscinfo shows manufacturer from GetCardServicesInfo buffer
?removed ppcmcia.cmd and enhanced ppcmcia.exe
?/FunctionID filter added
?cbenable.sys: copy excpected PCI address of inserted card
to IOCTL data buffer