PM5358 S/UNI-4x622 Driver Manual
Application Programming Interface
Proprietary and Confidential to PMC-Sierra, Inc. 60
Document ID: PMC-2010419, Issue 1
Failure = 0
Valid States SUNI4x622_PRESENT, SUNI4x622_ACTIVE,
SUNI4x622_INACTIVE
Side Effects May change the configuration of the device

Reading from a block of Device Registers: suni4x622ReadBlock

This function reads a register block of a specific S/UNI-4x622 device by providing the starting
register number, and the size to read. This function derives the actual start address location based
on the device handle and starting register number inputs. It then reads the contents of this data
block using m ultiple ca lls to the sy stem specific macro, sysSuni4x622Read. Note that any error
indication is written to the DDB. It is the USER’s responsibility to allocate enough memory for
the block read.
Prototype void suni4x622ReadBlock(sSUNI4x622_HNDL deviceHandle,
UINT2 startRegNum, UINT2 size, UINT1 *pblock)
Inputs deviceHandle : device handle (from suni4x622Add)
startRegNum : starting register number
size : size of the block to read
pblock : (pointer to) the block to read
Outputs ERROR code written to the DDB
SUNI4x622_ERR_INVALID_DEV
ERROR code written to the DDB
SUNI4x622_ERR_INVALID_ARG
SUNI4x622_ERR_INVALID_REG
pblock : (pointer to) the block read
Returns None
Valid States SUNI4x622_PRESENT, SUNI4x622_ACTIVE,
SUNI4x622_INACTIVE
Side Effects May affect registers that change after a read operation

Writing to a Block of Device Registers: suni4x622WriteBlock

This function writes to a register block of a specific S/UNI-4x622 device by providing the
starting register number and the block size. This function derives the actual starting address
location based on the device handle and starting register number inputs. It then writes the contents
of this data block using multiple calls to the system specific macro, sysSuni4x622Write. A bit
from the passed block is only modified in the device’s registers if the corresponding bit is set in
the passed mask. Note that any error indication is written to the DDB
Prototype void suni4x622WriteBlock(sSUNI4x622_HNDL
deviceHandle, UINT2 startRegNum, UINT2 size, UINT1
*pblock, UINT1 *pmask)