API Reference: Libraries

# sysLib

#### NAME

> sysLib - Kontron MOPSlcdLX system-dependent library

#### ROUTINES

> sysNvRamGet( ) - get the contents of non-volatile RAM
> sysNvRamSet( ) - write to non-volatile RAM
> sysLocalToBusAdrs( ) - convert a local address to a bus address
> sysBusToLocalAdrs( ) - convert a bus address to a local address
> sysBusIntAck( ) - acknowledge a bus interrupt
> sysBusIntGen( ) - generate a bus interrupt
> sysMailboxConnect( ) - connect a routine to the mailbox interrupt
> sysMailboxEnable( ) - enable the mailbox interrupt
> sysBusTas( ) - test and set a location across the bus
> i8259Init( ) - initialize the PIC
> i8259IntBoiEem( ) - issue EOI before the IRQ0 interrupt handler
> i8259IntBoiSmm( ) - enable Special Mask Mode before the IRQ0 interrupt handler
> i8259IntBoi( ) - detect whether it is spurious interrupt or not
> i8259IntEoiSmm( ) - disable Special Mask Mode with EOI signal to the master PIC
> i8259IntEoiMaster( ) - send EOI(end of interrupt) signal to the master PIC.
> i8259IntEoiSlave( ) - send EOI(end of interrupt) signal to the slave PIC.
> i8259IntEoiSlaveNfnm( ) - send EOI(end of interrupt) signal to the slave PIC.
> i8259IntEoiSlaveSfnm( ) - send EOI(end of interrupt) signal to the slave PIC.
> sysClkInt( ) - interrupt level processing for system clock
> sysClkConnect( ) - connect a routine to the system clock interrupt
> sysClkDisable( ) - turn off system clock interrupts
> sysClkEnable( ) - turn on system clock interrupts
> sysClkRateGet( ) - get the system clock rate
> sysClkRateSet( ) - set the system clock rate
> sysAuxClkInt( ) - handle an auxiliary clock interrupt
> sysAuxClkConnect( ) - connect a routine to the auxiliary clock interrupt
> sysAuxClkDisable( ) - turn off auxiliary clock interrupts
> sysAuxClkEnable( ) - turn on auxiliary clock interrupts
> sysAuxClkRateGet( ) - get the auxiliary clock rate
> sysAuxClkRateSet( ) - set the auxiliary clock rate
> sysPciCfgInit( ) - pci configuration and initialization
> pciConfigLibInit( ) - initialize the configuration access-method and addresses
> pciFindDevice( ) - find the nth device with the given device & vendor ID
> pciFindClass( ) - find the nth occurrence of a device by PCI class code.
> pciDevConfig( ) - configure a device on a PCI bus
> pciConfigBdfPack( ) - pack parameters for the Configuration Address Register
> pciConfigExtCapFind( ) - find extended capability in ECP linked list
> pciConfigInByte( ) - read one byte from the PCI configuration space
> pciConfigInWord( ) - read one word from the PCI configuration space
> pciConfigInLong( ) - read one longword from the PCI configuration space
> pciConfigOutByte( ) - write one byte to the PCI configuration space
> pciConfigOutWord( ) - write one 16-bit word to the PCI configuration space
> pciConfigOutLong( ) - write one longword to the PCI configuration space
> pciConfigModifyLong( ) - Perform a masked longword register update
> pciConfigModifyWord( ) - Perform a masked longword register update
> pciConfigModifyByte( ) - Perform a masked longword register update
> pciSpecialCycle( ) - generate a special cycle with a message
> pciConfigForeachFunc( ) - check condition on specified bus
> pciConfigReset( ) - disable cards for warm boot
> sysPciIntInit( ) - PCI interrupt library init
> sysPciIvecToIrq( ) - get an IRQ(PIC or IOAPIC) number from vector address
> pciIntLibInit( ) - initialize the pciIntLib module
> pciInt( ) - interrupt handler for shared PCI interrupt.
> pciIntConnect( ) - connect the interrupt handler to the PCI interrupt.
> pciIntDisconnect( ) - disconnect the interrupt handler (OBSOLETE)
> pciIntDisconnect2( ) - disconnect an interrupt handler from the PCI interrupt.
> pciAutoConfigLibInit( ) - initialize PCI autoconfig library
> pciAutoCfg( ) - Automatically configure all nonexcluded PCI headers
> pciAutoCfgCtl( ) - set or get pciAutoConfigLib options
> pciAutoDevReset( ) - quiesce a PCI device and reset all writeable status bits
> pciAutoBusNumberSet( ) - set the primary, secondary, and subordinate bus number
> pciAutoFuncDisable( ) - disable a specific PCI function
> pciAutoFuncEnable( ) - perform final configuration and enable a function
> pciAutoGetNextClass( ) - find the next device of specific type from probe list
> pciAutoRegConfig( ) - assign PCI space to a single PCI base address register
> pciAutoCardBusConfig( ) - set mem and I/O registers for a single PCI-Cardbus bridge
> pciAutoAddrAlign( ) - align a PCI address and check boundary conditions
> pciAutoConfig( ) - automatically configure all nonexcluded PCI headers (obsolete)
> sys557PciInit( ) - initialize a 82557 PCI ethernet device
> sys557Init( ) - prepare 82557 PCI ethernet device for initialization
> sys557Show( ) - show 82557 PCI ethernet device configuration
> hwMemLibInit( ) - initialize hardware memory allocation library
> hwMemPoolCreate( ) - create or add a memory pool for driver memory allocation
> hwMemAlloc( ) - allocate a buffer from the hardware memory pool
> hwMemFree( ) - return buffer to the hardware memory pool
> hwMemShow( ) -
> hwVMRInit( ) - initialize Virtual Memory Region
> hwVMRAlloc( ) - allocate from Virtual Memory Region
> hwVMRAddrGet( ) - get initial virtual address from Virtual Memory Region
> hwVMRDeActivate( ) - prevent future allocation from Virtual Memory Region
> hwVMRShow( ) - show virtual memory region usage
> ns16550sioRegister( ) - register ns16550 driver
> ns16550DevProbe( ) - probe for device presence at specific address
> ns16550DevInit( ) - initialize an NS16550 channel
> ns16550IntWr( ) - handle a transmitter interrupt
> ns16550IntRd( ) - handle a receiver interrupt
> ns16550IntEx( ) - miscellaneous interrupt processing
> ns16550Int( ) - interrupt level processing
> hcfDeviceGet( ) - get the HCF_DEVICE pointer
> devResourceGet( ) - find vxBus resource
> devResourceIntrGet( ) - find vxBus interrupt resources
> hcfResourceShow( ) - show values for specified resource
> hcfResourceDevShow( ) - show the device and resource values
> hcfResourceAllShow( ) - show all devices and resource values
> vxbLibInit( ) - initialize vxBus library
> vxbInit( ) - initialize vxBus
> vxbDevInit( ) - second-pass initialization of devices
> vxbDevConnect( ) - third-pass initialization of devices
> vxbLibError( ) - handle error conditions
> vxbDevRegister( ) - register a device driver
> vxbDriverUnregister( ) - remove a device driver from the bus subsystem
> vxbBusTypeRegister( ) - register a bus type
> vxbBusTypeUnregister( ) - unregister a bus type
> vxbDeviceAnnounce( ) - announce device discovery to bus subsystem
> vxbDevRemovalAnnounce( ) - announce device removal to bus subsystem
> vxbBusAnnounce( ) - announce bus discovery to bus subsystem
> vxbDevParent( ) - find parent device
> vxbDevPath( ) - trace from device to nexus
> vxbDevMethodGet( ) - find entry point of method
> vxbDevIterate( ) - perform specified action for each device
> vxbDeviceMethodRun( ) - run method on device
> vxbDevMethodRun( ) - run method on devices
> vxbSubDevAction( ) - perform an action on all devs on bus controller
> vxbResourceFind( ) - find and allocate a vxBus resource
> vxbDevError( ) - driver does not support specified functionality
> nullDrv( ) - optional driver functionality not present
> noDev( ) - optional driver functionality not present
> vxbBusTypeString( ) - retrieve bus type string
> vxbMemAddrGet( ) - get address for device
> vxbAccessMethodGet( ) - find specific method for accessing device
> vxbVolRegWrite( ) - volatile register writes
> vxbIntConnect( ) - connect device's interrupt
> vxbIntDisconnect( ) - disconnect device's interrupt
> vxbIntAcknowledge( ) - Acknowledge device's interrupt
> vxbIntEnable( ) - Enable device's interrupt
> vxbIntDisable( ) - disable device's interrupt
> vxbIntVectorGet( ) - get device's interrupt vector
> vxbDevStructAlloc( ) - allocate VXB_DEVICE structure
> vxbDevStructFree( ) - free VXB_DEVICE structure
> vxbInstUnitSet( ) - set the unit number
> vxbInstUnitGet( ) - get the unit number
> vxBusShow( ) - show vxBus subsystem
> vxbBusListPrint( ) - Show bus topology
> vxbTopoShow( ) - Show bus topology
> vxbPresStructShow( ) - Show bus information
> vxbDevStructShow( ) - Show device information
> vxbDevAccessShow( ) - Show bus access methods
> vxbDevPathShow( ) - Show bus hierarchy
> _archRegProbe( ) - probe a register on the device
> _archRegisterRead8( ) - read 8-bit value from a register
> _archRegisterRead16( ) - read 16-bit value from a register
> _archRegisterRead32( ) - read 32-bit value from a register
> _archRegisterRead64( ) - read 64-bit value from a register
> _archRegisterWrite8( ) - write 8-bits to a register
> _archRegisterWrite16( ) - write 16-bits to a register
> _archRegisterWrite32( ) - write 32-bits to a register
> _archRegisterWrite64( ) - write 64-bits to a register
> _archVolatileRegisterWrite( ) - write to a volatile register
> _archVolatileRegisterRead( ) - read from a volatile register
> _archOptRegWr64_00( ) - write 64 bits to a mem space register
> _archOptRegWr64_07( ) - swap 64 bit data and write to a mem space register
> _archOptRegWr64_20( ) - write 64 bits to an IO space register
> _archOptRegWr64_27( ) - swap and write 64 bits to an IO space register
> _archOptRegWr64_10( ) - write 64 bits to a mem space register and flush data
> _archOptRegWr64_17( ) - swap, write 64 bits to a mem space register & flush data
> _archOptRegWr64_30( ) - write 64 bits to a IO space register and flush data
> _archOptRegWr64_37( ) - swap, write 64 bits to a IO space register & flush data
> _archOptRegWr32_00( ) - write 32 bits to mem space register
> _archOptRegWr32_03( ) - swap the data and write 32 bits to mem space register
> _archOptRegWr32_20( ) - write 32 bits to an IO space register
> _archOptRegWr32_23( ) - swap and write 32 bits to an IO space register
> _archOptRegWr32_10( ) - write 32 bits to an mem space register and flush
> _archOptRegWr32_10( ) - swap & write 32 bits to an mem space register and flush
> _archOptRegWr32_30( ) - write 32 bits to an IO space register and flush
> _archOptRegWr32_33( ) - swap and write 32 bits to an IO space register & flush
> _archOptRegWr16_00( ) - write 16 bits to a mem space register
> _archOptRegWr16_01( ) - swap and write 16 bits to a mem space register
> _archOptRegWr16_20( ) - write 16 bits to an IO space register
> _archOptRegWr16_21( ) - swap and write 16 bits to an IO space register
> _archOptRegWr16_10( ) - write 16 bits to a mem space register and flush data
> _archOptRegWr16_11( ) - swap, write 16 bits to mem space register & flush data
> _archOptRegWr16_30( ) - write 16 bits to IO space register & flush data
> _archOptRegWr16_31( ) - swap & write 16 bits to IO space register & flush data
> _archOptRegWr8_00( ) - write 8 bits to mem space register
> _archOptRegWr8_20( ) - write 8 bits to IO space register
> _archOptRegWr8_10( ) - write 8 bits to mem space register and flush data
> _archOptRegWr8_30( ) - write 8 bits to IO space register and flush data
> _archOptRegWrRd64_00( ) - write 64 bits to a mem space register and read back
> _archOptRegWrRd64_07( ) - swap 64 bit data and write & read from mem space
> _archOptRegWrRd64_20( ) - write 64 bits to an IO space register and read back
> _archOptRegWrRd64_27( ) - swap, write 64 bits & read from an IO space register
> _archOptRegWrRd64_10( ) - write 64 bits to mem space register, flush data & read
> _archOptRegWrRd64_17( ) - swap, write 64 bits to memspace, flush data & read
> _archOptRegWrRd64_30( ) - write 64 bits to IO space register, flush and read
> _archOptRegWrRd64_37( ) - swap, write 64 bits to IO space, flush & read data
> _archOptRegWrRd32_00( ) - write 32 bits to mem space register & read back
> _archOptRegWrRd32_03( ) - swap, write 32 bits to mem space register & read
> _archOptRegWrRd32_20( ) - write 32 bits to an IO space register & read back
> _archOptRegWrRd32_23( ) - swap, write 32 bits to an IO space register & read
> _archOptRegWrRd32_10( ) - write 32 bits to memspace register, flush & read
> _archOptRegWrRd32_13( ) - swap, write 32 bits to memspace, flush & read
> _archOptRegWrRd32_30( ) - write 32 bits to an IO space register, flush & read
> _archOptRegWrRd32_33( ) - swap, write 32 bits to IO space, flush & read
> _archOptRegWrRd16_00( ) - write 16 bits to a mem space register & read back
> _archOptRegWrRd16_01( ) - swap, write 16 bits to a mem space register & read
> _archOptRegWrRd16_20( ) - write 16 bits to an IO space register & read
> _archOptRegWrRd16_21( ) - swap, write 16 bits to an IO space register & read
> _archOptRegWrRd16_10( ) - write 16 bits to memspace, flush data & read
> _archOptRegWrRd16_11( ) - swap, write 16 bits to memspace, flush & read data
> _archOptRegWrRd16_30( ) - write 16 bits to IO space, flush & read back data
> _archOptRegWrRd16_31( ) - swap, write 16 bits to IO space, flush data & read
> _archOptRegWrRd8_00( ) - write 8 bits to mem space register and read back data
> _archOptRegWrRd8_20( ) - write 8 bits to IO space register and read back
> _archOptRegWrRd8_10( ) - write 8 bits to mem space register, flush data & read
> _archOptRegWrRd8_30( ) - write 8 bits to IO space register, flush data & read
> _archOptRegRd64_00( ) - read 64 bits from mem space register
> _archOptRegRd64_07( ) - read 64 bits from mem space register and swap data
> _archOptRegRd64_20( ) - read 64 bits from IO space register
> _archOptRegRd64_27( ) - read 64 bits from IO space register and swap data
> _archOptRegRd32_00( ) - read 32 bits from mem space register
> _archOptRegRd32_03( ) - read 32 bits from mem space register and swap data
> _archOptRegRd32_20( ) - read 32 bits from IO space register
> _archOptRegRd32_23( ) - read 32 bits from IO space register and swap data
> _archOptRegRd16_00( ) - read 16 bits from mem space register
> _archOptRegRd16_01( ) - read 16 bits from mem space register and swap data
> _archOptRegRd16_20( ) - read 16 bits from IO space register
> _archOptRegRd16_21( ) - read 16 bits from IO space register and swap data
> _archOptRegRd8_00( ) - read 8 bits from mem space register
> _archOptRegRd8_20( ) - read 8 bits from IO space register
> optimizeAccessFunction( ) - optimize a function based on flags
> vxbPlbAccessCopy( ) - copy the access data structure
> plbAccessInit( ) - initialize the plb access module
> plbRegister( ) - register PLB with bus subsystem
> plbInit1( ) - first-stage PLB bus initialization
> plbInit2( ) - second-stage PLB bus initialization
> plbConnect( ) - third-stage PLB bus initialization
> plbDevMatch( ) - check whether device and driver go together
> pciRegisterProbe( ) - probe a register on a PCI device
> pciRegisterRead8( ) - read 8-bit value from a register
> pciRegisterRead16( ) - read 16-bit value from a register
> pciRegisterRead32( ) - read 32-bit value from a register
> pciRegisterRead64( ) - read 64-bit value from a register
> pciRegisterWrite8( ) - write 8-bits to a register
> pciRegisterWrite16( ) - write 16-bits to a register
> pciRegisterWrite32( ) - write 32-bits to a register
> pciRegisterWrite64( ) - write 64-bits to a register
> pciVolatileRegisterWrite( ) - write to a volatile register
> pciVolatileRegisterRead( ) - read from a volatile register
> pciVolatileRegisterWrite8( ) - write 8-bits to a volatile register
> pciVolatileRegisterWrite16( ) - write 16-bits to a volatile register
> pciVolatileRegisterWrite32( ) - write 32-bits to a volatile register
> pciVolatileRegisterWrite64( ) - write 64-bits to a volatile register
> pciDevControl( ) - perform device control operations
> pciBusIntEnable( ) - enable a PCI device interrupt
> pciBusIntDisable( ) - disable a PCI device interrupt
> pciBusIntAcknowledge( ) - acknowledge and clear an interrupt
> pciBusIntConnect( ) - connect an ISR to the device interrupt
> pciBusIntDisconnect( ) - disconnect an ISR to the device interrupt
> pciBusIntVectorGet( ) - get interrupt vector information
> vxbPciBusTypeInit( ) - initialize the PCI bus type
> vxbPciAccessCopy( ) - copy access function pointers
> pciRegister( ) - register PCI bus type
> pciHcfRecordFind( ) - find device's HCF pciSlot record
> pciIntrInfoFind( ) - find device interrupt information
> pciDevMatch( ) - check whether device and driver go together
> pciInit( ) - first-pass bus type initialization
> pciInit2( ) - second-pass bus type initialization
> pciConnect( ) - connect PCI bus type to bus subsystem
> pciDeviceAnnounce( ) - notify the bus subsystem of a device on PCI
> pciBusAnnounceDevices( ) - Notify the bus subsystem of all devices on PCI
> pciDevShow( ) - show information about PCI device
> pentiumPciRegister( ) - register Pentium PCI host bridge device driver
> pentiumPciMmuMapAdd( ) - memory map sysPhysMemDesc
> pentiumPciPhysMemHandle( ) - configure PCI memory for a device
> pentiumPciPhysMemShow( ) - display sysPhysMemDesc entries
> pentiumPciInstInit( ) - create a Pentium PCI host bridge instance
> pentiumPciInstInit2( ) - second stage Pentium PCI host bridge device connection
> pentiumPciInstConnect( ) - third stage Pentium PCI host bridge device connection
> sysPciHostBridgeInit( ) - initialize the PCI Host Bridge
> pentiumPciMethodCfgRead( ) - method for reading from configuration space
> pentiumPciMethodCfgWrite( ) - method for writing to configuration space
> pentiumPciCfgRead( ) - access method for reading configuration space
> pentiumPciCfgWrite( ) - access method for writing configuration space
> pentiumPciAccessMethodOverride( ) - method for overriding access routines
> pentiumPciDevControl( ) -
> pentiumPciBusDevGet( ) - find bus controller
> sioNextChannelNumberAssign( ) - assign a new serial channel number
> sysSerialChanGet( ) - get the SIO_CHAN device associated with a serial channel
> sysSerialChanConnect( ) - connect the SIO_CHAN device
> sysSerialConnectAll( ) - connect all SIO_CHAN devices
> vxbInstParamSet( ) - set driver parameter for specified instance
> _vxbInstRetrieve( ) - retrieve the VXB_DEVICE_ID for an instance
> vxbInstByNameFind( ) - retrieve the VXB_DEVICE_ID for an instance
> vxbInstParamByNameGet( ) - retrieve driver parameter value
> vxbInstParamByIndexGet( ) - retrieve driver parameter value
> hardWareInterFaceBusInit( ) -
> hardWareInterFaceInit( ) - Hardware Interface Pre-Kernel Initialization
> sysModel( ) - return the model name of the CPU board
> sysBspRev( ) - return the BSP version and revision number
> sysHwInit( ) - initialize the system hardware
> sysHwInit2( ) - additional system configuration and initialization
> sysPhysMemTop( ) - get the address of the top of physical memory
> sysMemTop( ) - get the address of the top of VxWorks memory
> sysToMonitor( ) - transfer control to the ROM monitor
> sysIntInitPIC( ) - initialize the interrupt controller
> sysIntLock( ) - lock out all interrupts
> sysIntUnlock( ) - unlock the PIC interrupts
> sysIntDisablePIC( ) - disable a bus interrupt level
> sysIntEnablePIC( ) - enable a bus interrupt level
> sysIntEoiGet( ) - get EOI/BOI function and its parameter
> sysIntLevel( ) - get an IRQ(PIC) or INTIN(APIC) number in service
> sysProcNumGet( ) - get the processor number
> sysProcNumSet( ) - set the processor number
> sysDelay( ) - allow recovery time for port accesses
> sysUsDelay( ) - delay specified number of microseconds
> sysStrayInt( ) - Do nothing for stray interrupts.
> sysMmuMapAdd( ) - insert a new MMU mapping

