forked from Ivasoft/openwrt
rename target/linux/generic-2.6 to generic
SVN-Revision: 21952
This commit is contained in:
@@ -0,0 +1,213 @@
|
||||
/*******************************************************************************
|
||||
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 __INCmv802_3h
|
||||
#define __INCmv802_3h
|
||||
|
||||
|
||||
/* includes */
|
||||
#include "mvTypes.h"
|
||||
|
||||
/* Defines */
|
||||
#define MV_MAX_ETH_DATA 1500
|
||||
|
||||
/* 802.3 types */
|
||||
#define MV_IP_TYPE 0x0800
|
||||
#define MV_IP_ARP_TYPE 0x0806
|
||||
#define MV_APPLE_TALK_ARP_TYPE 0x80F3
|
||||
#define MV_NOVELL_IPX_TYPE 0x8137
|
||||
#define MV_EAPOL_TYPE 0x888e
|
||||
|
||||
|
||||
|
||||
/* Encapsulation header for RFC1042 and Ethernet_tunnel */
|
||||
|
||||
#define MV_RFC1042_SNAP_HEADER {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00}
|
||||
|
||||
#define MV_ETH_SNAP_LSB 0xF8
|
||||
|
||||
|
||||
#define MV_MAC_ADDR_SIZE (6)
|
||||
#define MV_MAC_STR_SIZE (20)
|
||||
#define MV_VLAN_HLEN (4)
|
||||
|
||||
/* This macro checks for a multicast mac address */
|
||||
#define MV_IS_MULTICAST_MAC(mac) (((mac)[0] & 0x1) == 1)
|
||||
|
||||
|
||||
/* This macro checks for an broadcast mac address */
|
||||
#define MV_IS_BROADCAST_MAC(mac) \
|
||||
(((mac)[0] == 0xFF) && \
|
||||
((mac)[1] == 0xFF) && \
|
||||
((mac)[2] == 0xFF) && \
|
||||
((mac)[3] == 0xFF) && \
|
||||
((mac)[4] == 0xFF) && \
|
||||
((mac)[5] == 0xFF))
|
||||
|
||||
|
||||
/* Typedefs */
|
||||
typedef struct
|
||||
{
|
||||
MV_U8 pDA[MV_MAC_ADDR_SIZE];
|
||||
MV_U8 pSA[MV_MAC_ADDR_SIZE];
|
||||
MV_U16 typeOrLen;
|
||||
|
||||
} MV_802_3_HEADER;
|
||||
|
||||
enum {
|
||||
MV_IP_PROTO_NULL = 0, /* Dummy protocol for TCP */
|
||||
MV_IP_PROTO_ICMP = 1, /* Internet Control Message Protocol */
|
||||
MV_IP_PROTO_IGMP = 2, /* Internet Group Management Protocol */
|
||||
MV_IP_PROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94) */
|
||||
MV_IP_PROTO_TCP = 6, /* Transmission Control Protocol */
|
||||
MV_IP_PROTO_EGP = 8, /* Exterior Gateway Protocol */
|
||||
MV_IP_PROTO_PUP = 12, /* PUP protocol */
|
||||
MV_IP_PROTO_UDP = 17, /* User Datagram Protocol */
|
||||
MV_IP_PROTO_IDP = 22, /* XNS IDP protocol */
|
||||
MV_IP_PROTO_DCCP = 33, /* Datagram Congestion Control Protocol */
|
||||
MV_IP_PROTO_IPV6 = 41, /* IPv6-in-IPv4 tunnelling */
|
||||
MV_IP_PROTO_RSVP = 46, /* RSVP protocol */
|
||||
MV_IP_PROTO_GRE = 47, /* Cisco GRE tunnels (rfc 1701,1702) */
|
||||
MV_IP_PROTO_ESP = 50, /* Encapsulation Security Payload protocol */
|
||||
MV_IP_PROTO_AH = 51, /* Authentication Header protocol */
|
||||
MV_IP_PROTO_BEETPH = 94, /* IP option pseudo header for BEET */
|
||||
MV_IP_PROTO_PIM = 103,
|
||||
MV_IP_PROTO_COMP = 108, /* Compression Header protocol */
|
||||
MV_IP_PROTO_ZERO_HOP = 114, /* Any 0 hop protocol (IANA) */
|
||||
MV_IP_PROTO_SCTP = 132, /* Stream Control Transport Protocol */
|
||||
MV_IP_PROTO_UDPLITE = 136, /* UDP-Lite (RFC 3828) */
|
||||
|
||||
MV_IP_PROTO_RAW = 255, /* Raw IP packets */
|
||||
MV_IP_PROTO_MAX
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
MV_U8 version;
|
||||
MV_U8 tos;
|
||||
MV_U16 totalLength;
|
||||
MV_U16 identifier;
|
||||
MV_U16 fragmentCtrl;
|
||||
MV_U8 ttl;
|
||||
MV_U8 protocol;
|
||||
MV_U16 checksum;
|
||||
MV_U32 srcIP;
|
||||
MV_U32 dstIP;
|
||||
|
||||
} MV_IP_HEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
MV_U32 spi;
|
||||
MV_U32 seqNum;
|
||||
} MV_ESP_HEADER;
|
||||
|
||||
#define MV_ICMP_ECHOREPLY 0 /* Echo Reply */
|
||||
#define MV_ICMP_DEST_UNREACH 3 /* Destination Unreachable */
|
||||
#define MV_ICMP_SOURCE_QUENCH 4 /* Source Quench */
|
||||
#define MV_ICMP_REDIRECT 5 /* Redirect (change route) */
|
||||
#define MV_ICMP_ECHO 8 /* Echo Request */
|
||||
#define MV_ICMP_TIME_EXCEEDED 11 /* Time Exceeded */
|
||||
#define MV_ICMP_PARAMETERPROB 12 /* Parameter Problem */
|
||||
#define MV_ICMP_TIMESTAMP 13 /* Timestamp Request */
|
||||
#define MV_ICMP_TIMESTAMPREPLY 14 /* Timestamp Reply */
|
||||
#define MV_ICMP_INFO_REQUEST 15 /* Information Request */
|
||||
#define MV_ICMP_INFO_REPLY 16 /* Information Reply */
|
||||
#define MV_ICMP_ADDRESS 17 /* Address Mask Request */
|
||||
#define MV_ICMP_ADDRESSREPLY 18 /* Address Mask Reply */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
MV_U8 type;
|
||||
MV_U8 code;
|
||||
MV_U16 checksum;
|
||||
MV_U16 id;
|
||||
MV_U16 sequence;
|
||||
|
||||
} MV_ICMP_ECHO_HEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
MV_U16 source;
|
||||
MV_U16 dest;
|
||||
MV_U32 seq;
|
||||
MV_U32 ack_seq;
|
||||
MV_U16 flags;
|
||||
MV_U16 window;
|
||||
MV_U16 chksum;
|
||||
MV_U16 urg_offset;
|
||||
|
||||
} MV_TCP_HEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
MV_U16 source;
|
||||
MV_U16 dest;
|
||||
MV_U16 len;
|
||||
MV_U16 check;
|
||||
|
||||
} MV_UDP_HEADER;
|
||||
|
||||
#endif /* __INCmv802_3h */
|
||||
@@ -0,0 +1,277 @@
|
||||
/*******************************************************************************
|
||||
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.
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#include "mvOs.h"
|
||||
#include "mv802_3.h"
|
||||
#include "mvCommon.h"
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* mvMacStrToHex - Convert MAC format string to hex.
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* This function convert MAC format string to hex.
|
||||
*
|
||||
* INPUT:
|
||||
* macStr - MAC address string. Fornat of address string is
|
||||
* uu:vv:ww:xx:yy:zz, where ":" can be any delimiter.
|
||||
*
|
||||
* OUTPUT:
|
||||
* macHex - MAC in hex format.
|
||||
*
|
||||
* RETURN:
|
||||
* None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
MV_STATUS mvMacStrToHex(const char* macStr, MV_U8* macHex)
|
||||
{
|
||||
int i;
|
||||
char tmp[3];
|
||||
|
||||
for(i = 0; i < MV_MAC_ADDR_SIZE; i++)
|
||||
{
|
||||
tmp[0] = macStr[(i * 3) + 0];
|
||||
tmp[1] = macStr[(i * 3) + 1];
|
||||
tmp[2] = '\0';
|
||||
macHex[i] = (MV_U8) (strtol(tmp, NULL, 16));
|
||||
}
|
||||
return MV_OK;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* mvMacHexToStr - Convert MAC in hex format to string format.
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* This function convert MAC in hex format to string format.
|
||||
*
|
||||
* INPUT:
|
||||
* macHex - MAC in hex format.
|
||||
*
|
||||
* OUTPUT:
|
||||
* macStr - MAC address string. String format is uu:vv:ww:xx:yy:zz.
|
||||
*
|
||||
* RETURN:
|
||||
* None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
MV_STATUS mvMacHexToStr(MV_U8* macHex, char* macStr)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; i < MV_MAC_ADDR_SIZE; i++)
|
||||
{
|
||||
mvOsSPrintf(&macStr[i * 3], "%02x:", macHex[i]);
|
||||
}
|
||||
macStr[(i * 3) - 1] = '\0';
|
||||
|
||||
return MV_OK;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* mvSizePrint - Print the given size with size unit description.
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* This function print the given size with size unit description.
|
||||
* FOr example when size paramter is 0x180000, the function prints:
|
||||
* "size 1MB+500KB"
|
||||
*
|
||||
* INPUT:
|
||||
* size - Size in bytes.
|
||||
*
|
||||
* OUTPUT:
|
||||
* None.
|
||||
*
|
||||
* RETURN:
|
||||
* None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
MV_VOID mvSizePrint(MV_U32 size)
|
||||
{
|
||||
mvOsOutput("size ");
|
||||
|
||||
if(size >= _1G)
|
||||
{
|
||||
mvOsOutput("%3dGB ", size / _1G);
|
||||
size %= _1G;
|
||||
if(size)
|
||||
mvOsOutput("+");
|
||||
}
|
||||
if(size >= _1M )
|
||||
{
|
||||
mvOsOutput("%3dMB ", size / _1M);
|
||||
size %= _1M;
|
||||
if(size)
|
||||
mvOsOutput("+");
|
||||
}
|
||||
if(size >= _1K)
|
||||
{
|
||||
mvOsOutput("%3dKB ", size / _1K);
|
||||
size %= _1K;
|
||||
if(size)
|
||||
mvOsOutput("+");
|
||||
}
|
||||
if(size > 0)
|
||||
{
|
||||
mvOsOutput("%3dB ", size);
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* mvHexToBin - Convert hex to binary
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* This function Convert hex to binary.
|
||||
*
|
||||
* INPUT:
|
||||
* pHexStr - hex buffer pointer.
|
||||
* size - Size to convert.
|
||||
*
|
||||
* OUTPUT:
|
||||
* pBin - Binary buffer pointer.
|
||||
*
|
||||
* RETURN:
|
||||
* None.
|
||||
*
|
||||
*******************************************************************************/
|
||||
MV_VOID mvHexToBin(const char* pHexStr, MV_U8* pBin, int size)
|
||||
{
|
||||
int j, i;
|
||||
char tmp[3];
|
||||
MV_U8 byte;
|
||||
|
||||
for(j=0, i=0; j<size; j++, i+=2)
|
||||
{
|
||||
tmp[0] = pHexStr[i];
|
||||
tmp[1] = pHexStr[i+1];
|
||||
tmp[2] = '\0';
|
||||
byte = (MV_U8) (strtol(tmp, NULL, 16) & 0xFF);
|
||||
pBin[j] = byte;
|
||||
}
|
||||
}
|
||||
|
||||
void mvAsciiToHex(const char* asciiStr, char* hexStr)
|
||||
{
|
||||
int i=0;
|
||||
|
||||
while(asciiStr[i] != 0)
|
||||
{
|
||||
mvOsSPrintf(&hexStr[i*2], "%02x", asciiStr[i]);
|
||||
i++;
|
||||
}
|
||||
hexStr[i*2] = 0;
|
||||
}
|
||||
|
||||
|
||||
void mvBinToHex(const MV_U8* bin, char* hexStr, int size)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i=0; i<size; i++)
|
||||
{
|
||||
mvOsSPrintf(&hexStr[i*2], "%02x", bin[i]);
|
||||
}
|
||||
hexStr[i*2] = '\0';
|
||||
}
|
||||
|
||||
void mvBinToAscii(const MV_U8* bin, char* asciiStr, int size)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i=0; i<size; i++)
|
||||
{
|
||||
mvOsSPrintf(&asciiStr[i*2], "%c", bin[i]);
|
||||
}
|
||||
asciiStr[i*2] = '\0';
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* mvLog2 -
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* Calculate the Log2 of a given number.
|
||||
*
|
||||
* INPUT:
|
||||
* num - A number to calculate the Log2 for.
|
||||
*
|
||||
* OUTPUT:
|
||||
* None.
|
||||
*
|
||||
* RETURN:
|
||||
* Log 2 of the input number, or 0xFFFFFFFF if input is 0.
|
||||
*
|
||||
*******************************************************************************/
|
||||
MV_U32 mvLog2(MV_U32 num)
|
||||
{
|
||||
MV_U32 result = 0;
|
||||
if(num == 0)
|
||||
return 0xFFFFFFFF;
|
||||
while(num != 1)
|
||||
{
|
||||
num = num >> 1;
|
||||
result++;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,308 @@
|
||||
/*******************************************************************************
|
||||
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 __INCmvCommonh
|
||||
#define __INCmvCommonh
|
||||
|
||||
#include "mvTypes.h"
|
||||
|
||||
/* Swap tool */
|
||||
|
||||
/* 16bit nibble swap. For example 0x1234 -> 0x2143 */
|
||||
#define MV_NIBBLE_SWAP_16BIT(X) (((X&0xf) << 4) | \
|
||||
((X&0xf0) >> 4) | \
|
||||
((X&0xf00) << 4) | \
|
||||
((X&0xf000) >> 4))
|
||||
|
||||
/* 32bit nibble swap. For example 0x12345678 -> 0x21436587 */
|
||||
#define MV_NIBBLE_SWAP_32BIT(X) (((X&0xf) << 4) | \
|
||||
((X&0xf0) >> 4) | \
|
||||
((X&0xf00) << 4) | \
|
||||
((X&0xf000) >> 4) | \
|
||||
((X&0xf0000) << 4) | \
|
||||
((X&0xf00000) >> 4) | \
|
||||
((X&0xf000000) << 4) | \
|
||||
((X&0xf0000000) >> 4))
|
||||
|
||||
/* 16bit byte swap. For example 0x1122 -> 0x2211 */
|
||||
#define MV_BYTE_SWAP_16BIT(X) ((((X)&0xff)<<8) | (((X)&0xff00)>>8))
|
||||
|
||||
/* 32bit byte swap. For example 0x11223344 -> 0x44332211 */
|
||||
#define MV_BYTE_SWAP_32BIT(X) ((((X)&0xff)<<24) | \
|
||||
(((X)&0xff00)<<8) | \
|
||||
(((X)&0xff0000)>>8) | \
|
||||
(((X)&0xff000000)>>24))
|
||||
|
||||
/* 64bit byte swap. For example 0x11223344.55667788 -> 0x88776655.44332211 */
|
||||
#define MV_BYTE_SWAP_64BIT(X) ((l64) ((((X)&0xffULL)<<56) | \
|
||||
(((X)&0xff00ULL)<<40) | \
|
||||
(((X)&0xff0000ULL)<<24) | \
|
||||
(((X)&0xff000000ULL)<<8) | \
|
||||
(((X)&0xff00000000ULL)>>8) | \
|
||||
(((X)&0xff0000000000ULL)>>24) | \
|
||||
(((X)&0xff000000000000ULL)>>40) | \
|
||||
(((X)&0xff00000000000000ULL)>>56)))
|
||||
|
||||
/* Endianess macros. */
|
||||
#if defined(MV_CPU_LE)
|
||||
#define MV_16BIT_LE(X) (X)
|
||||
#define MV_32BIT_LE(X) (X)
|
||||
#define MV_64BIT_LE(X) (X)
|
||||
#define MV_16BIT_BE(X) MV_BYTE_SWAP_16BIT(X)
|
||||
#define MV_32BIT_BE(X) MV_BYTE_SWAP_32BIT(X)
|
||||
#define MV_64BIT_BE(X) MV_BYTE_SWAP_64BIT(X)
|
||||
#elif defined(MV_CPU_BE)
|
||||
#define MV_16BIT_LE(X) MV_BYTE_SWAP_16BIT(X)
|
||||
#define MV_32BIT_LE(X) MV_BYTE_SWAP_32BIT(X)
|
||||
#define MV_64BIT_LE(X) MV_BYTE_SWAP_64BIT(X)
|
||||
#define MV_16BIT_BE(X) (X)
|
||||
#define MV_32BIT_BE(X) (X)
|
||||
#define MV_64BIT_BE(X) (X)
|
||||
#else
|
||||
#error "CPU endianess isn't defined!\n"
|
||||
#endif
|
||||
|
||||
|
||||
/* Bit field definitions */
|
||||
#define NO_BIT 0x00000000
|
||||
#define BIT0 0x00000001
|
||||
#define BIT1 0x00000002
|
||||
#define BIT2 0x00000004
|
||||
#define BIT3 0x00000008
|
||||
#define BIT4 0x00000010
|
||||
#define BIT5 0x00000020
|
||||
#define BIT6 0x00000040
|
||||
#define BIT7 0x00000080
|
||||
#define BIT8 0x00000100
|
||||
#define BIT9 0x00000200
|
||||
#define BIT10 0x00000400
|
||||
#define BIT11 0x00000800
|
||||
#define BIT12 0x00001000
|
||||
#define BIT13 0x00002000
|
||||
#define BIT14 0x00004000
|
||||
#define BIT15 0x00008000
|
||||
#define BIT16 0x00010000
|
||||
#define BIT17 0x00020000
|
||||
#define BIT18 0x00040000
|
||||
#define BIT19 0x00080000
|
||||
#define BIT20 0x00100000
|
||||
#define BIT21 0x00200000
|
||||
#define BIT22 0x00400000
|
||||
#define BIT23 0x00800000
|
||||
#define BIT24 0x01000000
|
||||
#define BIT25 0x02000000
|
||||
#define BIT26 0x04000000
|
||||
#define BIT27 0x08000000
|
||||
#define BIT28 0x10000000
|
||||
#define BIT29 0x20000000
|
||||
#define BIT30 0x40000000
|
||||
#define BIT31 0x80000000
|
||||
|
||||
/* Handy sizes */
|
||||
#define _1K 0x00000400
|
||||
#define _2K 0x00000800
|
||||
#define _4K 0x00001000
|
||||
#define _8K 0x00002000
|
||||
#define _16K 0x00004000
|
||||
#define _32K 0x00008000
|
||||
#define _64K 0x00010000
|
||||
#define _128K 0x00020000
|
||||
#define _256K 0x00040000
|
||||
#define _512K 0x00080000
|
||||
|
||||
#define _1M 0x00100000
|
||||
#define _2M 0x00200000
|
||||
#define _4M 0x00400000
|
||||
#define _8M 0x00800000
|
||||
#define _16M 0x01000000
|
||||
#define _32M 0x02000000
|
||||
#define _64M 0x04000000
|
||||
#define _128M 0x08000000
|
||||
#define _256M 0x10000000
|
||||
#define _512M 0x20000000
|
||||
|
||||
#define _1G 0x40000000
|
||||
#define _2G 0x80000000
|
||||
|
||||
/* Tclock and Sys clock define */
|
||||
#define _100MHz 100000000
|
||||
#define _125MHz 125000000
|
||||
#define _133MHz 133333334
|
||||
#define _150MHz 150000000
|
||||
#define _160MHz 160000000
|
||||
#define _166MHz 166666667
|
||||
#define _175MHz 175000000
|
||||
#define _178MHz 178000000
|
||||
#define _183MHz 183333334
|
||||
#define _187MHz 187000000
|
||||
#define _192MHz 192000000
|
||||
#define _194MHz 194000000
|
||||
#define _200MHz 200000000
|
||||
#define _233MHz 233333334
|
||||
#define _250MHz 250000000
|
||||
#define _266MHz 266666667
|
||||
#define _300MHz 300000000
|
||||
|
||||
/* For better address window table readability */
|
||||
#define EN MV_TRUE
|
||||
#define DIS MV_FALSE
|
||||
#define N_A -1 /* Not applicable */
|
||||
|
||||
/* Cache configuration options for memory (DRAM, SRAM, ... ) */
|
||||
|
||||
/* Memory uncached, HW or SW cache coherency is not needed */
|
||||
#define MV_UNCACHED 0
|
||||
/* Memory cached, HW cache coherency supported in WriteThrough mode */
|
||||
#define MV_CACHE_COHER_HW_WT 1
|
||||
/* Memory cached, HW cache coherency supported in WriteBack mode */
|
||||
#define MV_CACHE_COHER_HW_WB 2
|
||||
/* Memory cached, No HW cache coherency, Cache coherency must be in SW */
|
||||
#define MV_CACHE_COHER_SW 3
|
||||
|
||||
|
||||
/* Macro for testing aligment. Positive if number is NOT aligned */
|
||||
#define MV_IS_NOT_ALIGN(number, align) ((number) & ((align) - 1))
|
||||
|
||||
/* Macro for alignment up. For example, MV_ALIGN_UP(0x0330, 0x20) = 0x0340 */
|
||||
#define MV_ALIGN_UP(number, align) \
|
||||
(((number) & ((align) - 1)) ? (((number) + (align)) & ~((align)-1)) : (number))
|
||||
|
||||
/* Macro for alignment down. For example, MV_ALIGN_UP(0x0330, 0x20) = 0x0320 */
|
||||
#define MV_ALIGN_DOWN(number, align) ((number) & ~((align)-1))
|
||||
|
||||
/* This macro returns absolute value */
|
||||
#define MV_ABS(number) (((int)(number) < 0) ? -(int)(number) : (int)(number))
|
||||
|
||||
|
||||
/* Bit fields manipulation macros */
|
||||
|
||||
/* An integer word which its 'x' bit is set */
|
||||
#define MV_BIT_MASK(bitNum) (1 << (bitNum) )
|
||||
|
||||
/* Checks wheter bit 'x' in integer word is set */
|
||||
#define MV_BIT_CHECK(word, bitNum) ( (word) & MV_BIT_MASK(bitNum) )
|
||||
|
||||
/* Clear (reset) bit 'x' in integer word (RMW - Read-Modify-Write) */
|
||||
#define MV_BIT_CLEAR(word, bitNum) ( (word) &= ~(MV_BIT_MASK(bitNum)) )
|
||||
|
||||
/* Set bit 'x' in integer word (RMW) */
|
||||
#define MV_BIT_SET(word, bitNum) ( (word) |= MV_BIT_MASK(bitNum) )
|
||||
|
||||
/* Invert bit 'x' in integer word (RMW) */
|
||||
#define MV_BIT_INV(word, bitNum) ( (word) ^= MV_BIT_MASK(bitNum) )
|
||||
|
||||
/* Get the min between 'a' or 'b' */
|
||||
#define MV_MIN(a,b) (((a) < (b)) ? (a) : (b))
|
||||
|
||||
/* Get the max between 'a' or 'b' */
|
||||
#define MV_MAX(a,b) (((a) < (b)) ? (b) : (a))
|
||||
|
||||
/* Temporary */
|
||||
#define mvOsDivide(num, div) \
|
||||
({ \
|
||||
int i=0, rem=(num); \
|
||||
\
|
||||
while(rem >= (div)) \
|
||||
{ \
|
||||
rem -= (div); \
|
||||
i++; \
|
||||
} \
|
||||
(i); \
|
||||
})
|
||||
|
||||
/* Temporary */
|
||||
#define mvOsReminder(num, div) \
|
||||
({ \
|
||||
int rem = (num); \
|
||||
\
|
||||
while(rem >= (div)) \
|
||||
rem -= (div); \
|
||||
(rem); \
|
||||
})
|
||||
|
||||
#define MV_IP_QUAD(ipAddr) ((ipAddr >> 24) & 0xFF), ((ipAddr >> 16) & 0xFF), \
|
||||
((ipAddr >> 8) & 0xFF), ((ipAddr >> 0) & 0xFF)
|
||||
|
||||
#define MV_IS_POWER_OF_2(num) ((num != 0) && ((num & (num - 1)) == 0))
|
||||
|
||||
#ifndef MV_ASMLANGUAGE
|
||||
/* mvCommon API list */
|
||||
|
||||
MV_VOID mvHexToBin(const char* pHexStr, MV_U8* pBin, int size);
|
||||
void mvAsciiToHex(const char* asciiStr, char* hexStr);
|
||||
void mvBinToHex(const MV_U8* bin, char* hexStr, int size);
|
||||
void mvBinToAscii(const MV_U8* bin, char* asciiStr, int size);
|
||||
|
||||
MV_STATUS mvMacStrToHex(const char* macStr, MV_U8* macHex);
|
||||
MV_STATUS mvMacHexToStr(MV_U8* macHex, char* macStr);
|
||||
void mvSizePrint(MV_U32);
|
||||
|
||||
MV_U32 mvLog2(MV_U32 num);
|
||||
|
||||
#endif /* MV_ASMLANGUAGE */
|
||||
|
||||
|
||||
#endif /* __INCmvCommonh */
|
||||
@@ -0,0 +1,326 @@
|
||||
/*******************************************************************************
|
||||
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.
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
|
||||
/* includes */
|
||||
#include "mvOs.h"
|
||||
#include "mv802_3.h"
|
||||
#include "mvCommon.h"
|
||||
#include "mvDebug.h"
|
||||
|
||||
/* Global variables effect on behave MV_DEBUG_PRINT and MV_DEBUG_CODE macros
|
||||
* mvDebug - map of bits (one for each module) bit=1 means enable
|
||||
* debug code and messages for this module
|
||||
* mvModuleDebug - array of 32 bits varables one for each module
|
||||
*/
|
||||
MV_U32 mvDebug = 0;
|
||||
MV_U32 mvDebugModules[MV_MODULE_MAX];
|
||||
|
||||
/* Init mvModuleDebug array to default values */
|
||||
void mvDebugInit(void)
|
||||
{
|
||||
int bit;
|
||||
|
||||
mvDebug = 0;
|
||||
for(bit=0; bit<MV_MODULE_MAX; bit++)
|
||||
{
|
||||
mvDebugModules[bit] = MV_DEBUG_FLAG_ERR | MV_DEBUG_FLAG_STATS;
|
||||
mvDebug |= MV_BIT_MASK(bit);
|
||||
}
|
||||
}
|
||||
|
||||
void mvDebugModuleEnable(MV_MODULE_ID module, MV_BOOL isEnable)
|
||||
{
|
||||
if (isEnable)
|
||||
{
|
||||
MV_BIT_SET(mvDebug, module);
|
||||
}
|
||||
else
|
||||
MV_BIT_CLEAR(mvDebug, module);
|
||||
}
|
||||
|
||||
void mvDebugModuleSetFlags(MV_MODULE_ID module, MV_U32 flags)
|
||||
{
|
||||
mvDebugModules[module] |= flags;
|
||||
}
|
||||
|
||||
void mvDebugModuleClearFlags(MV_MODULE_ID module, MV_U32 flags)
|
||||
{
|
||||
mvDebugModules[module] &= ~flags;
|
||||
}
|
||||
|
||||
/* Dump memory in specific format:
|
||||
* address: X1X1X1X1 X2X2X2X2 ... X8X8X8X8
|
||||
*/
|
||||
void mvDebugMemDump(void* addr, int size, int access)
|
||||
{
|
||||
int i, j;
|
||||
MV_U32 memAddr = (MV_U32)addr;
|
||||
|
||||
if(access == 0)
|
||||
access = 1;
|
||||
|
||||
if( (access != 4) && (access != 2) && (access != 1) )
|
||||
{
|
||||
mvOsPrintf("%d wrong access size. Access must be 1 or 2 or 4\n",
|
||||
access);
|
||||
return;
|
||||
}
|
||||
memAddr = MV_ALIGN_DOWN( (unsigned int)addr, 4);
|
||||
size = MV_ALIGN_UP(size, 4);
|
||||
addr = (void*)MV_ALIGN_DOWN( (unsigned int)addr, access);
|
||||
while(size > 0)
|
||||
{
|
||||
mvOsPrintf("%08x: ", memAddr);
|
||||
i = 0;
|
||||
/* 32 bytes in the line */
|
||||
while(i < 32)
|
||||
{
|
||||
if(memAddr >= (MV_U32)addr)
|
||||
{
|
||||
switch(access)
|
||||
{
|
||||
case 1:
|
||||
if( memAddr == CPU_PHY_MEM(memAddr) )
|
||||
{
|
||||
mvOsPrintf("%02x ", MV_MEMIO8_READ(memAddr));
|
||||
}
|
||||
else
|
||||
{
|
||||
mvOsPrintf("%02x ", *((MV_U8*)memAddr));
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if( memAddr == CPU_PHY_MEM(memAddr) )
|
||||
{
|
||||
mvOsPrintf("%04x ", MV_MEMIO16_READ(memAddr));
|
||||
}
|
||||
else
|
||||
{
|
||||
mvOsPrintf("%04x ", *((MV_U16*)memAddr));
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if( memAddr == CPU_PHY_MEM(memAddr) )
|
||||
{
|
||||
mvOsPrintf("%08x ", MV_MEMIO32_READ(memAddr));
|
||||
}
|
||||
else
|
||||
{
|
||||
mvOsPrintf("%08x ", *((MV_U32*)memAddr));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(j=0; j<(access*2+1); j++)
|
||||
mvOsPrintf(" ");
|
||||
}
|
||||
i += access;
|
||||
memAddr += access;
|
||||
size -= access;
|
||||
if(size <= 0)
|
||||
break;
|
||||
}
|
||||
mvOsPrintf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
void mvDebugPrintBufInfo(BUF_INFO* pBufInfo, int size, int access)
|
||||
{
|
||||
if(pBufInfo == NULL)
|
||||
{
|
||||
mvOsPrintf("\n!!! pBufInfo = NULL\n");
|
||||
return;
|
||||
}
|
||||
mvOsPrintf("\n*** pBufInfo=0x%x, cmdSts=0x%08x, pBuf=0x%x, bufSize=%d\n",
|
||||
(unsigned int)pBufInfo,
|
||||
(unsigned int)pBufInfo->cmdSts,
|
||||
(unsigned int)pBufInfo->pBuff,
|
||||
(unsigned int)pBufInfo->bufSize);
|
||||
mvOsPrintf("pData=0x%x, byteCnt=%d, pNext=0x%x, uInfo1=0x%x, uInfo2=0x%x\n",
|
||||
(unsigned int)pBufInfo->pData,
|
||||
(unsigned int)pBufInfo->byteCnt,
|
||||
(unsigned int)pBufInfo->pNextBufInfo,
|
||||
(unsigned int)pBufInfo->userInfo1,
|
||||
(unsigned int)pBufInfo->userInfo2);
|
||||
if(pBufInfo->pData != NULL)
|
||||
{
|
||||
if(size > pBufInfo->byteCnt)
|
||||
size = pBufInfo->byteCnt;
|
||||
mvDebugMemDump(pBufInfo->pData, size, access);
|
||||
}
|
||||
}
|
||||
|
||||
void mvDebugPrintPktInfo(MV_PKT_INFO* pPktInfo, int size, int access)
|
||||
{
|
||||
int frag, len;
|
||||
|
||||
if(pPktInfo == NULL)
|
||||
{
|
||||
mvOsPrintf("\n!!! pPktInfo = NULL\n");
|
||||
return;
|
||||
}
|
||||
mvOsPrintf("\npPkt=%p, stat=0x%08x, numFr=%d, size=%d, pFr=%p, osInfo=0x%lx\n",
|
||||
pPktInfo, pPktInfo->status, pPktInfo->numFrags, pPktInfo->pktSize,
|
||||
pPktInfo->pFrags, pPktInfo->osInfo);
|
||||
|
||||
for(frag=0; frag<pPktInfo->numFrags; frag++)
|
||||
{
|
||||
mvOsPrintf("#%2d. bufVirt=%p, bufSize=%d\n",
|
||||
frag, pPktInfo->pFrags[frag].bufVirtPtr,
|
||||
pPktInfo->pFrags[frag].bufSize);
|
||||
if(size > 0)
|
||||
{
|
||||
len = MV_MIN((int)pPktInfo->pFrags[frag].bufSize, size);
|
||||
mvDebugMemDump(pPktInfo->pFrags[frag].bufVirtPtr, len, access);
|
||||
size -= len;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void mvDebugPrintIpAddr(MV_U32 ipAddr)
|
||||
{
|
||||
mvOsPrintf("%d.%d.%d.%d", ((ipAddr >> 24) & 0xFF), ((ipAddr >> 16) & 0xFF),
|
||||
((ipAddr >> 8) & 0xFF), ((ipAddr >> 0) & 0xFF));
|
||||
}
|
||||
|
||||
void mvDebugPrintMacAddr(const MV_U8* pMacAddr)
|
||||
{
|
||||
int i;
|
||||
|
||||
mvOsPrintf("%02x", (unsigned int)pMacAddr[0]);
|
||||
for(i=1; i<MV_MAC_ADDR_SIZE; i++)
|
||||
{
|
||||
mvOsPrintf(":%02x", pMacAddr[i]);
|
||||
}
|
||||
/* mvOsPrintf("\n");*/
|
||||
}
|
||||
|
||||
|
||||
/******* There are three functions deals with MV_DEBUG_TIMES structure ********/
|
||||
|
||||
/* Reset MV_DEBUG_TIMES entry */
|
||||
void mvDebugResetTimeEntry(MV_DEBUG_TIMES* pTimeEntry, int count, char* pName)
|
||||
{
|
||||
pTimeEntry->begin = 0;
|
||||
pTimeEntry->count = count;
|
||||
pTimeEntry->end = 0;
|
||||
pTimeEntry->left = pTimeEntry->count;
|
||||
pTimeEntry->total = 0;
|
||||
pTimeEntry->min = 0xFFFFFFFF;
|
||||
pTimeEntry->max = 0x0;
|
||||
strncpy(pTimeEntry->name, pName, sizeof(pTimeEntry->name)-1);
|
||||
pTimeEntry->name[sizeof(pTimeEntry->name)-1] = '\0';
|
||||
}
|
||||
|
||||
/* Print out MV_DEBUG_TIMES entry */
|
||||
void mvDebugPrintTimeEntry(MV_DEBUG_TIMES* pTimeEntry, MV_BOOL isTitle)
|
||||
{
|
||||
int num;
|
||||
|
||||
if(isTitle == MV_TRUE)
|
||||
mvOsPrintf("Event NumOfEvents TotalTime Average Min Max\n");
|
||||
|
||||
num = pTimeEntry->count-pTimeEntry->left;
|
||||
if(num > 0)
|
||||
{
|
||||
mvOsPrintf("%-11s %6u 0x%08lx %6lu %6lu %6lu\n",
|
||||
pTimeEntry->name, num, pTimeEntry->total, pTimeEntry->total/num,
|
||||
pTimeEntry->min, pTimeEntry->max);
|
||||
}
|
||||
}
|
||||
|
||||
/* Update MV_DEBUG_TIMES entry */
|
||||
void mvDebugUpdateTimeEntry(MV_DEBUG_TIMES* pTimeEntry)
|
||||
{
|
||||
MV_U32 delta;
|
||||
|
||||
if(pTimeEntry->left > 0)
|
||||
{
|
||||
if(pTimeEntry->end <= pTimeEntry->begin)
|
||||
{
|
||||
delta = pTimeEntry->begin - pTimeEntry->end;
|
||||
}
|
||||
else
|
||||
{
|
||||
delta = ((MV_U32)0x10000 - pTimeEntry->end) + pTimeEntry->begin;
|
||||
}
|
||||
pTimeEntry->total += delta;
|
||||
|
||||
if(delta < pTimeEntry->min)
|
||||
pTimeEntry->min = delta;
|
||||
|
||||
if(delta > pTimeEntry->max)
|
||||
pTimeEntry->max = delta;
|
||||
|
||||
pTimeEntry->left--;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
/*******************************************************************************
|
||||
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 __INCmvDebugh
|
||||
#define __INCmvDebugh
|
||||
|
||||
/* includes */
|
||||
#include "mvTypes.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MV_MODULE_INVALID = -1,
|
||||
MV_MODULE_ETH = 0,
|
||||
MV_MODULE_IDMA,
|
||||
MV_MODULE_XOR,
|
||||
MV_MODULE_TWASI,
|
||||
MV_MODULE_MGI,
|
||||
MV_MODULE_USB,
|
||||
MV_MODULE_CESA,
|
||||
|
||||
MV_MODULE_MAX
|
||||
}MV_MODULE_ID;
|
||||
|
||||
/* Define generic flags useful for most of modules */
|
||||
#define MV_DEBUG_FLAG_ALL (0)
|
||||
#define MV_DEBUG_FLAG_INIT (1 << 0)
|
||||
#define MV_DEBUG_FLAG_RX (1 << 1)
|
||||
#define MV_DEBUG_FLAG_TX (1 << 2)
|
||||
#define MV_DEBUG_FLAG_ERR (1 << 3)
|
||||
#define MV_DEBUG_FLAG_TRACE (1 << 4)
|
||||
#define MV_DEBUG_FLAG_DUMP (1 << 5)
|
||||
#define MV_DEBUG_FLAG_CACHE (1 << 6)
|
||||
#define MV_DEBUG_FLAG_IOCTL (1 << 7)
|
||||
#define MV_DEBUG_FLAG_STATS (1 << 8)
|
||||
|
||||
extern MV_U32 mvDebug;
|
||||
extern MV_U32 mvDebugModules[MV_MODULE_MAX];
|
||||
|
||||
#ifdef MV_DEBUG
|
||||
# define MV_DEBUG_PRINT(module, flags, msg) mvOsPrintf msg
|
||||
# define MV_DEBUG_CODE(module, flags, code) code
|
||||
#elif defined(MV_RT_DEBUG)
|
||||
# define MV_DEBUG_PRINT(module, flags, msg) \
|
||||
if( (mvDebug & (1<<(module))) && \
|
||||
((mvDebugModules[(module)] & (flags)) == (flags)) ) \
|
||||
mvOsPrintf msg
|
||||
# define MV_DEBUG_CODE(module, flags, code) \
|
||||
if( (mvDebug & (1<<(module))) && \
|
||||
((mvDebugModules[(module)] & (flags)) == (flags)) ) \
|
||||
code
|
||||
#else
|
||||
# define MV_DEBUG_PRINT(module, flags, msg)
|
||||
# define MV_DEBUG_CODE(module, flags, code)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* typedefs */
|
||||
|
||||
/* time measurement structure used to check how much time pass between
|
||||
* two points
|
||||
*/
|
||||
typedef struct {
|
||||
char name[20]; /* name of the entry */
|
||||
unsigned long begin; /* time measured on begin point */
|
||||
unsigned long end; /* time measured on end point */
|
||||
unsigned long total; /* Accumulated time */
|
||||
unsigned long left; /* The rest measurement actions */
|
||||
unsigned long count; /* Maximum measurement actions */
|
||||
unsigned long min; /* Minimum time from begin to end */
|
||||
unsigned long max; /* Maximum time from begin to end */
|
||||
} MV_DEBUG_TIMES;
|
||||
|
||||
|
||||
/* mvDebug.h API list */
|
||||
|
||||
/****** Error Recording ******/
|
||||
|
||||
/* Dump memory in specific format:
|
||||
* address: X1X1X1X1 X2X2X2X2 ... X8X8X8X8
|
||||
*/
|
||||
void mvDebugMemDump(void* addr, int size, int access);
|
||||
|
||||
void mvDebugPrintBufInfo(BUF_INFO* pBufInfo, int size, int access);
|
||||
|
||||
void mvDebugPrintPktInfo(MV_PKT_INFO* pPktInfo, int size, int access);
|
||||
|
||||
void mvDebugPrintIpAddr(MV_U32 ipAddr);
|
||||
|
||||
void mvDebugPrintMacAddr(const MV_U8* pMacAddr);
|
||||
|
||||
/**** There are three functions deals with MV_DEBUG_TIMES structure ****/
|
||||
|
||||
/* Reset MV_DEBUG_TIMES entry */
|
||||
void mvDebugResetTimeEntry(MV_DEBUG_TIMES* pTimeEntry, int count, char* name);
|
||||
|
||||
/* Update MV_DEBUG_TIMES entry */
|
||||
void mvDebugUpdateTimeEntry(MV_DEBUG_TIMES* pTimeEntry);
|
||||
|
||||
/* Print out MV_DEBUG_TIMES entry */
|
||||
void mvDebugPrintTimeEntry(MV_DEBUG_TIMES* pTimeEntry, MV_BOOL isTitle);
|
||||
|
||||
|
||||
/******** General ***********/
|
||||
|
||||
/* Change value of mvDebugPrint global variable */
|
||||
|
||||
void mvDebugInit(void);
|
||||
void mvDebugModuleEnable(MV_MODULE_ID module, MV_BOOL isEnable);
|
||||
void mvDebugModuleSetFlags(MV_MODULE_ID module, MV_U32 flags);
|
||||
void mvDebugModuleClearFlags(MV_MODULE_ID module, MV_U32 flags);
|
||||
|
||||
|
||||
#endif /* __INCmvDebug.h */
|
||||
|
||||
@@ -0,0 +1,225 @@
|
||||
/*******************************************************************************
|
||||
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 __INCmvDeviceIdh
|
||||
#define __INCmvDeviceIdh
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* defines */
|
||||
#define MARVELL_VEN_ID 0x11ab
|
||||
|
||||
/* Disco-3 */
|
||||
#define MV64460_DEV_ID 0x6480
|
||||
#define MV64460B_DEV_ID 0x6485
|
||||
#define MV64430_DEV_ID 0x6420
|
||||
|
||||
/* Disco-5 */
|
||||
#define MV64560_DEV_ID 0x6450
|
||||
|
||||
/* Disco-6 */
|
||||
#define MV64660_DEV_ID 0x6460
|
||||
|
||||
/* Orion */
|
||||
#define MV_1181_DEV_ID 0x1181
|
||||
#define MV_5181_DEV_ID 0x5181
|
||||
#define MV_5281_DEV_ID 0x5281
|
||||
#define MV_5182_DEV_ID 0x5182
|
||||
#define MV_8660_DEV_ID 0x8660
|
||||
#define MV_5180_DEV_ID 0x5180
|
||||
#define MV_5082_DEV_ID 0x5082
|
||||
#define MV_1281_DEV_ID 0x1281
|
||||
#define MV_6082_DEV_ID 0x6082
|
||||
#define MV_6183_DEV_ID 0x6183
|
||||
#define MV_6183L_DEV_ID 0x6083
|
||||
|
||||
#define MV_5281_D0_REV 0x4
|
||||
#define MV_5281_D0_ID ((MV_5281_DEV_ID << 16) | MV_5281_D0_REV)
|
||||
#define MV_5281_D0_NAME "88F5281 D0"
|
||||
|
||||
#define MV_5281_D1_REV 0x5
|
||||
#define MV_5281_D1_ID ((MV_5281_DEV_ID << 16) | MV_5281_D1_REV)
|
||||
#define MV_5281_D1_NAME "88F5281 D1"
|
||||
|
||||
#define MV_5281_D2_REV 0x6
|
||||
#define MV_5281_D2_ID ((MV_5281_DEV_ID << 16) | MV_5281_D2_REV)
|
||||
#define MV_5281_D2_NAME "88F5281 D2"
|
||||
|
||||
|
||||
#define MV_5181L_A0_REV 0x8 /* need for PCIE Er */
|
||||
#define MV_5181_A1_REV 0x1 /* for USB Er ..*/
|
||||
#define MV_5181_B0_REV 0x2
|
||||
#define MV_5181_B1_REV 0x3
|
||||
#define MV_5182_A1_REV 0x1
|
||||
#define MV_5180N_B1_REV 0x3
|
||||
#define MV_5181L_A0_ID ((MV_5181_DEV_ID << 16) | MV_5181L_A0_REV)
|
||||
|
||||
|
||||
|
||||
/* kw */
|
||||
#define MV_6281_DEV_ID 0x6281
|
||||
#define MV_6192_DEV_ID 0x6192
|
||||
#define MV_6190_DEV_ID 0x6190
|
||||
#define MV_6180_DEV_ID 0x6180
|
||||
|
||||
#define MV_6281_A0_REV 0x2
|
||||
#define MV_6281_A0_ID ((MV_6281_DEV_ID << 16) | MV_6281_A0_REV)
|
||||
#define MV_6281_A0_NAME "88F6281 A0"
|
||||
|
||||
#define MV_6192_A0_REV 0x2
|
||||
#define MV_6192_A0_ID ((MV_6192_DEV_ID << 16) | MV_6192_A0_REV)
|
||||
#define MV_6192_A0_NAME "88F6192 A0"
|
||||
|
||||
#define MV_6190_A0_REV 0x2
|
||||
#define MV_6190_A0_ID ((MV_6190_DEV_ID << 16) | MV_6190_A0_REV)
|
||||
#define MV_6190_A0_NAME "88F6190 A0"
|
||||
|
||||
#define MV_6180_A0_REV 0x2
|
||||
#define MV_6180_A0_ID ((MV_6180_DEV_ID << 16) | MV_6180_A0_REV)
|
||||
#define MV_6180_A0_NAME "88F6180 A0"
|
||||
|
||||
#define MV_6281_A1_REV 0x3
|
||||
#define MV_6281_A1_ID ((MV_6281_DEV_ID << 16) | MV_6281_A1_REV)
|
||||
#define MV_6281_A1_NAME "88F6281 A1"
|
||||
|
||||
#define MV_6192_A1_REV 0x3
|
||||
#define MV_6192_A1_ID ((MV_6192_DEV_ID << 16) | MV_6192_A1_REV)
|
||||
#define MV_6192_A1_NAME "88F6192 A1"
|
||||
|
||||
#define MV_6190_A1_REV 0x3
|
||||
#define MV_6190_A1_ID ((MV_6190_DEV_ID << 16) | MV_6190_A1_REV)
|
||||
#define MV_6190_A1_NAME "88F6190 A1"
|
||||
|
||||
#define MV_6180_A1_REV 0x3
|
||||
#define MV_6180_A1_ID ((MV_6180_DEV_ID << 16) | MV_6180_A1_REV)
|
||||
#define MV_6180_A1_NAME "88F6180 A1"
|
||||
|
||||
#define MV_88F6XXX_A0_REV 0x2
|
||||
#define MV_88F6XXX_A1_REV 0x3
|
||||
/* Disco-Duo */
|
||||
#define MV_78XX0_ZY_DEV_ID 0x6381
|
||||
#define MV_78XX0_ZY_NAME "MV78X00"
|
||||
|
||||
#define MV_78XX0_Z0_REV 0x1
|
||||
#define MV_78XX0_Z0_ID ((MV_78XX0_ZY_DEV_ID << 16) | MV_78XX0_Z0_REV)
|
||||
#define MV_78XX0_Z0_NAME "78X00 Z0"
|
||||
|
||||
#define MV_78XX0_Y0_REV 0x2
|
||||
#define MV_78XX0_Y0_ID ((MV_78XX0_ZY_DEV_ID << 16) | MV_78XX0_Y0_REV)
|
||||
#define MV_78XX0_Y0_NAME "78X00 Y0"
|
||||
|
||||
#define MV_78XX0_DEV_ID 0x7800
|
||||
#define MV_78XX0_NAME "MV78X00"
|
||||
|
||||
#define MV_76100_DEV_ID 0x7610
|
||||
#define MV_78200_DEV_ID 0x7820
|
||||
#define MV_78100_DEV_ID 0x7810
|
||||
#define MV_78XX0_A0_REV 0x1
|
||||
#define MV_78XX0_A1_REV 0x2
|
||||
|
||||
#define MV_76100_NAME "MV76100"
|
||||
#define MV_78100_NAME "MV78100"
|
||||
#define MV_78200_NAME "MV78200"
|
||||
|
||||
#define MV_76100_A0_ID ((MV_76100_DEV_ID << 16) | MV_78XX0_A0_REV)
|
||||
#define MV_78100_A0_ID ((MV_78100_DEV_ID << 16) | MV_78XX0_A0_REV)
|
||||
#define MV_78200_A0_ID ((MV_78200_DEV_ID << 16) | MV_78XX0_A0_REV)
|
||||
|
||||
#define MV_76100_A1_ID ((MV_76100_DEV_ID << 16) | MV_78XX0_A1_REV)
|
||||
#define MV_78100_A1_ID ((MV_78100_DEV_ID << 16) | MV_78XX0_A1_REV)
|
||||
#define MV_78200_A1_ID ((MV_78200_DEV_ID << 16) | MV_78XX0_A1_REV)
|
||||
|
||||
#define MV_76100_A0_NAME "MV76100 A0"
|
||||
#define MV_78100_A0_NAME "MV78100 A0"
|
||||
#define MV_78200_A0_NAME "MV78200 A0"
|
||||
#define MV_78XX0_A0_NAME "MV78XX0 A0"
|
||||
|
||||
#define MV_76100_A1_NAME "MV76100 A1"
|
||||
#define MV_78100_A1_NAME "MV78100 A1"
|
||||
#define MV_78200_A1_NAME "MV78200 A1"
|
||||
#define MV_78XX0_A1_NAME "MV78XX0 A1"
|
||||
|
||||
/*MV88F632X family*/
|
||||
#define MV_6321_DEV_ID 0x6321
|
||||
#define MV_6322_DEV_ID 0x6322
|
||||
#define MV_6323_DEV_ID 0x6323
|
||||
|
||||
#define MV_6321_NAME "88F6321"
|
||||
#define MV_6322_NAME "88F6322"
|
||||
#define MV_6323_NAME "88F6323"
|
||||
|
||||
#define MV_632X_A1_REV 0x2
|
||||
|
||||
#define MV_6321_A1_ID ((MV_6321_DEV_ID << 16) | MV_632X_A1_REV)
|
||||
#define MV_6322_A1_ID ((MV_6322_DEV_ID << 16) | MV_632X_A1_REV)
|
||||
#define MV_6323_A1_ID ((MV_6323_DEV_ID << 16) | MV_632X_A1_REV)
|
||||
|
||||
#define MV_6321_A1_NAME "88F6321 A1"
|
||||
#define MV_6322_A1_NAME "88F6322 A1"
|
||||
#define MV_6323_A1_NAME "88F6323 A1"
|
||||
|
||||
|
||||
#endif /* __INCmvDeviceIdh */
|
||||
@@ -0,0 +1,73 @@
|
||||
/*******************************************************************************
|
||||
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 __INCmvHalVerh
|
||||
#define __INCmvHalVerh
|
||||
|
||||
/* Defines */
|
||||
#define MV_HAL_VERSION "FEROCEON_HAL_3_1_7"
|
||||
#define MV_RELEASE_BASELINE "SoCandControllers_FEROCEON_RELEASE_7_9_2009_KW_4_3_4_DD_2_1_4_6183_1_1_4"
|
||||
|
||||
#endif /* __INCmvHalVerh */
|
||||
@@ -0,0 +1,100 @@
|
||||
/*******************************************************************************
|
||||
* Copyright 2003, Marvell Semiconductor Israel LTD. *
|
||||
* THIS CODE CONTAINS CONFIDENTIAL INFORMATION OF MARVELL. *
|
||||
* NO RIGHTS ARE GRANTED HEREIN UNDER ANY PATENT, MASK WORK RIGHT OR COPYRIGHT *
|
||||
* OF MARVELL OR ANY THIRD PARTY. MARVELL RESERVES THE RIGHT AT ITS SOLE *
|
||||
* DISCRETION TO REQUEST THAT THIS CODE BE IMMEDIATELY RETURNED TO MARVELL. *
|
||||
* THIS CODE IS PROVIDED "AS IS". MARVELL MAKES NO WARRANTIES, EXPRESSED, *
|
||||
* IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, COMPLETENESS OR PERFORMANCE. *
|
||||
* *
|
||||
* MARVELL COMPRISES MARVELL TECHNOLOGY GROUP LTD. (MTGL) AND ITS SUBSIDIARIES, *
|
||||
* MARVELL INTERNATIONAL LTD. (MIL), MARVELL TECHNOLOGY, INC. (MTI), MARVELL *
|
||||
* SEMICONDUCTOR, INC. (MSI), MARVELL ASIA PTE LTD. (MAPL), MARVELL JAPAN K.K. *
|
||||
* (MJKK), MARVELL SEMICONDUCTOR ISRAEL LTD (MSIL). *
|
||||
********************************************************************************
|
||||
* mvQueue.c
|
||||
*
|
||||
* FILENAME: $Workfile: mvStack.c $
|
||||
* REVISION: $Revision: 1.1 $
|
||||
* LAST UPDATE: $Modtime: $
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* This file implements simple Stack LIFO functionality.
|
||||
*******************************************************************************/
|
||||
|
||||
/* includes */
|
||||
#include "mvOs.h"
|
||||
#include "mvTypes.h"
|
||||
#include "mvDebug.h"
|
||||
#include "mvStack.h"
|
||||
|
||||
/* defines */
|
||||
|
||||
|
||||
/* Public functions */
|
||||
|
||||
|
||||
/* Purpose: Create new stack
|
||||
* Inputs:
|
||||
* - MV_U32 noOfElements - maximum number of elements in the stack.
|
||||
* Each element 4 bytes size
|
||||
* Return: void* - pointer to created stack.
|
||||
*/
|
||||
void* mvStackCreate(int numOfElements)
|
||||
{
|
||||
MV_STACK* pStack;
|
||||
MV_U32* pStackElements;
|
||||
|
||||
pStack = (MV_STACK*)mvOsMalloc(sizeof(MV_STACK));
|
||||
pStackElements = (MV_U32*)mvOsMalloc(numOfElements*sizeof(MV_U32));
|
||||
if( (pStack == NULL) || (pStackElements == NULL) )
|
||||
{
|
||||
mvOsPrintf("mvStack: Can't create new stack\n");
|
||||
return NULL;
|
||||
}
|
||||
memset(pStackElements, 0, numOfElements*sizeof(MV_U32));
|
||||
pStack->numOfElements = numOfElements;
|
||||
pStack->stackIdx = 0;
|
||||
pStack->stackElements = pStackElements;
|
||||
|
||||
return pStack;
|
||||
}
|
||||
|
||||
/* Purpose: Delete existing stack
|
||||
* Inputs:
|
||||
* - void* stackHndl - Stack handle as returned by "mvStackCreate()" function
|
||||
*
|
||||
* Return: MV_STATUS MV_NOT_FOUND - Failure. StackHandle is not valid.
|
||||
* MV_OK - Success.
|
||||
*/
|
||||
MV_STATUS mvStackDelete(void* stackHndl)
|
||||
{
|
||||
MV_STACK* pStack = (MV_STACK*)stackHndl;
|
||||
|
||||
if( (pStack == NULL) || (pStack->stackElements == NULL) )
|
||||
return MV_NOT_FOUND;
|
||||
|
||||
mvOsFree(pStack->stackElements);
|
||||
mvOsFree(pStack);
|
||||
|
||||
return MV_OK;
|
||||
}
|
||||
|
||||
|
||||
/* PrintOut status of the stack */
|
||||
void mvStackStatus(void* stackHndl, MV_BOOL isPrintElements)
|
||||
{
|
||||
int i;
|
||||
MV_STACK* pStack = (MV_STACK*)stackHndl;
|
||||
|
||||
mvOsPrintf("StackHandle=%p, pElements=%p, numElements=%d, stackIdx=%d\n",
|
||||
stackHndl, pStack->stackElements, pStack->numOfElements,
|
||||
pStack->stackIdx);
|
||||
if(isPrintElements == MV_TRUE)
|
||||
{
|
||||
for(i=0; i<pStack->stackIdx; i++)
|
||||
{
|
||||
mvOsPrintf("%3d. Value=0x%x\n", i, pStack->stackElements[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
/*******************************************************************************
|
||||
* Copyright 2003, Marvell Semiconductor Israel LTD. *
|
||||
* THIS CODE CONTAINS CONFIDENTIAL INFORMATION OF MARVELL. *
|
||||
* NO RIGHTS ARE GRANTED HEREIN UNDER ANY PATENT, MASK WORK RIGHT OR COPYRIGHT *
|
||||
* OF MARVELL OR ANY THIRD PARTY. MARVELL RESERVES THE RIGHT AT ITS SOLE *
|
||||
* DISCRETION TO REQUEST THAT THIS CODE BE IMMEDIATELY RETURNED TO MARVELL. *
|
||||
* THIS CODE IS PROVIDED "AS IS". MARVELL MAKES NO WARRANTIES, EXPRESSED, *
|
||||
* IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, COMPLETENESS OR PERFORMANCE. *
|
||||
* *
|
||||
* MARVELL COMPRISES MARVELL TECHNOLOGY GROUP LTD. (MTGL) AND ITS SUBSIDIARIES, *
|
||||
* MARVELL INTERNATIONAL LTD. (MIL), MARVELL TECHNOLOGY, INC. (MTI), MARVELL *
|
||||
* SEMICONDUCTOR, INC. (MSI), MARVELL ASIA PTE LTD. (MAPL), MARVELL JAPAN K.K. *
|
||||
* (MJKK), MARVELL SEMICONDUCTOR ISRAEL LTD (MSIL). *
|
||||
********************************************************************************
|
||||
* mvStack.h - Header File for :
|
||||
*
|
||||
* FILENAME: $Workfile: mvStack.h $
|
||||
* REVISION: $Revision: 1.1 $
|
||||
* LAST UPDATE: $Modtime: $
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* This file defines simple Stack (LIFO) functionality.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef __mvStack_h__
|
||||
#define __mvStack_h__
|
||||
|
||||
|
||||
/* includes */
|
||||
#include "mvTypes.h"
|
||||
|
||||
|
||||
/* defines */
|
||||
|
||||
|
||||
/* typedefs */
|
||||
/* Data structure describes general purpose Stack */
|
||||
typedef struct
|
||||
{
|
||||
int stackIdx;
|
||||
int numOfElements;
|
||||
MV_U32* stackElements;
|
||||
} MV_STACK;
|
||||
|
||||
static INLINE MV_BOOL mvStackIsFull(void* stackHndl)
|
||||
{
|
||||
MV_STACK* pStack = (MV_STACK*)stackHndl;
|
||||
|
||||
if(pStack->stackIdx == pStack->numOfElements)
|
||||
return MV_TRUE;
|
||||
|
||||
return MV_FALSE;
|
||||
}
|
||||
|
||||
static INLINE MV_BOOL mvStackIsEmpty(void* stackHndl)
|
||||
{
|
||||
MV_STACK* pStack = (MV_STACK*)stackHndl;
|
||||
|
||||
if(pStack->stackIdx == 0)
|
||||
return MV_TRUE;
|
||||
|
||||
return MV_FALSE;
|
||||
}
|
||||
/* Purpose: Push new element to stack
|
||||
* Inputs:
|
||||
* - void* stackHndl - Stack handle as returned by "mvStackCreate()" function.
|
||||
* - MV_U32 value - New element.
|
||||
*
|
||||
* Return: MV_STATUS MV_FULL - Failure. Stack is full.
|
||||
* MV_OK - Success. Element is put to stack.
|
||||
*/
|
||||
static INLINE void mvStackPush(void* stackHndl, MV_U32 value)
|
||||
{
|
||||
MV_STACK* pStack = (MV_STACK*)stackHndl;
|
||||
|
||||
#ifdef MV_RT_DEBUG
|
||||
if(pStack->stackIdx == pStack->numOfElements)
|
||||
{
|
||||
mvOsPrintf("mvStackPush: Stack is FULL\n");
|
||||
return;
|
||||
}
|
||||
#endif /* MV_RT_DEBUG */
|
||||
|
||||
pStack->stackElements[pStack->stackIdx] = value;
|
||||
pStack->stackIdx++;
|
||||
}
|
||||
|
||||
/* Purpose: Pop element from the top of stack and copy it to "pValue"
|
||||
* Inputs:
|
||||
* - void* stackHndl - Stack handle as returned by "mvStackCreate()" function.
|
||||
* - MV_U32 value - Element in the top of stack.
|
||||
*
|
||||
* Return: MV_STATUS MV_EMPTY - Failure. Stack is empty.
|
||||
* MV_OK - Success. Element is removed from the stack and
|
||||
* copied to pValue argument
|
||||
*/
|
||||
static INLINE MV_U32 mvStackPop(void* stackHndl)
|
||||
{
|
||||
MV_STACK* pStack = (MV_STACK*)stackHndl;
|
||||
|
||||
#ifdef MV_RT_DEBUG
|
||||
if(pStack->stackIdx == 0)
|
||||
{
|
||||
mvOsPrintf("mvStackPop: Stack is EMPTY\n");
|
||||
return 0;
|
||||
}
|
||||
#endif /* MV_RT_DEBUG */
|
||||
|
||||
pStack->stackIdx--;
|
||||
return pStack->stackElements[pStack->stackIdx];
|
||||
}
|
||||
|
||||
static INLINE int mvStackIndex(void* stackHndl)
|
||||
{
|
||||
MV_STACK* pStack = (MV_STACK*)stackHndl;
|
||||
|
||||
return pStack->stackIdx;
|
||||
}
|
||||
|
||||
static INLINE int mvStackFreeElements(void* stackHndl)
|
||||
{
|
||||
MV_STACK* pStack = (MV_STACK*)stackHndl;
|
||||
|
||||
return (pStack->numOfElements - pStack->stackIdx);
|
||||
}
|
||||
|
||||
/* mvStack.h API list */
|
||||
|
||||
/* Create new Stack */
|
||||
void* mvStackCreate(int numOfElements);
|
||||
|
||||
/* Delete existing stack */
|
||||
MV_STATUS mvStackDelete(void* stackHndl);
|
||||
|
||||
/* Print status of the stack */
|
||||
void mvStackStatus(void* stackHndl, MV_BOOL isPrintElements);
|
||||
|
||||
#endif /* __mvStack_h__ */
|
||||
|
||||
@@ -0,0 +1,245 @@
|
||||
/*******************************************************************************
|
||||
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 (0x00) /* Operation succeeded */
|
||||
#define MV_FAIL (0x01) /* Operation failed */
|
||||
#define MV_BAD_VALUE (0x02) /* Illegal value (general) */
|
||||
#define MV_OUT_OF_RANGE (0x03) /* The value is out of range */
|
||||
#define MV_BAD_PARAM (0x04) /* Illegal parameter in function called */
|
||||
#define MV_BAD_PTR (0x05) /* Illegal pointer value */
|
||||
#define MV_BAD_SIZE (0x06) /* Illegal size */
|
||||
#define MV_BAD_STATE (0x07) /* Illegal state of state machine */
|
||||
#define MV_SET_ERROR (0x08) /* Set operation failed */
|
||||
#define MV_GET_ERROR (0x09) /* Get operation failed */
|
||||
#define MV_CREATE_ERROR (0x0A) /* Fail while creating an item */
|
||||
#define MV_NOT_FOUND (0x0B) /* Item not found */
|
||||
#define MV_NO_MORE (0x0C) /* No more items found */
|
||||
#define MV_NO_SUCH (0x0D) /* No such item */
|
||||
#define MV_TIMEOUT (0x0E) /* Time Out */
|
||||
#define MV_NO_CHANGE (0x0F) /* Parameter(s) is already in this value */
|
||||
#define MV_NOT_SUPPORTED (0x10) /* This request is not support */
|
||||
#define MV_NOT_IMPLEMENTED (0x11) /* Request supported but not implemented */
|
||||
#define MV_NOT_INITIALIZED (0x12) /* The item is not initialized */
|
||||
#define MV_NO_RESOURCE (0x13) /* Resource not available (memory ...) */
|
||||
#define MV_FULL (0x14) /* Item is full (Queue or table etc...) */
|
||||
#define MV_EMPTY (0x15) /* Item is empty (Queue or table etc...) */
|
||||
#define MV_INIT_ERROR (0x16) /* Error occured while INIT process */
|
||||
#define MV_HW_ERROR (0x17) /* Hardware error */
|
||||
#define MV_TX_ERROR (0x18) /* Transmit operation not succeeded */
|
||||
#define MV_RX_ERROR (0x19) /* Recieve operation not succeeded */
|
||||
#define MV_NOT_READY (0x1A) /* The other side is not ready yet */
|
||||
#define MV_ALREADY_EXIST (0x1B) /* Tried to create existing item */
|
||||
#define MV_OUT_OF_CPU_MEM (0x1C) /* Cpu memory allocation failed. */
|
||||
#define MV_NOT_STARTED (0x1D) /* Not started yet */
|
||||
#define MV_BUSY (0x1E) /* Item is busy. */
|
||||
#define MV_TERMINATE (0x1F) /* Item terminates it's work. */
|
||||
#define MV_NOT_ALIGNED (0x20) /* Wrong alignment */
|
||||
#define MV_NOT_ALLOWED (0x21) /* Operation NOT allowed */
|
||||
#define MV_WRITE_PROTECT (0x22) /* Write protected */
|
||||
|
||||
|
||||
#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;
|
||||
|
||||
|
||||
/* 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_PKT_INFO;
|
||||
|
||||
#endif /* MV_ASMLANGUAGE */
|
||||
|
||||
#endif /* __INCmvTypesh */
|
||||
|
||||
Reference in New Issue
Block a user