mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-27 20:38:52 +09:00
![Marek Vasut](/assets/img/avatar_default.png)
Signed-off-by: Marek Vasut <marex@denx.de> Cc: Bryan Hundven <bryanhundven@gmail.com> Cc: Michael Schwingen <rincewind@discworld.dascon.de> Cc: Wolfgang Denk <wd@denx.de> Cc: Albert Aribaud <albert.u.boot@aribaud.net> Cc: U-Boot DM <u-boot-dm@lists.denx.de> Cc: Joe Hershberger <joe.hershberger@ni.com>
1317 lines
47 KiB
C
1317 lines
47 KiB
C
/**
|
|
* @file IxHssAcc.h
|
|
*
|
|
* @date 07-DEC-2001
|
|
*
|
|
* @brief This file contains the public API of the IXP400 HSS Access
|
|
* component
|
|
*
|
|
*
|
|
* @par
|
|
* IXP400 SW Release version 2.0
|
|
*
|
|
* -- Copyright Notice --
|
|
*
|
|
* @par
|
|
* Copyright 2001-2005, Intel Corporation.
|
|
* All rights reserved.
|
|
*
|
|
* @par
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. Neither the name of the Intel Corporation nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* @par
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*
|
|
* @par
|
|
* -- End of Copyright Notice --
|
|
*/
|
|
|
|
/* ------------------------------------------------------
|
|
Doxygen group definitions
|
|
------------------------------------------------------ */
|
|
/**
|
|
* @defgroup IxHssAccAPI IXP400 HSS Access (IxHssAcc) API
|
|
*
|
|
* @brief The public API for the IXP400 HssAccess component
|
|
*
|
|
* IxHssAcc is the access layer to the HSS packetised and channelised
|
|
* services
|
|
*
|
|
* <b> Design Notes </b><br>
|
|
* <UL>
|
|
* <LI>When a packet-pipe is configured for 56Kbps RAW mode, byte alignment of
|
|
* the transmitted data is not preserved. All raw data that is transmitted
|
|
* will be received in proper order by the receiver, but the first bit of
|
|
* the packet may be seen at any offset within a byte; all subsequent bytes
|
|
* will have the same offset for the duration of the packet. The same offset
|
|
* also applies to all subsequent packets received on the packet-pipe too.
|
|
* (Similar results will occur for data received from remote end.) While
|
|
* this behavior will also occur for 56Kbps HDLC mode, the HDLC
|
|
* encoding/decoding will preserve the original byte alignment at the
|
|
* receiver end.
|
|
* </UL>
|
|
*
|
|
* <b> 56Kbps Packetised Service Bandwidth Limitation </b><br>
|
|
* <UL>
|
|
* <LI>IxHssAcc supports 56Kbps packetised service at a maximum aggregate rate
|
|
* for all HSS ports/HDLC channels of 12.288Mbps[1] in each direction, i.e.
|
|
* it supports 56Kbps packetised service on up to 8 T1 trunks. It does
|
|
* not support 56Kbps packetised service on 8 E1 trunks (i.e. 4 trunks per
|
|
* HSS port) unless those trunks are running 'fractional E1' with maximum
|
|
* aggregate rate of 12.288 Mbps in each direction.<br>
|
|
* [1] 12.288Mbps = 1.536Mbp * 8 T1
|
|
* </UL>
|
|
* @{ */
|
|
|
|
#ifndef IXHSSACC_H
|
|
#define IXHSSACC_H
|
|
|
|
#include "IxOsal.h"
|
|
|
|
/*
|
|
* #defines for function return types, etc.
|
|
*/
|
|
|
|
/**
|
|
* @def IX_HSSACC_TSLOTS_PER_HSS_PORT
|
|
*
|
|
* @brief The max number of TDM timeslots supported per HSS port - 4E1's =
|
|
* 32x4 = 128
|
|
*/
|
|
#define IX_HSSACC_TSLOTS_PER_HSS_PORT 128
|
|
|
|
/* -----------------------------------------------------------
|
|
The following are HssAccess return values returned through
|
|
service interfaces. The globally defined IX_SUCCESS (0) and
|
|
IX_FAIL (1) in IxOsalTypes.h are also used.
|
|
----------------------------------------------------------- */
|
|
/**
|
|
* @def IX_HSSACC_PARAM_ERR
|
|
*
|
|
* @brief HssAccess function return value for a parameter error
|
|
*/
|
|
#define IX_HSSACC_PARAM_ERR 2
|
|
|
|
/**
|
|
* @def IX_HSSACC_RESOURCE_ERR
|
|
*
|
|
* @brief HssAccess function return value for a resource error
|
|
*/
|
|
#define IX_HSSACC_RESOURCE_ERR 3
|
|
|
|
/**
|
|
* @def IX_HSSACC_PKT_DISCONNECTING
|
|
*
|
|
* @brief Indicates that a disconnect call is progressing and will
|
|
* disconnect soon
|
|
*/
|
|
#define IX_HSSACC_PKT_DISCONNECTING 4
|
|
|
|
/**
|
|
* @def IX_HSSACC_Q_WRITE_OVERFLOW
|
|
*
|
|
* @brief Indicates that an attempt to Tx or to replenish an
|
|
* RxFree Q failed due to Q overflow.
|
|
*/
|
|
#define IX_HSSACC_Q_WRITE_OVERFLOW 5
|
|
|
|
/* -------------------------------------------------------------------
|
|
The following errors are HSS/NPE errors returned on error retrieval
|
|
------------------------------------------------------------------- */
|
|
/**
|
|
* @def IX_HSSACC_NO_ERROR
|
|
*
|
|
* @brief HSS port no error present
|
|
*/
|
|
#define IX_HSSACC_NO_ERROR 0
|
|
|
|
/**
|
|
* @def IX_HSSACC_TX_FRM_SYNC_ERR
|
|
*
|
|
* @brief HSS port TX Frame Sync error
|
|
*/
|
|
#define IX_HSSACC_TX_FRM_SYNC_ERR 1
|
|
|
|
/**
|
|
* @def IX_HSSACC_TX_OVER_RUN_ERR
|
|
*
|
|
* @brief HSS port TX over-run error
|
|
*/
|
|
#define IX_HSSACC_TX_OVER_RUN_ERR 2
|
|
|
|
/**
|
|
* @def IX_HSSACC_CHANNELISED_SW_TX_ERR
|
|
*
|
|
* @brief NPE software error in channelised TX
|
|
*/
|
|
#define IX_HSSACC_CHANNELISED_SW_TX_ERR 3
|
|
|
|
/**
|
|
* @def IX_HSSACC_PACKETISED_SW_TX_ERR
|
|
*
|
|
* @brief NPE software error in packetised TX
|
|
*/
|
|
#define IX_HSSACC_PACKETISED_SW_TX_ERR 4
|
|
|
|
/**
|
|
* @def IX_HSSACC_RX_FRM_SYNC_ERR
|
|
*
|
|
* @brief HSS port RX Frame Sync error
|
|
*/
|
|
#define IX_HSSACC_RX_FRM_SYNC_ERR 5
|
|
|
|
/**
|
|
* @def IX_HSSACC_RX_OVER_RUN_ERR
|
|
*
|
|
* @brief HSS port RX over-run error
|
|
*/
|
|
#define IX_HSSACC_RX_OVER_RUN_ERR 6
|
|
|
|
/**
|
|
* @def IX_HSSACC_CHANNELISED_SW_RX_ERR
|
|
*
|
|
* @brief NPE software error in channelised RX
|
|
*/
|
|
#define IX_HSSACC_CHANNELISED_SW_RX_ERR 7
|
|
|
|
/**
|
|
* @def IX_HSSACC_PACKETISED_SW_RX_ERR
|
|
*
|
|
* @brief NPE software error in packetised TX
|
|
*/
|
|
#define IX_HSSACC_PACKETISED_SW_RX_ERR 8
|
|
|
|
/* -----------------------------------
|
|
Packetised service specific defines
|
|
----------------------------------- */
|
|
|
|
/**
|
|
* @def IX_HSSACC_PKT_MIN_RX_MBUF_SIZE
|
|
*
|
|
* @brief Minimum size of the Rx mbuf in bytes which the client must supply
|
|
* to the component.
|
|
*/
|
|
#define IX_HSSACC_PKT_MIN_RX_MBUF_SIZE 64
|
|
|
|
/* --------------------------------------------------------------------
|
|
Enumerated Types - these enumerated values may be used in setting up
|
|
the contents of hardware registers
|
|
-------------------------------------------------------------------- */
|
|
/**
|
|
* @enum IxHssAccHssPort
|
|
* @brief The HSS port ID - There are two identical ports (0-1).
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_HSS_PORT_0, /**< HSS Port 0 */
|
|
IX_HSSACC_HSS_PORT_1, /**< HSS Port 1 */
|
|
IX_HSSACC_HSS_PORT_MAX /**< Delimiter for error checks */
|
|
} IxHssAccHssPort;
|
|
|
|
/**
|
|
* @enum IxHssAccHdlcPort
|
|
* @brief The HDLC port ID - There are four identical HDLC ports (0-3) per
|
|
* HSS port and they correspond to the 4 E1/T1 trunks.
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_HDLC_PORT_0, /**< HDLC Port 0 */
|
|
IX_HSSACC_HDLC_PORT_1, /**< HDLC Port 1 */
|
|
IX_HSSACC_HDLC_PORT_2, /**< HDLC Port 2 */
|
|
IX_HSSACC_HDLC_PORT_3, /**< HDLC Port 3 */
|
|
IX_HSSACC_HDLC_PORT_MAX /**< Delimiter for error checks */
|
|
} IxHssAccHdlcPort;
|
|
|
|
/**
|
|
* @enum IxHssAccTdmSlotUsage
|
|
* @brief The HSS TDM stream timeslot assignment types
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_TDMMAP_UNASSIGNED, /**< Unassigned */
|
|
IX_HSSACC_TDMMAP_HDLC, /**< HDLC - packetised */
|
|
IX_HSSACC_TDMMAP_VOICE56K, /**< Voice56K - channelised */
|
|
IX_HSSACC_TDMMAP_VOICE64K, /**< Voice64K - channelised */
|
|
IX_HSSACC_TDMMAP_MAX /**< Delimiter for error checks */
|
|
} IxHssAccTdmSlotUsage;
|
|
|
|
/**
|
|
* @enum IxHssAccFrmSyncType
|
|
* @brief The HSS frame sync pulse type
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_FRM_SYNC_ACTIVE_LOW, /**< Frame sync is sampled low */
|
|
IX_HSSACC_FRM_SYNC_ACTIVE_HIGH, /**< sampled high */
|
|
IX_HSSACC_FRM_SYNC_FALLINGEDGE, /**< sampled on a falling edge */
|
|
IX_HSSACC_FRM_SYNC_RISINGEDGE, /**< sampled on a rising edge */
|
|
IX_HSSACC_FRM_SYNC_TYPE_MAX /**< Delimiter for error checks */
|
|
} IxHssAccFrmSyncType;
|
|
|
|
/**
|
|
* @enum IxHssAccFrmSyncEnable
|
|
* @brief The IxHssAccFrmSyncEnable determines how the frame sync pulse is
|
|
* used
|
|
* */
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_FRM_SYNC_INPUT, /**< Frame sync is sampled as an input */
|
|
IX_HSSACC_FRM_SYNC_INVALID_VALUE, /**< 1 is not used */
|
|
IX_HSSACC_FRM_SYNC_OUTPUT_FALLING, /**< Frame sync is an output generated
|
|
off a falling clock edge */
|
|
IX_HSSACC_FRM_SYNC_OUTPUT_RISING, /**< Frame sync is an output generated
|
|
off a rising clock edge */
|
|
IX_HSSACC_FRM_SYNC_ENABLE_MAX /**< Delimiter for error checks */
|
|
} IxHssAccFrmSyncEnable;
|
|
|
|
/**
|
|
* @enum IxHssAccClkEdge
|
|
* @brief IxHssAccClkEdge is used to determine the clk edge to use for
|
|
* framing and data
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_CLK_EDGE_FALLING, /**< Clock sampled off a falling edge */
|
|
IX_HSSACC_CLK_EDGE_RISING, /**< Clock sampled off a rising edge */
|
|
IX_HSSACC_CLK_EDGE_MAX /**< Delimiter for error checks */
|
|
} IxHssAccClkEdge;
|
|
|
|
/**
|
|
* @enum IxHssAccClkDir
|
|
* @brief The HSS clock direction
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_SYNC_CLK_DIR_INPUT, /**< Clock is an input */
|
|
IX_HSSACC_SYNC_CLK_DIR_OUTPUT, /**< Clock is an output */
|
|
IX_HSSACC_SYNC_CLK_DIR_MAX /**< Delimiter for error checks */
|
|
} IxHssAccClkDir;
|
|
|
|
/**
|
|
* @enum IxHssAccFrmPulseUsage
|
|
* @brief The HSS frame pulse usage
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_FRM_PULSE_ENABLED, /**< Generate/Receive frame pulses */
|
|
IX_HSSACC_FRM_PULSE_DISABLED, /**< Disregard frame pulses */
|
|
IX_HSSACC_FRM_PULSE_MAX /**< Delimiter for error checks */
|
|
} IxHssAccFrmPulseUsage;
|
|
|
|
/**
|
|
* @enum IxHssAccDataRate
|
|
* @brief The HSS Data rate in relation to the clock
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_CLK_RATE, /**< Data rate is at the configured clk speed */
|
|
IX_HSSACC_HALF_CLK_RATE, /**< Data rate is half the configured clk speed */
|
|
IX_HSSACC_DATA_RATE_MAX /**< Delimiter for error checks */
|
|
} IxHssAccDataRate;
|
|
|
|
/**
|
|
* @enum IxHssAccDataPolarity
|
|
* @brief The HSS data polarity type
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_DATA_POLARITY_SAME, /**< Don't invert data between NPE and
|
|
HSS FIFOs */
|
|
IX_HSSACC_DATA_POLARITY_INVERT, /**< Invert data between NPE and HSS
|
|
FIFOs */
|
|
IX_HSSACC_DATA_POLARITY_MAX /**< Delimiter for error checks */
|
|
} IxHssAccDataPolarity;
|
|
|
|
/**
|
|
* @enum IxHssAccBitEndian
|
|
* @brief HSS Data endianness
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_LSB_ENDIAN, /**< TX/RX Least Significant Bit first */
|
|
IX_HSSACC_MSB_ENDIAN, /**< TX/RX Most Significant Bit first */
|
|
IX_HSSACC_ENDIAN_MAX /**< Delimiter for the purposes of error checks */
|
|
} IxHssAccBitEndian;
|
|
|
|
|
|
/**
|
|
* @enum IxHssAccDrainMode
|
|
* @brief Tx pin open drain mode
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_TX_PINS_NORMAL, /**< Normal mode */
|
|
IX_HSSACC_TX_PINS_OPEN_DRAIN, /**< Open Drain mode */
|
|
IX_HSSACC_TX_PINS_MAX /**< Delimiter for error checks */
|
|
} IxHssAccDrainMode;
|
|
|
|
/**
|
|
* @enum IxHssAccSOFType
|
|
* @brief HSS start of frame types
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_SOF_FBIT, /**< Framing bit transmitted and expected on rx */
|
|
IX_HSSACC_SOF_DATA, /**< Framing bit not transmitted nor expected on rx */
|
|
IX_HSSACC_SOF_MAX /**< Delimiter for error checks */
|
|
} IxHssAccSOFType;
|
|
|
|
/**
|
|
* @enum IxHssAccDataEnable
|
|
* @brief IxHssAccDataEnable is used to determine whether or not to drive
|
|
* the data pins
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_DE_TRI_STATE, /**< TRI-State the data pins */
|
|
IX_HSSACC_DE_DATA, /**< Push data out the data pins */
|
|
IX_HSSACC_DE_MAX /**< Delimiter for error checks */
|
|
} IxHssAccDataEnable;
|
|
|
|
/**
|
|
* @enum IxHssAccTxSigType
|
|
* @brief IxHssAccTxSigType is used to determine how to drive the data pins
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_TXSIG_LOW, /**< Drive the data pins low */
|
|
IX_HSSACC_TXSIG_HIGH, /**< Drive the data pins high */
|
|
IX_HSSACC_TXSIG_HIGH_IMP, /**< Drive the data pins with high impedance */
|
|
IX_HSSACC_TXSIG_MAX /**< Delimiter for error checks */
|
|
} IxHssAccTxSigType;
|
|
|
|
/**
|
|
* @enum IxHssAccFbType
|
|
* @brief IxHssAccFbType determines how to drive the Fbit
|
|
*
|
|
* @warning This will only be used for T1 @ 1.544MHz
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_FB_FIFO, /**< Fbit is dictated in FIFO */
|
|
IX_HSSACC_FB_HIGH_IMP, /**< Fbit is high impedance */
|
|
IX_HSSACC_FB_MAX /**< Delimiter for error checks */
|
|
} IxHssAccFbType;
|
|
|
|
/**
|
|
* @enum IxHssAcc56kEndianness
|
|
* @brief 56k data endianness when using the 56k type
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_56KE_BIT_7_UNUSED, /**< High bit is unused */
|
|
IX_HSSACC_56KE_BIT_0_UNUSED, /**< Low bit is unused */
|
|
IX_HSSACC_56KE_MAX /**< Delimiter for error checks */
|
|
} IxHssAcc56kEndianness;
|
|
|
|
/**
|
|
* @enum IxHssAcc56kSel
|
|
* @brief 56k data transmission type when using the 56k type
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_56KS_32_8_DATA, /**< 32/8 bit data */
|
|
IX_HSSACC_56KS_56K_DATA, /**< 56K data */
|
|
IX_HSSACC_56KS_MAX /**< Delimiter for error checks */
|
|
} IxHssAcc56kSel;
|
|
|
|
|
|
/**
|
|
* @enum IxHssAccClkSpeed
|
|
* @brief IxHssAccClkSpeed represents the HSS clock speeds available
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_CLK_SPEED_512KHZ, /**< 512KHz */
|
|
IX_HSSACC_CLK_SPEED_1536KHZ, /**< 1.536MHz */
|
|
IX_HSSACC_CLK_SPEED_1544KHZ, /**< 1.544MHz */
|
|
IX_HSSACC_CLK_SPEED_2048KHZ, /**< 2.048MHz */
|
|
IX_HSSACC_CLK_SPEED_4096KHZ, /**< 4.096MHz */
|
|
IX_HSSACC_CLK_SPEED_8192KHZ, /**< 8.192MHz */
|
|
IX_HSSACC_CLK_SPEED_MAX /**< Delimiter for error checking */
|
|
} IxHssAccClkSpeed;
|
|
|
|
/**
|
|
* @enum IxHssAccPktStatus
|
|
* @brief Indicates the status of packets passed to the client
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_PKT_OK, /**< Error free.*/
|
|
IX_HSSACC_STOP_SHUTDOWN_ERROR, /**< Errored due to stop or shutdown
|
|
occurrance.*/
|
|
IX_HSSACC_HDLC_ALN_ERROR, /**< HDLC alignment error */
|
|
IX_HSSACC_HDLC_FCS_ERROR, /**< HDLC Frame Check Sum error.*/
|
|
IX_HSSACC_RXFREE_Q_EMPTY_ERROR, /**< RxFree Q became empty
|
|
while receiving this packet.*/
|
|
IX_HSSACC_HDLC_MAX_FRAME_SIZE_EXCEEDED, /**< HDLC frame size
|
|
received is greater than
|
|
max specified at connect.*/
|
|
IX_HSSACC_HDLC_ABORT_ERROR, /**< HDLC frame received is invalid due to an
|
|
abort sequence received.*/
|
|
IX_HSSACC_DISCONNECT_IN_PROGRESS /**< Packet returned
|
|
because a disconnect is in progress */
|
|
} IxHssAccPktStatus;
|
|
|
|
|
|
/**
|
|
* @enum IxHssAccPktCrcType
|
|
* @brief HDLC CRC type
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_PKT_16_BIT_CRC = 16, /**< 16 bit CRC is being used */
|
|
IX_HSSACC_PKT_32_BIT_CRC = 32 /**< 32 bit CRC is being used */
|
|
} IxHssAccPktCrcType;
|
|
|
|
/**
|
|
* @enum IxHssAccPktHdlcIdleType
|
|
* @brief HDLC idle transmission type
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
IX_HSSACC_HDLC_IDLE_ONES, /**< idle tx/rx will be a succession of ones */
|
|
IX_HSSACC_HDLC_IDLE_FLAGS /**< idle tx/rx will be repeated flags */
|
|
} IxHssAccPktHdlcIdleType;
|
|
|
|
/**
|
|
* @brief Structure containing HSS port configuration parameters
|
|
*
|
|
* Note: All of these are used for TX. Only some are specific to RX.
|
|
*
|
|
*/
|
|
typedef struct
|
|
{
|
|
IxHssAccFrmSyncType frmSyncType; /**< frame sync pulse type (tx/rx) */
|
|
IxHssAccFrmSyncEnable frmSyncIO; /**< how the frame sync pulse is
|
|
used (tx/rx) */
|
|
IxHssAccClkEdge frmSyncClkEdge; /**< frame sync clock edge type
|
|
(tx/rx) */
|
|
IxHssAccClkEdge dataClkEdge; /**< data clock edge type (tx/rx) */
|
|
IxHssAccClkDir clkDirection; /**< clock direction (tx/rx) */
|
|
IxHssAccFrmPulseUsage frmPulseUsage; /**< whether to use the frame sync
|
|
pulse or not (tx/rx) */
|
|
IxHssAccDataRate dataRate; /**< data rate in relation to the
|
|
clock (tx/rx) */
|
|
IxHssAccDataPolarity dataPolarity; /**< data polarity type (tx/rx) */
|
|
IxHssAccBitEndian dataEndianness; /**< data endianness (tx/rx) */
|
|
IxHssAccDrainMode drainMode; /**< tx pin open drain mode (tx) */
|
|
IxHssAccSOFType fBitUsage; /**< start of frame types (tx/rx) */
|
|
IxHssAccDataEnable dataEnable; /**< whether or not to drive the data
|
|
pins (tx) */
|
|
IxHssAccTxSigType voice56kType; /**< how to drive the data pins for
|
|
voice56k type (tx) */
|
|
IxHssAccTxSigType unassignedType; /**< how to drive the data pins for
|
|
unassigned type (tx) */
|
|
IxHssAccFbType fBitType; /**< how to drive the Fbit (tx) */
|
|
IxHssAcc56kEndianness voice56kEndian;/**< 56k data endianness when using
|
|
the 56k type (tx) */
|
|
IxHssAcc56kSel voice56kSel; /**< 56k data transmission type when
|
|
using the 56k type (tx) */
|
|
unsigned frmOffset; /**< frame pulse offset in bits wrt
|
|
the first timeslot (0-1023) (tx/rx) */
|
|
unsigned maxFrmSize; /**< frame size in bits (1-1024)
|
|
(tx/rx) */
|
|
} IxHssAccPortConfig;
|
|
|
|
/**
|
|
* @brief Structure containing HSS configuration parameters
|
|
*
|
|
*/
|
|
typedef struct
|
|
{
|
|
IxHssAccPortConfig txPortConfig; /**< HSS tx port configuration */
|
|
IxHssAccPortConfig rxPortConfig; /**< HSS rx port configuration */
|
|
unsigned numChannelised; /**< The number of channelised
|
|
timeslots (0-32) */
|
|
unsigned hssPktChannelCount; /**< The number of packetised
|
|
clients (0 - 4) */
|
|
UINT8 channelisedIdlePattern; /**< The byte to be transmitted on
|
|
channelised service when there
|
|
is no client data to tx */
|
|
BOOL loopback; /**< The HSS loopback state */
|
|
unsigned packetizedIdlePattern; /**< The data to be transmitted on
|
|
packetised service when there is
|
|
no client data to tx */
|
|
IxHssAccClkSpeed clkSpeed; /**< The HSS clock speed */
|
|
} IxHssAccConfigParams;
|
|
|
|
/**
|
|
* @brief This structure contains 56Kbps, HDLC-mode configuration parameters
|
|
*
|
|
*/
|
|
typedef struct
|
|
{
|
|
BOOL hdlc56kMode; /**< 56kbps(TRUE)/64kbps(FALSE) HDLC */
|
|
IxHssAcc56kEndianness hdlc56kEndian; /**< 56kbps data endianness
|
|
- ignored if hdlc56kMode is FALSE*/
|
|
BOOL hdlc56kUnusedBitPolarity0; /**< The polarity '0'(TRUE)/'1'(FALSE) of the unused
|
|
bit while in 56kbps mode
|
|
- ignored if hdlc56kMode is FALSE*/
|
|
} IxHssAccHdlcMode;
|
|
|
|
/**
|
|
* @brief This structure contains information required by the NPE to
|
|
* configure the HDLC co-processor
|
|
*
|
|
*/
|
|
typedef struct
|
|
{
|
|
IxHssAccPktHdlcIdleType hdlcIdleType; /**< What to transmit when a HDLC port is idle */
|
|
IxHssAccBitEndian dataEndian; /**< The HDLC data endianness */
|
|
IxHssAccPktCrcType crcType; /**< The CRC type to be used for this HDLC port */
|
|
} IxHssAccPktHdlcFraming;
|
|
|
|
/**
|
|
* @typedef UINT32 IxHssAccPktUserId
|
|
*
|
|
* @brief The client supplied value which will be supplied as a parameter
|
|
* with a given callback.
|
|
*
|
|
* This value will be passed into the ixHssAccPktPortConnect function once each
|
|
* with given callbacks. This value will then be passed back to the client
|
|
* as one of the parameters to each of these callbacks,
|
|
* when these callbacks are called.
|
|
*/
|
|
typedef UINT32 IxHssAccPktUserId;
|
|
|
|
|
|
/**
|
|
* @typedef IxHssAccLastErrorCallback
|
|
* @brief Prototype of the clients function to accept notification of the
|
|
* last error
|
|
*
|
|
* This function is registered through the config. The client will initiate
|
|
* the last error retrieval. The HssAccess component will send a message to
|
|
* the NPE through the NPE Message Handler. When a response to the read is
|
|
* received, the NPE Message Handler will callback the HssAccess component
|
|
* which will execute this function in the same IxNpeMh context. The client
|
|
* will be passed the last error and the related service port (packetised
|
|
* 0-3, channelised 0)
|
|
*
|
|
* @param lastHssError unsigned [in] - The last Hss error registered that
|
|
* has been registered.
|
|
* @param servicePort unsigned [in] - This is the service port number.
|
|
* (packetised 0-3, channelised 0)
|
|
*
|
|
* @return void
|
|
*/
|
|
typedef void (*IxHssAccLastErrorCallback) (unsigned lastHssError,
|
|
unsigned servicePort);
|
|
|
|
/**
|
|
* @typedef IxHssAccPktRxCallback
|
|
* @brief Prototype of the clients function to accept notification of
|
|
* packetised rx
|
|
*
|
|
* This function is registered through the ixHssAccPktPortConnect. hssPktAcc will pass
|
|
* received data in the form of mbufs to the client. The mbuf passed back
|
|
* to the client could contain a chain of buffers, depending on the packet
|
|
* size received.
|
|
*
|
|
* @param *buffer @ref IX_OSAL_MBUF [in] - This is the mbuf which contains the
|
|
* payload received.
|
|
* @param numHssErrs unsigned [in] - This is the number of hssErrors
|
|
* the Npe has received
|
|
* @param pktStatus @ref IxHssAccPktStatus [in] - This is the status of the
|
|
* mbuf that has been received.
|
|
* @param rxUserId @ref IxHssAccPktUserId [in] - This is the client supplied value
|
|
* passed in at ixHssAccPktPortConnect time which is now returned to the client.
|
|
*
|
|
* @return void
|
|
*/
|
|
typedef void (*IxHssAccPktRxCallback) (IX_OSAL_MBUF *buffer,
|
|
unsigned numHssErrs,
|
|
IxHssAccPktStatus pktStatus,
|
|
IxHssAccPktUserId rxUserId);
|
|
|
|
/**
|
|
* @typedef IxHssAccPktRxFreeLowCallback
|
|
* @brief Prototype of the clients function to accept notification of
|
|
* requirement of more Rx Free buffers
|
|
*
|
|
* The client can choose to register a callback of this type when
|
|
* calling a connecting. This function is registered through the ixHssAccPktPortConnect.
|
|
* If defined, the access layer will provide the trigger for
|
|
* this callback. The callback will be responsible for supplying mbufs to
|
|
* the access layer for use on the receive path from the HSS using
|
|
* ixHssPktAccFreeBufReplenish.
|
|
*
|
|
* @return void
|
|
*/
|
|
typedef void (*IxHssAccPktRxFreeLowCallback) (IxHssAccPktUserId rxFreeLowUserId);
|
|
|
|
/**
|
|
* @typedef IxHssAccPktTxDoneCallback
|
|
* @brief Prototype of the clients function to accept notification of
|
|
* completion with Tx buffers
|
|
*
|
|
* This function is registered through the ixHssAccPktPortConnect. It enables
|
|
* the hssPktAcc to pass buffers back to the client
|
|
* when transmission is complete.
|
|
*
|
|
* @param *buffer @ref IX_OSAL_MBUF [in] - This is the mbuf which contained
|
|
* the payload that was for Tx.
|
|
* @param numHssErrs unsigned [in] - This is the number of hssErrors
|
|
* the Npe has received
|
|
* @param pktStatus @ref IxHssAccPktStatus [in] - This is the status of the
|
|
* mbuf that has been transmitted.
|
|
* @param txDoneUserId @ref IxHssAccPktUserId [in] - This is the client supplied value
|
|
* passed in at ixHssAccPktPortConnect time which is now returned to the client.
|
|
*
|
|
* @return void
|
|
*/
|
|
typedef void (*IxHssAccPktTxDoneCallback) (IX_OSAL_MBUF *buffer,
|
|
unsigned numHssErrs,
|
|
IxHssAccPktStatus pktStatus,
|
|
IxHssAccPktUserId txDoneUserId);
|
|
|
|
/**
|
|
* @typedef IxHssAccChanRxCallback
|
|
* @brief Prototype of the clients function to accept notification of
|
|
* channelised rx
|
|
*
|
|
* This callback, if defined by the client in the connect, will get called
|
|
* in the context of an IRQ. The IRQ will be triggered when the hssSyncQMQ
|
|
* is not empty. The queued entry will be dequeued and this function will
|
|
* be executed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param txOffset unsigned [in] - an offset indicating from where within
|
|
* the txPtrList the NPE is currently transmitting from.
|
|
* @param rxOffset unsigned [in] - an offset indicating where within the
|
|
* receive buffers the NPE has just written the received data to.
|
|
* @param numHssErrs unsigned [in] - This is the number of hssErrors
|
|
* the Npe has received
|
|
*
|
|
* @return void
|
|
*/
|
|
typedef void (*IxHssAccChanRxCallback) (IxHssAccHssPort hssPortId,
|
|
unsigned rxOffset,
|
|
unsigned txOffset,
|
|
unsigned numHssErrs);
|
|
|
|
/*
|
|
* Prototypes for interface functions.
|
|
*/
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccPortInit (IxHssAccHssPort hssPortId,
|
|
IxHssAccConfigParams *configParams,
|
|
IxHssAccTdmSlotUsage *tdmMap,
|
|
IxHssAccLastErrorCallback lastHssErrorCallback)
|
|
*
|
|
* @brief Initialise a HSS port. No channelised or packetised connections
|
|
* should exist in the HssAccess layer while this interface is being called.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param *configParams @ref IxHssAccConfigParams [in] - A pointer to the HSS
|
|
* configuration structure
|
|
* @param *tdmMap @ref IxHssAccTdmSlotUsage [in] - A pointer to an array of size
|
|
* IX_HSSACC_TSLOTS_PER_HSS_PORT, defining the slot usage over the HSS port
|
|
* @param lastHssErrorCallback @ref IxHssAccLastErrorCallback [in] - Client
|
|
* callback to report last error
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccPortInit (IxHssAccHssPort hssPortId,
|
|
IxHssAccConfigParams *configParams,
|
|
IxHssAccTdmSlotUsage *tdmMap,
|
|
IxHssAccLastErrorCallback lastHssErrorCallback);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccLastErrorRetrievalInitiate (
|
|
IxHssAccHssPort hssPortId)
|
|
*
|
|
* @brief Initiate the retrieval of the last HSS error. The HSS port
|
|
* should be configured before attempting to call this interface.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - the HSS port ID
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccLastErrorRetrievalInitiate (IxHssAccHssPort hssPortId);
|
|
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccInit ()
|
|
*
|
|
* @brief This function is responsible for initialising resources for use
|
|
* by the packetised and channelised clients. It should be called after
|
|
* HSS NPE image has been downloaded into NPE-A and before any other
|
|
* HssAccess interface is called.
|
|
* No other HssAccPacketised interface should be called while this interface
|
|
* is being processed.
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_RESOURCE_ERR The function did not execute successfully due
|
|
* to a resource error
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccInit (void);
|
|
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn ixHssAccPktPortConnect (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId,
|
|
BOOL hdlcFraming,
|
|
IxHssAccHdlcMode hdlcMode,
|
|
BOOL hdlcBitInvert,
|
|
unsigned blockSizeInWords,
|
|
UINT32 rawIdleBlockPattern,
|
|
IxHssAccPktHdlcFraming hdlcTxFraming,
|
|
IxHssAccPktHdlcFraming hdlcRxFraming,
|
|
unsigned frmFlagStart,
|
|
IxHssAccPktRxCallback rxCallback,
|
|
IxHssAccPktUserId rxUserId,
|
|
IxHssAccPktRxFreeLowCallback rxFreeLowCallback,
|
|
IxHssAccPktUserId rxFreeLowUserId,
|
|
IxHssAccPktTxDoneCallback txDoneCallback,
|
|
IxHssAccPktUserId txDoneUserId)
|
|
*
|
|
* @brief This function is responsible for connecting a client to one of
|
|
* the 4 available HDLC ports. The HSS port should be configured before
|
|
* attempting a connect. No other HssAccPacketised interface should be
|
|
* called while this connect is being processed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param hdlcPortId @ref IxHssAccHdlcPort [in] - This is the number of the HDLC port and
|
|
* it corresponds to the physical E1/T1 trunk i.e. 0, 1, 2, 3
|
|
* @param hdlcFraming BOOL [in] - This value determines whether the service
|
|
* will use HDLC data or the debug, raw data type i.e. no HDLC processing
|
|
* @param hdlcMode @ref IxHssAccHdlcMode [in] - This structure contains 56Kbps, HDLC-mode
|
|
* configuration parameters
|
|
* @param hdlcBitInvert BOOL [in] - This value determines whether bit inversion
|
|
* will occur between HDLC and HSS co-processors i.e. post-HDLC processing for
|
|
* transmit and pre-HDLC processing for receive, for the specified HDLC Termination
|
|
* Point
|
|
* @param blockSizeInWords unsigned [in] - The max tx/rx block size
|
|
* @param rawIdleBlockPattern UINT32 [in] - Tx idle pattern in raw mode
|
|
* @param hdlcTxFraming @ref IxHssAccPktHdlcFraming [in] - This structure contains
|
|
* the following information required by the NPE to configure the HDLC
|
|
* co-processor for TX
|
|
* @param hdlcRxFraming @ref IxHssAccPktHdlcFraming [in] - This structure contains
|
|
* the following information required by the NPE to configure the HDLC
|
|
* co-processor for RX
|
|
* @param frmFlagStart unsigned - Number of flags to precede to
|
|
* transmitted flags (0-2).
|
|
* @param rxCallback @ref IxHssAccPktRxCallback [in] - Pointer to
|
|
* the clients packet receive function.
|
|
* @param rxUserId @ref IxHssAccPktUserId [in] - The client supplied rx value
|
|
* to be passed back as an argument to the supplied rxCallback
|
|
* @param rxFreeLowCallback @ref IxHssAccPktRxFreeLowCallback [in] - Pointer to
|
|
* the clients Rx free buffer request function. If NULL, assume client will
|
|
* trigger independently.
|
|
* @param rxFreeLowUserId @ref IxHssAccPktUserId [in] - The client supplied RxFreeLow value
|
|
* to be passed back as an argument to the supplied rxFreeLowCallback
|
|
* @param txDoneCallback @ref IxHssAccPktTxDoneCallback [in] - Pointer to the
|
|
* clients Tx done callback function
|
|
* @param txDoneUserId @ref IxHssAccPktUserId [in] - The client supplied txDone value
|
|
* to be passed back as an argument to the supplied txDoneCallback
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
* - IX_HSSACC_RESOURCE_ERR The function did not execute successfully due
|
|
* to a resource error
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccPktPortConnect (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId,
|
|
BOOL hdlcFraming,
|
|
IxHssAccHdlcMode hdlcMode,
|
|
BOOL hdlcBitInvert,
|
|
unsigned blockSizeInWords,
|
|
UINT32 rawIdleBlockPattern,
|
|
IxHssAccPktHdlcFraming hdlcTxFraming,
|
|
IxHssAccPktHdlcFraming hdlcRxFraming,
|
|
unsigned frmFlagStart,
|
|
IxHssAccPktRxCallback rxCallback,
|
|
IxHssAccPktUserId rxUserId,
|
|
IxHssAccPktRxFreeLowCallback rxFreeLowCallback,
|
|
IxHssAccPktUserId rxFreeLowUserId,
|
|
IxHssAccPktTxDoneCallback txDoneCallback,
|
|
IxHssAccPktUserId txDoneUserId);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccPktPortEnable (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId)
|
|
*
|
|
* @brief This function is responsible for enabling a packetised service
|
|
* for the specified HSS/HDLC port combination. It enables the RX flow. The
|
|
* client must have already connected to a packetised service and is responsible
|
|
* for ensuring an adequate amount of RX mbufs have been supplied to the access
|
|
* component before enabling the packetised service. This function must be called
|
|
* on a given port before any call to ixHssAccPktPortTx on the same port.
|
|
* No other HssAccPacketised interface should be called while this interface is
|
|
* being processed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param hdlcPortId @ref IxHssAccHdlcPort [in] - The port id (0,1,2,3) to enable the service
|
|
* on.
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccPktPortEnable (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId);
|
|
|
|
/**
|
|
* @fn IX_STATUS ixHssAccPktPortDisable (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId)
|
|
*
|
|
* @brief This function is responsible for disabling a packetised service
|
|
* for the specified HSS/HDLC port combination. It disables the RX flow.
|
|
* The client must have already connected to and enabled a packetised service
|
|
* for the specified HDLC port. This disable interface can be called before a
|
|
* disconnect, but is not required to.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param hdlcPortId @ref IxHssAccHdlcPort [in] - The port id (0,1,2,3) to disable
|
|
* the service on.
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccPktPortDisable (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccPktPortDisconnect (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId)
|
|
*
|
|
* @brief This function is responsible for disconnecting a client from one
|
|
* of the 4 available HDLC ports. It is not required that the Rx Flow
|
|
* has been disabled before calling this function. If the RX Flow has not been
|
|
* disabled, the disconnect will disable it before proceeding with the
|
|
* disconnect. No other HssAccPacketised
|
|
* interface should be called while this interface is being processed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param hdlcPortId @ref IxHssAccHdlcPort [in] - This is the number of the HDLC port
|
|
* to disconnect and it corresponds to the physical E1/T1 trunk i.e. 0, 1, 2, 3
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PKT_DISCONNECTING The function has initiated the disconnecting
|
|
* procedure but it has not completed yet.
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccPktPortDisconnect (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn BOOL ixHssAccPktPortIsDisconnectComplete (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId)
|
|
*
|
|
* @brief This function is called to check if a given HSS/HDLC port
|
|
* combination is in a connected state or not. This function may be called
|
|
* at any time to determine a ports state. No other HssAccPacketised
|
|
* interface should be called while this interface is being processed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param hdlcPortId @ref IxHssAccHdlcPort [in] - This is the number of the HDLC port
|
|
* to disconnect and it corresponds to the physical E1/T1 trunk i.e. 0, 1, 2, 3
|
|
*
|
|
* @return
|
|
* - TRUE The state of this HSS/HDLC port combination is disconnected,
|
|
* so if a disconnect was called, it is now completed.
|
|
* - FALSE The state of this HSS/HDLC port combination is connected,
|
|
* so if a disconnect was called, it is not yet completed.
|
|
*/
|
|
PUBLIC BOOL
|
|
ixHssAccPktPortIsDisconnectComplete (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId);
|
|
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccPktPortRxFreeReplenish (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId,
|
|
IX_OSAL_MBUF *buffer)
|
|
*
|
|
* @brief Function which the client calls at regular intervals to provide
|
|
* mbufs to the access component for RX. A connection should exist for
|
|
* the specified hssPortId/hdlcPortId combination before attempting to call this
|
|
* interface. Also, the connection should not be in a disconnecting state.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param hdlcPortId @ref IxHssAccHdlcPort [in] - This is the number of the HDLC port
|
|
* and it corresponds to the physical E1/T1 trunk i.e. 0, 1, 2, 3
|
|
* @param *buffer @ref IX_OSAL_MBUF [in] - A pointer to a free mbuf to filled with payload.
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
* - IX_HSSACC_RESOURCE_ERR The function did not execute successfully due
|
|
* to a resource error
|
|
* - IX_HSSACC_Q_WRITE_OVERFLOW The function did not succeed due to a Q
|
|
* overflow
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccPktPortRxFreeReplenish (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId,
|
|
IX_OSAL_MBUF *buffer);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccPktPortTx (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId,
|
|
IX_OSAL_MBUF *buffer)
|
|
*
|
|
* @brief Function which the client calls when it wants to transmit
|
|
* packetised data. An enabled connection should exist on the specified
|
|
* hssPortId/hdlcPortId combination before attempting to call this interface.
|
|
* No other HssAccPacketised
|
|
* interface should be called while this interface is being processed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param hdlcPortId @ref IxHssAccHdlcPort [in] - This is the number of the HDLC port
|
|
* and it corresponds to the physical E1/T1 trunk i.e. 0, 1, 2, 3
|
|
* @param *buffer @ref IX_OSAL_MBUF [in] - A pointer to a chain of mbufs which the
|
|
* client has filled with the payload
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
* - IX_HSSACC_RESOURCE_ERR The function did not execute successfully due
|
|
* to a resource error. See note.
|
|
* - IX_HSSACC_Q_WRITE_OVERFLOW The function did not succeed due to a Q
|
|
* overflow
|
|
*
|
|
* @note IX_HSSACC_RESOURCE_ERR is returned when a free descriptor cannot be
|
|
* obtained to send the chain of mbufs to the NPE. This is a normal scenario.
|
|
* HssAcc has a pool of descriptors and this error means that they are currently
|
|
* all in use.
|
|
* The recommended approach to this is to retry until a descriptor becomes free
|
|
* and the packet is successfully transmitted.
|
|
* Alternatively, the user could wait until the next IxHssAccPktTxDoneCallback
|
|
* callback is triggered, and then retry, as it is this event that causes a
|
|
* transmit descriptor to be freed.
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccPktPortTx (IxHssAccHssPort hssPortId,
|
|
IxHssAccHdlcPort hdlcPortId,
|
|
IX_OSAL_MBUF *buffer);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccChanConnect (IxHssAccHssPort hssPortId,
|
|
unsigned bytesPerTSTrigger,
|
|
UINT8 *rxCircular,
|
|
unsigned numRxBytesPerTS,
|
|
UINT32 *txPtrList,
|
|
unsigned numTxPtrLists,
|
|
unsigned numTxBytesPerBlk,
|
|
IxHssAccChanRxCallback rxCallback)
|
|
*
|
|
* @brief This function allows the client to connect to the Tx/Rx NPE
|
|
* Channelised Service. There can only be one client per HSS port. The
|
|
* client is responsible for ensuring that the HSS port is configured
|
|
* appropriately before its connect request. No other HssAccChannelised
|
|
* interface should be called while this interface is being processed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param bytesPerTSTrigger unsigned [in] - The NPE will trigger the access
|
|
* component after bytesPerTSTrigger have been received for all trunk
|
|
* timeslots. This figure is a multiple of 8 e.g. 8 for 1ms trigger, 16 for
|
|
* 2ms trigger.
|
|
* @param *rxCircular UINT8 [in] - A pointer to memory allocated by the
|
|
* client to be filled by data received. The buffer at this address is part
|
|
* of a pool of buffers to be accessed in a circular fashion. This address
|
|
* will be written to by the NPE. Therefore, it needs to be a physical address.
|
|
* @param numRxBytesPerTS unsigned [in] - The number of bytes allocated per
|
|
* timeslot within the receive memory. This figure will depend on the
|
|
* latency of the system. It needs to be deep enough for data to be read by
|
|
* the client before the NPE re-writes over that memory e.g. if the client
|
|
* samples at a rate of 40bytes per timeslot, numRxBytesPerTS may need to
|
|
* be 40bytes * 3. This would give the client 3 * 5ms of time before
|
|
* received data is over-written.
|
|
* @param *txPtrList UINT32 [in] - The address of an area of contiguous
|
|
* memory allocated by the client to be populated with pointers to data for
|
|
* transmission. Each pointer list contains a pointer per active channel.
|
|
* The txPtrs will point to data to be transmitted by the NPE. Therefore,
|
|
* they must point to physical addresses.
|
|
* @param numTxPtrLists unsigned [in] - The number of pointer lists in
|
|
* txPtrList. This figure is dependent on jitter.
|
|
* @param numTxBytesPerBlk unsigned [in] - The size of the Tx data, in
|
|
* bytes, that each pointer within the PtrList points to.
|
|
* @param rxCallback @ref IxHssAccChanRxCallback [in] - A client function
|
|
* pointer to be called back to handle the actual tx/rx of channelised
|
|
* data. If this is not NULL, an ISR will call this function. If this
|
|
* pointer is NULL, it implies that the client will use a polling mechanism
|
|
* to detect when the tx and rx of channelised data is to occur. The client
|
|
* will use hssChanAccStatus for this.
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
*/
|
|
|
|
PUBLIC IX_STATUS
|
|
ixHssAccChanConnect (IxHssAccHssPort hssPortId,
|
|
unsigned bytesPerTSTrigger,
|
|
UINT8 *rxCircular,
|
|
unsigned numRxBytesPerTS,
|
|
UINT32 *txPtrList,
|
|
unsigned numTxPtrLists,
|
|
unsigned numTxBytesPerBlk,
|
|
IxHssAccChanRxCallback rxCallback);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccChanPortEnable (IxHssAccHssPort hssPortId)
|
|
*
|
|
* @brief This function is responsible for enabling a channelised service
|
|
* for the specified HSS port. It enables the NPE RX flow. The client must
|
|
* have already connected to a channelised service before enabling the
|
|
* channelised service. No other HssAccChannelised
|
|
* interface should be called while this interface is being processed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccChanPortEnable (IxHssAccHssPort hssPortId);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccChanPortDisable (IxHssAccHssPort hssPortId)
|
|
*
|
|
* @brief This function is responsible for disabling a channelised service
|
|
* for the specified HSS port. It disables the NPE RX flow. The client must
|
|
* have already connected to and enabled a channelised service for the
|
|
* specified HSS port. This disable interface can be called before a
|
|
* disconnect, but is not required to. No other HssAccChannelised
|
|
* interface should be called while this interface is being processed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccChanPortDisable (IxHssAccHssPort hssPortId);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccChanDisconnect (IxHssAccHssPort hssPortId)
|
|
*
|
|
* @brief This function allows the client to Disconnect from a channelised
|
|
* service. If the NPE RX Flow has not been disabled, the disconnect will
|
|
* disable it before proceeding with other disconnect functionality.
|
|
* No other HssAccChannelised interface should be called while this
|
|
* interface is being processed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccChanDisconnect (IxHssAccHssPort hssPortId);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn IX_STATUS ixHssAccChanStatusQuery (IxHssAccHssPort hssPortId,
|
|
BOOL *dataRecvd,
|
|
unsigned *rxOffset,
|
|
unsigned *txOffset,
|
|
unsigned *numHssErrs)
|
|
*
|
|
* @brief This function is called by the client to query whether or not
|
|
* channelised data has been received. If there is, hssChanAcc will return
|
|
* the details in the output parameters. An enabled connection should
|
|
* exist on the specified hssPortId before attempting to call this interface.
|
|
* No other HssAccChannelised interface should be called while this
|
|
* interface is being processed.
|
|
*
|
|
* @param hssPortId @ref IxHssAccHssPort [in] - The HSS port Id. There are two
|
|
* identical ports (0-1).
|
|
* @param *dataRecvd BOOL [out] - This BOOL indicates to the client whether
|
|
* or not the access component has read any data for the client. If
|
|
* FALSE, the other output parameters will not have been written to.
|
|
* @param *rxOffset unsigned [out] - An offset to indicate to the client
|
|
* where within the receive buffers the NPE has just written the received
|
|
* data to.
|
|
* @param *txOffset unsigned [out] - An offset to indicate to the client
|
|
* from where within the txPtrList the NPE is currently transmitting from
|
|
* @param *numHssErrs unsigned [out] - The total number of HSS port errors
|
|
* since initial port configuration
|
|
*
|
|
*
|
|
* @return
|
|
* - IX_SUCCESS The function executed successfully
|
|
* - IX_FAIL The function did not execute successfully
|
|
* - IX_HSSACC_PARAM_ERR The function did not execute successfully due to a
|
|
* parameter error
|
|
*/
|
|
PUBLIC IX_STATUS
|
|
ixHssAccChanStatusQuery (IxHssAccHssPort hssPortId,
|
|
BOOL *dataRecvd,
|
|
unsigned *rxOffset,
|
|
unsigned *txOffset,
|
|
unsigned *numHssErrs);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn void ixHssAccShow (void)
|
|
*
|
|
* @brief This function will display the current state of the IxHssAcc
|
|
* component. The output is sent to stdout.
|
|
*
|
|
* @return void
|
|
*/
|
|
PUBLIC void
|
|
ixHssAccShow (void);
|
|
|
|
/**
|
|
*
|
|
* @ingroup IxHssAccAPI
|
|
*
|
|
* @fn void ixHssAccStatsInit (void)
|
|
*
|
|
* @brief This function will reset the IxHssAcc statistics.
|
|
*
|
|
* @return void
|
|
*/
|
|
PUBLIC void
|
|
ixHssAccStatsInit (void);
|
|
|
|
#endif /* IXHSSACC_H */
|
|
|
|
/**
|
|
* @} defgroup IxHssAcc
|
|
*/
|