VxWorks BSP Reference : ebony

sysLib [ebony]

NAME

sysLib [ebony] - IBM 440GP Ebony system-dependent routines

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
sysUicIntrInit( ) - initialize the UIC interrupt facility
sysUicIntHandler( ) - UIC external interrupt handler
sysClkConnect( ) - connect a routine to the system clock interrupt
sysClkEnable( ) - turn on system clock interrupts
sysClkDisable( ) - turn off system clock interrupts
sysClkRateGet( ) - get the system clock rate
sysClkRateSet( ) - set the system clock rate
sysAuxClkConnect( ) - connect a routine to the auxiliary clock interrupt
sysAuxClkEnable( ) - turn on auxiliary clock interrupts
sysAuxClkDisable( ) - turn off auxiliary clock interrupts
sysAuxClkRateGet( ) - get the auxiliary clock rate
sysAuxClkRateSet( ) - set the auxiliary clock rate
sysWdtConnect( ) - connect a routine to the watchdog interrupt
sysWdtEnable( ) - turn on watchdog interrupts
sysWdtDisable( ) - turn off watchdog interrupts
sysWdtRateGet( ) - get the watchdog timer rate
sysWdtRateSet( ) - set the watchdog timer rate
sysTimestampConnect( ) - connect a user routine to a timestamp timer interrupt
sysTimestampEnable( ) - initialize and enable a timestamp timer
sysTimestampDisable( ) - disable a timestamp timer
sysTimestampPeriod( ) - get a timestamp timer period
sysTimestampFreq( ) - get a timestamp timer clock frequency
sysTimestamp( ) - get a timestamp timer tick count
sysTimestampLock( ) - lock an interrupt and get a timestamp timer tick count
sysSerialHwInit( ) - initialize the BSP serial devices to a quiescent state
sysSerialHwInit2( ) - connect BSP serial device interrupts
sysSerialChanGet( ) - get the SIO_CHAN device associated with a serial channel
pciConfigLibInit( ) - initialize the configuration access-method and addresses
pciFindDevice( ) - find the nth device with the given device & vendor ID
pciFindClass( ) - find the nth occurence 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
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.
pciDeviceShow( ) - print information about PCI devices
pciHeaderShow( ) - print a header of the specified PCI device
pciFindDeviceShow( ) - find a device by deviceId, then print an information.
pciFindClassShow( ) - find a device by 24-bit class code
pciConfigStatusWordShow( ) - show the decoded value of the status word
pciConfigCmdWordShow( ) - show the decoded value of the command word
pciConfigFuncShow( ) - show configuration details about a function
pciConfigTopoShow( ) - show PCI topology
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.
pciAutoAddrAlign( ) - Align a PCI address and check boundary conditions.
pciAutoConfig( ) - Automatically configure all nonexcluded PCI headers. Obsolete.
sysPciAutoConfig( ) - PCI autoConfig support routine
ibmPciConfigWrite( ) - Write to one PCI configuration register location of the
ibmPciConfigRead( ) - Reads one PCI configuration space register of the specified
ibmPciSpecialCycle( ) - Generates a PCI special cycle on the PCI bus.
sysPciHostBridgeInit( ) - Initialize the PCI-X Host Bridge
sysNetHwInit( ) - initialize the network interface
sysNetHwInit2( ) - initialize additional features of the network interface
sysIbmEmacEndBldLoadStr( ) - builds the ibmEmacEndLoad parameter string
sysLanIbmEmacEnable( ) - enable the LAN interrupt
sysLanIbmEmacIntDisable( ) - disable the LAN interrupt
sysLanIbmEmacEnetAddrGet( ) - get the IBM EMAC Ethernet controller's MAC address
zmiiSetSpeed( ) - set the ZMII_SSR register for proper EMAC clocking
zmiiSetMDI( ) - set the ZMII_FER[MDI] interface for proper PHY communication
ibmEmacEndLoad( ) - initialize the driver and device
ibmEmacInitParse( ) - parse the initialization string
clockOutByte( ) - writes one of the real time clock registers
clockInByte( ) - reads one of the real time clock registers
rtcDrv( ) - adding the driver to the driver system
rtcDevCreate( ) - create a device for the real time clock
rtcDateSet( ) - set the date
rtcDateGet( ) - get the date
rtcTimeSet( ) - set the time
rtcTimeGet( ) - get the time
rtcClockStop( ) - stop the real time clock
rtcClockStart( ) - start the real time clock
sysModel( ) - return the model name of the CPU board
sysBspRev( ) - return the BSP version and revision number
sysHwInit( ) - initialize the system hardware
sysHwInit2( ) - initialize additional system hardware
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
sysProcNumGet( ) - get the processor number
sysProcNumSet( ) - set the processor number
sysIntLockLevelSet( ) - set the current interrupt lock-out level
sysInByte( ) - read one byte from an I/O address
sysOutByte( ) - write one byte to an I/O address
sysLocalDelay( ) - delay of ms_delay milliseconds used before kernel is up
sysInfoGet( ) - Determines system information (clock frequencies, etc.) based
sysInfoShow( ) - Shows system information (clock frequencies, etc.) based on
sysZmiiReadMode( ) - Get the mode the ZMII core should be set to based on
sysEccIntr( ) - DDR SDRAM ECC error interrupt handler
sysEccInit( ) - intialize the DDR SDRAM ECC error interrupt handler