#### DESCRIPTION

> This library provides board-specific routines. The device configuration modules and device drivers included are:

> i8253Timer.c - Intel 8253 timer driver
> i8259Intr.c - Intel 8259 Programmable Interrupt Controller (PIC) library
> ioApicIntr.c - Intel IO APIC/xAPIC driver
> ioApicIntrShow.c - Intel IO APIC/xAPIC driver show routines
> iPiix4Pci.c - low level initalization code for PCI ISA/IDE Xcelerator
> loApicIntr.c - Intel Pentium[234] Local APIC/xAPIC driver
> loApicIntrShow.c - Intel Local APIC/xAPIC driver show routines
> loApicTimer.c - Intel Pentium2/3/4 Local APIC timer library
> nullNvRam.c - null NVRAM library
> nullVme.c - null VMEbus library
> pccardLib.c - PC CARD enabler library
> pccardShow.c - PC CARD show library
> pciCfgStub.c - customizes pciConfigLib for the BSP
> pciCfgIntStub.c - customizes pciIntLib for the BSP
> pciConfigLib.c - PCI configuration space access support for PCI drivers
> pciIntLib.c - PCI shared interrupt support
> pciConfigShow.c - Show routines for PCI configuration library
> sysDec21x40End.c - system configuration module for dec21x40End driver
> sysEl3c509End.c - system configuratin module for elt3c509End driver
> sysEl3c90xEnd.c - system configuration module for el3c90xEnd driver
> sysFei82557End.c - system configuration module for fei82557End driver
> sysGei82543End.c - system configuration module for gei82543End driver
> sysLn97xEnd.c - system configuration module for ln97xEnd driver
> sysNe2000End.c - system configuration module for ne2000End driver
> sysUltraEnd.c - system configuration module for SMC Elite ultraEnd driver
> sysWindML.c - WindML BSP support routines

#### INCLUDE FILES

> sysLib.h

#### SEE ALSO

> VxWorks Programmer's Guide: Configuration

API Reference: Routines

# sysNvRamGet( )

#### NAME

> sysNvRamGet( ) - get the contents of non-volatile RAM

#### SYNOPSIS

>     STATUS sysNvRamGet
>         (
>         char *string,  /* where to copy non-volatile RAM    */
>         int  strLen,   /* maximum number of bytes to copy   */
>         int  offset    /* byte offset into non-volatile RAM */
>         )

#### DESCRIPTION

> This routine copies the contents of non-volatile memory into a specified string. The string is terminated with an EOS.

#### RETURNS

> OK, or ERROR if access is outside the non-volatile RAM range.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysNvRamSet( )

API Reference: Routines

# sysNvRamSet( )

#### NAME

> sysNvRamSet( ) - write to non-volatile RAM

#### SYNOPSIS

>     STATUS sysNvRamSet
>         (
>         char *string,  /* string to be copied into non-volatile RAM */
>         int  strLen,   /* maximum number of bytes to copy           */
>         int  offset    /* byte offset into non-volatile RAM         */
>         )

#### DESCRIPTION

> This routine copies a specified string into non-volatile RAM.

#### RETURNS

> OK, or ERROR if access is outside the non-volatile RAM range.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysNvRamGet( )

API Reference: Routines

# sysLocalToBusAdrs( )

#### NAME

> sysLocalToBusAdrs( ) - convert a local address to a bus address

#### SYNOPSIS

>     STATUS sysLocalToBusAdrs
>         (
>         int  adrsSpace,   /* bus address space in which busAdrs resides,  */
>                           /* use address modifier codes defined in vme.h, */
>                           /* such as VME_AM_STD_SUP_DATA                  */
>         char *localAdrs,  /* local address to convert                     */
>         char **pBusAdrs   /* where to return bus address                  */
>         )

#### DESCRIPTION

> This routine gets the VMEbus address that accesses a specified local memory address.

#### NOTE

> This routine has no effect, since there is no VMEbus.

#### RETURNS

> ERROR, always.

#### ERRNO

#### SEE ALSO

> sysLib, sysBusToLocalAdrs( )

API Reference: Routines

# sysBusToLocalAdrs( )

#### NAME

> sysBusToLocalAdrs( ) - convert a bus address to a local address

#### SYNOPSIS

>     STATUS sysBusToLocalAdrs
>         (
>         int  adrsSpace,    /* bus address space in which busAdrs resides,  */
>                            /* use address modifier codes defined in vme.h, */
>                            /* such as VME_AM_STD_SUP_DATA                  */
>         char *busAdrs,     /* bus address to convert                       */
>         char **pLocalAdrs  /* where to return local address                */
>         )

#### DESCRIPTION

> This routine gets the local address that accesses a specified VMEbus address.

#### NOTE

> This routine has no effect, since there is no VMEbus.

#### RETURNS

> ERROR, always.

#### ERRNO

#### SEE ALSO

> sysLib, sysLocalToBusAdrs( )

API Reference: Routines

# sysBusIntAck( )

#### NAME

> sysBusIntAck( ) - acknowledge a bus interrupt

#### SYNOPSIS

>     int sysBusIntAck
>         (
>         int intLevel  /* interrupt level to acknowledge */
>         )

#### DESCRIPTION

> This routine acknowledges a specified VMEbus interrupt level.

#### NOTE

> This routine has no effect, since there is no VMEbus.

#### RETURNS

> NULL.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# sysBusIntGen( )

#### NAME

> sysBusIntGen( ) - generate a bus interrupt

#### SYNOPSIS

>     STATUS sysBusIntGen
>         (
>         int level,  /* bus interrupt level to generate          */
>         int vector  /* interrupt vector to return (0-255)       */
>         )

#### DESCRIPTION

> This routine generates a VMEbus interrupt for a specified level with a specified vector.

#### NOTE

> This routine has no effect, since there is no VMEbus.

#### RETURNS

> ERROR, always.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# sysMailboxConnect( )

#### NAME

> sysMailboxConnect( ) - connect a routine to the mailbox interrupt

#### SYNOPSIS

>     STATUS sysMailboxConnect
>         (
>         FUNCPTR routine,  /* routine called at each mailbox interrupt */
>         int     arg       /* argument with which to call routine      */
>         )

#### DESCRIPTION

> This routine specifies the interrupt service routine to be called at each mailbox interrupt.

#### NOTE

> This routine has no effect, since the hardware does not support mailbox interrupts.

#### RETURNS

> ERROR, always.

#### ERRNO

#### SEE ALSO

> sysLib, sysMailboxEnable( )

API Reference: Routines

# sysMailboxEnable( )

#### NAME

> sysMailboxEnable( ) - enable the mailbox interrupt

#### SYNOPSIS

>     STATUS sysMailboxEnable
>         (
>         char *mailboxAdrs  /* mailbox address */
>         )

#### DESCRIPTION

> This routine enables the mailbox interrupt.

#### NOTE

> This routine has no effect, since the hardware does not support mailbox interrupts.

#### RETURNS

> ERROR, always.

#### ERRNO

#### SEE ALSO

> sysLib, sysMailboxConnect( )

API Reference: Routines

# sysBusTas( )

#### NAME

> sysBusTas( ) - test and set a location across the bus

#### SYNOPSIS

>     BOOL sysBusTas
>         (
>         char *addr  /* address to be tested and set */
>         )

#### DESCRIPTION

> This routine performs a test-and-set (TAS) instruction across the backplane.

#### NOTE

> This routine is equivalent to vxTas( ), since there is no VMEbus.

#### RETURNS

> TRUE if the value had not been set but is now, or FALSE if the value was set already.

#### ERRNO

#### SEE ALSO

> sysLib, vxTas( )

API Reference: Routines

# i8259Init( )

#### NAME

> i8259Init( ) - initialize the PIC

#### SYNOPSIS

>     VOID i8259Init (void)

#### DESCRIPTION

> This routine initializes the PIC.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# i8259IntBoiEem( )

#### NAME

> i8259IntBoiEem( ) - issue EOI before the IRQ0 interrupt handler

#### SYNOPSIS

>     VOID i8259IntBoiEem
>         (
>         int irqNo  /* IRQ number of the interrupt */
>         )

#### DESCRIPTION

> This routine is called before the IRQ0 interrupt handler that is PIT(8253) channel 0 system clock interrupt handler in the Early EOI Mode.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# i8259IntBoiSmm( )

#### NAME

> i8259IntBoiSmm( ) - enable Special Mask Mode before the IRQ0 interrupt handler

#### SYNOPSIS

>     VOID i8259IntBoiSmm
>         (
>         int irqNo  /* IRQ number of the interrupt */
>         )

#### DESCRIPTION

> This routine is called before the IRQ0 interrupt handler that is PIT(8253) channel 0 system clock interrupt handler, in the Special Mask Mode.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# i8259IntBoi( )

#### NAME

> i8259IntBoi( ) - detect whether it is spurious interrupt or not

#### SYNOPSIS

>     VOID i8259IntBoi
>         (
>         INT32 irqNo  /* IRQ number of the interrupt */
>         )

#### DESCRIPTION

> This routine is called before the user's interrupt handler to detect the spurious interrupt.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# i8259IntEoiSmm( )

#### NAME

> i8259IntEoiSmm( ) - disable Special Mask Mode with EOI signal to the master PIC

#### SYNOPSIS

>     VOID i8259IntEoiSmm
>         (
>         int irqNo  /* IRQ number to send EOI */
>         )

#### DESCRIPTION

> This routine is called at the end of the IRQ0 interrupt handler that is PIT(8253) channel 0 system clock interrupt handler in the Special Mask Mode.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# i8259IntEoiMaster( )

#### NAME

> i8259IntEoiMaster( ) - send EOI(end of interrupt) signal to the master PIC.

#### SYNOPSIS

>     VOID i8259IntEoiMaster
>         (
>         INT32 irqNo  /* IRQ number to send EOI */
>         )

#### DESCRIPTION

> This routine is called at the end of the interrupt handler.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# i8259IntEoiSlave( )

#### NAME

> i8259IntEoiSlave( ) - send EOI(end of interrupt) signal to the slave PIC.

#### SYNOPSIS

>     VOID i8259IntEoiSlave
>         (
>         INT32 irqNo  /* IRQ number to send EOI */
>         )

#### DESCRIPTION

> This routine is called at the end of the interrupt handler in the Normal Fully Nested Mode. This is kept for the backward compatibility.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# i8259IntEoiSlaveNfnm( )

#### NAME

> i8259IntEoiSlaveNfnm( ) - send EOI(end of interrupt) signal to the slave PIC.

#### SYNOPSIS

>     VOID i8259IntEoiSlaveNfnm
>         (
>         INT32 irqNo  /* IRQ number to send EOI */
>         )

#### DESCRIPTION

> This routine is called at the end of the interrupt handler in the Normal Fully Nested Mode.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# i8259IntEoiSlaveSfnm( )

#### NAME

> i8259IntEoiSlaveSfnm( ) - send EOI(end of interrupt) signal to the slave PIC.

#### SYNOPSIS

>     VOID i8259IntEoiSlaveSfnm
>         (
>         int irqNo  /* IRQ number to send EOI */
>         )

#### DESCRIPTION

> This routine is called at the end of the interrupt handler in the Special Fully Nested Mode.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# sysClkInt( )

#### NAME

> sysClkInt( ) - interrupt level processing for system clock

#### SYNOPSIS

>     void sysClkInt (void)

#### DESCRIPTION

> This routine handles the system clock interrupt. It is attached to the clock interrupt vector by the routine sysClkConnect( ).

#### RETURNS

> Not Available

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysClkConnect( )

#### NAME

> sysClkConnect( ) - connect a routine to the system clock interrupt

#### SYNOPSIS

>     STATUS sysClkConnect
>         (
>         FUNCPTR routine,  /* routine to be called at each clock interrupt */
>         int     arg       /* argument with which to call routine */
>         )

#### DESCRIPTION

> This routine specifies the interrupt service routine to be called at each clock interrupt. Normally, it is called from usrRoot( ) in usrConfig.c to connect usrClock( ) to the system clock interrupt.

#### RETURN

> OK, or ERROR if the routine cannot be connected to the interrupt.

#### RETURNS

> Not Available

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, intConnect( ), usrClock( ), sysClkEnable( )

API Reference: Routines

# sysClkDisable( )

#### NAME

> sysClkDisable( ) - turn off system clock interrupts

#### SYNOPSIS

>     void sysClkDisable (void)

#### DESCRIPTION

> This routine disables system clock interrupts.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysClkEnable( )

API Reference: Routines

# sysClkEnable( )

#### NAME

> sysClkEnable( ) - turn on system clock interrupts

#### SYNOPSIS

>     void sysClkEnable (void)

#### DESCRIPTION

> This routine enables system clock interrupts.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysClkConnect( ), sysClkDisable( ), sysClkRateSet( )

API Reference: Routines

# sysClkRateGet( )

#### NAME

> sysClkRateGet( ) - get the system clock rate

#### SYNOPSIS

>     int sysClkRateGet (void)

#### DESCRIPTION

> This routine returns the system clock rate.

#### RETURNS

> The number of ticks per second of the system clock.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysClkEnable( ), sysClkRateSet( )

API Reference: Routines

# sysClkRateSet( )

#### NAME

> sysClkRateSet( ) - set the system clock rate

#### SYNOPSIS

>     STATUS sysClkRateSet
>         (
>         int ticksPerSecond  /* number of clock interrupts per second */
>         )

#### DESCRIPTION

> This routine sets the interrupt rate of the system clock. It is called by usrRoot( ) in usrConfig.c.

#### RETURNS

> OK, or ERROR if the tick rate is invalid or the timer cannot be set.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysClkEnable( ), sysClkRateGet( )

API Reference: Routines

# sysAuxClkInt( )

#### NAME

> sysAuxClkInt( ) - handle an auxiliary clock interrupt

#### SYNOPSIS

>     void sysAuxClkInt (void)

#### DESCRIPTION

> This routine handles an auxiliary clock interrupt. It acknowledges the interrupt and calls the routine installed by sysAuxClkConnect( ).

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysAuxClkConnect( )

#### NAME

> sysAuxClkConnect( ) - connect a routine to the auxiliary clock interrupt

#### SYNOPSIS

>     STATUS sysAuxClkConnect
>         (
>         FUNCPTR routine,  /* routine called at each aux clock interrupt */
>         int     arg       /* argument to auxiliary clock interrupt routine */
>         )

#### DESCRIPTION

> This routine specifies the interrupt service routine to be called at each auxiliary clock interrupt. It does not enable auxiliary clock interrupts.

#### RETURNS

> OK, or ERROR if the routine cannot be connected to the interrupt.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, intConnect( ), sysAuxClkEnable( )

API Reference: Routines

# sysAuxClkDisable( )

#### NAME

> sysAuxClkDisable( ) - turn off auxiliary clock interrupts

#### SYNOPSIS

>     void sysAuxClkDisable (void)

#### DESCRIPTION

> This routine disables auxiliary clock interrupts.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysAuxClkEnable( )

API Reference: Routines

# sysAuxClkEnable( )

#### NAME

> sysAuxClkEnable( ) - turn on auxiliary clock interrupts

#### SYNOPSIS

>     void sysAuxClkEnable (void)

#### DESCRIPTION

> This routine enables auxiliary clock interrupts.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysAuxClkConnect( ), sysAuxClkDisable( ), sysAuxClkRateSet( )

API Reference: Routines

# sysAuxClkRateGet( )

#### NAME

> sysAuxClkRateGet( ) - get the auxiliary clock rate

#### SYNOPSIS

>     int sysAuxClkRateGet (void)

#### DESCRIPTION

> This routine returns the interrupt rate of the auxiliary clock.

#### RETURNS

> The number of ticks per second of the auxiliary clock.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysAuxClkEnable( ), sysAuxClkRateSet( )

API Reference: Routines

# sysAuxClkRateSet( )

#### NAME

> sysAuxClkRateSet( ) - set the auxiliary clock rate

#### SYNOPSIS

>     STATUS sysAuxClkRateSet
>         (
>         int ticksPerSecond  /* number of clock interrupts per second */
>         )

#### DESCRIPTION

> This routine sets the interrupt rate of the auxiliary clock. It does not enable auxiliary clock interrupts.

#### RETURNS

> OK, or ERROR if the tick rate is invalid or the timer cannot be set.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysAuxClkEnable( ), sysAuxClkRateGet( )

API Reference: Routines

# sysPciCfgInit( )

#### NAME

> sysPciCfgInit( ) - pci configuration and initialization

#### SYNOPSIS

>     VOID sysPciCfgInit
>         (
>         int    mechanism,  /* mechanism 1 or 2 */
>         UINT32 addr1,      /* address 1 */
>         UINT32 addr2,      /* address 2 */
>         UINT32 addr3       /* address 3 */
>         )

#### DESCRIPTION

> Modify this routine as needed for special host bridge initialization if needed. This is the first access to PCI in a normal system.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigLibInit( )

#### NAME

> pciConfigLibInit( ) - initialize the configuration access-method and addresses

#### SYNOPSIS

>     STATUS pciConfigLibInit
>         (
>         int   mechanism,  /* configuration mechanism: 0, 1, 2 */
>         ULONG addr0,      /* config-addr-reg / CSE-reg */
>         ULONG addr1,      /* config-data-reg / Forward-reg */
>         ULONG addr2       /* none            / Base-address */
>         )

#### DESCRIPTION

> This routine initializes the configuration access-method and addresses.

> Configuration mechanism one utilizes two 32-bit IO ports located at addresses 0x0cf8 and 0x0cfc. These two ports are:

> Port 1

>   32-bit configuration address port, at 0x0cf8

> Port 2

>   32-bit configuration data port, at 0x0cfc

> Accessing a PCI function's configuration port is two step process.

> Step 1

>   Write the bus number, physical device number, function number and register number to the configuration address port.

> Step 2

>   Perform an IO read from or an write to the configuration data port.

> Configuration mechanism two uses following two single-byte IO ports.

> Port 1

>   Configuration space enable, or CSE, register, at 0x0cf8

> Port 2

>   Forward register, at 0x0cfa

> To generate a PCI configuration transaction, the following actions are performed.

> - | Write the target bus number into the forward register.
> - | Write a one byte value to the CSE register at 0x0cf8. The bit pattern written to this register has three effects: disables the generation of special cycles; enables the generation of configuration transactions; specifies the target PCI functional device.
> - | Perform a one, two or four byte IO read or write transaction within the IO range 0xc000 through 0xcfff.

> Configuration mechanism zero is for non-PC/PowerPC environments where an area of address space produces PCI configuration transactions. No support for special cycles is included.

#### RETURNS

> OK, or ERROR if a mechanism is not 0, 1, or 2.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciFindDevice( )

#### NAME

> pciFindDevice( ) - find the nth device with the given device & vendor ID

#### SYNOPSIS

>     STATUS pciFindDevice
>         (
>         int   vendorId,   /* vendor ID */
>         int   deviceId,   /* device ID */
>         int   index,      /* desired instance of device */
>         int * pBusNo,     /* bus number */
>         int * pDeviceNo,  /* device number */
>         int * pFuncNo     /* function number */
>         )

#### DESCRIPTION

> This routine finds the nth device with the given device & vendor ID.

#### RETURNS

> OK, or ERROR if the deviceId and vendorId didn't match.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciFindClass( )

#### NAME

> pciFindClass( ) - find the nth occurrence of a device by PCI class code.

#### SYNOPSIS

>     STATUS pciFindClass
>         (
>         int   classCode,  /* 24-bit class code */
>         int   index,      /* desired instance of device */
>         int * pBusNo,     /* bus number */
>         int * pDeviceNo,  /* device number */
>         int * pFuncNo     /* function number */
>         )

#### DESCRIPTION

> This routine finds the nth device with the given 24-bit PCI class code (class subclass prog_if).

> The classcode arg of must be carefully constructed from class and sub-class macros.

> Example : To find an ethernet class device, construct the classcode arg as follows:

>         ((PCI_CLASS_NETWORK_CTLR << 16 | PCI_SUBCLASS_NET_ETHERNET << 8))

#### RETURNS

> OK, or ERROR if the class didn't match.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciDevConfig( )

#### NAME

> pciDevConfig( ) - configure a device on a PCI bus

#### SYNOPSIS

>     STATUS pciDevConfig
>         (
>         int    pciBusNo,        /* PCI bus number */
>         int    pciDevNo,        /* PCI device number */
>         int    pciFuncNo,       /* PCI function number */
>         UINT32 devIoBaseAdrs,   /* device IO base address */
>         UINT32 devMemBaseAdrs,  /* device memory base address */
>         UINT32 command          /* command to issue */
>         )

