blob: 6f221f3e5e8de039f886a43d65a7b1363c987034 [file] [log] [blame]
/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates
This software file (the "File") is owned and distributed by Marvell
International Ltd. and/or its affiliates ("Marvell") under the following
alternative licensing terms. Once you have made an election to distribute the
File under one of the following license alternatives, please (i) delete this
introductory statement regarding license alternatives, (ii) delete the two
license alternatives that you have not elected to use and (iii) preserve the
Marvell copyright notice above.
********************************************************************************
Marvell Commercial License Option
If you received this File from Marvell and you have entered into a commercial
license agreement (a "Commercial License") with Marvell, the File is licensed
to you under the terms of the applicable Commercial License.
********************************************************************************
Marvell GPL License Option
If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File in accordance with the terms and conditions of the General
Public License Version 2, June 1991 (the "GPL License"), a copy of which is
available along with the File in the license.txt file or by writing to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
DISCLAIMED. The GPL License provides additional details about this warranty
disclaimer.
********************************************************************************
Marvell BSD License Option
If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File under the following licensing terms.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* 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.
* Neither the name of Marvell nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
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.
*******************************************************************************/
#ifndef __INCmvTypesh
#define __INCmvTypesh
/* Defines */
/* The following is a list of Marvell status */
#define MV_ERROR (-1)
#define MV_OK (0) /* Operation succeeded */
#define MV_FAIL (1) /* Operation failed */
#define MV_BAD_VALUE (2) /* Illegal value (general) */
#define MV_OUT_OF_RANGE (3) /* The value is out of range */
#define MV_BAD_PARAM (4) /* Illegal parameter in function called */
#define MV_BAD_PTR (5) /* Illegal pointer value */
#define MV_BAD_SIZE (6) /* Illegal size */
#define MV_BAD_STATE (7) /* Illegal state of state machine */
#define MV_SET_ERROR (8) /* Set operation failed */
#define MV_GET_ERROR (9) /* Get operation failed */
#define MV_CREATE_ERROR (10) /* Fail while creating an item */
#define MV_NOT_FOUND (11) /* Item not found */
#define MV_NO_MORE (12) /* No more items found */
#define MV_NO_SUCH (13) /* No such item */
#define MV_TIMEOUT (14) /* Time Out */
#define MV_NO_CHANGE (15) /* Parameter(s) is already in this value */
#define MV_NOT_SUPPORTED (16) /* This request is not support */
#define MV_NOT_IMPLEMENTED (17) /* Request supported but not implemented */
#define MV_NOT_INITIALIZED (18) /* The item is not initialized */
#define MV_NO_RESOURCE (19) /* Resource not available (memory ...) */
#define MV_FULL (20) /* Item is full (Queue or table etc...) */
#define MV_EMPTY (21) /* Item is empty (Queue or table etc...) */
#define MV_INIT_ERROR (22) /* Error occured while INIT process */
#define MV_HW_ERROR (23) /* Hardware error */
#define MV_TX_ERROR (24) /* Transmit operation not succeeded */
#define MV_RX_ERROR (25) /* Recieve operation not succeeded */
#define MV_NOT_READY (26) /* The other side is not ready yet */
#define MV_ALREADY_EXIST (27) /* Tried to create existing item */
#define MV_OUT_OF_CPU_MEM (28) /* Cpu memory allocation failed. */
#define MV_NOT_STARTED (29) /* Not started yet */
#define MV_BUSY (30) /* Item is busy. */
#define MV_TERMINATE (31) /* Item terminates it's work. */
#define MV_NOT_ALIGNED (32) /* Wrong alignment */
#define MV_NOT_ALLOWED (33) /* Operation NOT allowed */
#define MV_WRITE_PROTECT (34) /* Write protected */
#define MV_DROPPED (35) /* Packet dropped */
#define MV_STOLEN (36) /* Packet stolen */
#define MV_CONTINUE (37) /* Continue */
#define MV_RETRY (38) /* Operation failed need retry */
#define MV_INVALID (int)(-1)
#define MV_FALSE 0
#define MV_TRUE (!(MV_FALSE))
#ifndef NULL
#define NULL ((void *)0)
#endif
#ifndef MV_ASMLANGUAGE
/* typedefs */
typedef char MV_8;
typedef unsigned char MV_U8;
typedef int MV_32;
typedef unsigned int MV_U32;
typedef short MV_16;
typedef unsigned short MV_U16;
#ifdef MV_PPC64
typedef long MV_64;
typedef unsigned long MV_U64;
#else
typedef long long MV_64;
typedef unsigned long long MV_U64;
#endif
typedef long MV_LONG; /* 32/64 */
typedef unsigned long MV_ULONG; /* 32/64 */
typedef int MV_STATUS;
typedef int MV_BOOL;
typedef void MV_VOID;
typedef float MV_FLOAT;
typedef int (*MV_FUNCPTR) (void); /* ptr to function returning int */
typedef void (*MV_VOIDFUNCPTR) (void); /* ptr to function returning void */
typedef double (*MV_DBLFUNCPTR) (void); /* ptr to function returning double */
typedef float (*MV_FLTFUNCPTR) (void); /* ptr to function returning float */
typedef MV_U32 MV_KHZ;
typedef MV_U32 MV_MHZ;
typedef MV_U32 MV_HZ;
/* This enumerator describes the set of commands that can be applied on */
/* an engine (e.g. IDMA, XOR). Appling a comman depends on the current */
/* status (see MV_STATE enumerator) */
/* Start can be applied only when status is IDLE */
/* Stop can be applied only when status is IDLE, ACTIVE or PAUSED */
/* Pause can be applied only when status is ACTIVE */
/* Restart can be applied only when status is PAUSED */
typedef enum _mvCommand {
MV_START, /* Start */
MV_STOP, /* Stop */
MV_PAUSE, /* Pause */
MV_RESTART /* Restart */
} MV_COMMAND;
/* This enumerator describes the set of state conditions. */
/* Moving from one state to other is stricted. */
typedef enum _mvState {
MV_IDLE,
MV_ACTIVE,
MV_PAUSED,
MV_UNDEFINED_STATE
} MV_STATE;
typedef enum {
ETH_MAC_SPEED_10M,
ETH_MAC_SPEED_100M,
ETH_MAC_SPEED_1000M,
ETH_MAC_SPEED_AUTO,
} MV_ETH_MAC_SPEED;
/* This structure describes address space window. Window base can be */
/* 64 bit, window size up to 4GB */
typedef struct _mvAddrWin {
MV_U32 baseLow; /* 32bit base low */
MV_U32 baseHigh; /* 32bit base high */
MV_U32 size; /* 32bit size */
} MV_ADDR_WIN;
/* This binary enumerator describes protection attribute status */
typedef enum _mvProtRight {
ALLOWED, /* Protection attribute allowed */
FORBIDDEN /* Protection attribute forbidden */
} MV_PROT_RIGHT;
/* Unified struct for Rx and Tx packet operations. The user is required to */
/* be familier only with Tx/Rx descriptor command status. */
typedef struct _bufInfo {
MV_U32 cmdSts; /* Tx/Rx command status */
MV_U16 byteCnt; /* Size of valid data in the buffer */
MV_U16 bufSize; /* Total size of the buffer */
MV_U8 *pBuff; /* Pointer to Buffer */
MV_U8 *pData; /* Pointer to data in the Buffer */
MV_U32 userInfo1; /* Tx/Rx attached user information 1 */
MV_U32 userInfo2; /* Tx/Rx attached user information 2 */
struct _bufInfo *pNextBufInfo; /* Next buffer in packet */
} BUF_INFO;
/* This structure contains information describing one of buffers
* (fragments) they are built Ethernet packet.
*/
typedef struct {
MV_U8 *bufVirtPtr;
MV_ULONG bufPhysAddr;
MV_U32 bufSize;
MV_U32 dataSize;
MV_U32 memHandle;
MV_32 bufAddrShift;
} MV_BUF_INFO;
/* This structure contains information describing Ethernet packet.
* The packet can be divided for few buffers (fragments)
*/
typedef struct {
MV_ULONG osInfo;
MV_BUF_INFO *pFrags;
MV_U32 status;
MV_U16 pktSize;
MV_U16 numFrags;
MV_U32 ownerId;
MV_U32 fragIP;
MV_U32 txq;
} MV_PKT_INFO;
/* This structure describes SoC units address decode window */
typedef struct {
MV_ADDR_WIN addrWin; /* An address window */
MV_BOOL enable; /* Address decode window is enabled/disabled */
MV_U8 attrib; /* chip select attributes */
MV_U8 targetId; /* Target Id of this MV_TARGET */
} MV_UNIT_WIN_INFO;
/* This structure describes access rights for Access protection windows */
/* that can be found in IDMA, XOR, Ethernet and MPSC units. */
/* Note that the permission enumerator coresponds to its register format. */
/* For example, Read only premission is presented as "1" in register field. */
typedef enum _mvAccessRights {
NO_ACCESS_ALLOWED = 0, /* No access allowed */
READ_ONLY = 1, /* Read only permission */
ACC_RESERVED = 2, /* Reserved access right */
FULL_ACCESS = 3, /* Read and Write permission */
MAX_ACC_RIGHTS
} MV_ACCESS_RIGHTS;
typedef struct _mvDecRegs {
MV_U32 baseReg;
MV_U32 baseRegHigh;
MV_U32 sizeReg;
} MV_DEC_REGS;
#endif /* MV_ASMLANGUAGE */
#endif /* __INCmvTypesh */