DESCRIPTION

This library provides board-specific routines. The chip drivers included are:

    uicIntr.c - on-chip Universal Interrupt Controller library
    d1643RTC.c - driver for the real time clock portion of the
        Dallas Semiconductor DS1643 Nonvolative Timekeeping RAM

INCLUDE FILES

sysLib.h

SEE ALSO

VxWorks Programmer's Guide: Configuration


ebony : 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.

SEE ALSO

sysLib, sysNvRamSet( )


ebony : 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.

SEE ALSO

sysLib, sysNvRamGet( )


ebony : 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.

SEE ALSO

sysLib, sysBusToLocalAdrs( )


ebony : 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.

SEE ALSO

sysLib, sysLocalToBusAdrs( )


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib, sysMailboxEnable( )


ebony : Routines

sysMailboxEnable( )

NAME

sysMailboxEnable( ) - enable the mailbox interrupt

SYNOPSIS

STATUS sysMailboxEnable
    (
    INT8 * 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.

SEE ALSO

sysLib, sysMailboxConnect( )


ebony : Routines

sysBusTas( )

NAME

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

SYNOPSIS

BOOL sysBusTas
    (
    INT8 * 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.

SEE ALSO

sysLib, vxTas( )


ebony : Routines

sysUicIntrInit( )

NAME

sysUicIntrInit( ) - initialize the UIC interrupt facility

SYNOPSIS

STATUS sysUicIntrInit (void)

DESCRIPTION

This routine initializes the interrupt facility for the UIC interrupt controller.

RETURNS

OK, always.

SEE ALSO

sysLib


ebony : Routines

sysUicIntHandler( )

NAME

sysUicIntHandler( ) - UIC external interrupt handler

SYNOPSIS

void sysUicIntHandler (void)

DESCRIPTION

This is the external interrupt handler for the UIC

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

sysClkConnect( )

NAME

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

SYNOPSIS

STATUS sysClkConnect
    (
    FUNCPTR routine,          /* routine to connect */
    int     arg               /* argument with which to call the 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. It also connects the clock error interrupt service routine.

RETURNS

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

SEE ALSO

sysLib, usrClock( ), sysClkEnable( )


ebony : Routines

sysClkEnable( )

NAME

sysClkEnable( ) - turn on system clock interrupts

SYNOPSIS

void sysClkEnable (void)

DESCRIPTION

This routine enables system clock interrupts.

RETURNS

N/A

SEE ALSO

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


ebony : Routines

sysClkDisable( )

NAME

sysClkDisable( ) - turn off system clock interrupts

SYNOPSIS

void sysClkDisable (void)

DESCRIPTION

This routine disables system clock interrupts.

RETURNS

N/A

SEE ALSO

sysLib, sysClkEnable( )


ebony : 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.

SEE ALSO

sysLib, sysClkEnable( ), sysClkRateSet( )


ebony : 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 does not enable system clock interrupts. It is called by usrRoot( ) in usrConfig.c.

RETURNS

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

SEE ALSO

sysLib, sysClkEnable( ), sysClkRateGet( )


ebony : 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 */
    )

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.

SEE ALSO

sysLib, excIntConnectTimer( ), sysAuxClkEnable( )


ebony : Routines

sysAuxClkEnable( )

NAME

sysAuxClkEnable( ) - turn on auxiliary clock interrupts

SYNOPSIS

void sysAuxClkEnable (void)

DESCRIPTION

This routine enables auxiliary clock interrupts.

RETURNS

N/A

SEE ALSO

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


ebony : Routines

sysAuxClkDisable( )

NAME

sysAuxClkDisable( ) - turn off auxiliary clock interrupts

SYNOPSIS

void sysAuxClkDisable (void)

DESCRIPTION

This routine disables auxiliary clock interrupts.

RETURNS

N/A

SEE ALSO

sysLib, sysAuxClkEnable( )


ebony : 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.

SEE ALSO

sysLib, sysAuxClkEnable( ), sysAuxClkRateSet( )


ebony : 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.

SEE ALSO

sysLib, sysAuxClkEnable( ), sysAuxClkRateGet( )


ebony : Routines

sysWdtConnect( )

NAME

sysWdtConnect( ) - connect a routine to the watchdog interrupt

SYNOPSIS

STATUS sysWdtConnect
    (
    FUNCPTR routine,          /* routine called at each watchdog interrupt */
    int     arg               /* argument with which to call routine */
    )

DESCRIPTION

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

RETURNS

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

SEE ALSO

sysLib, excIntCrtConnect( ), sysWdtEnable( )


ebony : Routines

sysWdtEnable( )

NAME

sysWdtEnable( ) - turn on watchdog interrupts

SYNOPSIS

void sysWdtEnable (void)

DESCRIPTION

This routine enables watchdog interrupts.

RETURNS

N/A

SEE ALSO

sysLib, sysWdtConnect( ), sysWdtDisable( ), sysWdtRateSet( )


ebony : Routines

sysWdtDisable( )

NAME

sysWdtDisable( ) - turn off watchdog interrupts

SYNOPSIS

void sysWdtDisable (void)

DESCRIPTION

This routine disables watchdog interrupts. This routine does not disable critical interrupts.

RETURNS

N/A

SEE ALSO

sysLib, sysWdtEnable( )


ebony : Routines

sysWdtRateGet( )

NAME

sysWdtRateGet( ) - get the watchdog timer rate

SYNOPSIS

int sysWdtRateGet (void)

DESCRIPTION

This routine returns the interrupt rate of the watchdog timer.

RETURNS

The number of watchdog interrupts per second.

SEE ALSO

sysLib, sysWdtEnable( ), sysWdtRateSet( )


ebony : Routines

sysWdtRateSet( )

NAME

sysWdtRateSet( ) - set the watchdog timer rate

SYNOPSIS

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

DESCRIPTION

This routine sets the interrupt rate of the watchdog timer. It does not enable watchdog interrupts.

RETURNS

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

SEE ALSO

sysLib, sysWdtEnable( ), sysWdtRateGet( )


ebony : Routines

sysTimestampConnect( )

NAME

sysTimestampConnect( ) - connect a user routine to a timestamp timer interrupt

SYNOPSIS

STATUS sysTimestampConnect
    (
    FUNCPTR routine,          /* routine called at each timestamp timer */
                              /* interrupt */ 
    int     arg               /* argument with which to call routine */
    )

DESCRIPTION

This routine specifies the user interrupt routine to be called at each timestamp timer interrupt. In this case, however, the timestamp timer interrupt is not used since the on-chip timer is also used by the system clock.

RETURNS

OK, or ERROR if sysTimestampInt( ) interrupt handler is not used.

SEE ALSO

sysLib


ebony : Routines

sysTimestampEnable( )

NAME

sysTimestampEnable( ) - initialize and enable a timestamp timer

SYNOPSIS

STATUS sysTimestampEnable (void)

DESCRIPTION

This routine disables the timestamp timer interrupt and initializes the counter registers. If the timestamp timer is already running, this routine merely resets the timer counter.

This routine does not intialize the timer rate. The rate of the timestamp timer should be set explicitly in the BSP by sysHwInit( ).

RETURNS

OK, or ERROR if the timestamp timer cannot be enabled.

SEE ALSO

sysLib


ebony : Routines

sysTimestampDisable( )

NAME

sysTimestampDisable( ) - disable a timestamp timer

SYNOPSIS

STATUS sysTimestampDisable (void)

DESCRIPTION

This routine disables the timestamp timer. Interrupts are not disabled; however, because the tick counter does not increment after the timestamp timer is disabled, interrupts no longer are generated.

RETURNS

OK, or ERROR if the timestamp timer cannot be disabled.

SEE ALSO

sysLib


ebony : Routines

sysTimestampPeriod( )

NAME

sysTimestampPeriod( ) - get a timestamp timer period

SYNOPSIS

UINT32 sysTimestampPeriod (void)

DESCRIPTION

This routine specifies the period of the timestamp timer, in ticks. The period, or terminal count, is the number of ticks to which the timestamp timer counts before rolling over and restarting the counting process.

RETURNS

The period of the timestamp timer in counter ticks.

SEE ALSO

sysLib


ebony : Routines

sysTimestampFreq( )

NAME

sysTimestampFreq( ) - get a timestamp timer clock frequency

SYNOPSIS

UINT32 sysTimestampFreq (void)

DESCRIPTION

This routine specifies the frequency of the timer clock, in ticks per second. The rate of the timestamp timer should be set explicitly in the BSP by sysHwInit( ).

RETURNS

The timestamp timer clock frequency, in ticks per second.

SEE ALSO

sysLib


ebony : Routines

sysTimestamp( )

NAME

sysTimestamp( ) - get a timestamp timer tick count

SYNOPSIS

UINT32 sysTimestamp (void)

DESCRIPTION

This routine returns the current value of the timestamp timer tick counter. The tick count can be converted to seconds by dividing by the return of sysTimestampFreq( ).

This routine should be called with interrupts locked. If interrupts are not locked, sysTimestampLock( ) should be used instead.

RETURNS

The current timestamp timer tick count.

SEE ALSO

sysLib, sysTimestampFreq( ), sysTimestampLock( )


ebony : Routines

sysTimestampLock( )

NAME

sysTimestampLock( ) - lock an interrupt and get a timestamp timer tick count

SYNOPSIS

UINT32 sysTimestampLock (void)

DESCRIPTION

This routine locks interrupts when stop the tick counter must be stopped in order to read it or when two independent counters must be read. It then returns the current value of the timestamp timer tick counter.

The tick count can be converted to seconds by dividing by the return of sysTimestampFreq( ).

If interrupts are already locked, sysTimestamp( ) should be used instead.

RETURNS

The current timestamp timer tick count.

SEE ALSO

sysLib, sysTimestamp( )


ebony : Routines

sysSerialHwInit( )

NAME

sysSerialHwInit( ) - initialize the BSP serial devices to a quiescent state

SYNOPSIS

void sysSerialHwInit (void)

DESCRIPTION

This routine initializes the BSP serial device descriptors and puts the devices in a quiescent state. It is called from sysHwInit( ) with interrupts locked.

RETURNS

N/A

SEE ALSO

sysLib, sysHwInit( )


ebony : Routines

sysSerialHwInit2( )

NAME

sysSerialHwInit2( ) - connect BSP serial device interrupts

SYNOPSIS

void sysSerialHwInit2 (void)

DESCRIPTION

This routine connects the BSP serial device interrupts. It is called from sysHwInit2( ).

Serial device interrupts cannot be connected in sysSerialHwInit( ) because the kernel memory allocator is not initialized at that point, and intConnect( ) calls malloc( ).

RETURNS

N/A

SEE ALSO

sysLib, sysHwInit2( )


ebony : Routines

sysSerialChanGet( )

NAME

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

SYNOPSIS

SIO_CHAN * sysSerialChanGet
    (
    int channel               /* serial channel */
    )

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.

RETURNS

A pointer to the SIO_CHAN structure for the channel, or ERROR if the channel is invalid.

SEE ALSO

sysLib


ebony : 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:

P"
32-bit configuration address port, at 0x0cf8
P"
32-bit configuration data port, at 0x0cfc

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

P"
Write the bus number, physical device number, function number and register number to the configuration address port.
P"
Perform an IO read from or an write to the configuration data port.

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

P"
Configuration space enable, or CSE, register, at 0x0cf8
P"
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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : Routines

pciFindClass( )

NAME

pciFindClass( ) - find the nth occurence 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 carfully 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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

SEE ALSO

sysLib


ebony : 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

SEE ALSO

sysLib


ebony : 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

SEE ALSO

sysLib


ebony : 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

SEE ALSO

sysLib


ebony : 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

SEE ALSO

sysLib


ebony : 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

SEE ALSO

sysLib


ebony : 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

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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

SEE ALSO

sysLib


ebony : 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.

ERRNO

not set

RETURNS

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

SEE ALSO

sysLib


ebony : 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.

ERRNO

Not set

RETURNS

OK, always

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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

SEE ALSO

sysLib


ebony : 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. Subseqent 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : Routines

pciDeviceShow( )

NAME

pciDeviceShow( ) - print information about PCI devices

SYNOPSIS

STATUS pciDeviceShow
    (
    int busNo                 /* bus number */
    )

DESCRIPTION

This routine prints information about PCI devices There are two ways to find out an empty device.

-
check Master Abort bit after the access.
-
check whether the read value is 0xffff.
* It uses the second method, since I didn't see the Master Abort bit of the host/PCI bridge changing.

RETURNS

OK, or ERROR if the library is not initialized.

SEE ALSO

sysLib


ebony : Routines

pciHeaderShow( )

NAME

pciHeaderShow( ) - print a header of the specified PCI device

SYNOPSIS

STATUS pciHeaderShow
    (
    int busNo,                /* bus number */
    int deviceNo,             /* device number */
    int funcNo                /* function number */
    )

DESCRIPTION

This routine prints a header of the PCI device specified by busNo, deviceNo, and funcNo.

RETURNS

OK, or ERROR if this library is not initialized.

SEE ALSO

sysLib


ebony : Routines

pciFindDeviceShow( )

NAME

pciFindDeviceShow( ) - find a device by deviceId, then print an information.

SYNOPSIS

STATUS pciFindDeviceShow
    (
    int vendorId,             /* vendor ID */
    int deviceId,             /* device ID */
    int index                 /* desired instance of device */
    )

DESCRIPTION

This routine finds a device by deviceId, then print an information.

RETURNS

OK, or ERROR if this library is not initialized.

SEE ALSO

sysLib


ebony : Routines

pciFindClassShow( )

NAME

pciFindClassShow( ) - find a device by 24-bit class code

SYNOPSIS

STATUS pciFindClassShow
    (
    int classCode,            /* 24-bit class code */
    int index                 /* desired instance of device */
    )

DESCRIPTION

This routine finds a device by its 24-bit PCI class code, then prints its information.

RETURNS

OK, or ERROR if this library is not initialized.

SEE ALSO

sysLib


ebony : Routines

pciConfigStatusWordShow( )

NAME

pciConfigStatusWordShow( ) - show the decoded value of the status word

SYNOPSIS

STATUS pciConfigStatusWordShow
    (
    int    bus,               /* bus */
    int    device,            /* device */
    int    function,          /* function */
    void * pArg               /* ignored */
    )

DESCRIPTION

This routine reads the value of the status word for the specified bus,device,function and prints the value in a human-readable format.

RETURNS

OK, always.

SEE ALSO

sysLib


ebony : Routines

pciConfigCmdWordShow( )

NAME

pciConfigCmdWordShow( ) - show the decoded value of the command word

SYNOPSIS

STATUS pciConfigCmdWordShow
    (
    int    bus,               /* bus */
    int    device,            /* device */
    int    function,          /* function */
    void * pArg               /* ignored */
    )

DESCRIPTION

This routine reads the value of the command word for the specified bus,device,function and prints the value in a human-readable format.

RETURNS

OK, always.

SEE ALSO

sysLib


ebony : Routines

pciConfigFuncShow( )

NAME

pciConfigFuncShow( ) - show configuration details about a function

SYNOPSIS

STATUS pciConfigFuncShow
    (
    int    bus,               /* bus */
    int    device,            /* device */
    int    function,          /* function */
    void * pArg               /* ignored */
    )

DESCRIPTION

This routine reads various information from the specified bus,device,function, and prints the information in a human-readable format.

RETURNS

OK, always.

SEE ALSO

sysLib


ebony : Routines

pciConfigTopoShow( )

NAME

pciConfigTopoShow( ) - show PCI topology

SYNOPSIS

void pciConfigTopoShow ()

DESCRIPTION

This routine traverses the PCI bus and prints assorted information about every device found. The information is intended to present the topology of the PCI bus. In includes: (1) the device type, (2) the command and status words, (3) for PCI to PCI bridges the memory and I/O space configuration, and (4) the values of all implemented BARs.

RETURNS

N/A.

SEE ALSO

sysLib


ebony : Routines

pciAutoConfigLibInit( )

NAME

pciAutoConfigLibInit( ) - initialize PCI autoconfig library.

SYNOPSIS

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

DESCRIPTION

pciAutoConfigLib initialization function.

ERRNO

not set

RETURNS

A cookie for use by subsequent pciAutoConfigLib function
      calls.

SEE ALSO

sysLib


ebony : 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 will initialize 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 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.

SEE ALSO

sysLib


ebony : 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 will first disable FBB on all functions, then enable 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 will be 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 will be set to TRUE if PCI_FBB_ENABLE has been called and FBB is enabled, even if FBB is not activated on any card. It will be set to FALSE otherwise.

Note that in the current implementation, FBB will be 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 will be 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 will be 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 will go 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)
    {
    sysLedOn(4);
    return(sprintf(sysExcMsg,fmt,a1,a2,a3,a4,a5,a6));
    }
PCI_MAX_BUS_GET - int * pArg
During autoconfiguration, the library will maintain 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 will be 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 bos 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.

ERRNO

     EINVAL if pCookie is not NULL or cmd is not recognized

RETURNS

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

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : 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

RETURNS

OK, or ERROR if available memory has been exceeded.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : Routines

sysPciAutoConfig( )

NAME

sysPciAutoConfig( ) - PCI autoConfig support routine

SYNOPSIS

void sysPciAutoConfig (void)

DESCRIPTION

This routine instantiates the PCI_SYSTEM structure needed to configure the system. This consists of assigning address ranges to each category of PCI system resource: Prefetchable and Non-Prefetchable 32-bit Memory, and 16- and 32-bit I/O. Global values for the Cache Line Size and Maximum Latency are also specified. Finally, the four supplemental routines for device inclusion/exclusion, interrupt assignment, and pre- and post-enumeration bridge initialization are specified.

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

ibmPciConfigWrite( )

NAME

ibmPciConfigWrite( ) - Write to one PCI configuration register location of the

SYNOPSIS

STATUS ibmPciConfigWrite
    (
    int  bus,
    int  device,
    int  function,
    int  offset,              /* offset into the configuration space */
    int  width,               /* data width */
    UINT data                 /* data to be written */
    )

DESCRIPTION

specified size (1, 2 or 4 bytes) using a Type 0
                    configuration transaction.

This routine writes one PCI configuration space location

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

ibmPciConfigRead( )

NAME

ibmPciConfigRead( ) - Reads one PCI configuration space register of the specified

SYNOPSIS

STATUS ibmPciConfigRead
    (
    int    bus,
    int    device,
    int    function,
    int    offset,            /* offset into the configuration space */
    int    width,             /* data width */
    void * pResult
    )

DESCRIPTION

size (1, 2 or 4 bytes) using a Type 0 configuration
                   transaction.

This routine reads one PCI configuration register.

RETURNS

contents of specified register

SEE ALSO

sysLib


ebony : Routines

ibmPciSpecialCycle( )

NAME

ibmPciSpecialCycle( ) - Generates a PCI special cycle on the PCI bus.

SYNOPSIS

STATUS ibmPciSpecialCycle
    (
    int    bus,
    UINT32 data
    )

DESCRIPTION

This routine generates a PCI special cycle on the PCI bus.

RETURNS

contents of specified register

SEE ALSO

sysLib


ebony : Routines

sysPciHostBridgeInit( )

NAME

sysPciHostBridgeInit( ) - Initialize the PCI-X Host Bridge

SYNOPSIS

STATUS sysPciHostBridgeInit ()

DESCRIPTION

Initializes the PCI bridge so it can operate as both a PCI master and slave. Parameters set are:
    CPU->PCI (master/initiator/outbound) address translation
    PCI->CPU (slave/target/inbound) address translation

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

sysNetHwInit( )

NAME

sysNetHwInit( ) - initialize the network interface

SYNOPSIS

void sysNetHwInit (void)

DESCRIPTION

This routine initializes the network hardware to a quiescent state. It does not connect interrupts.

Only polled mode operation is possible after calling this routine. Interrupt mode operation is possible after the memory system has been initialized and sysNetHwInit2( ) has been called.

RETURNS

N/A

SEE ALSO

sysLib, sysNetHwInit2( )


ebony : Routines

sysNetHwInit2( )

NAME

sysNetHwInit2( ) - initialize additional features of the network interface

SYNOPSIS

void sysNetHwInit2 (void)

DESCRIPTION

This routine completes initialization needed for interrupt mode operation of the network device drivers. Interrupt handlers can be connected. Interrupt or DMA operations can begin.

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

sysIbmEmacEndBldLoadStr( )

NAME

sysIbmEmacEndBldLoadStr( ) - builds the ibmEmacEndLoad parameter string

SYNOPSIS

STATUS sysIbmEmacEndBldLoadStr (void)

DESCRIPTION

RETURNS

SEE ALSO

sysLib


ebony : Routines

sysLanIbmEmacEnable( )

NAME

sysLanIbmEmacEnable( ) - enable the LAN interrupt

SYNOPSIS

void sysLanIbmEmacIntEnable
    (
    UINT intlvl
    )

DESCRIPTION

Enables the interrupt in the UIC corresponding to the PCI slot where the Ethernet card was found

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

sysLanIbmEmacIntDisable( )

NAME

sysLanIbmEmacIntDisable( ) - disable the LAN interrupt

SYNOPSIS

void sysLanIbmEmacIntDisable
    (
    UINT intlvl
    )

DESCRIPTION

Disables the interrupt in the UIC corresponding to the PCI slot where the Ethernet card was found

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

sysLanIbmEmacEnetAddrGet( )

NAME

sysLanIbmEmacEnetAddrGet( ) - get the IBM EMAC Ethernet controller's MAC address

SYNOPSIS

STATUS sysLanIbmEmacEnetAddrGet
    (
    EMAC_DRV_CTRL * pDrvCtrl,
    UINT8 *         enetAdrs
    )

DESCRIPTION

Returns the Ethernet controller's MAC address to the END driver.

RETURNS

OK, or ERROR

SEE ALSO

sysLib


ebony : Routines

zmiiSetSpeed( )

NAME

zmiiSetSpeed( ) - set the ZMII_SSR register for proper EMAC clocking

SYNOPSIS

void zmiiSetSpeed
    (
    UINT32 emacbaseAdrs,
    UINT   speed
    )

DESCRIPTION

Speed selection is required for RMII mode, optional for SMII mode, and ignored for MII mode.

This function resets a mask for the given EMACs speed bit, and then sets the mask bit if the speed parameter is 100Mbps.

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

zmiiSetMDI( )

NAME

zmiiSetMDI( ) - set the ZMII_FER[MDI] interface for proper PHY communication

SYNOPSIS

void zmiiSetMDI
    (
    UINT32 emacbaseAdrs
    )

DESCRIPTION

Note: Only one EMAC MDI interface can be hooked up at a given time. All
       others will be reset.

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

ibmEmacEndLoad( )

NAME

ibmEmacEndLoad( ) - initialize the driver and device

SYNOPSIS

END_OBJ * ibmEmacEndLoad
    (
    char * initString         /* String to be parsed by the driver */
    )

DESCRIPTION

This routine initializes the driver and the device to the operational state. All of the device-specific parameters are passed in the initString.

See ibmEmacInitParse( ) for the specific format of the string.

This function is meant to be called two different times during the driver load process. If this routine is called with the first character of the initialization string equal to NULL, this routine will return with the name of the device "ibmEmac" copied into initString. If this routine is called with the actual driver parameters in initString, it will use the parms to initialize the device and prepare the rest of the driver for operation.

RETURNS

An END object pointer, NULL if there is an error, or 0 and the name of the device if the first character of initString is NULL.

SEE ALSO

sysLib


ebony : Routines

ibmEmacInitParse( )

NAME

ibmEmacInitParse( ) - parse the initialization string

SYNOPSIS

STATUS ibmEmacInitParse
    (
    EMAC_DRV_CTRL * pDrvCtrl,
    char *          initString
    )

DESCRIPTION

ibmEmacEndLoad( ) calls this function to parse the driver initialization string and then put the parameters in the the driver control structure.

The muxLib.o module automatically prepends the unit number to the user's initialization string from the BSP (found in configNet.h).

RETURNS

OK, or ERROR if any arguments are invalid.

SEE ALSO

sysLib


ebony : Routines

clockOutByte( )

NAME

clockOutByte( ) - writes one of the real time clock registers

SYNOPSIS

void clockOutByte
    (
    UINT  index,
    UCHAR value
    )

DESCRIPTION

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

clockInByte( )

NAME

clockInByte( ) - reads one of the real time clock registers

SYNOPSIS

UCHAR clockInByte
    (
    UINT index
    )

DESCRIPTION

RETURNS

contents of register read

SEE ALSO

sysLib


ebony : Routines

rtcDrv( )

NAME

rtcDrv( ) - adding the driver to the driver system

SYNOPSIS

STATUS rtcDrv (void)

DESCRIPTION

This routine must be called in supervisor state.

RETURNS

OK or ERROR

SEE ALSO

sysLib


ebony : Routines

rtcDevCreate( )

NAME

rtcDevCreate( ) - create a device for the real time clock

SYNOPSIS

STATUS rtcDevCreate
    (
    UINT rtcDevRegBase
    )

DESCRIPTION

RETURN

OK or ERROR, if already created.

SEE ALSO

sysLib


ebony : Routines

rtcDateSet( )

NAME

rtcDateSet( ) - set the date

SYNOPSIS

void rtcDateSet
    (
    int year,
    int month,
    int dayOfMonth,
    int dayOfWeek
    )

DESCRIPTION

RETURNS

N/A.

SEE ALSO

sysLib


ebony : Routines

rtcDateGet( )

NAME

rtcDateGet( ) - get the date

SYNOPSIS

void rtcDateGet (void)

DESCRIPTION

RETURNS

N/A.

SEE ALSO

sysLib


ebony : Routines

rtcTimeSet( )

NAME

rtcTimeSet( ) - set the time

SYNOPSIS

void rtcTimeSet
    (
    int hour,
    int minute,
    int second
    )

DESCRIPTION

RETURNS

N/A.

SEE ALSO

sysLib


ebony : Routines

rtcTimeGet( )

NAME

rtcTimeGet( ) - get the time

SYNOPSIS

void rtcTimeGet (void)

DESCRIPTION

RETURNS

N/A.

SEE ALSO

sysLib


ebony : Routines

rtcClockStop( )

NAME

rtcClockStop( ) - stop the real time clock

SYNOPSIS

void rtcClockStop (void)

DESCRIPTION

RETURNS

N/A.

SEE ALSO

sysLib


ebony : Routines

rtcClockStart( )

NAME

rtcClockStart( ) - start the real time clock

SYNOPSIS

void rtcClockStart (void)

DESCRIPTION

RETURNS

N/A.

SEE ALSO

sysLib


ebony : 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 "IBM PowerPC 440GP Rev. x". Where x is either 1.0, 1.1, or 2.0.

SEE ALSO

sysLib


ebony : 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.

SEE ALSO

sysLib


ebony : Routines

sysHwInit( )

NAME

sysHwInit( ) - initialize the system hardware

SYNOPSIS

void sysHwInit (void)

DESCRIPTION

This routine initializes various features of the IBM 440GP Ebony board. This routine clears and turns off the external interrupts. It is called from usrInit( ) in usrConfig.c.

NOTE

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

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

sysHwInit2( )

NAME

sysHwInit2( ) - initialize additional system hardware

SYNOPSIS

void sysHwInit2 (void)

DESCRIPTION

This routine connects system interrupts and configures any required features not configured by sysHwInit( ).

RETURNS

N/A

SEE ALSO

sysLib


ebony : 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 memory.

Normally, the user specifies the amount of physical memory with the macro LOCAL_MEM_SIZE in config.h. BSPs that support run-time memory sizing do so only if the macro LOCAL_MEM_AUTOSIZE is defined. If not defined, then LOCAL_MEM_SIZE is assumed to be, and must be, the true size of physical memory.

NOTE

Do not adjust LOCAL_MEM_SIZE to reserve memory for application use. See sysMemTop( ) for more information on reserving memory.

RETURNS

The address of the top of physical memory.

SEE ALSO

sysLib, sysMemTop( )


ebony : 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.

SEE ALSO

sysLib


ebony : Routines

sysToMonitor( )

NAME

sysToMonitor( ) - transfer control to the ROM monitor

SYNOPSIS

STATUS sysToMonitor
    (
    int startType             /* parameter passed to ROM to tell it how */
                              /* to boot */ 
    )

DESCRIPTION

This routine transfers control to the ROM monitor. Normally, it is called only by reboot( )--which services ^X--and by bus errors at interrupt level. However, in special circumstances, the user may wish to introduce a startType to enable special boot ROM facilities.

RETURNS

Does not return.

SEE ALSO

sysLib


ebony : 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, always 0 (zero).

SEE ALSO

sysLib, sysProcNumSet( )


ebony : Routines

sysProcNumSet( )

NAME

sysProcNumSet( ) - set the processor number

SYNOPSIS

void sysProcNumSet
    (
    int procNum               /* processor number (ignored in Ebony BSP) */
    )

DESCRIPTION

This routine sets the processor number for the CPU board. Processor numbers should be unique on a single backplane.

NOTE

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

RETURNS

N/A

SEE ALSO

sysLib, sysProcNumGet( ),


ebony : Routines

sysIntLockLevelSet( )

NAME

sysIntLockLevelSet( ) - set the current interrupt lock-out level

SYNOPSIS

int sysIntLockLevelSet
    (
    int newLvl                /* new interrupt level */
    )

DESCRIPTION

This routine sets the current interrupt lock-out level.

NOTE

This routine has no effect, since the facility is currently not implemented.

RETURNS

ERROR, always.

SEE ALSO

sysLib


ebony : Routines

sysInByte( )

NAME

sysInByte( ) - read one byte from an I/O address

SYNOPSIS

UCHAR sysInByte
    (
    ULONG address             /* I/O address to read the byte from */
    )

DESCRIPTION

This routine reads a single byte from a specified I/O address.

RETURNS

The byte from the specified address.

SEE ALSO

sysLib


ebony : Routines

sysOutByte( )

NAME

sysOutByte( ) - write one byte to an I/O address

SYNOPSIS

void sysOutByte
    (
    ULONG address,            /* I/O address to write the byte to */
    UCHAR data                /* byte to write */
    )

DESCRIPTION

This routine writes a single byte to a specified I/O address.

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

sysLocalDelay( )

NAME

sysLocalDelay( ) - delay of ms_delay milliseconds used before kernel is up

SYNOPSIS

void sysLocalDelay
    (
    UINT32 ms_delay
    )

DESCRIPTION

RETURNS

N/A.

SEE ALSO

sysLib


ebony : Routines

sysInfoGet( )

NAME

sysInfoGet( ) - Determines system information (clock frequencies, etc.) based

SYNOPSIS

STATUS sysInfoGet
    (
    SYS_INFO * sysInfo,
    int        verbose
    )

DESCRIPTION

on Ebony board switch settings.

This routine returns information about the current operating environment of the Ebony board. Optionally, it prints the information out.

RETURNS

OK or ERROR.

SEE ALSO

sysLib


ebony : Routines

sysInfoShow( )

NAME

sysInfoShow( ) - Shows system information (clock frequencies, etc.) based on

SYNOPSIS

STATUS sysInfoShow (void)

DESCRIPTION

Ebony board switch settings.

This routine displays information about the current operating environment of the Ebony board.

RETURNS

OK or ERROR.

SEE ALSO

sysLib


ebony : Routines

sysZmiiReadMode( )

NAME

sysZmiiReadMode( ) - Get the mode the ZMII core should be set to based on

SYNOPSIS

ZMII_MODE sysZmiiReadMode (void)

DESCRIPTION

Ebony board jumpers.

This routine reads the board FPGA to determine what PHY mode has been selected by Ebony board jumpers.

RETURNS

ZMII_MODE mode

SEE ALSO

sysLib


ebony : Routines

sysEccIntr( )

NAME

sysEccIntr( ) - DDR SDRAM ECC error interrupt handler

SYNOPSIS

void sysEccIntr (void)

DESCRIPTION

This routine handles the SDRAM interrupts for correctable (1-bit) and uncorrectable (2-bit) ECC errors. Section 17.10 of the PPC440GP User's Manual discusses ECC reporting behavior.

Actual applications will extend this handler to perform meaningful activities upon detecting an ECC error.

RETURNS

N/A

SEE ALSO

sysLib


ebony : Routines

sysEccInit( )

NAME

sysEccInit( ) - intialize the DDR SDRAM ECC error interrupt handler

SYNOPSIS

void sysEccInit (void)

DESCRIPTION

This routine connects up an interrupt handler to respond to SDRAM ECC error interrupts, both uncorrectable and correctable.

RETURNS

N/A

SEE ALSO

sysLib