#### DESCRIPTION

> This routine configures a device that is on a Peripheral Component Interconnect (PCI) bus by writing to the configuration header of the selected device.

> It first disables the device by clearing the command register in the configuration header. It then sets the I/O and/or memory space base address registers, the latency timer value and the cache line size. Finally, it re-enables the device by loading the command register with the specified command.

#### NOTE

> This routine is designed for Type 0 PCI Configuration Headers ONLY. It is NOT usable for configuring, for example, a PCI-to-PCI bridge.

#### RETURNS

> OK always.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigBdfPack( )

#### NAME

> pciConfigBdfPack( ) - pack parameters for the Configuration Address Register

#### SYNOPSIS

>     int pciConfigBdfPack
>         (
>         int busNo,     /* bus number */
>         int deviceNo,  /* device number */
>         int funcNo     /* function number */
>         )

#### DESCRIPTION

> This routine packs three parameters into one integer for accessing the Configuration Address Register

#### RETURNS

> packed integer encoded version of bus, device, and function numbers.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigExtCapFind( )

#### NAME

> pciConfigExtCapFind( ) - find extended capability in ECP linked list

#### SYNOPSIS

>     STATUS pciConfigExtCapFind
>         (
>         UINT8   extCapFindId,  /* Extended capabilities ID to search for */
>         int     bus,           /* PCI bus number */
>         int     device,        /* PCI device number */
>         int     function,      /* PCI function number */
>         UINT8 * pOffset        /* returned config space offset */
>         )

#### DESCRIPTION

> This routine searches for an extended capability in the linked list of capabilities in config space. If found, the offset of the first byte of the capability of interest in config space is returned via pOffset.

#### RETURNS

> OK if Extended Capability found, ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigInByte( )

#### NAME

> pciConfigInByte( ) - read one byte from the PCI configuration space

#### SYNOPSIS

>     STATUS pciConfigInByte
>         (
>         int     busNo,     /* bus number */
>         int     deviceNo,  /* device number */
>         int     funcNo,    /* function number */
>         int     offset,    /* offset into the configuration space */
>         UINT8 * pData      /* data read from the offset */
>         )

#### DESCRIPTION

> This routine reads one byte from the PCI configuration space

#### RETURNS

> OK, or ERROR if this library is not initialized

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigInWord( )

#### NAME

> pciConfigInWord( ) - read one word from the PCI configuration space

#### SYNOPSIS

>     STATUS pciConfigInWord
>         (
>         int      busNo,     /* bus number */
>         int      deviceNo,  /* device number */
>         int      funcNo,    /* function number */
>         int      offset,    /* offset into the configuration space */
>         UINT16 * pData      /* data read from the offset */
>         )

#### DESCRIPTION

> This routine reads one word from the PCI configuration space

#### RETURNS

> OK, or ERROR if this library is not initialized

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigInLong( )

#### NAME

> pciConfigInLong( ) - read one longword from the PCI configuration space

#### SYNOPSIS

>     STATUS pciConfigInLong
>         (
>         int      busNo,     /* bus number */
>         int      deviceNo,  /* device number */
>         int      funcNo,    /* function number */
>         int      offset,    /* offset into the configuration space */
>         UINT32 * pData      /* data read from the offset */
>         )

#### DESCRIPTION

> This routine reads one longword from the PCI configuration space

#### RETURNS

> OK, or ERROR if this library is not initialized

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigOutByte( )

#### NAME

> pciConfigOutByte( ) - write one byte to the PCI configuration space

#### SYNOPSIS

>     STATUS pciConfigOutByte
>         (
>         int   busNo,     /* bus number */
>         int   deviceNo,  /* device number */
>         int   funcNo,    /* function number */
>         int   offset,    /* offset into the configuration space */
>         UINT8 data       /* data written to the offset */
>         )

#### DESCRIPTION

> This routine writes one byte to the PCI configuration space.

#### RETURNS

> OK, or ERROR if this library is not initialized

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigOutWord( )

#### NAME

> pciConfigOutWord( ) - write one 16-bit word to the PCI configuration space

#### SYNOPSIS

>     STATUS pciConfigOutWord
>         (
>         int    busNo,     /* bus number */
>         int    deviceNo,  /* device number */
>         int    funcNo,    /* function number */
>         int    offset,    /* offset into the configuration space */
>         UINT16 data       /* data written to the offset */
>         )

#### DESCRIPTION

> This routine writes one 16-bit word to the PCI configuration space.

#### RETURNS

> OK, or ERROR if this library is not initialized

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigOutLong( )

#### NAME

> pciConfigOutLong( ) - write one longword to the PCI configuration space

#### SYNOPSIS

>     STATUS pciConfigOutLong
>         (
>         int    busNo,     /* bus number */
>         int    deviceNo,  /* device number */
>         int    funcNo,    /* function number */
>         int    offset,    /* offset into the configuration space */
>         UINT32 data       /* data written to the offset */
>         )

#### DESCRIPTION

> This routine writes one longword to the PCI configuration space.

#### RETURNS

> OK, or ERROR if this library is not initialized

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigModifyLong( )

#### NAME

> pciConfigModifyLong( ) - Perform a masked longword register update

#### SYNOPSIS

>     STATUS pciConfigModifyLong
>         (
>         int    busNo,     /* bus number */
>         int    deviceNo,  /* device number */
>         int    funcNo,    /* function number */
>         int    offset,    /* offset into the configuration space */
>         UINT32 bitMask,   /* Mask which defines field to alter */
>         UINT32 data       /* data written to the offset */
>         )

#### DESCRIPTION

> This function writes a field into a PCI configuration header without altering any bits not present in the field. It does this by first doing a PCI configuration read (into a temporary location) of the PCI configuration header word which contains the field to be altered. It then alters the bits in the temporary location to match the desired value of the field. It then writes back the temporary location with a configuration write. All configuration accesses are long and the field to alter is specified by the "1" bits in the bitMask parameter.

> Be careful to using pciConfigModifyLong for updating the Command and status register. The status bits must be written back as zeroes, else they will be cleared. Proper use involves including the status bits in the mask value, but setting their value to zero in the data value.

> The following example will set the PCI_CMD_IO_ENABLE bit without clearing any status bits. The macro PCI_CMD_MASK includes all the status bits as part of the mask. The fact that PCI_CMD_MASTER doesn't include these bits, causes them to be written back as zeroes, therefore they aren't cleared.

>        pciConfigModifyLong (b,d,f,PCI_CFG_COMMAND,
>                     (PCI_CMD_MASK | PCI_CMD_IO_ENABLE), PCI_CMD_IO_ENABLE);

> Use of explicit longword read and write operations for dealing with any register containing "write 1 to clear" bits is sound policy.

#### RETURNS

> OK if operation succeeds, ERROR if operation fails.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigModifyWord( )

#### NAME

> pciConfigModifyWord( ) - Perform a masked longword register update

#### SYNOPSIS

>     STATUS pciConfigModifyWord
>         (
>         int    busNo,     /* bus number */
>         int    deviceNo,  /* device number */
>         int    funcNo,    /* function number */
>         int    offset,    /* offset into the configuration space */
>         UINT16 bitMask,   /* Mask which defines field to alter */
>         UINT16 data       /* data written to the offset */
>         )

#### DESCRIPTION

> This function writes a field into a PCI configuration header without altering any bits not present in the field. It does this by first doing a PCI configuration read (into a temporary location) of the PCI configuration header word which contains the field to be altered. It then alters the bits in the temporary location to match the desired value of the field. It then writes back the temporary location with a configuration write. All configuration accesses are long and the field to alter is specified by the "1" bits in the bitMask parameter.

> Do not use this routine to modify any register that contains 'write 1 to clear' type of status bits in the same longword. This specifically applies to the command register. Modify byte operations could potentially be implemented as longword operations with bit shifting and masking. This could have the effect of clearing status bits in registers that aren't being updated. Use pciConfigInLong and pciConfigOutLong, or pciModifyLong, to read and update the entire longword.

#### RETURNS

> OK if operation succeeds. ERROR if operation fails.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigModifyByte( )

#### NAME

> pciConfigModifyByte( ) - Perform a masked longword register update

#### SYNOPSIS

>     STATUS pciConfigModifyByte
>         (
>         int   busNo,     /* bus number */
>         int   deviceNo,  /* device number */
>         int   funcNo,    /* function number */
>         int   offset,    /* offset into the configuration space */
>         UINT8 bitMask,   /* Mask which defines field to alter */
>         UINT8 data       /* data written to the offset */
>         )

#### DESCRIPTION

> This function writes a field into a PCI configuration header without altering any bits not present in the field. It does this by first doing a PCI configuration read (into a temporary location) of the PCI configuration header word which contains the field to be altered. It then alters the bits in the temporary location to match the desired value of the field. It then writes back the temporary location with a configuration write. All configuration accesses are long and the field to alter is specified by the "1" bits in the bitMask parameter.

> Do not use this routine to modify any register that contains 'write 1 to clear' type of status bits in the same longword. This specifically applies to the command register. Modify byte operations could potentially be implemented as longword operations with bit shifting and masking. This could have the effect of clearing status bits in registers that aren't being updated. Use pciConfigInLong and pciConfigOutLong, or pciModifyLong, to read and update the entire longword.

#### RETURNS

> OK if operation succeeds, ERROR if operation fails.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciSpecialCycle( )

#### NAME

> pciSpecialCycle( ) - generate a special cycle with a message

#### SYNOPSIS

>     STATUS pciSpecialCycle
>         (
>         int    busNo,   /* bus number */
>         UINT32 message  /* data driven onto AD[31:0] */
>         )

#### DESCRIPTION

> This routine generates a special cycle with a message.

#### RETURNS

> OK, or ERROR if this library is not initialized

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigForeachFunc( )

#### NAME

> pciConfigForeachFunc( ) - check condition on specified bus

#### SYNOPSIS

>     STATUS pciConfigForeachFunc
>         (
>         UINT8            bus,           /* bus to start on */
>         BOOL             recurse,       /* if TRUE, do subordinate busses */
>         PCI_FOREACH_FUNC funcCheckRtn,  /* routine to call for each PCI func */
>         void             *pArg          /* argument to funcCheckRtn */
>         )

#### DESCRIPTION

> pciConfigForeachFunc( ) discovers the PCI functions present on the bus and calls a specified C-function for each one. If the function returns ERROR, further processing stops.

> pciConfigForeachFunc( ) does not affect any HOST-PCI bridge on the system.

#### RETURNS

> OK normally, or ERROR if funcCheckRtn( ) doesn't return OK.

#### ERRNO

> not set

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConfigReset( )

#### NAME

> pciConfigReset( ) - disable cards for warm boot

#### SYNOPSIS

>     STATUS pciConfigReset
>         (
>         int startType  /* for reboot hook, ignored */
>         )

#### DESCRIPTION

> pciConfigReset( ) goes through the list of PCI functions at the top-level bus and disables them, preventing them from writing to memory while the system is trying to reboot.

#### RETURNS

> OK, always

#### ERRNO

> Not set

#### SEE ALSO

> sysLib

API Reference: Routines

# sysPciIntInit( )

#### NAME

> sysPciIntInit( ) - PCI interrupt library init

#### SYNOPSIS

>     VOID sysPciIntInit (void)

#### DESCRIPTION

> Modify this routine as needed for any special host bridge initialization related to interrupt handling.

#### RETURNS

> Not Available

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysPciIvecToIrq( )

#### NAME

> sysPciIvecToIrq( ) - get an IRQ(PIC or IOAPIC) number from vector address

#### SYNOPSIS

>     int sysPciIvecToIrq
>         (
>         int vector  /* vector address */
>         )

#### DESCRIPTION

> This routine gets an IRQ(PIC or IOAPIC) number from vector address. Assumptions are following:
> - IRQ number is 0 - 15 in PIC or VIRTUAL_WIRE mode
> - IRQ number is 0 - 23 in SYMMETRIC_IO mode

#### RETURNS

> IRQ 0 - 15/23, or -1 if we failed to get it.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# pciIntLibInit( )

#### NAME

> pciIntLibInit( ) - initialize the pciIntLib module

#### SYNOPSIS

>     STATUS pciIntLibInit (void)

#### DESCRIPTION

> This routine initializes the linked lists used to chain together the PCI interrupt service routines.

#### RETURNS

> OK, or ERROR upon link list failures.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciInt( )

#### NAME

> pciInt( ) - interrupt handler for shared PCI interrupt.

#### SYNOPSIS

>     VOID pciInt
>         (
>         int irq  /* IRQ associated to the PCI interrupt */
>         )

#### DESCRIPTION

> This routine executes multiple interrupt handlers for a PCI interrupt. Each interrupt handler must check the device dependent interrupt status bit to determine the source of the interrupt, since it simply execute all interrupt handlers in the link list.

> This is not a user callable routine

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciIntConnect( )

#### NAME

> pciIntConnect( ) - connect the interrupt handler to the PCI interrupt.

#### SYNOPSIS

>     STATUS pciIntConnect
>         (
>         VOIDFUNCPTR *vector,   /* interrupt vector to attach to     */
>         VOIDFUNCPTR routine,   /* routine to be called              */
>         int         parameter  /* parameter to be passed to routine */
>         )

#### DESCRIPTION

> This routine connects an interrupt handler to a shared PCI interrupt vector. A link list is created for each shared interrupt used in the system. It is created when the first interrupt handler is attached to the vector. Subsequent calls to pciIntConnect just add their routines to the linked list for that vector.

#### RETURNS

> OK, or ERROR if the interrupt handler cannot be built.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciIntDisconnect( )

#### NAME

> pciIntDisconnect( ) - disconnect the interrupt handler (OBSOLETE)

#### SYNOPSIS

>     STATUS pciIntDisconnect
>         (
>         VOIDFUNCPTR *vector,  /* interrupt vector to attach to     */
>         VOIDFUNCPTR routine   /* routine to be called              */
>         )

#### DESCRIPTION

> This routine disconnects the interrupt handler from the PCI interrupt line.

> In a system where one driver and one ISR services multiple devices, this routine removes all instances of the ISR because it completely ignores the parameter argument used to install the handler.

#### NOTE

> Use of this routine is discouraged and will be obsoleted in the future. New code should use the pciIntDisconnect2( ) routine instead.

#### RETURNS

> OK, or ERROR if the interrupt handler cannot be removed.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciIntDisconnect2( )

#### NAME

> pciIntDisconnect2( ) - disconnect an interrupt handler from the PCI interrupt.

#### SYNOPSIS

>     STATUS pciIntDisconnect2
>         (
>         VOIDFUNCPTR *vector,   /* interrupt vector to attach to     */
>         VOIDFUNCPTR routine,   /* routine to be called              */
>         int         parameter  /* routine parameter         */
>         )

#### DESCRIPTION

> This routine disconnects a single instance of an interrupt handler from the PCI interrupt line.

#### NOTE

> This routine should be used in preference to the original pciIntDisconnect( ) routine. This routine is compatible with drivers that are managing multiple device instances, using the same basic ISR, but with different parameters.

#### RETURNS

> OK, or ERROR if the interrupt handler cannot be removed.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoConfigLibInit( )

#### NAME

> pciAutoConfigLibInit( ) - initialize PCI autoconfig library

#### SYNOPSIS

>     void * pciAutoConfigLibInit
>         (
>         void * pArg  /* reserved for future use */
>         )

#### DESCRIPTION

> pciAutoConfigLib initialization function.

#### RETURNS

> A cookie for use by subsequent pciAutoConfigLib function calls.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoCfg( )

#### NAME

> pciAutoCfg( ) - Automatically configure all nonexcluded PCI headers

#### SYNOPSIS

>     STATUS pciAutoCfg
>         (
>         void *pCookie  /* cookie returned by pciAutoConfigLibInit() */
>         )

#### DESCRIPTION

> Top level function in the PCI configuration process.

#### CALLING SEQUENCE

>     pCookie = pciAutoConfigLibInit(NULL);
>     pciAutoCfgCtl(pCookie, COMMAND, VALUE);
>      ...
>     pciAutoCfgCtl(pCookie, COMMAND, VALUE);
>     pciAutoCfg(pCookie);

> For ease in converting from the old interface to the new one, a pciAutoCfgCtl( ) command PCI_PSYSTEM_STRUCT_COPY has been implemented. This can be used just like any other pciAutoCfgCtl( ) command, and it initializes all the values in pSystem. If used, it should be the first call to pciAutoCfgCtl( ).

> For a description of the COMMANDs and VALUEs to pciAutoCfgCtl( ), see the pciAutoCfgCtl( ) documentation.

> For all nonexcluded PCI functions on all PCI bridges, this routine automatically configures the PCI configuration headers for PCI devices and subbridges. The fields that are programmed are:

> 1. | Status register.
> 2. | Command Register.
> 3. | Latency timer.
> 4. | Cache Line size.
> 5. | Memory and/or I/O base address and limit registers.
> 6. | Primary, secondary, subordinate bus number (for PCI-PCI bridges).
> 7. | Expansion ROM disable.
> 8. | Interrupt Line.

#### ALGORITHM

> Probe PCI config space and create a list of available PCI functions. Call device exclusion function, if registered, to exclude/include device. Disable all devices before we initialize any. Allocate and assign PCI space to each device. Calculate and set interrupt line value. Initialize and enable each device.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoCfgCtl( )

#### NAME

> pciAutoCfgCtl( ) - set or get pciAutoConfigLib options

#### SYNOPSIS

>     STATUS pciAutoCfgCtl
>         (
>         void * pCookie,  /* system configuration information */
>         int    cmd,      /* command word */
>         void * pArg      /* argument for the cmd */
>         )

#### DESCRIPTION

> pciAutoCfgCtl( ) can be considered analogous to ioctl( ) calls: the call takes arguments of (1) a pCookie, returned by pciAutoConfigLibInit( ). (2) A command, macros for which are defined in pciAutoConfigLib.h. And, (3) an argument, the type of which depends on the specific command, but will always fit in a pointer variable. Currently, only globally effective commands are implemented.

> The commands available are:

> PCI_FBB_ENABLE - BOOL * pArg
> PCI_FBB_DISABLE - void
> PCI_FBB_UPDATE - BOOL * pArg
> PCI_FBB_STATUS_GET - BOOL * pArg

>   Enable and disable the functions which check Fast Back To Back functionality. PCI_FBB_UPDATE is for use with dynamic/HA applications. It first disables FBB on all functions, then enables FBB on all functions, if appropriate. In HA applications, it should be called any time a card is added or removed. The BOOL pointed to by pArg for PCI_FBB_ENABLE and PCI_FBB_UPDATE is set to TRUE if all cards allow FBB functionality and FALSE if either any card does not allow FBB functionality or if FBB is disabled. The BOOL pointed to by pArg for PCI_FBB_STATUS_GET is set to TRUE if PCI_FBB_ENABLE has been called and FBB is enabled, even if FBB is not activated on any card. It is set to FALSE otherwise.

>   NOTE: In the current implementation, FBB is enabled or disabled on the entire bus. If any device anywhere on the bus cannot support FBB, then it is not enabled, even if specific sub-busses could support it.

> PCI_MAX_LATENCY_FUNC_SET - FUNCPTR * pArg

>   This routine is called for each function present on the bus when discovery takes place. The routine must accept four arguments, specifying bus, device, function, and a user-supplied argument of type void *. See PCI_MAX_LATENCY_ARG_SET. The routine should return a UINT8 value, which will be put into the MAX_LAT field of the header structure. The user supplied routine must return a valid value each time it is called. There is no mechanism for any ERROR condition, but a default value can be returned in such a case. Default = NULL.

> PCI_MAX_LATENCY_ARG_SET - void * pArg

>   When the routine specified in PCI_MAX_LATENCY_FUNC_SET is called, this will be passed to it as the fourth argument.

> PCI_MAX_LAT_ALL_SET - int pArg

>   Specifies a constant max latency value for all cards, if no function has been specified with PCI_MAX_LATENCY_FUNC_SET..

> PCI_MAX_LAT_ALL_GET - UINT * pArg

>   Retrieves the value of max latency for all cards, if no function has been specified with PCI_MAX_LATENCY_FUNC_SET. Otherwise, the integer pointed to by pArg is set to the value 0xffffffff.

> PCI_MSG_LOG_SET - FUNCPTR * pArg

>   The argument specifies a routine which is called to print warning or error messages from pciAutoConfigLib if logMsg( ) has not been initialized at the time pciAutoConfigLib is used. The specified routine must accept arguments in the same format as logMsg( ), but it does not necessarily need to print the actual message. An example of this routine is presented below, which saves the message into a safe memory space and turns on an LED. This command is useful for BSPs which call pciAutoCfg( ) before message logging is enabled. Note that after logMsg( ) is configured, output goes to logMsg( ) even if this command has been called. Default = NULL.

