CSX_REQUESTCONFIGURATION(9F)                    Kernel Functions for Drivers
NAME
       csx_RequestConfiguration - configure the PC Card and socket
SYNOPSIS
       #include <sys/pccard.h>       
int32_t csx_RequestConfiguration(
client_handle_t ch, 
config_req_t *cr);
INTERFACE LEVEL
       illumos 
DDI Specific (illumos 
DDI)
PARAMETERS
       ch             Client handle returned from 
csx_RegisterClient(9F).       
cr             Pointer to a 
config_req_t structure.
DESCRIPTION
       This function configures the 
PC Card and socket. It must be used by
       clients that require 
I/O or 
IRQ resources for their 
PC Card.       
csx_RequestIO(9F) and 
csx_RequestIRQ(9F) must be used before calling
       this function to specify the 
I/O and 
IRQ requirements for the 
PC Card
       and socket if necessary. 
csx_RequestConfiguration() establishes the
       configuration in the socket adapter and 
PC Card, and it programs the
       Base and Limit registers of multi-function 
PC Cards if these
       registers exist. The values programmed into these registers depend on
       the 
IO requirements of this configuration.
STRUCTURE MEMBERS
       The structure members of 
config_req_t are:
         uint32_t     Socket;          /* socket number */
         uint32_t     Attributes;      /* configuration attributes */
         uint32_t     Vcc;             /* Vcc value */
         uint32_t     Vpp1;            /* Vpp1 value */
         uint32_t     Vpp2;            /* Vpp2 value */
         uint32_t     IntType;         /* socket interface type - mem or IO */
         uint32_t     ConfigBase;      /* offset from start of AM space */
         uint32_t     Status;          /* value to write to STATUS register */
         uint32_t     Pin;             /* value to write to PRR */
         uint32_t     Copy;            /* value to write to COPY register */
         uint32_t     ConfigIndex;     /* value to write to COR */
         uint32_t     Present;         /* which config registers present */
         uint32_t     ExtendedStatus;  /* value to write to EXSTAT register */
       The fields are defined as follows:       
Socket           Not used in illumos, but for portability with other Card Services
           implementations, it should be set to the logical socket number.       
Attributes           This field is bit-mapped. It indicates whether the client wishes
           the 
IRQ resources to be enabled and whether Card Services should
           ignore the 
VS bits on the socket interface. The following bits
           are defined:           
CONF_ENABLE_IRQ_STEERING               Enable IRQ Steering. Set to connect the 
PC Card 
IREQ line to
               a system interrupt previously selected by a call to               
csx_RequestIRQ(9F). If 
CONF_ENABLE_IRQ_STEERING is set, once               
csx_RequestConfiguration() has successfully returned, the
               client may start receiving 
IRQ callbacks at the 
IRQ callback
               handler established in the call to 
csx_RequestIRQ(9F).           
CONF_VSOVERRIDE               Override VS pins. After card insertion and prior to the first
               successful 
csx_RequestConfiguration(), the voltage levels
               applied to the card shall be those indicated by the card's
               physical key and/or the VS[2:1] voltage sense pins. For Low
               Voltage capable host systems (hosts which are capable of 
VS               pin decoding), if a client desires to apply a voltage not
               indicated by the 
VS pin decoding, then 
CONF_VSOVERRIDE must
               be set in the 
Attributes field; otherwise, 
CS_BAD_VCC shall
               be returned.       
Vcc, Vpp1, Vpp2           These fields all represent voltages expressed in tenths of a
           volt. Values from zero (
0) to 
25.5 volts may be set. To be valid,
           the exact voltage must be available from the system.  
PC Cards
           indicate multiple 
Vcc voltage capability in their 
CIS via the           
CISTPL_CFTABLE_ENTRY tuple.  After card insertion, Card Services
           processes the 
CIS, and when multiple 
Vcc voltage capability is
           indicated, Card Services will allow the client to apply 
Vcc           voltage levels which are contrary to the 
VS pin decoding without
           requiring the client to set 
CONF_VSOVERRIDE.       IntType           This field is bit-mapped. It indicates how the socket should be
           configured. The following bits are defined:           
SOCKET_INTERFACE_MEMORY               Memory only interface.           
SOCKET_INTERFACE_MEMORY_AND_IO               Memory and I/O interface.       
ConfigBase           This field is the offset in bytes from the beginning of attribute
           memory of the configuration registers.       
Present           This field identifies which of the configuration registers are
           present. If present, the corresponding bit is set. This field is
           bit-mapped as follows:           
CONFIG_OPTION_REG_PRESENT                                         Configuration Option Register (COR)
                                         present           
CONFIG_STATUS_REG_PRESENT                                         Configuration Status Register
                                         (CCSR) present           
CONFIG_PINREPL_REG_PRESENT                                         Pin Replacement Register (PRR)
                                         present           
CONFIG_COPY_REG_PRESENT                                         Socket and Copy Register (SCR)
                                         present           
CONFIG_ESR_REG_PRESENT                                         Extended Status Register (ESR)
                                         present       
Status, Pin, Copy, ExtendedStatus           These fields represent the initial values that should be written
           to those registers if they are present, as indicated by the           
Present field.
           The 
Pin field is also used to inform Card Services which pins in
           the 
PC Card's 
PRR (Pin Replacement Register) are valid. Only
           those bits which are set are considered valid. This affects how
           status is returned by the 
csx_GetStatus(9F) function. If a
           particular signal is valid in the 
PRR, both the 
mask (
STATUS) bit
           and the 
change (
EVENT) bit must be set in the 
Pin field. The
           following 
PRR bit definitions are provided for client use:           
PRR_WP_STATUS                               WRITE PROTECT mask           
PRR_READY_STATUS                               READY mask           
PRR_BVD2_STATUS                               BVD2 mask           
PRR_BVD1_STATUS                               BVD1 mask           
PRR_WP_EVENT                               WRITE PROTECT changed           
PRR_READY_EVENT                               READY changed           
PRR_BVD2_EVENT                               BVD2 changed           
PRR_BVD1_EVENT                               BVD1 changed       
ConfigIndex           This field is the value written to the 
COR (Configuration Option
           Register) for the configuration index required by the 
PC Card.
           Only the least significant six bits of the 
ConfigIndex field are
           significant; the upper two (2) bits are ignored. The interrupt
           type in the 
COR is always set to 
level mode by Card Services.
RETURN VALUES
       CS_SUCCESS                                  Successful operation.       
CS_BAD_HANDLE                                  Client handle is invalid or                                  
csx_RequestConfiguration() not done.       
CS_BAD_SOCKET                                  Error in getting or setting socket
                                  hardware parameters.       
CS_BAD_VCC                                  Requested 
Vcc is not available on socket.       
CS_BAD_VPP                                  Requested 
Vpp is not available on socket.       
CS_NO_CARD                                  No 
PC Card in socket.       
CS_BAD_TYPE                                  I/O and memory interface not supported on
                                  socket.       
CS_CONFIGURATION_LOCKED                                  csx_RequestConfiguration() already done.       
CS_UNSUPPORTED_FUNCTION                                  No 
PCMCIA hardware installed.
CONTEXT
       This function may be called from user or kernel context.
SEE ALSO
       csx_AccessConfigurationRegister(9F), 
csx_GetStatus(9F),       
csx_RegisterClient(9F), 
csx_ReleaseConfiguration(9F),       
csx_RequestIO(9F), 
csx_RequestIRQ(9F)       PC Card 95 Standard, PCMCIA/JEIDA
                                July 19, 1996   CSX_REQUESTCONFIGURATION(9F)