>       /* sample PCI_MSG_LOG_SET function */
>       int pciLogMsg(char *fmt,int a1,int a2,int a3,int a4,int a5,int a6)
>           {
>           int charsPrinted;

>           sysLedOn(4);
>           charsPrinted = sprintf (sysExcMsg, fmt, a1, a2, a3, a4, a5, a6);
>           sysExcMsg += charsPrinted;
>           return (charsPrinted);
>           }

> PCI_MAX_BUS_GET - int * pArg

>   During autoconfiguration, the library maintains a counter with the highest numbered bus. This can be retrieved by

>       pciAutoCfgCtl(pCookie, PCI_MAX_BUS_GET, &maxBus)

> PCI_CACHE_SIZE_SET - int pArg

>   Sets the pci cache line size to the specified value. See CONFIGURATION SPACE PARAMETERS in the pciAutoConfigLib documentation for more details.

> PCI_CACHE_SIZE_GET - int * pArg

>   Retrieves the value of the pci cache line size.

> PCI_AUTO_INT_ROUTE_SET - BOOL pArg

>   Enables or disables automatic interrupt routing across bridges during the autoconfig process. See "INTERRUPT ROUTING ACROSS PCI-TO-PCI BRIDGES" in the pciAutoConfigLib documentation for more details.

> PCI_AUTO_INT_ROUTE_GET - BOOL * pArg

>   Retrieves the status of automatic interrupt routing.

> PCI_MEM32_LOC_SET - UINT32 pArg

>   Sets the base address of the PCI 32-bit memory space. Normally, this is given by the BSP constant PCI_MEM_ADRS.

> PCI_MEM32_SIZE_SET - UINT32 pArg

>   Sets the maximum size to use for the PCI 32-bit memory space. Normally, this is given by the BSP constant PCI_MEM_SIZE.

> PCI_MEM32_SIZE_GET - UINT32 * pArg

>   After autoconfiguration has been completed, this retrieves the actual amount of space which has been used for the PCI 32-bit memory space.

> PCI_MEMIO32_LOC_SET - UINT32 pArg

>   Sets the base address of the PCI 32-bit non-prefetch memory space. Normally, this is given by the BSP constant PCI_MEMIO_ADRS.

> PCI_MEMIO32_SIZE_SET - UINT32 pArg

>   Sets the maximum size to use for the PCI 32-bit non-prefetch memory space. Normally, this is given by the BSP constant PCI_MEMIO_SIZE.

> PCI_MEMIO32_SIZE_GET - UINT32 * pArg

>   After autoconfiguration has been completed, this retrieves the actual amount of space which has been used for the PCI 32-bit non-prefetch memory space.

> PCI_IO32_LOC_SET - UINT32 pArg

>   Sets the base address of the PCI 32-bit I/O space. Normally, this is given by the BSP constant PCI_IO_ADRS.

> PCI_IO32_SIZE_SET - UINT32 pArg

>   Sets the maximum size to use for the PCI 32-bit I/O space. Normally, this is given by the BSP constant PCI_IO_SIZE.

> PCI_IO32_SIZE_GET - UINT32 * pArg

>   After autoconfiguration has been completed, this retrieves the actual amount of space which has been used for the PCI 32-bit I/O space.

> PCI_IO16_LOC_SET - UINT32 pArg

>   Sets the base address of the PCI 16-bit I/O space. Normally, this is given by the BSP constant PCI_ISA_IO_ADRS

> PCI_IO16_SIZE_SET - UINT32 pArg

>   Sets the maximum size to use for the PCI 16-bit I/O space. Normally, this is given by the BSP constant PCI_ISA_IO_SIZE

> PCI_IO16_SIZE_GET - UINT32 * pArg

>   After autoconfiguration has been completed, this retrieves the actual amount of space which has been used for the PCI 16-bit I/O space.

> PCI_INCLUDE_FUNC_SET - FUNCPTR * pArg

>   The device inclusion routine is specified by assigning a function pointer with the PCI_INCLUDE_FUNC_SET pciAutoCfgCtl( ) command:

>       pciAutoCfgCtl(pSystem, PCI_INCLUDE_FUNC_SET,sysPciAutoconfigInclude);

>   This optional user-supplied routine takes as input both the bus-device-function tuple, and a 32-bit quantity containing both the PCI vendorID and deviceID of the function. The function prototype for this function is shown below:

>       STATUS sysPciAutoconfigInclude
>           (
>           PCI_SYSTEM *pSys,
>           PCI_LOC *pLoc,
>           UINT devVend
>           );

>   This optional user-specified routine is called by PCI AutoConfig for each and every function encountered in the scan phase. The BSP developer may use any combination of the input data to ascertain whether a device is to be excluded from the autoconfig process. The exclusion routine then returns ERROR if a device is to be excluded, and OK if a device is to be included in the autoconfiguration process.

>   Note that PCI-to-PCI Bridges may not be excluded, regardless of the value returned by the BSP device inclusion routine. The return value is ignored for PCI-to-PCI bridges.

>   The Bridge device will be always be configured with proper primary, secondary, and subordinate bus numbers in the device scanning phase and proper I/O and Memory aperture settings in the configuration phase of autoconfig regardless of the value returned by the BSP device inclusion routine.

> PCI_INT_ASSIGN_FUNC_SET - FUNCPTR * pArg

>   The interrupt assignment routine is specified by assigning a function pointer with the PCI_INCLUDE_FUNC_SET pciAutoCfgCtl( ) command:

>       pciAutoCfgCtl(pCookie, PCI_INT_ASSIGN_FUNC_SET, sysPciAutoconfigIntrAssign);

>   This optional user-specified routine takes as input both the bus-device-function tuple, and an 8-bit quantity containing the contents of the interrupt Pin register from the PCI configuration header of the device under consideration. The interrupt pin register specifies which of the four PCI Interrupt request lines available are connected. The function prototype for this function is shown below:

>       UCHAR sysPciAutoconfigIntrAssign
>           (
>           PCI_SYSTEM *pSys,
>           PCI_LOC *pLoc,
>           UCHAR pin
>           );

>   This routine may use any combination of these data to ascertain the interrupt level. This value is returned from the function, and is programmed into the interrupt line register of the function's PCI configuration header. In this manner, device drivers may subsequently read this register in order to calculate the appropriate interrupt vector which to attach an interrupt service routine.

> PCI_BRIDGE_PRE_CONFIG_FUNC_SET - FUNCPTR * pArg

>   The bridge pre-configuration pass initialization routine is provided so that the BSP Developer can initialize a bridge device prior to the configuration pass on the bus that the bridge implements. This routine is specified by calling pciAutoCfgCtl( ) with the PCI_BRIDGE_PRE_CONFIG_FUNC_SET command:

>       pciAutoCfgCtl(pCookie, PCI_BRIDGE_PRE_CONFIG_FUNC_SET,
>               sysPciAutoconfigPreEnumBridgeInit);

>   This optional user-specified routine takes as input both the bus-device-function tuple, and a 32-bit quantity containing both the PCI deviceID and vendorID of the device. The function prototype for this function is shown below:

>       STATUS sysPciAutoconfigPreEnumBridgeInit
>           (
>           PCI_SYSTEM *pSys,
>           PCI_LOC *pLoc,
>           UINT devVend
>           );

>   This routine may use any combination of these input data to ascertain any special initialization requirements of a particular type of bridge at a specified geographic location.

> PCI_BRIDGE_POST_CONFIG_FUNC_SET - FUNCPTR * pArg

>   The bridge post-configuration pass initialization routine is provided so that the BSP Developer can initialize the bridge device after the bus that the bridge implements has been enumerated. This routine is specified by calling pciAutoCfgCtl( ) with the PCI_BRIDGE_POST_CONFIG_FUNC_SET command

>       pciAutoCfgCtl(pCookie, PCI_BRIDGE_POST_CONFIG_FUNC_SET,
>               sysPciAutoconfigPostEnumBridgeInit);

>   This optional user-specified routine takes as input both the bus-device-function tuple, and a 32-bit quantity containing both the PCI deviceID and vendorID of the device. The function prototype for this function is shown below:

>       STATUS sysPciAutoconfigPostEnumBridgeInit
>           (
>           PCI_SYSTEM *pSys,
>           PCI_LOC *pLoc,
>           UINT devVend
>           );

>   This routine may use any combination of these input data to ascertain any special initialization requirements of a particular type of bridge at a specified geographic location.

> PCI_ROLLCALL_FUNC_SET - FUNCPTR * pArg

>   The specified routine will be configured as a roll call routine.

>   If a roll call routine has been configured, before any configuration is actually done, the roll call routine is called repeatedly until it returns TRUE. A return value of TRUE indicates that either (1) the specified number and type of devices named in the roll call list have been found during PCI bus enumeration or (2) the timeout has expired without finding all of the specified number and type of devices. In either case, it is assumed that all of the PCI devices which are going to appear on the busses have appeared and we can proceed with PCI bus configuration.

> PCI_TEMP_SPACE_SET - char * pArg

>   This command is not currently implemented. It allows the user to set aside memory for use during pciAutoConfigLib execution, e.g. memory set aside using USER_RESERVED_MEM. After PCI configuration has been completed, the memory can be added to the system memory pool using memAddToPool( ).

> PCI_MINIMIZE_RESOURCES

>   This command is not currently implemented. It specifies that pciAutoConfigLib minimize requirements for memory and I/O space.

> PCI_PSYSTEM_STRUCT_COPY - PCI_SYSTEM * pArg

>   This command has been added for ease of converting from the old interface to the new one. This will set each value as specified in the pSystem structure. If the PCI_SYSTEM structure has already been filled, the pciAutoConfig(pSystem) call can be changed to:

>       void *pCookie;
>       pCookie = pciAutoConfigLibInit(NULL);
>       pciAutoCfgCtl(pCookie, PCI_PSYSTEM_STRUCT_COPY, (void *)pSystem);
>       pciAutoCfgFunc(pCookie);

>   The fields of the PCI_SYSTEM structure are defined below. For more information about each one, see the paragraphs above and the documentation for pciAutoConfigLib.

>   pciMem32

>     Specifies the 32-bit prefetchable memory pool base address.

>   pciMem32Size

>     Specifies the 32-bit prefetchable memory pool size.

>   pciMemIo32

>     Specifies the 32-bit non-prefetchable memory pool base address.

>   pciMemIo32Size

>     Specifies the 32-bit non-prefetchable memory pool size

>   pciIo32

>     Specifies the 32-bit I/O pool base address.

>   pciIo32Size

>     Specifies the 32-bit I/O pool size.

>   pciIo16

>     Specifies the 16-bit I/O pool base address.

>   pciIo16Size

>     Specifies the 16-bit I/O pool size.

>   includeRtn

>     Specifies the device inclusion routine.

>   intAssignRtn

>     Specifies the interrupt assignment routine.

>   autoIntRouting

>     Can be set to TRUE to configure pciAutoConfig( ) only to call the BSP interrupt routing routine for devices on bus number 0. Setting autoIntRoutine to FALSE will configure pciAutoConfig( ) to call the BSP interrupt routing routine for every device regardless of the bus on which the device resides.

>   bridgePreInit

>     Specifies the bridge initialization routine to call before initializing devices on the bus that the bridge implements.

>   bridgePostInit

>     Specifies the bridge initialization routine to call after initializing devices on the bus that the bridge implements.

#### RETURNS

> OK, or ERROR if the command or argument is invalid.

#### ERRNO

> EINVAL

>   if pCookie is not NULL or cmd is not recognized

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoDevReset( )

#### NAME

> pciAutoDevReset( ) - quiesce a PCI device and reset all writeable status bits

#### SYNOPSIS

>     STATUS pciAutoDevReset
>         (
>         PCI_LOC * pPciLoc  /* device to be reset */
>         )

#### DESCRIPTION

> This routine turns off a PCI device by disabling the Memory decoders, I/O decoders, and Bus Master capability. The routine also resets all writeable status bits in the status word that follows the command word sequentially in PCI config space by performing a longword access.

#### RETURNS

> OK, always.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoBusNumberSet( )

#### NAME

> pciAutoBusNumberSet( ) - set the primary, secondary, and subordinate bus number

#### SYNOPSIS

>     STATUS pciAutoBusNumberSet
>         (
>         PCI_LOC * pPciLoc,     /* device affected */
>         UINT      primary,     /* primary bus specification */
>         UINT      secondary,   /* secondary bus specification */
>         UINT      subordinate  /* subordinate bus specification */
>         )

#### DESCRIPTION

> This routine sets the primary, secondary, and subordinate bus numbers for a device that implements the Type 1 PCI Configuration Space Header.

> This routine has external visibility to enable it to be used by BSP Developers for initialization of PCI Host Bridges that may implement registers similar to those found in the Type 1 Header.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoFuncDisable( )

#### NAME

> pciAutoFuncDisable( ) - disable a specific PCI function

#### SYNOPSIS

>     void pciAutoFuncDisable
>         (
>         PCI_LOC *pPciFunc  /* input: Pointer to PCI function struct */
>         )

#### DESCRIPTION

> This routine clears the I/O, mem, master, & ROM space enable bits for a single PCI function.

> The PCI spec says that devices should normally clear these by default after reset but in actual practice, some PCI devices do not fully comply. This routine ensures that the devices have all been disabled before configuration is started.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoFuncEnable( )

#### NAME

> pciAutoFuncEnable( ) - perform final configuration and enable a function

#### SYNOPSIS

>     void pciAutoFuncEnable
>         (
>         PCI_SYSTEM * pSys,  /* for backwards compatibility */
>         PCI_LOC *    pFunc  /* input: Pointer to PCI function structure */
>         )

#### DESCRIPTION

> Depending upon whether the device is included, this routine initializes a single PCI function as follows:

> Initialize the cache line size register Initialize the PCI-PCI bridge latency timers Enable the master PCI bit for non-display devices Set the interrupt line value with the value from the BSP.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoGetNextClass( )

#### NAME

> pciAutoGetNextClass( ) - find the next device of specific type from probe list

#### SYNOPSIS

>     STATUS pciAutoGetNextClass
>         (
>         PCI_SYSTEM *pSys,      /* for backwards compatibility */
>         PCI_LOC    *pPciFunc,  /* output: Contains the BDF of the device found */
>         UINT       *index,     /* Zero-based device instance number */
>         UINT       pciClass,   /* class code field from the PCI header */
>         UINT       mask        /* mask is ANDed with the class field */
>         )

#### DESCRIPTION

> The function uses the probe list which was built during the probing process. Using configuration accesses, it searches for the occurrence of the device subject to the class and mask restrictions outlined below. Setting class to zero and mask to zero allows searching the entire set of devices found regardless of class.

#### RETURNS

> TRUE if a device was found, else FALSE.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoRegConfig( )

#### NAME

> pciAutoRegConfig( ) - assign PCI space to a single PCI base address register

#### SYNOPSIS

>     UINT pciAutoRegConfig
>         (
>         PCI_SYSTEM *pSys,      /* backwards compatibility */
>         PCI_LOC    *pPciFunc,  /* Pointer to function in device list */
>         UINT       baseAddr,   /* Offset of base PCI address */
>         UINT       nSize,      /* Size and alignment requirements */
>         UINT       addrInfo    /* PCI address type information        */
>         )

#### DESCRIPTION

> This routine allocates and assigns PCI space (either memory or I/O) to a single PCI base address register.

#### RETURNS

> Returns (1) if BAR supports mapping anywhere in 64-bit address space. Returns (0) otherwise.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoCardBusConfig( )

#### NAME

> pciAutoCardBusConfig( ) - set mem and I/O registers for a single PCI-Cardbus bridge

#### SYNOPSIS

>     LOCAL void pciAutoCardBusConfig
>         (
>         PCI_AUTO_CONFIG_OPTS * pSystem,     /* PCI system info */
>         PCI_LOC              * pPciLoc,     /* PCI address of this bridge */
>         PCI_LOC             ** ppPciList,   /* Pointer to function list pointer */
>         UINT                 * nSize        /* Number of remaining functions */
>         )

#### DESCRIPTION

> This routine sets up memory and I/O base/limit registers for an individual PCI-Cardbus bridge.

> Cardbus bridges have four windows - 2 memory windows and 2 IO windows. The 2 memory windows can be setup individually for either prefetchable or non-prefetchable memory accesses.

> Since PC Cards can be inserted at any time, and are not necessarily present when this code is run, the code does not probe any further after encountering a Cardbus bridge. Instead, the code allocates default window sizes for the Cardbus bridge. Three windows are used:

>     Memory #0:                     Prefetch memory
>     Memory #1:                     Non-prefetch memory
>     IO #0:                 IO
>     IO #1:                 Unused

> Warning: do not sort the include function list before this routine is called. This routine requires each function in the list to be in the same order as the probe occurred.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoAddrAlign( )

#### NAME

> pciAutoAddrAlign( ) - align a PCI address and check boundary conditions

#### SYNOPSIS

>     STATUS pciAutoAddrAlign
>         (
>         UINT32 base,          /* base of available memory */
>         UINT32 limit,         /* last addr of available memory */
>         UINT32 reqSize,       /* required size */
>         UINT32 *pAlignedBase  /* output: aligned address put here */
>         )

#### DESCRIPTION

> This routine handles address alignment/checking.

#### RETURNS

> OK, or ERROR if available memory has been exceeded.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciAutoConfig( )

#### NAME

> pciAutoConfig( ) - automatically configure all nonexcluded PCI headers (obsolete)

#### SYNOPSIS

>     void pciAutoConfig
>         (
>         PCI_SYSTEM * pSystem  /* PCI system to configure */
>         )

#### DESCRIPTION

> This routine is obsolete. It is included for backward compatibility only. It is recommended that you use the pciAutoCfg( ) interface instead of this one.

> Top level function in the PCI configuration process.

> For all nonexcluded PCI functions on all PCI bridges, this routine will automatically configure the PCI configuration headers for PCI devices and subbridges. The fields that are programmed are:

> 1. | Status register.
> 2. | Command Register.
> 3. | Latency timer.
> 4. | Cache Line size.
> 5. | Memory and/or I/O base address and limit registers.
> 6. | Primary, secondary, subordinate bus number (for PCI-PCI bridges).
> 7. | Expansion ROM disable.
> 8. | Interrupt Line.

#### ALGORITHM

> Probe PCI config space and create a list of available PCI functions. Call device exclusion function, if registered, to exclude/include device. Disable all devices before we initialize any. Allocate and assign PCI space to each device. Calculate and set interrupt line value. Initialize and enable each device.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# sys557PciInit( )

#### NAME

> sys557PciInit( ) - initialize a 82557 PCI ethernet device

#### SYNOPSIS

>     STATUS sys557PciInit
>         (
>         UINT32 pciBus,     /* store a PCI bus number */
>         UINT32 pciDevice,  /* store a PCI device number */
>         UINT32 pciFunc,    /* store a PCI function number */
>         UINT32 vendorId,   /* store a PCI vendor ID */
>         UINT32 deviceId,   /* store a PCI device ID */
>         UINT8  revisionId  /* store a PCI revision ID */
>         )

#### DESCRIPTION

> This routine performs basic PCI initialization for FEI 82557 PCI ethernet devices supported by the fei82557End driver. If supported, the device memory and I/O addresses are mapped into the local CPU address space and an internal board-specific resource table is updated with information on the board type, memory and I/O addresses.

#### CAVEATS

> This routine must be called before the driver attempts to initialize itself and the physical device via sys557Init( ). Also, this routine must be done prior to MMU initialization, usrMmuInit( ).

> The number of supported devices that can be configured for a particular system is finite and is specified by the FEI_MAX_UNITS configuration constant.

#### RETURNS

> OK, else ERROR when the specified device is not supported, or if the device could not be mapped into the local CPU memory space.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sys557Init( )

#### NAME

> sys557Init( ) - prepare 82557 PCI ethernet device for initialization

#### SYNOPSIS

>     STATUS sys557Init
>         (
>         int              unit,   /* END driver unit number */
>         FEI_BOARD_INFO * pBoard  /* board information for the END driver */
>         )

#### DESCRIPTION

> This routine is expected to perform any adapter-specific or target-specific initialization that must be done before an 82557 device is initialized by the driver.

> The 82557 drivers call this routine in the course of initializing driver internal structures and the associated underlying physical device. The drivers will call this routine every time there is a requirement to [re]initialize the device.

#### RETURNS

> OK, or ERROR if the device could not be prepared for initialization.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sys557Show( )

#### NAME

> sys557Show( ) - show 82557 PCI ethernet device configuration

#### SYNOPSIS

>     void sys557Show
>         (
>         int unit  /* END driver unit number */
>         )

#### DESCRIPTION

> This routine shows Intel 82557 and compatible device configuration.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# hwMemLibInit( )

#### NAME

> hwMemLibInit( ) - initialize hardware memory allocation library

#### SYNOPSIS

>     void hwMemLibInit(void)

#### DESCRIPTION

> This function initializes the hardware memory allocation library.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hwMemPoolCreate( )

#### NAME

> hwMemPoolCreate( ) - create or add a memory pool for driver memory allocation

#### SYNOPSIS

>     STATUS hwMemPoolCreate
>         (
>         char * pMem,
>         int    size
>         )

#### DESCRIPTION

> This function creates a memory pool for use by hwMemLib if one does not already exist. If one does exist, this function creates an additional pool which can be used if/when the previous pool(s) have insufficient space available.

#### RETURNS

> OK

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hwMemAlloc( )

#### NAME

> hwMemAlloc( ) - allocate a buffer from the hardware memory pool

#### SYNOPSIS

>     char * hwMemAlloc
>         (
>         int reqSize
>         )

#### DESCRIPTION

> This function allocates a buffer from the hardware memory pool. Buffers from this pool have one of the following sizes:
> 52 bytes
> 116 bytes
> 244 bytes
> 500 bytes
> 1012 bytes
> 2036 bytes
> These sizes are power-of-two minus 12. Each buffer is at least 4-byte aligned. Immediately before and after each buffer is a 4-byte sentinel. Immediately before the initial sentinel is a pointer to the next buffer in the chain.

> This results in an 8-byte sentinel between each buffer, in order to detect buffer overrun or underrun.

#### RETURNS

> NULL, or pointer to allocated memory

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hwMemFree( )

#### NAME

> hwMemFree( ) - return buffer to the hardware memory pool

#### SYNOPSIS

>     STATUS hwMemFree
>         (
>         char * pMem
>         )

#### DESCRIPTION

> This routine returns a buffer to the hardware memory pool.

> First, this routine checks each pool, to see which one the buffer was allocated from. If the buffer did not come from any hardware memory pool, this routine returns ERROR.

> Next, this routine finds the size of the buffer by searching through each pAlloc[i] list. When the buffer is found, this routine locks interrupts, removes the buffer from this list, and adds it to the pHead[i] list.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hwMemShow( )

#### NAME

> hwMemShow( ) -

#### SYNOPSIS

>     void hwMemShow(void)

#### DESCRIPTION

> none

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hwVMRInit( )

#### NAME

> hwVMRInit( ) - initialize Virtual Memory Region

#### SYNOPSIS

>     void * hwVMRInit
>         (
>         char * pSpace,
>         int    size
>         )

#### DESCRIPTION

> none

#### RETURNS

> a cookie representing the VM region

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hwVMRAlloc( )

#### NAME

> hwVMRAlloc( ) - allocate from Virtual Memory Region

#### SYNOPSIS

>     void * hwVMRAlloc
>         (
>         void * pVMRCookie,
>         int    alignShift
>         )

#### DESCRIPTION

> This routine allocates a virtual memory region of size and alignment specified by the alignShift argument. The size and alignment are calculated as (1<<alignShift).

#### RETURNS

> NULL, or a virtual memory region cookie

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hwVMRAddrGet( )

#### NAME

> hwVMRAddrGet( ) - get initial virtual address from Virtual Memory Region

#### SYNOPSIS

>     char * hwVMRAddrGet
>         (
>         void * pVMRCookie
>         )

#### DESCRIPTION

> none

#### RETURNS

> NULL, or virtual address

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hwVMRDeActivate( )

#### NAME

> hwVMRDeActivate( ) - prevent future allocation from Virtual Memory Region

#### SYNOPSIS

>     STATUS hwVMRDeActivate
>         (
>         void * pVMRCookie
>         )

#### DESCRIPTION

> none

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hwVMRShow( )

#### NAME

> hwVMRShow( ) - show virtual memory region usage

#### SYNOPSIS

>     void hwVMRShow
>         (
>         void * pVMRCookie
>         )

#### DESCRIPTION

> none

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# ns16550sioRegister( )

#### NAME

> ns16550sioRegister( ) - register ns16550 driver

#### SYNOPSIS

>     void ns16550sioRegister(void)

#### DESCRIPTION

> This routine registers the ns16550 driver and device recognition data with the vxBus subsystem.

#### NOTE

> This routine is called early during system initialization, and *MUST NOT* make calls to OS facilities such as memory allocation and I/O.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# ns16550DevProbe( )

#### NAME

> ns16550DevProbe( ) - probe for device presence at specific address

#### SYNOPSIS

>     BOOL ns16550DevProbe
>         (
>         struct vxbDev * pDev,         /* Device information */
>         int             regBaseIndex  /* Index of base address */
>         )

#### DESCRIPTION

> Check for ns16550 (or compatible) device at the specified base address. We assume one is present at that address, but we need to verify.

> Probe the device by the following:

> - set the device to loopback mode - mask interrupts - attempt to generate an interrupt - check interrupt status

> If the interrupt status register shows that an interrupt did occur, then we presume it's our device.

#### NOTE

> This routine is called early during system initialization, and *MUST* *NOT* make calls to OS facilities such as memory allocation and I/O.

#### RETURNS

> TRUE if probe passes and assumed a valid ns16550 (or compatible) device. FALSE otherwise.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# ns16550DevInit( )

#### NAME

> ns16550DevInit( ) - initialize an NS16550 channel

#### SYNOPSIS

>     void ns16550DevInit
>         (
>         NS16550_CHAN * pChan  /* pointer to channel */
>         )

#### DESCRIPTION

> This routine initializes some SIO_CHAN function pointers and then resets the chip in a quiescent state. Before this routine is called, the BSP must already have initialized all the device addresses, etc. in the NS16550_CHAN structure.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# ns16550IntWr( )

#### NAME

> ns16550IntWr( ) - handle a transmitter interrupt

#### SYNOPSIS

>     void ns16550IntWr
>         (
>         NS16550_CHAN * pChan  /* pointer to channel */
>         )

#### DESCRIPTION

> This routine handles write interrupts from the UART. It reads a character and puts it in the transmit holding register of the device for transfer.

> If there are no more characters to transmit, transmission is disabled by clearing the transmit interrupt enable bit in the IER(int enable register).

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# ns16550IntRd( )

#### NAME

> ns16550IntRd( ) - handle a receiver interrupt

#### SYNOPSIS

>     void ns16550IntRd
>         (
>         NS16550_CHAN * pChan  /* pointer to channel */
>         )

#### DESCRIPTION

> This routine handles read interrupts from the UART.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# ns16550IntEx( )

#### NAME

> ns16550IntEx( ) - miscellaneous interrupt processing

#### SYNOPSIS

>     void ns16550IntEx
>         (
>         NS16550_CHAN *pChan  /* pointer to channel */
>         )

#### DESCRIPTION

> This routine handles miscellaneous interrupts on the UART. Not implemented yet.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# ns16550Int( )

#### NAME

> ns16550Int( ) - interrupt level processing

#### SYNOPSIS

>     void ns16550Int
>         (
>         VXB_DEVICE_ID pDev
>         )

#### DESCRIPTION

> This routine handles four sources of interrupts from the UART. They are prioritized in the following order by the Interrupt Identification Register: Receiver Line Status, Received Data Ready, Transmit Holding Register Empty and Modem Status.

> When a modem status interrupt occurs, the transmit interrupt is enabled if the CTS signal is TRUE.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hcfDeviceGet( )

#### NAME

> hcfDeviceGet( ) - get the HCF_DEVICE pointer

#### SYNOPSIS

>     HCF_DEVICE * hcfDeviceGet
>         (
>         VXB_DEVICE_ID pInst
>         )

#### DESCRIPTION

> Search the device entry table for a match

#### RETURNS

> pointer to HCF_DEVICE or NULL if device is not located

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# devResourceGet( )

#### NAME

> devResourceGet( ) - find vxBus resource

#### SYNOPSIS

>     STATUS devResourceGet
>         (
>         const struct hcfDevice * pDevice,  /* hcf device */
>         char *                   name,     /* resource name */
>         int                      type,     /* resource type */
>         void **                  pDest     /* resource value */
>         )

#### DESCRIPTION

> Search the HCF records for a match.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# devResourceIntrGet( )

#### NAME

> devResourceIntrGet( ) - find vxBus interrupt resources

#### SYNOPSIS

>     STATUS devResourceIntrGet
>         (
>         VXB_DEVICE_ID            pDev,  /* device information */
>         const struct hcfDevice * pHcf   /* HCF record */
>         )

#### DESCRIPTION

> This routine extracts interrupt information from the HCF record provided, creates an interrupt structure, and updates the pDev structure.

> The updates to pDev are as follows:

> - Insert the interrupt structure into pDev-pIntrInfo field.

> - Modify pDev->pAccess with any updates to the interrupt related
> access methods.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hcfResourceShow( )

#### NAME

> hcfResourceShow( ) - show values for specified resource

#### SYNOPSIS

>     void hcfResourceShow
>         (
>         const struct hcfResource * pRes  /* HCF record */
>         )

#### DESCRIPTION

> This routine displays the values of the specified resource.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hcfResourceDevShow( )

#### NAME

> hcfResourceDevShow( ) - show the device and resource values

#### SYNOPSIS

>     void hcfResourceDevShow
>         (
>         const struct hcfDevice * pHcf  /* HCF record */
>         )

#### DESCRIPTION

> This routine displays the device and the resource values associated with the specified resource.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# hcfResourceAllShow( )

#### NAME

> hcfResourceAllShow( ) - show all devices and resource values

#### SYNOPSIS

>     void hcfResourceAllShow(void)

#### DESCRIPTION

> This routines displays the device and resource values for all HCF records.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbLibInit( )

#### NAME

> vxbLibInit( ) - initialize vxBus library

#### SYNOPSIS

>     STATUS vxbLibInit (void)

#### DESCRIPTION

> This routine initializes vxBus library.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbInit( )

#### NAME

> vxbInit( ) - initialize vxBus

#### SYNOPSIS

>     STATUS vxbInit (void)

#### DESCRIPTION

> This routine initializes the vxBus subsystem.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevInit( )

#### NAME

> vxbDevInit( ) - second-pass initialization of devices

#### SYNOPSIS

>     STATUS vxbDevInit (void)

#### DESCRIPTION

> This routine executes the second stage of device initialization.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevConnect( )

#### NAME

> vxbDevConnect( ) - third-pass initialization of devices

#### SYNOPSIS

>     STATUS vxbDevConnect (void)

#### DESCRIPTION

> This routine executes the third stage of device initialization.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbLibError( )

#### NAME

> vxbLibError( ) - handle error conditions

#### SYNOPSIS

>     STATUS vxbLibError
>         (
>         FUNCPTR pAddr,  /* calling routine */
>         char *  pMsg    /* error message */
>         )

#### DESCRIPTION

> This is a generic routine to handle error conditions.

#### RETURNS

> ERROR, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevRegister( )

#### NAME

> vxbDevRegister( ) - register a device driver

#### SYNOPSIS

>     STATUS vxbDevRegister
>         (
>         struct vxbDevRegInfo * pDevInfo  /* per-bus recognition info */
>         )

#### DESCRIPTION

> This routine registers a device driver with the vxBus subsystem.

#### RETURNS

> OK or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDriverUnregister( )

#### NAME

> vxbDriverUnregister( ) - remove a device driver from the bus subsystem

#### SYNOPSIS

>     STATUS vxbDriverUnregister
>         (
>         struct vxbDevRegInfo * pDriver
>         )

#### DESCRIPTION

> This routine is the final stage of driver removal. The driver must disconnect itself from the OS, free resources, and then finally call this routine. If the vxbDevRegInfo structure was dynamically allocated by the driver, the driver is responsible for freeing it.

> This routine dissociates the driver from each device to which it has been connected, and moves each such device onto the orphan list of the bus it resides on.

#### RETURNS

> OK or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbBusTypeRegister( )

#### NAME

> vxbBusTypeRegister( ) - register a bus type

#### SYNOPSIS

>     STATUS vxbBusTypeRegister
>         (
>         struct vxbBusTypeInfo * pBusType
>         )

#### DESCRIPTION

> This routine registers a bus type with the vxBus subsystem.

#### RETURNS

> OK if successfully registered, else ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbBusTypeUnregister( )

#### NAME

> vxbBusTypeUnregister( ) - unregister a bus type

#### SYNOPSIS

>     STATUS vxbBusTypeUnregister
>         (
>         struct vxbBusTypeInfo * pBusType
>         )

#### DESCRIPTION

> This routine unregisters a bus type with the vxBus subsystem.

#### RETURNS

> OK is success, else ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDeviceAnnounce( )

#### NAME

> vxbDeviceAnnounce( ) - announce device discovery to bus subsystem

#### SYNOPSIS

>     STATUS vxbDeviceAnnounce
>         (
>         struct vxbDev * pDev  /* device information */
>         )

#### DESCRIPTION

> This routine goes through existing bus types and drivers, attempting to match the device which has been discovered with a driver. If a driver is found, then an instance is created, and the instance is added to the bus on which the device resides.

> If no driver is found for the device, then the device is added to a list of unattached devices. At some future time, a driver matching this device may be added to the system.

> The pDev->pParentBus must be populated before calling this function. Otherwise, this device shows up in the lost Devices list(under "Lost devices in vxBus system") when vxBusShow () is called

#### RETURNS

> OK, or FALSE

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevRemovalAnnounce( )

#### NAME

> vxbDevRemovalAnnounce( ) - announce device removal to bus subsystem

#### SYNOPSIS

>     STATUS vxbDevRemovalAnnounce
>         (
>         struct vxbDev * pDev
>         )

#### DESCRIPTION

> This routine removes the device from the bus subsystem. If there is an instance associated with this device, then the driver's method for VXB_METHOD_DRIVER_UNLINK is called and device is removed from the instances list. If the driver does not implement this method, then this function returns an ERROR. If the device is present in the orphans list, it is removed from the orphans list.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbBusAnnounce( )

#### NAME

> vxbBusAnnounce( ) - announce bus discovery to bus subsystem

#### SYNOPSIS

>     STATUS vxbBusAnnounce
>         (
>         struct vxbDev * pBusDev,  /* bus controller */
>         UINT32          busID     /* bus type */
>         )

#### DESCRIPTION

> This routine is called by bus controller drivers, whenever a new bus is found.

> The pBusDev->pParentBus must be populated before calling this function. Otherwise, the bus shows up as a lost bus when vxBusShow () is called

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevParent( )

#### NAME

> vxbDevParent( ) - find parent device

#### SYNOPSIS

>     struct vxbDev * vxbDevParent
>         (
>         struct vxbDev * pDev  /* Device Information */
>         )

#### DESCRIPTION

> This routine finds the parent device of the specified device.

#### RETURNS

> pointer to parent device, or NULL

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevPath( )

#### NAME

> vxbDevPath( ) - trace from device to nexus

#### SYNOPSIS

>     STATUS vxbDevPath
>         (
>         struct vxbDev *                           pDev,   /* device */
>         BOOL (*func)(struct vxbDev * pDev, void * pArg),  /* func @ each ctlr */
>         void *                                    pArg    /* 2nd arg to func */
>         )

#### DESCRIPTION

> This routine traces the specified device to the PLB bus.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevMethodGet( )

#### NAME

> vxbDevMethodGet( ) - find entry point of method

#### SYNOPSIS

>     FUNCPTR vxbDevMethodGet
>         (
>         struct vxbDev * pDev,   /* Device information */
>         UINT32          method  /* Specified method */
>         )

#### DESCRIPTION

> This routine finds an entry point for specified method.

#### RETURNS

> a pointer to the entry point routine for accessing the specified functionality of the specified device, or NULL if no such functionality is available.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevIterate( )

#### NAME

> vxbDevIterate( ) - perform specified action for each device

#### SYNOPSIS

>     STATUS vxbDevIterate
>         (
>         FUNCPTR func,  /* function to call */
>         void *  pArg,  /* 2nd argument to func */
>         UINT32  flags  /* flags to determine what to do */
>         )

#### DESCRIPTION

> This routine performs the specified action for each device.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDeviceMethodRun( )

#### NAME

> vxbDeviceMethodRun( ) - run method on device

#### SYNOPSIS

>     STATUS vxbDeviceMethodRun
>         (
>         struct vxbDev * pDev,  /* Device Information */
>         void *          pArg   /* Parameter to method */
>         )

#### DESCRIPTION

> This routine runs a method on a device if it provides specified method.

#### RETURNS

> OK or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevMethodRun( )

#### NAME

> vxbDevMethodRun( ) - run method on devices

#### SYNOPSIS

>     STATUS vxbDevMethodRun
>         (
>         UINT32 method,  /* Method to run */
>         void * pArg     /* Argument to routine */
>         )

#### DESCRIPTION

> This routine runs the specified method for all instances which provide a specified method.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbSubDevAction( )

#### NAME

> vxbSubDevAction( ) - perform an action on all devs on bus controller

#### SYNOPSIS

>     STATUS vxbSubDevAction
>         (
>         struct vxbDev *        pBusCtlr,
>         VXB_SUBDEV_ACTION_FUNC actionFunc,
>         VIRT_ADDR              pArg,
>         UINT32                 flags
>         )

#### DESCRIPTION

> This routine performs the specified action (that is, calls the specified function) for each device directly connected to the bus downstream from the specified bus controller.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbResourceFind( )

#### NAME

> vxbResourceFind( ) - find and allocate a vxBus resource

#### SYNOPSIS

>     STATUS vxbResourceFind
>         (
>         struct vxbDev * instance,
>         UINT32          method,
>         VIRT_ADDR       pArg,
>         UINT            flags
>         )

#### DESCRIPTION

> This routine searches for a vxBus resource to allocate. Resources are identified by a driver method. The driver method, when called, must allocate and initialize the specified resource, fill in the appropriate fields in the structure pointed to by the pArg variable, and return OK.

> The flags are currently ignored. The flags field is present for a future enhancement to allow different behaviors:

> 1) Check only PLB 2) Check only bus on which device resides 3) Check all devices if none found on direct path

#### RETURNS

> OK, or ERROR if the resource could not be allocated

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevError( )

#### NAME

> vxbDevError( ) - driver does not support specified functionality

#### SYNOPSIS

>     STATUS vxbDevError(void)

#### DESCRIPTION

> This routine provides and error if the device driver does not support the specified functionality.

#### RETURNS

> ERROR, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# nullDrv( )

#### NAME

> nullDrv( ) - optional driver functionality not present

#### SYNOPSIS

>     STATUS nullDrv(void)

#### DESCRIPTION

> This routine indicates that there is no optional device driver functionality present.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# noDev( )

#### NAME

> noDev( ) - optional driver functionality not present

#### SYNOPSIS

>     BOOL noDev(void)

#### DESCRIPTION

> This routine indicates that there is no optional device driver functionality present.

#### RETURNS

> FALSE, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbBusTypeString( )

#### NAME

> vxbBusTypeString( ) - retrieve bus type string

#### SYNOPSIS

>     char * vxbBusTypeString
>         (
>         int busType
>         )

#### DESCRIPTION

> This routine returns the bus type string based on the bus type integer value

#### RETURNS

> pointer to char

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbMemAddrGet( )

#### NAME

> vxbMemAddrGet( ) - get address for device

#### SYNOPSIS

>     STATUS vxbMemAddrGet
>         (
>         struct vxbDev * pDev,        /* Device Information */
>         void **         ppResource,  /* returned: resource ID */
>         void **         ppAddr,      /* returned: address */
>         int             type,        /* resource type */
>         int             size,        /* size of requested region */
>         UINT32          flags        /* flags, ignored for now */
>         )

#### DESCRIPTION

> This routine retrieves an address for the device.

#### NOTE

> This routine is completely untested

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbAccessMethodGet( )

#### NAME

> vxbAccessMethodGet( ) - find specific method for accessing device

#### SYNOPSIS

>     FUNCPTR vxbAccessMethodGet
>         (
>         struct vxbDev * pDev,       /* Device Information */
>         UINT32          accessType  /* Access method to find */
>         )

#### DESCRIPTION

> This routine finds the specified method for accessing the specified device.

#### RETURNS

> pointer to method, or NULL

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbVolRegWrite( )

#### NAME

> vxbVolRegWrite( ) - volatile register writes

#### SYNOPSIS

>     STATUS vxbVolRegWrite
>         (
>         struct vxbDev * pDev,             /* Device Information */
>         UINT32          regBaseIndex,     /* which pRegBase to use */
>         UINT32          byteOffset,       /* offset, in bytes, of register */
>         UINT32          transactionSize,  /* transaction size, in bytes */
>         void *          pDataBuf,         /* buffer to read-from/write-to */
>         UINT32 *        pFlags            /* flags */
>         )

#### DESCRIPTION

> This routine performs volatile register writes of the size specified in transactionSize.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbIntConnect( )

#### NAME

> vxbIntConnect( ) - connect device's interrupt

#### SYNOPSIS

>     STATUS vxbIntConnect
>         (
>         struct vxbDev * pDev,   /* Device Information */
>         int             index,  /* index of interrupt vector */
>         VOIDFUNCPTR     pIsr,   /* ISR */
>         void *          pArg    /* parameter */
>         )

#### DESCRIPTION

> This routine connects the specified ISR to the interrupt source.

#### RETURNS

> OK or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbIntDisconnect( )

#### NAME

> vxbIntDisconnect( ) - disconnect device's interrupt

#### SYNOPSIS

>     STATUS vxbIntDisconnect
>         (
>         struct vxbDev * pDev,   /* Device Information */
>         int             index,  /* index of interrupt vector */
>         VOIDFUNCPTR     pIsr,   /* ISR */
>         void *          pArg    /* parameter */
>         )

#### DESCRIPTION

> This routine disconnects the specified ISR from the interrupt source.

#### RETURNS

> OK or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbIntAcknowledge( )

#### NAME

> vxbIntAcknowledge( ) - Acknowledge device's interrupt

#### SYNOPSIS

>     STATUS vxbIntAcknowledge
>         (
>         struct vxbDev * pDev,   /* Device Information */
>         int             index,  /* index of interrupt vector */
>         VOIDFUNCPTR     pIsr,   /* ISR */
>         void *          pArg    /* parameter */
>         )

#### DESCRIPTION

> This routine acknowledges and clears the specified interrupt on any interrupt controller intervening between the processor and the device. It does not affect the interrupt source or the processor.

#### RETURNS

> OK or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbIntEnable( )

#### NAME

> vxbIntEnable( ) - Enable device's interrupt

#### SYNOPSIS

>     STATUS vxbIntEnable
>         (
>         struct vxbDev * pDev,   /* Device Information */
>         int             index,  /* index of interrupt vector */
>         VOIDFUNCPTR     pIsr,   /* ISR */
>         void *          pArg    /* parameter */
>         )

#### DESCRIPTION

> This routine enables the specified interrupt on any interrupt controller intervening between the processor and the device. It does not affect the interrupt source nor the processor.

#### RETURNS

> OK or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbIntDisable( )

#### NAME

> vxbIntDisable( ) - disable device's interrupt

#### SYNOPSIS

>     STATUS vxbIntDisable
>         (
>         struct vxbDev * pDev,   /* Device Information */
>         int             index,  /* index of interrupt vector */
>         VOIDFUNCPTR     pIsr,   /* ISR */
>         void *          pArg    /* parameter */
>         )

#### DESCRIPTION

> This routine disables the specified interrupt on the lowest-level interrupt controller between the processor and the device. It does not affect the interrupt source nor the processor.

#### RETURNS

> OK or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbIntVectorGet( )

#### NAME

> vxbIntVectorGet( ) - get device's interrupt vector

#### SYNOPSIS

>     VOIDFUNCPTR * vxbIntVectorGet
>         (
>         struct vxbDev * pDev,  /* Device Information */
>         int             index  /* index of interrupt vector */
>         )

#### DESCRIPTION

> This routine returns the vector for the specified interrupt on the specified device. The return value of this routine can be passed as the vector to intConnect( ) and other system-level interrupt support routines.

#### RETURNS

> vector, or NULL

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevStructAlloc( )

#### NAME

> vxbDevStructAlloc( ) - allocate VXB_DEVICE structure

#### SYNOPSIS

>     struct vxbDev * vxbDevStructAlloc
>         (
>         int flags  /* Flags */
>         )

#### DESCRIPTION

> This routine allocates the VXB_DEVICE structure.

#### RETURNS

> pointer to structure, or NULL

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevStructFree( )

#### NAME

> vxbDevStructFree( ) - free VXB_DEVICE structure

#### SYNOPSIS

>     void vxbDevStructFree
>         (
>         struct vxbDev * pDev  /* Device Information */
>         )

#### DESCRIPTION

> This routine free the previously allocated VXB_DEVICE structure.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbInstUnitSet( )

#### NAME

> vxbInstUnitSet( ) - set the unit number

#### SYNOPSIS

>     STATUS vxbInstUnitSet
>         (
>         VXB_DEVICE_ID pDev,
>         UINT32        unitNumber
>         )

#### DESCRIPTION

> This routine sets the unit number for the device.

#### RETURNS

> OK or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbInstUnitGet( )

#### NAME

> vxbInstUnitGet( ) - get the unit number

#### SYNOPSIS

>     STATUS vxbInstUnitGet
>         (
>         VXB_DEVICE_ID pDev,
>         UINT32 *      pUnitNumber
>         )

#### DESCRIPTION

> This routine gets the unit number for the device.

#### RETURNS

> OK or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxBusShow( )

#### NAME

> vxBusShow( ) - show vxBus subsystem

#### SYNOPSIS

>     void vxBusShow
>         (
>         int verboseLevel
>         )

#### DESCRIPTION

> This routine shows the vxBus configuration.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbBusListPrint( )

#### NAME

> vxbBusListPrint( ) - Show bus topology

#### SYNOPSIS

>     int vxbBusListPrint
>         (
>         struct vxbBusPresent * pBusPres
>         )

#### DESCRIPTION

> This routine prints information about the bus hierarchy.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbTopoShow( )

#### NAME

> vxbTopoShow( ) - Show bus topology

#### SYNOPSIS

>     int vxbTopoShow(void)

#### DESCRIPTION

> This routine prints information about the bus hierarchy

> First, it shows the bus type for the top-level bus controller, then it recursively goes through the devices on each bus, and shows some information about each one.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbPresStructShow( )

#### NAME

> vxbPresStructShow( ) - Show bus information

#### SYNOPSIS

>     STATUS vxbPresStructShow
>         (
>         struct vxbBusPresent * pPres
>         )

#### DESCRIPTION

> This routine prints information about the specified bus.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevStructShow( )

#### NAME

> vxbDevStructShow( ) - Show device information

#### SYNOPSIS

>     STATUS vxbDevStructShow
>         (
>         struct vxbDev * pDev
>         )

#### DESCRIPTION

> This routine prints information about the specified device.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevAccessShow( )

#### NAME

> vxbDevAccessShow( ) - Show bus access methods

#### SYNOPSIS

>     void vxbDevAccessShow
>         (
>         struct vxbDev * pDev
>         )

#### DESCRIPTION

> This routine prints the access methods for the specified device.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbDevPathShow( )

#### NAME

> vxbDevPathShow( ) - Show bus hierarchy

#### SYNOPSIS

>     void vxbDevPathShow
>         (
>         struct vxbDev * pDev
>         )

#### DESCRIPTION

> This routine prints the path of busses between a specified device and the nexus

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archRegProbe( )

#### NAME

> _archRegProbe( ) - probe a register on the device

#### SYNOPSIS

>     STATUS _archRegProbe
>         (
>         VXB_DEVICE_ID pDevInfo,         /* device info */
>         void *        pRegBase,         /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,       /* offset, in bytes, of register */
>         UINT32        transactionSize,  /* register size */
>         VIRT_ADDR     pProbeDatum,      /* value to write */
>         VIRT_ADDR     pRetVal,          /* value read back */
>         UINT32 *      pFlags            /* Flags used */
>         )

#### DESCRIPTION

> This routine is used by the driver to identify whether the device register is present and is available.

#### RETURNS

> OK on success, or ERROR if register is not present or unavailable

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archRegisterRead8( )

#### NAME

> _archRegisterRead8( ) - read 8-bit value from a register

#### SYNOPSIS

>     STATUS _archRegisterRead8
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to read 8-bits from a device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archRegisterRead16( )

#### NAME

> _archRegisterRead16( ) - read 16-bit value from a register

#### SYNOPSIS

>     STATUS _archRegisterRead16
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to read 16-bits from a device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archRegisterRead32( )

#### NAME

> _archRegisterRead32( ) - read 32-bit value from a register

#### SYNOPSIS

>     STATUS _archRegisterRead32
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to read 32-bits from a device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archRegisterRead64( )

#### NAME

> _archRegisterRead64( ) - read 64-bit value from a register

#### SYNOPSIS

>     STATUS _archRegisterRead64
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to read 64-bits from a device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archRegisterWrite8( )

#### NAME

> _archRegisterWrite8( ) - write 8-bits to a register

#### SYNOPSIS

>     STATUS _archRegisterWrite8
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to write 8-bits to a device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archRegisterWrite16( )

#### NAME

> _archRegisterWrite16( ) - write 16-bits to a register

#### SYNOPSIS

>     STATUS _archRegisterWrite16
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to write 16-bits to a device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archRegisterWrite32( )

#### NAME

> _archRegisterWrite32( ) - write 32-bits to a register

#### SYNOPSIS

>     STATUS _archRegisterWrite32
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to write 32-bits to a device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archRegisterWrite64( )

#### NAME

> _archRegisterWrite64( ) - write 64-bits to a register

#### SYNOPSIS

>     STATUS _archRegisterWrite64
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to write 64-bits to a device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archVolatileRegisterWrite( )

#### NAME

> _archVolatileRegisterWrite( ) - write to a volatile register

#### SYNOPSIS

>     STATUS _archVolatileRegisterWrite
>         (
>         VXB_DEVICE_ID pDevInfo,         /* device info */
>         void *        pRegBase,         /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,       /* offset, in bytes, of register */
>         UINT32        transactionSize,  /* transaction size, in bytes */
>         VIRT_ADDR     pDataBuf,         /* buffer to read-from/write-to */
>         UINT32 *      pFlags            /* flags */
>         )

#### DESCRIPTION

> This routine is used to write to a volatile register and read back the data from the volatile register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archVolatileRegisterRead( )

#### NAME

> _archVolatileRegisterRead( ) - read from a volatile register

#### SYNOPSIS

>     STATUS _archVolatileRegisterRead
>         (
>         VXB_DEVICE_ID pDevInfo,         /* device info */
>         void *        pRegBase,         /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,       /* offset, in bytes, of register */
>         UINT32        transactionSize,  /* transaction size, in bytes */
>         VIRT_ADDR     pDataBuf,         /* buffer to read-from */
>         UINT32 *      pFlags            /* flags */
>         )

#### DESCRIPTION

> This routine is used to read from a volatile register. This function does not split the read into multiple transactions.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr64_00( )

#### NAME

> _archOptRegWr64_00( ) - write 64 bits to a mem space register

#### SYNOPSIS

>     STATUS _archOptRegWr64_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 64 bit data to the mem space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr64_07( )

#### NAME

> _archOptRegWr64_07( ) - swap 64 bit data and write to a mem space register

#### SYNOPSIS

>     STATUS _archOptRegWr64_07
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 64 bit data and writes to the mem space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr64_20( )

#### NAME

> _archOptRegWr64_20( ) - write 64 bits to an IO space register

#### SYNOPSIS

>     STATUS _archOptRegWr64_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 64 bits to the IO space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr64_27( )

#### NAME

> _archOptRegWr64_27( ) - swap and write 64 bits to an IO space register

#### SYNOPSIS

>     STATUS _archOptRegWr64_27
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 64 bit data and writes to the IO space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr64_10( )

#### NAME

> _archOptRegWr64_10( ) - write 64 bits to a mem space register and flush data

#### SYNOPSIS

>     STATUS _archOptRegWr64_10
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 64 bit data to the mem space register and flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr64_17( )

#### NAME

> _archOptRegWr64_17( ) - swap, write 64 bits to a mem space register & flush data

#### SYNOPSIS

>     STATUS _archOptRegWr64_17
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 64 bit data to be written, writes to the mem space register and flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr64_30( )

#### NAME

> _archOptRegWr64_30( ) - write 64 bits to a IO space register and flush data

#### SYNOPSIS

>     STATUS _archOptRegWr64_30
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 64 bit data to the IO space register and flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr64_37( )

#### NAME

> _archOptRegWr64_37( ) - swap, write 64 bits to a IO space register & flush data

#### SYNOPSIS

>     STATUS _archOptRegWr64_37
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 64 bit data to be written, writes to the IO space register and flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr32_00( )

#### NAME

> _archOptRegWr32_00( ) - write 32 bits to mem space register

#### SYNOPSIS

>     STATUS _archOptRegWr32_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 32 bits to the memory space register, without any modifications to the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr32_03( )

#### NAME

> _archOptRegWr32_03( ) - swap the data and write 32 bits to mem space register

#### SYNOPSIS

>     STATUS _archOptRegWr32_03
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 32 bit data and then writes to the memory space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr32_20( )

#### NAME

> _archOptRegWr32_20( ) - write 32 bits to an IO space register

#### SYNOPSIS

>     STATUS _archOptRegWr32_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 32 bits to the IO space register, without any modifications to the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr32_23( )

#### NAME

> _archOptRegWr32_23( ) - swap and write 32 bits to an IO space register

#### SYNOPSIS

>     STATUS _archOptRegWr32_23
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 32 bit data and then writes to the IO space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr32_10( )

#### NAME

> _archOptRegWr32_10( ) - write 32 bits to an mem space register and flush

#### SYNOPSIS

>     STATUS _archOptRegWr32_10
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes to the mem space register and then flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr32_10( )

#### NAME

> _archOptRegWr32_10( ) - swap & write 32 bits to an mem space register and flush

#### SYNOPSIS

>     STATUS _archOptRegWr32_13
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 32 bit data, writes to the mem space register and then flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr32_30( )

#### NAME

> _archOptRegWr32_30( ) - write 32 bits to an IO space register and flush

#### SYNOPSIS

>     STATUS _archOptRegWr32_30
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 32 bit data and then flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr32_33( )

#### NAME

> _archOptRegWr32_33( ) - swap and write 32 bits to an IO space register & flush

#### SYNOPSIS

>     STATUS _archOptRegWr32_33
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 32 bit data, writes to the IO space register and flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr16_00( )

#### NAME

> _archOptRegWr16_00( ) - write 16 bits to a mem space register

#### SYNOPSIS

>     STATUS _archOptRegWr16_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 16 bit data to the mem space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr16_01( )

#### NAME

> _archOptRegWr16_01( ) - swap and write 16 bits to a mem space register

#### SYNOPSIS

>     STATUS _archOptRegWr16_01
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 16 bit data and writes to the mem space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr16_20( )

#### NAME

> _archOptRegWr16_20( ) - write 16 bits to an IO space register

#### SYNOPSIS

>     STATUS _archOptRegWr16_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes the 16 bit data to the IO space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr16_21( )

#### NAME

> _archOptRegWr16_21( ) - swap and write 16 bits to an IO space register

#### SYNOPSIS

>     STATUS _archOptRegWr16_21
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps and writes the 16 bit data to the IO space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr16_10( )

#### NAME

> _archOptRegWr16_10( ) - write 16 bits to a mem space register and flush data

#### SYNOPSIS

>     STATUS _archOptRegWr16_10
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes the 16 bit data to the mem space register and flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr16_11( )

#### NAME

> _archOptRegWr16_11( ) - swap, write 16 bits to mem space register & flush data

#### SYNOPSIS

>     STATUS _archOptRegWr16_11
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 16 bit data, writes to the mem space register and flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr16_30( )

#### NAME

> _archOptRegWr16_30( ) - write 16 bits to IO space register & flush data

#### SYNOPSIS

>     STATUS _archOptRegWr16_30
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 16 bits to the IO space register and flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr16_31( )

#### NAME

> _archOptRegWr16_31( ) - swap & write 16 bits to IO space register & flush data

#### SYNOPSIS

>     STATUS _archOptRegWr16_31
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 16 bit data and writes the data to the IO space register and flushes the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr8_00( )

#### NAME

> _archOptRegWr8_00( ) - write 8 bits to mem space register

#### SYNOPSIS

>     STATUS _archOptRegWr8_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 8 bits to the memory space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr8_20( )

#### NAME

> _archOptRegWr8_20( ) - write 8 bits to IO space register

#### SYNOPSIS

>     STATUS _archOptRegWr8_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 8 bits to the IO space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr8_10( )

#### NAME

> _archOptRegWr8_10( ) - write 8 bits to mem space register and flush data

#### SYNOPSIS

>     STATUS _archOptRegWr8_10
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 8 bits to the mem space register and flush the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWr8_30( )

#### NAME

> _archOptRegWr8_30( ) - write 8 bits to IO space register and flush data

#### SYNOPSIS

>     STATUS _archOptRegWr8_30
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 8 bits to the IO space register and flush the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd64_00( )

#### NAME

> _archOptRegWrRd64_00( ) - write 64 bits to a mem space register and read back

#### SYNOPSIS

>     STATUS _archOptRegWrRd64_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 64 bit data to the mem space register and read back the contents.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd64_07( )

#### NAME

> _archOptRegWrRd64_07( ) - swap 64 bit data and write & read from mem space

#### SYNOPSIS

>     STATUS _archOptRegWrRd64_07
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 64 bit data and writes to the mem space register and read back the contents.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd64_20( )

#### NAME

> _archOptRegWrRd64_20( ) - write 64 bits to an IO space register and read back

#### SYNOPSIS

>     STATUS _archOptRegWrRd64_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 64 bits to the IO space register and read back the contents.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd64_27( )

#### NAME

> _archOptRegWrRd64_27( ) - swap, write 64 bits & read from an IO space register

#### SYNOPSIS

>     STATUS _archOptRegWrRd64_27
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 64 bit data and writes to the IO space register and also reads back the contents.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd64_10( )

#### NAME

> _archOptRegWrRd64_10( ) - write 64 bits to mem space register, flush data & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd64_10
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 64 bit data to the mem space register, flushes the data and reads back the contents.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd64_17( )

#### NAME

> _archOptRegWrRd64_17( ) - swap, write 64 bits to memspace, flush data & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd64_17
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 64 bit data to be written, writes to the mem space register, flushes the data and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd64_30( )

#### NAME

> _archOptRegWrRd64_30( ) - write 64 bits to IO space register, flush and read

#### SYNOPSIS

>     STATUS _archOptRegWrRd64_30
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 64 bit data to the IO space register, flushes the data and reads back the contents.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd64_37( )

#### NAME

> _archOptRegWrRd64_37( ) - swap, write 64 bits to IO space, flush & read data

#### SYNOPSIS

>     STATUS _archOptRegWrRd64_37
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 64 bit data to be written, writes to the IO space register, flushes the data and reads back the contents.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd32_00( )

#### NAME

> _archOptRegWrRd32_00( ) - write 32 bits to mem space register & read back

#### SYNOPSIS

>     STATUS _archOptRegWrRd32_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 32 bits to the memory space register, without any modifications to the data and reads back the contents.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd32_03( )

#### NAME

> _archOptRegWrRd32_03( ) - swap, write 32 bits to mem space register & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd32_03
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 32 bit data, writes to the memory space register and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd32_20( )

#### NAME

> _archOptRegWrRd32_20( ) - write 32 bits to an IO space register & read back

#### SYNOPSIS

>     STATUS _archOptRegWrRd32_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 32 bits to the IO space register, without any modifications to the data and reads back the contents.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd32_23( )

#### NAME

> _archOptRegWrRd32_23( ) - swap, write 32 bits to an IO space register & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd32_23
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 32 bit data, writes to the IO space register and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd32_10( )

#### NAME

> _archOptRegWrRd32_10( ) - write 32 bits to memspace register, flush & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd32_10
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes to the mem space register, flushes the data and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd32_13( )

#### NAME

> _archOptRegWrRd32_13( ) - swap, write 32 bits to memspace, flush & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd32_13
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 32 bit data, writes to the mem space register, flushes the data and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd32_30( )

#### NAME

> _archOptRegWrRd32_30( ) - write 32 bits to an IO space register, flush & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd32_30
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 32 bit data, flushes the data and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd32_33( )

#### NAME

> _archOptRegWrRd32_33( ) - swap, write 32 bits to IO space, flush & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd32_33
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 32 bit data, writes to the IO space register, flushes the data and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd16_00( )

#### NAME

> _archOptRegWrRd16_00( ) - write 16 bits to a mem space register & read back

#### SYNOPSIS

>     STATUS _archOptRegWrRd16_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 16 bit data to the mem space register and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd16_01( )

#### NAME

> _archOptRegWrRd16_01( ) - swap, write 16 bits to a mem space register & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd16_01
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 16 bit data, writes to the mem space register and read back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd16_20( )

#### NAME

> _archOptRegWrRd16_20( ) - write 16 bits to an IO space register & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd16_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes the 16 bit data to the IO space register and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd16_21( )

#### NAME

> _archOptRegWrRd16_21( ) - swap, write 16 bits to an IO space register & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd16_21
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the data, writes the 16 bit data to the IO space register and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd16_10( )

#### NAME

> _archOptRegWrRd16_10( ) - write 16 bits to memspace, flush data & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd16_10
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes the 16 bit data to the mem space register, flushes the data and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd16_11( )

#### NAME

> _archOptRegWrRd16_11( ) - swap, write 16 bits to memspace, flush & read data

#### SYNOPSIS

>     STATUS _archOptRegWrRd16_11
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 16 bit data, writes to the mem space register, flushes the data & reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd16_30( )

#### NAME

> _archOptRegWrRd16_30( ) - write 16 bits to IO space, flush & read back data

#### SYNOPSIS

>     STATUS _archOptRegWrRd16_30
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 16 bits to the IO space register, flushes the data and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd16_31( )

#### NAME

> _archOptRegWrRd16_31( ) - swap, write 16 bits to IO space, flush data & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd16_31
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which swaps the 16 bit data, writes the data to the IO space register, flushes the data and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd8_00( )

#### NAME

> _archOptRegWrRd8_00( ) - write 8 bits to mem space register and read back data

#### SYNOPSIS

>     STATUS _archOptRegWrRd8_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 8 bits to the memory space register and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd8_20( )

#### NAME

> _archOptRegWrRd8_20( ) - write 8 bits to IO space register and read back

#### SYNOPSIS

>     STATUS _archOptRegWrRd8_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 8 bits to the IO space register and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd8_10( )

#### NAME

> _archOptRegWrRd8_10( ) - write 8 bits to mem space register, flush data & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd8_10
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 8 bits to the mem space register, flushes the data and reads back the data.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegWrRd8_30( )

#### NAME

> _archOptRegWrRd8_30( ) - write 8 bits to IO space register, flush data & read

#### SYNOPSIS

>     STATUS _archOptRegWrRd8_30
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to copy data from */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which writes 8 bits to the IO space register, flush the data and read back the contents.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd64_00( )

#### NAME

> _archOptRegRd64_00( ) - read 64 bits from mem space register

#### SYNOPSIS

>     STATUS _archOptRegRd64_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 64 bits from a mem space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd64_07( )

#### NAME

> _archOptRegRd64_07( ) - read 64 bits from mem space register and swap data

#### SYNOPSIS

>     STATUS _archOptRegRd64_07
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 64 bits from a mem space register and swap the data read.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd64_20( )

#### NAME

> _archOptRegRd64_20( ) - read 64 bits from IO space register

#### SYNOPSIS

>     STATUS _archOptRegRd64_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 64 bits from a IO space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd64_27( )

#### NAME

> _archOptRegRd64_27( ) - read 64 bits from IO space register and swap data

#### SYNOPSIS

>     STATUS _archOptRegRd64_27
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 64 bits from a IO space register and swap the data read.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd32_00( )

#### NAME

> _archOptRegRd32_00( ) - read 32 bits from mem space register

#### SYNOPSIS

>     STATUS _archOptRegRd32_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 32 bits from a mem space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd32_03( )

#### NAME

> _archOptRegRd32_03( ) - read 32 bits from mem space register and swap data

#### SYNOPSIS

>     STATUS _archOptRegRd32_03
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 32 bits from a mem space register and swap the data read.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd32_20( )

#### NAME

> _archOptRegRd32_20( ) - read 32 bits from IO space register

#### SYNOPSIS

>     STATUS _archOptRegRd32_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 32 bits from an IO space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd32_23( )

#### NAME

> _archOptRegRd32_23( ) - read 32 bits from IO space register and swap data

#### SYNOPSIS

>     STATUS _archOptRegRd32_23
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 32 bits from an IO space register and swap the data read.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd16_00( )

#### NAME

> _archOptRegRd16_00( ) - read 16 bits from mem space register

#### SYNOPSIS

>     STATUS _archOptRegRd16_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 16 bits from a mem space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd16_01( )

#### NAME

> _archOptRegRd16_01( ) - read 16 bits from mem space register and swap data

#### SYNOPSIS

>     STATUS _archOptRegRd16_01
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 16 bits from a mem space register and swap the data read.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd16_20( )

#### NAME

> _archOptRegRd16_20( ) - read 16 bits from IO space register

#### SYNOPSIS

>     STATUS _archOptRegRd16_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 16 bits from an IO space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd16_21( )

#### NAME

> _archOptRegRd16_21( ) - read 16 bits from IO space register and swap data

#### SYNOPSIS

>     STATUS _archOptRegRd16_21
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 16 bits from an IO space register and swap the data read.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd8_00( )

#### NAME

> _archOptRegRd8_00( ) - read 8 bits from mem space register

#### SYNOPSIS

>     STATUS _archOptRegRd8_00
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 8 bits from a mem space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# _archOptRegRd8_20( )

#### NAME

> _archOptRegRd8_20( ) - read 8 bits from IO space register

#### SYNOPSIS

>     STATUS _archOptRegRd8_20
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This is an optimized function which reads 8 bits from an IO space register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# optimizeAccessFunction( )

#### NAME

> optimizeAccessFunction( ) - optimize a function based on flags

#### SYNOPSIS

>     void optimizeAccessFunction
>         (
>         UINT32                 flags,       /* flags */
>         struct vxbAccessList * pAccess,     /* bus access structure ptr */
>         UINT32                 operationId  /* operation indicator */
>         )

#### DESCRIPTION

> This routine is used to determine an optimized function based on the flags for the operation and update the access function pointer with the pointer to the optimized function

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbPlbAccessCopy( )

#### NAME

> vxbPlbAccessCopy( ) - copy the access data structure

#### SYNOPSIS

>     void vxbPlbAccessCopy
>         (
>         struct vxbAccessList *pAccess
>         )

#### DESCRIPTION

> This routine is used to copy the contents of the PLB access array onto the parameter

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# plbAccessInit( )

#### NAME

> plbAccessInit( ) - initialize the plb access module

#### SYNOPSIS

>     void plbAccessInit (void)

#### DESCRIPTION

> This routine is used to initialize the access module of the PLB

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# plbRegister( )

#### NAME

> plbRegister( ) - register PLB with bus subsystem

#### SYNOPSIS

>     void plbRegister(void)

#### DESCRIPTION

> This routine registers the PLB with the vxBus subsystem.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# plbInit1( )

#### NAME

> plbInit1( ) - first-stage PLB bus initialization

#### SYNOPSIS

>     STATUS plbInit1
>         (
>         struct vxbDev * pCtlr
>         )

#### DESCRIPTION

> This routine executes the first stage of the PLB bus initialization.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# plbInit2( )

#### NAME

> plbInit2( ) - second-stage PLB bus initialization

#### SYNOPSIS

>     STATUS plbInit2(void)

#### DESCRIPTION

> This routine executes the second stage of the PLB bus initialization.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# plbConnect( )

#### NAME

> plbConnect( ) - third-stage PLB bus initialization

#### SYNOPSIS

>     STATUS plbConnect(void)

#### DESCRIPTION

> This routine executes the third stage of the PLB bus initialization and connection.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# plbDevMatch( )

#### NAME

> plbDevMatch( ) - check whether device and driver go together

#### SYNOPSIS

>     BOOL plbDevMatch
>         (
>         struct vxbDevRegInfo * pDriver,
>         struct vxbDev *        pDev
>         )

#### DESCRIPTION

> This routine matches a device with a device driver.

#### RETURNS

> TRUE if the device and driver match up, FALSE otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciRegisterProbe( )

#### NAME

> pciRegisterProbe( ) - probe a register on a PCI device

#### SYNOPSIS

>     STATUS pciRegisterProbe
>         (
>         VXB_DEVICE_ID pDevInfo,         /* device info */
>         void *        pRegBase,         /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,       /* offset, in bytes, of register */
>         UINT32        transactionSize,  /* register size */
>         VIRT_ADDR     pProbeDatum,      /* value to write */
>         VIRT_ADDR     pRetVal,          /* value read back */
>         UINT32 *      pFlags            /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to identify whether the device register is present and is available.

#### RETURNS

> OK on success, or ERROR if register is not present or unavailable

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciRegisterRead8( )

#### NAME

> pciRegisterRead8( ) - read 8-bit value from a register

#### SYNOPSIS

>     STATUS pciRegisterRead8
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to read 8-bits from a PCI device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciRegisterRead16( )

#### NAME

> pciRegisterRead16( ) - read 16-bit value from a register

#### SYNOPSIS

>     STATUS pciRegisterRead16
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to read 16-bits from a PCI device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciRegisterRead32( )

#### NAME

> pciRegisterRead32( ) - read 32-bit value from a register

#### SYNOPSIS

>     STATUS pciRegisterRead32
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to read 32-bits from a PCI device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciRegisterRead64( )

#### NAME

> pciRegisterRead64( ) - read 64-bit value from a register

#### SYNOPSIS

>     STATUS pciRegisterRead64
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to put data in */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to read 64-bits from a PCI device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciRegisterWrite8( )

#### NAME

> pciRegisterWrite8( ) - write 8-bits to a register

#### SYNOPSIS

>     STATUS pciRegisterWrite8
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* data to write */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to write 8-bits to a PCI device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciRegisterWrite16( )

#### NAME

> pciRegisterWrite16( ) - write 16-bits to a register

#### SYNOPSIS

>     STATUS pciRegisterWrite16
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* data to write */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to write 16-bits to a PCI device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciRegisterWrite32( )

#### NAME

> pciRegisterWrite32( ) - write 32-bits to a register

#### SYNOPSIS

>     STATUS pciRegisterWrite32
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* data to write */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to write 32-bits to a PCI device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciRegisterWrite64( )

#### NAME

> pciRegisterWrite64( ) - write 64-bits to a register

#### SYNOPSIS

>     STATUS pciRegisterWrite64
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* data to write */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used by the driver to write 64-bits to a PCI device register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciVolatileRegisterWrite( )

#### NAME

> pciVolatileRegisterWrite( ) - write to a volatile register

#### SYNOPSIS

>     STATUS pciVolatileRegisterWrite
>         (
>         VXB_DEVICE_ID pDevInfo,         /* device info */
>         void *        pRegBase,         /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,       /* offset, in bytes, of register */
>         UINT32        transactionSize,  /* transaction size, in bytes*/
>         VIRT_ADDR     pDataBuf,         /* buffer to read-from/write-to */
>         UINT32 *      pFlags            /* flags */
>         )

#### DESCRIPTION

> This routine is used to write to a volatile register and read back the data from the volatile register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciVolatileRegisterRead( )

#### NAME

> pciVolatileRegisterRead( ) - read from a volatile register

#### SYNOPSIS

>     STATUS pciVolatileRegisterRead
>         (
>         VXB_DEVICE_ID pDevInfo,         /* device info */
>         void *        pRegBase,         /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,       /* offset, in bytes, of register */
>         UINT32        transactionSize,  /* transaction size, in bytes */
>         VIRT_ADDR     pDataBuf,         /* buffer to read-from */
>         UINT32 *      pFlags            /* flags */
>         )

#### DESCRIPTION

> This routine is used to read from a volatile register. This function does not split the read into multiple transactions.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciVolatileRegisterWrite8( )

#### NAME

> pciVolatileRegisterWrite8( ) - write 8-bits to a volatile register

#### SYNOPSIS

>     STATUS pciVolatileRegisterWrite8
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT8 *       pDataBuf,    /* buffer to read-from/write-to */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used to write 8-bits and subsequently read back the 8-bits from the volatile register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciVolatileRegisterWrite16( )

#### NAME

> pciVolatileRegisterWrite16( ) - write 16-bits to a volatile register

#### SYNOPSIS

>     STATUS pciVolatileRegisterWrite16
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT16 *      pDataBuf,    /* buffer to read-from/write-to */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used to write 16-bits and subsequently read back the 16-bits from the volatile register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciVolatileRegisterWrite32( )

#### NAME

> pciVolatileRegisterWrite32( ) - write 32-bits to a volatile register

#### SYNOPSIS

>     STATUS pciVolatileRegisterWrite32
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT32 *      pDataBuf,    /* buffer to read-from/write-to */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used to write 32-bits and subsequently read back the 32-bits from the volatile register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciVolatileRegisterWrite64( )

#### NAME

> pciVolatileRegisterWrite64( ) - write 64-bits to a volatile register

#### SYNOPSIS

>     STATUS pciVolatileRegisterWrite64
>         (
>         VXB_DEVICE_ID pDevInfo,    /* device info */
>         void *        pRegBase,    /* VXB_DEVICE::pRegBase[] entry */
>         UINT32        byteOffset,  /* offset, in bytes, of register */
>         UINT64 *      pDataBuf,    /* buffer to read-from/write-to */
>         UINT32 *      pFlags       /* flags */
>         )

#### DESCRIPTION

> This routine is used to write 64-bits and subsequently read back the 64-bits from the volatile register.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciDevControl( )

#### NAME

> pciDevControl( ) - perform device control operations

#### SYNOPSIS

>     STATUS pciDevControl
>         (
>         VXB_DEVICE_ID   devID,          /* device info */
>         pVXB_DEVCTL_HDR pBusDevControl  /* parameter */
>         )

#### DESCRIPTION

> This routine is used to perform device control operations which are not covered as part of function pointers.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciBusIntEnable( )

#### NAME

> pciBusIntEnable( ) - enable a PCI device interrupt

#### SYNOPSIS

>     STATUS pciBusIntEnable
>         (
>         VXB_DEVICE_ID              pDevInfo,     /* device info */
>         pVXB_ACCESS_INTERRUPT_INFO pPciIntrInfo  /* interrupt info */
>         )

#### DESCRIPTION

> This routine enables interrupts along the path from the device to the processor.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciBusIntDisable( )

#### NAME

> pciBusIntDisable( ) - disable a PCI device interrupt

#### SYNOPSIS

>     STATUS pciBusIntDisable
>         (
>         VXB_DEVICE_ID              pDevInfo,     /* device info */
>         pVXB_ACCESS_INTERRUPT_INFO pPciIntrInfo  /* interrupt info */
>         )

#### DESCRIPTION

> This routine disables interrupts along the path from the device to the processor.

#### RETURNS

> ERROR, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciBusIntAcknowledge( )

#### NAME

> pciBusIntAcknowledge( ) - acknowledge and clear an interrupt

#### SYNOPSIS

>     STATUS pciBusIntAcknowledge
>         (
>         VXB_DEVICE_ID              pDevInfo,     /* device info */
>         pVXB_ACCESS_INTERRUPT_INFO pPciIntrInfo  /* interrupt info */
>         )

#### DESCRIPTION

> This routine acknowledges and clears an interrupt on the interrupt controller. It does not clear the interrupt on the device.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciBusIntConnect( )

#### NAME

> pciBusIntConnect( ) - connect an ISR to the device interrupt

#### SYNOPSIS

>     STATUS pciBusIntConnect
>         (
>         VXB_DEVICE_ID              pDevInfo,     /* device info */
>         pVXB_ACCESS_INTERRUPT_INFO pPciIntrInfo  /* interrupt info */
>         )

#### DESCRIPTION

> This routine connects an ISR to the device interrupt.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciBusIntDisconnect( )

#### NAME

> pciBusIntDisconnect( ) - disconnect an ISR to the device interrupt

#### SYNOPSIS

>     STATUS pciBusIntDisconnect
>         (
>         VXB_DEVICE_ID              pDevInfo,     /* device info */
>         pVXB_ACCESS_INTERRUPT_INFO pPciIntrInfo  /* interrupt info */
>         )

#### DESCRIPTION

> This routine disconnects an ISR from the device interrupt.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciBusIntVectorGet( )

#### NAME

> pciBusIntVectorGet( ) - get interrupt vector information

#### SYNOPSIS

>     STATUS pciBusIntVectorGet
>         (
>         VXB_DEVICE_ID              pDevInfo,       /* device info */
>         pVXB_ACCESS_INT_VECTOR_GET pPciIntVecInfo  /* interrupt info */
>         )

#### DESCRIPTION

> This routine retrieves the interrupt vector information based on the index value.

#### RETURNS

> OK on success, or ERROR otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbPciBusTypeInit( )

#### NAME

> vxbPciBusTypeInit( ) - initialize the PCI bus type

#### SYNOPSIS

>     STATUS vxbPciBusTypeInit
>         (
>         struct vxbDev * pDev
>         )

#### DESCRIPTION

> none

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbPciAccessCopy( )

#### NAME

> vxbPciAccessCopy( ) - copy access function pointers

#### SYNOPSIS

>     void vxbPciAccessCopy
>         (
>         struct vxbAccessList *pAccess
>         )

#### DESCRIPTION

> This routine copies the access function pointers.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciRegister( )

#### NAME

> pciRegister( ) - register PCI bus type

#### SYNOPSIS

>     STATUS pciRegister(void)

#### DESCRIPTION

> This routine registers the PCI bus type with the vxBus subsystem.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciHcfRecordFind( )

#### NAME

> pciHcfRecordFind( ) - find device's HCF pciSlot record

#### SYNOPSIS

>     HCF_DEVICE * pciHcfRecordFind
>         (
>         int pciBus,    /* PCI Bus number */
>         int pciDevice  /* PCI device number */
>         )

#### DESCRIPTION

> This routine finds HCF pciSlot record for the specified bus and device.

#### RETURNS

> Pointer to record, or NULL

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciIntrInfoFind( )

#### NAME

> pciIntrInfoFind( ) - find device interrupt information

#### SYNOPSIS

>     void pciIntrInfoFind
>         (
>         struct vxbDev *       pDev,    /* Device information */
>         struct vxbPciDevice * pPciDev  /* Don't think this is needed. Can get from pDev */
>         )

#### DESCRIPTION

> This routine finds interrupt information for specified device.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciDevMatch( )

#### NAME

> pciDevMatch( ) - check whether device and driver go together

#### SYNOPSIS

>     BOOL pciDevMatch
>         (
>         struct vxbDevRegInfo * pDriver,  /* Pointer to device driver */
>         struct vxbDev *        pDev      /* Device information */
>         )

#### DESCRIPTION

> This routine checks that the specified device and device driver are a matched pair.

#### RETURNS

> TRUE if the device and driver match, FALSE otherwise

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciInit( )

#### NAME

> pciInit( ) - first-pass bus type initialization

#### SYNOPSIS

>     STATUS pciInit1(void)

#### DESCRIPTION

> This function currently does nothing.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciInit2( )

#### NAME

> pciInit2( ) - second-pass bus type initialization

#### SYNOPSIS

>     STATUS pciInit2(void)

#### DESCRIPTION

> This function currently does nothing.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciConnect( )

#### NAME

> pciConnect( ) - connect PCI bus type to bus subsystem

#### SYNOPSIS

>     STATUS pciConnect(void)

#### DESCRIPTION

> This function currently does nothing.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciDeviceAnnounce( )

#### NAME

> pciDeviceAnnounce( ) - notify the bus subsystem of a device on PCI

#### SYNOPSIS

>     STATUS pciDeviceAnnounce
>         (
>         UINT8  bus,   /* PCI bus number */
>         UINT8  dev,   /* PCI device number */
>         UINT8  func,  /* PCI function number */
>         void * pArg   /* pDev */
>         )

#### DESCRIPTION

> This routine tells the vxBus subsystem that a PCI device has been found on the PCI bus.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciBusAnnounceDevices( )

#### NAME

> pciBusAnnounceDevices( ) - Notify the bus subsystem of all devices on PCI

#### SYNOPSIS

>     void pciBusAnnounceDevices
>         (
>         struct vxbAccessList * pArg,
>         struct vxbDev *        pDev,
>         void *                 pCookie
>         )

#### DESCRIPTION

> none

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pciDevShow( )

#### NAME

> pciDevShow( ) - show information about PCI device

#### SYNOPSIS

>     void pciDevShow
>         (
>         struct vxbDev * pDev  /* Device information */
>         )

#### DESCRIPTION

> none

#### RETURNS

> OK, or ERROR if there's an error

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciRegister( )

#### NAME

> pentiumPciRegister( ) - register Pentium PCI host bridge device driver

#### SYNOPSIS

>     void pentiumPciRegister (void)

#### DESCRIPTION

> This routine registers the Pentium PCI host bridge with vxbus subsystem.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciMmuMapAdd( )

#### NAME

> pentiumPciMmuMapAdd( ) - memory map sysPhysMemDesc

#### SYNOPSIS

>     STATUS pentiumPciMmuMapAdd
>         (
>         void * address,           /* memory region base address */
>         UINT   length,            /* memory region length in bytes*/
>         UINT   initialStateMask,  /* PHYS_MEM_DESC state mask */
>         UINT   initialState       /* PHYS_MEM_DESC state */
>         )

#### DESCRIPTION

> This routine adds memory mappings to sysPhysMemDesc.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciPhysMemHandle( )

#### NAME

> pentiumPciPhysMemHandle( ) - configure PCI memory for a device

#### SYNOPSIS

>     STATUS pentiumPciPhysMemHandle
>         (
>         int    bus,   /* Bus number */
>         int    dev,   /* Device number */
>         int    func,  /* Function number */
>         void * pArg   /* Argument */
>         )

#### DESCRIPTION

> This routine maps memory for the specified PCI device.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciPhysMemShow( )

#### NAME

> pentiumPciPhysMemShow( ) - display sysPhysMemDesc entries

#### SYNOPSIS

>     void pentiumPciPhysMemShow (void)

#### DESCRIPTION

> This routine displays the sysPhysMemDesc[] entries.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciInstInit( )

#### NAME

> pentiumPciInstInit( ) - create a Pentium PCI host bridge instance

#### SYNOPSIS

>     void pentiumPciInstInit
>         (
>         struct vxbDev * pDev  /* device info */
>         )

#### DESCRIPTION

> This routine initialize the Pentium PCI host bridge instance.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciInstInit2( )

#### NAME

> pentiumPciInstInit2( ) - second stage Pentium PCI host bridge device connection

#### SYNOPSIS

>     void pentiumPciInstInit2
>         (
>         struct vxbDev * pDev
>         )

#### DESCRIPTION

> This is for a bus bridge, and it should already be configured by the first phase (instance creation) of device configuration. We don't need to do anything during this phase.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciInstConnect( )

#### NAME

> pentiumPciInstConnect( ) - third stage Pentium PCI host bridge device connection

#### SYNOPSIS

>     void pentiumPciInstConnect
>         (
>         struct vxbDev * pDev
>         )

#### DESCRIPTION

> This is for a bus bridge, and it should already be configured.

#### TODO

> resource allocation cleanup.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# sysPciHostBridgeInit( )

#### NAME

> sysPciHostBridgeInit( ) - initialize the PCI Host Bridge

#### SYNOPSIS

>     STATUS sysPciHostBridgeInit (void)

#### DESCRIPTION

> This routine initializes the PCI Host Bridge.

#### RETURNS

> OK, always

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciMethodCfgRead( )

#### NAME

> pentiumPciMethodCfgRead( ) - method for reading from configuration space

#### SYNOPSIS

>     STATUS pentiumPciMethodCfgRead
>         (
>         VXB_DEVICE_ID pDev,             /* device info */
>         int           bus,              /* bus number */
>         int           dev,              /* device number */
>         int           func,             /* function number */
>         UINT32        byteOffset,       /* offset into cfg space */
>         UINT32        transactionSize,  /* transaction size, in bytes */
>         VIRT_ADDR     pDataBuf,         /* buffer to read-from/write-to */
>         UINT32 *      pFlags            /* flags */
>         )

#### DESCRIPTION

> This is the method for reading from the configuration space.

#### RETURNS

> OK on success, ERROR otherwise

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciMethodCfgWrite( )

#### NAME

> pentiumPciMethodCfgWrite( ) - method for writing to configuration space

#### SYNOPSIS

>     STATUS pentiumPciMethodCfgWrite
>         (
>         VXB_DEVICE_ID pDev,             /* device info */
>         int           bus,              /* bus number */
>         int           dev,              /* device number */
>         int           func,             /* function number */
>         UINT32        byteOffset,       /* offset into cfg space */
>         UINT32        transactionSize,  /* transaction size, in bytes */
>         VIRT_ADDR     pDataBuf,         /* buffer to read-from/write-to */
>         UINT32 *      pFlags            /* flags */
>         )

#### DESCRIPTION

> This is the method for writing to configuration space.

#### RETURNS

> OK on success, ERROR otherwise

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciCfgRead( )

#### NAME

> pentiumPciCfgRead( ) - access method for reading configuration space

#### SYNOPSIS

>     STATUS pentiumPciCfgRead
>         (
>         struct vxbDev * pDev,             /* device info */
>         UINT32          byteOffset,       /* offset into cfg space */
>         UINT32          transactionSize,  /* transaction size, in bytes */
>         VIRT_ADDR       pDataBuf,         /* buffer to read-from/write-to */
>         UINT32 *        pFlags            /* flags */
>         )

#### DESCRIPTION

> This routine reads data from PCI configuration space with the size defined by transaction size.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciCfgWrite( )

#### NAME

> pentiumPciCfgWrite( ) - access method for writing configuration space

#### SYNOPSIS

>     STATUS pentiumPciCfgWrite
>         (
>         struct vxbDev * pDev,             /* device info */
>         UINT32          byteOffset,       /* offset into cfg space */
>         UINT32          transactionSize,  /* transaction size, in bytes */
>         VIRT_ADDR       pDataBuf,         /* buffer to read-from/write-to */
>         UINT32 *        pFlags            /* flags */
>         )

#### DESCRIPTION

> This routine writes data to PCI configuration space with a size defined by transactionSize.

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciAccessMethodOverride( )

#### NAME

> pentiumPciAccessMethodOverride( ) - method for overriding access routines

#### SYNOPSIS

>     STATUS pentiumPciAccessMethodOverride
>         (
>         VXB_DEVICE_ID     devID,   /* Device info */
>         VXB_ACCESS_LIST * pAccess  /* access structure pointer */
>         )

#### DESCRIPTION

> none

#### RETURNS

> OK, or ERROR

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciDevControl( )

#### NAME

> pentiumPciDevControl( ) -

#### SYNOPSIS

>     STATUS pentiumPciDevControl
>         (
>         VXB_DEVICE_ID   devID,          /* device info */
>         pVXB_DEVCTL_HDR pBusDevControl  /* parameter */
>         )

#### DESCRIPTION

> none

#### RETURNS

> OK, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# pentiumPciBusDevGet( )

#### NAME

> pentiumPciBusDevGet( ) - find bus controller

#### SYNOPSIS

>     struct vxbDev * pentiumPciBusDevGet
>         (
>         struct vxbDev * pDev  /* device info */
>         )

#### DESCRIPTION

> none

#### RETURNS

> a pointer to the pDev structure for the Pentium PCI bus controller

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sioNextChannelNumberAssign( )

#### NAME

> sioNextChannelNumberAssign( ) - assign a new serial channel number

#### SYNOPSIS

>     int sioNextChannelNumberAssign(void)

#### DESCRIPTION

> This routine assigns the next serial channel number available.

#### RETURNS

> assigned channel number.

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# sysSerialChanGet( )

#### NAME

> sysSerialChanGet( ) - get the SIO_CHAN device associated with a serial channel

#### SYNOPSIS

>     SIO_CHAN * sysSerialChanGet
>         (
>         int sioChan
>         )

#### DESCRIPTION

> This routine returns a pointer to the SIO_CHAN device associated with a specified serial channel. It is called by usrRoot( ) to obtain pointers when creating the system serial devices, /tyCo/x. It is also used by the WDB agent to locate its serial channel.

> This routine first checks for BSP-supplied serial channels, then queries the bus subsystem for a serial channel matching the specified channel number.

#### RETURNS

> pointer to the SIO_CHAN structure for the channel, or ERROR if an invalid channel

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# sysSerialChanConnect( )

#### NAME

> sysSerialChanConnect( ) - connect the SIO_CHAN device

#### SYNOPSIS

>     STATUS sysSerialChanConnect
>         (
>         int sioChan
>         )

#### DESCRIPTION

> This routine connects the specified serial channel to the I/O system.

> This routine first checks for BSP-supplied serial channels. For BSP-supplied serial channels, this routine does nothing. If the specified channel number is not supplied by the BSP, then this routine runs the connect method on the appropriate serial device instance.

#### RETURNS

> OK if the specified channel can be connected, or ERROR

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# sysSerialConnectAll( )

#### NAME

> sysSerialConnectAll( ) - connect all SIO_CHAN devices

#### SYNOPSIS

>     void sysSerialConnectAll(void)

#### DESCRIPTION

> This routine connects all serial channel to the I/O system.

> This routine first checks for BSP-supplied serial channels. For BSP-supplied serial channels, this routine does nothing. If the specified channel number is not supplied by the BSP, then this routine runs the connect method for all serial device instances.

#### RETURNS

> N/A

#### ERRNO

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbInstParamSet( )

#### NAME

> vxbInstParamSet( ) - set driver parameter for specified instance

#### SYNOPSIS

>     STATUS vxbInstParamSet
>         (
>         VXB_DEVICE_ID          pInst,
>         char *                 paramName,
>         UINT32                 paramType,
>         VXB_INST_PARAM_VALUE * value
>         )

#### DESCRIPTION

> This routine provides a programmatic API for middleware modules to set a parameter for a specific instance.

> The instance is identified by a VXB_DEVICE_ID.

> The parameter consists of three fields: parameter value, parameter name, and parameter type. The parameter name is specific to the driver. The supported parameter types of storage are unsigned integer 32, unsigned integer 64, character string, function pointer, and generic "void" pointer.

> Note that when 64-bit values are specified, the value must be specified with a pointer. That is, value is interpreted in that case as "UINT64 * pValue" rather than as "UINT64 value".

> This routine should not be used from any BSP code, but only by application or middleware code. Parameter setting in the BSP should be done in the BSP-resident parameter override table.

#### RETURNS

> OK, or ERROR if the specified parameter could not be set for the instance

#### ERRNO

> N/A

#### SEE ALSO

> sysLib

API Reference: Routines

# _vxbInstRetrieve( )

#### NAME

> _vxbInstRetrieve( ) - retrieve the VXB_DEVICE_ID for an instance

#### SYNOPSIS

>     STATUS _vxbInstRetrieve
>         (
>         VXB_DEVICE_ID pInst,
>         void *        pArg
>         )

#### DESCRIPTION

> This helper routine stores the instance ID in the argument.

#### RETURNS

> OK, always

#### ERRNO

> N/A

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbInstByNameFind( )

#### NAME

> vxbInstByNameFind( ) - retrieve the VXB_DEVICE_ID for an instance

#### SYNOPSIS

>     VXB_DEVICE_ID vxbInstByNameFind
>         (
>         char * instName,
>         int    unit
>         )

#### DESCRIPTION

> This routine returns the VXB_DEVICE_ID for a given instance identified by name and unit number.

#### RETURNS

> VXB_DEVICE_ID for the instance, or NULL if no instance is found

#### ERRNO

> N/A

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbInstParamByNameGet( )

#### NAME

> vxbInstParamByNameGet( ) - retrieve driver parameter value

#### SYNOPSIS

>     STATUS vxbInstParamByNameGet
>         (
>         VXB_DEVICE_ID          pInst,
>         char *                 paramName,
>         UINT32                 paramType,
>         VXB_INST_PARAM_VALUE * pValue
>         )

#### DESCRIPTION

> This routine retrieves the value of a parameter specified by name.

> The driver calls this routine to find the parameter value associated with a given named parameter for the specified instance.

> The parsonage and paramType specify the name and type of the parameter whose value is to be found. The pValue field points to pre-allocated storage. When called, vxbInstParamByNameGet( ) fills in the value into the memory pointed to by pValue.

#### RETURNS

> OK, or ERROR if no parameter of that name exists

#### ERRNO

> N/A

#### SEE ALSO

> sysLib

API Reference: Routines

# vxbInstParamByIndexGet( )

#### NAME

> vxbInstParamByIndexGet( ) - retrieve driver parameter value

#### SYNOPSIS

>     STATUS vxbInstParamByIndexGet
>         (
>         VXB_DEVICE_ID          pInst,
>         int                    paramIndex,
>         VXB_INST_PARAM_VALUE * pValue
>         )

#### DESCRIPTION

> This routine retrieves the value of a parameter specified by index.

> The driver calls this routine to find the parameter value at a specified offset into the parameter table.

> The pvc field points to pre-allocated storage. When called, vxbInstParamByIndexGet( ) fills in the value into the memory pointed to by pValue.

#### RETURNS

> OK, or ERROR if no default parameter table has been registered

#### ERRNO

> N/A

#### SEE ALSO

> sysLib

API Reference: Routines

# hardWareInterFaceBusInit( )

#### NAME

> hardWareInterFaceBusInit( ) -

#### SYNOPSIS

>     void hardWareInterFaceBusInit (void)

#### DESCRIPTION

> none

#### RETURNS

> Not Available

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# hardWareInterFaceInit( )

#### NAME

> hardWareInterFaceInit( ) - Hardware Interface Pre-Kernel Initialization

#### SYNOPSIS

>     void hardWareInterFaceInit (void)

#### DESCRIPTION

> none

#### RETURNS

> Not Available

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysModel( )

#### NAME

> sysModel( ) - return the model name of the CPU board

#### SYNOPSIS

>     char *sysModel (void)

#### DESCRIPTION

> This routine returns the model name of the CPU board.

#### RETURNS

> A pointer to the string "PC 386, 486, PENTIUM or PENTIUM[234]".

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysBspRev( )

#### NAME

> sysBspRev( ) - return the BSP version and revision number

#### SYNOPSIS

>     char * sysBspRev (void)

#### DESCRIPTION

> This routine returns a pointer to a BSP version and revision number, for example, 1.1/0. BSP_REV is concatenated to BSP_VERSION and returned.

#### RETURNS

> A pointer to the BSP version/revision string.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysHwInit( )

#### NAME

> sysHwInit( ) - initialize the system hardware

#### SYNOPSIS

>     void sysHwInit (void)

#### DESCRIPTION

> This routine initializes various features of the i386/i486 board. It is called from usrInit( ) in usrConfig.c.

#### NOTE

> This routine should not be called directly by the user application.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysHwInit2( )

#### NAME

> sysHwInit2( ) - additional system configuration and initialization

#### SYNOPSIS

>     void sysHwInit2 (void)

#### DESCRIPTION

> This routine connects system interrupts and does any additional configuration necessary.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysPhysMemTop( )

#### NAME

> sysPhysMemTop( ) - get the address of the top of physical memory

#### SYNOPSIS

>     char * sysPhysMemTop (void)

#### DESCRIPTION

> This routine returns the address of the first missing byte of memory, which indicates the top of physical memory.

#### RETURNS

> The address of the top of physical memory.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysMemTop( )

#### NAME

> sysMemTop( ) - get the address of the top of VxWorks memory

#### SYNOPSIS

>     char * sysMemTop (void)

#### DESCRIPTION

> This routine returns a pointer to the first byte of memory not controlled or used by VxWorks.

> The user can reserve memory space by defining the macro USER_RESERVED_MEM in config.h. This routine returns the address of the reserved memory area. The value of USER_RESERVED_MEM is in bytes.

#### RETURNS

> The address of the top of VxWorks memory.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysToMonitor( )

#### NAME

> sysToMonitor( ) - transfer control to the ROM monitor

#### SYNOPSIS

>     STATUS sysToMonitor
>         (
>         int startType  /* passed to ROM to tell it how to boot */
>         )

#### DESCRIPTION

> This routine transfers control to the ROM monitor. It is usually called only by reboot( ) -- which services ^X -- and by bus errors at interrupt level. However, in some circumstances, the user may wish to introduce a new startType to enable special boot ROM facilities.

#### RETURNS

> Does not return.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysIntInitPIC( )

#### NAME

> sysIntInitPIC( ) - initialize the interrupt controller

#### SYNOPSIS

>      void sysIntInitPIC (void)

#### DESCRIPTION

> This routine initializes the interrupt controller.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysIntLock( )

#### NAME

> sysIntLock( ) - lock out all interrupts

#### SYNOPSIS

>     VOID sysIntLock (void)

#### DESCRIPTION

> This routine saves the mask and locks out all interrupts.

#### RETURNS

> Not Available

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysIntUnlock( )

API Reference: Routines

# sysIntUnlock( )

#### NAME

> sysIntUnlock( ) - unlock the PIC interrupts

#### SYNOPSIS

>     VOID sysIntUnlock (void)

#### DESCRIPTION

> This routine restores the mask and unlocks the PIC interrupts

#### RETURNS

> Not Available

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysIntLock( )

API Reference: Routines

# sysIntDisablePIC( )

#### NAME

> sysIntDisablePIC( ) - disable a bus interrupt level

#### SYNOPSIS

>     STATUS sysIntDisablePIC
>         (
>         int irqNo  /* IRQ(PIC) or INTIN(APIC) number to disable */
>         )

#### DESCRIPTION

> This routine disables a specified bus interrupt level.

#### RETURNS

> OK, or ERROR if failed.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysIntEnablePIC( )

#### NAME

> sysIntEnablePIC( ) - enable a bus interrupt level

#### SYNOPSIS

>     STATUS sysIntEnablePIC
>         (
>         int irqNo  /* IRQ(PIC) or INTIN(APIC) number to enable */
>         )

#### DESCRIPTION

> This routine enables a specified bus interrupt level.

#### RETURNS

> OK, or ERROR if failed.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysIntEoiGet( )

#### NAME

> sysIntEoiGet( ) - get EOI/BOI function and its parameter

#### SYNOPSIS

>     void sysIntEoiGet
>         (
>         VOIDFUNCPTR * vector,        /* interrupt vector to attach to */
>         VOIDFUNCPTR * routineBoi,    /* BOI function */
>         int *         parameterBoi,  /* a parameter of the BOI function */
>         VOIDFUNCPTR * routineEoi,    /* EOI function */
>         int *         parameterEoi   /* a parameter of the EOI function */
>         )

#### DESCRIPTION

> This routine gets EOI function and its parameter for the interrupt controller. If returned EOI/BOI function is NULL, intHandlerCreateX86( ) replaces "call _routineBoi/Eoi" in intConnectCode[] with NOP instruction.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysIntLevel( )

#### NAME

> sysIntLevel( ) - get an IRQ(PIC) or INTIN(APIC) number in service

#### SYNOPSIS

>     int sysIntLevel
>         (
>         int arg  /* parameter to get the stack pointer */
>         )

#### DESCRIPTION

> This routine gets an IRQ(PIC) or INTIN(APIC) number in service. We assume the following:
> - this function is called in intEnt( )
> - IRQ number of the interrupt is at intConnectCode [29]

#### RETURNS

> 0 - (sysInumTblNumEnt - 1), or sysInumTblNumEnt if we failed to get it.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysProcNumGet( )

#### NAME

> sysProcNumGet( ) - get the processor number

#### SYNOPSIS

>     int sysProcNumGet (void)

#### DESCRIPTION

> This routine returns the processor number for the CPU board, which is set with sysProcNumSet( ).

#### RETURNS

> The processor number for the CPU board.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysProcNumSet( )

API Reference: Routines

# sysProcNumSet( )

#### NAME

> sysProcNumSet( ) - set the processor number

#### SYNOPSIS

>     void sysProcNumSet
>         (
>         int procNum  /* processor number */
>         )

#### DESCRIPTION

> Set the processor number for the CPU board. Processor numbers should be unique on a single backplane.

#### NOTE

> By convention, only Processor 0 should dual-port its memory.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, sysProcNumGet( )

API Reference: Routines

# sysDelay( )

#### NAME

> sysDelay( ) - allow recovery time for port accesses

#### SYNOPSIS

>     void sysDelay (void)

#### DESCRIPTION

> This routine provides a brief delay used between accesses to the same serial port chip.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysUsDelay( )

#### NAME

> sysUsDelay( ) - delay specified number of microseconds

#### SYNOPSIS

>     void sysUsDelay
>         (
>         int uSec
>         )

#### DESCRIPTION

> This routine provides a brief delay used between accesses to the same serial port chip.

#### RETURNS

> N/A

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysStrayInt( )

#### NAME

> sysStrayInt( ) - Do nothing for stray interrupts.

#### SYNOPSIS

>      void sysStrayInt (void)

#### DESCRIPTION

> Do nothing for stray interrupts.

#### RETURNS

> Not Available

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib

API Reference: Routines

# sysMmuMapAdd( )

#### NAME

> sysMmuMapAdd( ) - insert a new MMU mapping

#### SYNOPSIS

>     STATUS sysMmuMapAdd
>         (
>         void * address,           /* memory region base address */
>         UINT   length,            /* memory region length in bytes*/
>         UINT   initialStateMask,  /* PHYS_MEM_DESC state mask */
>         UINT   initialState       /* PHYS_MEM_DESC state */
>         )

#### DESCRIPTION

> This routine will create a new sysPhysMemDesc table entry for a memory region of specified length in bytes and with a specified base address. The initialStateMask and initialState parameters specify a PHYS_MEM_DESC type state mask and state for the memory region.

#### CAVEATS

> This routine must be used before the sysPhysMemDesc table is referenced for the purpose of initializing the MMU or processor address space (us. in usrMmuInit( )).

> The length in bytes will be rounded up to a multiple of VM_PAGE_SIZE bytes if necessary.

> The current implementation assumes a one-to-one mapping of physical to virtual addresses.

#### RETURNS

> OK or ERROR depending on availability of free mappings.

#### ERRNO

> Not Available

#### SEE ALSO

> sysLib, vmLib