/*******************************************************************************
*              Copyright 2002, GALILEO TECHNOLOGY, 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, EXPRESS, 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), GALILEO TECHNOLOGY LTD. (GTL)
* AND GALILEO TECHNOLOGY, INC. (GTI).
********************************************************************************
* gtPhy.h
*
* DESCRIPTION:
*       API definitions for Marvell Phy functionality.
*
* DEPENDENCIES:
*       None.
*
* FILE REVISION NUMBER:
*       $Revision: 1 $
*******************************************************************************/

#ifndef __gtPhyh
#define __gtPhyh

#include "msApi.h"

#ifdef __cplusplus
extern "C" {
#endif

#define MARVELL_OUI_MSb		0x0141
#define MARVELL_OUI_LSb		0x0C00
#define OUI_LSb_MASK		0xFC00
#define PHY_MODEL_MASK		0x03F0
#define PHY_REV_MASK		0x000F

#define DEV_E3082		0x8 << 4
#define DEV_E104X		0x2 << 4
#define DEV_E1111		0xC << 4
#define DEV_E1112		0x9 << 4
#define DEV_E114X		0xD << 4
#define DEV_E1149		0xA << 4
#define DEV_E1181		0xE << 4
#define DEV_EC010		0x3 << 4
#define DEV_G15LV		0xB << 4	/* 88E6165 internal copper phy, 88E1240 */
#define DEV_S15LV		0x0 << 4	/* 88E6165 internal SERDES */
#define DEV_G65G		0x27 << 4	/* 88E6375 internal copper phy, 88E1340 */
#define DEV_G65FE		0x26 << 4	/* FE phy intergrated in 88E6500*/
#define DEV_G65GE		0x2B << 4	/* GE phy intergrated in 88E6500*/
#define DEV_QUAD3		0x1F << 4	/* YuvalC 1545 quad_phy - phy connected to amber_switch_3 */

typedef struct _GT_PHY_INFO
{
	GT_U32	phyId;		/* Marvell PHY ID (register 3) */
	GT_U32	anyPage;	/* each bit represents if the corresponding register is any page */
	GT_U32	flag;		/* see below for definition */
	GT_U8	vctType;	/* VCT Register Type */
	GT_U8	exStatusType;	/* EX Status Register Type */
	GT_U8	dteType;	/* DTE Register Type */
	GT_U8	pktGenType;	/* Pkt Generator Reg. Type */
	GT_U8	macIfLoopType;		/* MAC IF Loopback Reg. Type */
	GT_U8	lineLoopType;		/* Line Loopback Reg. Type */
	GT_U8	exLoopType;		/* External Loopback Reg. Type */
	GT_U8	pageType;		/* Page Restriction Type */
} GT_PHY_INFO;

/* GT_PHY_INFO flag definition */
#define GT_PHY_VCT_CAPABLE		0x0001
#define GT_PHY_DTE_CAPABLE		0x0002
#define GT_PHY_EX_CABLE_STATUS	0x0004
#define GT_PHY_ADV_VCT_CAPABLE	0x0008
#define GT_PHY_PKT_GENERATOR	0x0010
#define GT_PHY_MAC_IF_LOOP		0x0100
#define GT_PHY_LINE_LOOP		0x0200
#define GT_PHY_EXTERNAL_LOOP	0x0400
#define GT_PHY_RESTRICTED_PAGE	0x0800
#define GT_PHY_GIGABIT			0x8000
#define GT_PHY_COPPER			0x4000
#define GT_PHY_FIBER			0x2000
#define GT_PHY_SERDES_CORE		0x1000

/* VCT Register Type */
#define GT_PHY_VCT_TYPE1	1	/* 10/100 Fast Ethernet */
#define GT_PHY_VCT_TYPE2	2	/* 1000M without page support */
#define GT_PHY_VCT_TYPE3	3	/* 1000M without page but with work around */
#define GT_PHY_VCT_TYPE4	4	/* 1000M with page support */

/* ADV VCT Register Type */
#define GT_PHY_ADV_VCT_TYPE1	5	/* 88E1181 type device, not supported */
#define GT_PHY_ADV_VCT_TYPE2	6	/* 88E6165 family devies */

/* Extended Status Type */
#define GT_PHY_EX_STATUS_TYPE1	1	/* 88E1111, 88E1141, 88E1145 */
#define GT_PHY_EX_STATUS_TYPE2	2	/* 88E1112 */
#define GT_PHY_EX_STATUS_TYPE3	3	/* 88E1149 */
#define GT_PHY_EX_STATUS_TYPE4	4	/* 88E1181 */
#define GT_PHY_EX_STATUS_TYPE5	5	/* 88E1116 */
#define GT_PHY_EX_STATUS_TYPE6	6	/* 88E6165 family devices */

/* DTE Register Type */
#define GT_PHY_DTE_TYPE1	1	/* 10/100 Fast Ethernet with workaround */
#define GT_PHY_DTE_TYPE2	2	/* 1000M without page support */
#define GT_PHY_DTE_TYPE3	3	/* 1000M without page but with work around */
#define GT_PHY_DTE_TYPE4	4	/* 1000M with page support */
#define GT_PHY_DTE_TYPE5	5	/* 10/100 Fast Ethernet */

/* Pkt Generator Register Type */
#define GT_PHY_PKTGEN_TYPE1	1	/* Uses Register 30 */
#define GT_PHY_PKTGEN_TYPE2	2	/* Uses Register 16 */
#define GT_PHY_PKTGEN_TYPE3	3	/* Uses Register 25 */

/* MAC Interface Loopback Register Type */
#define GT_PHY_LOOPBACK_TYPE0	0	/* Don't do anything */
#define GT_PHY_LOOPBACK_TYPE1	1	/* 0.14 only */
#define GT_PHY_LOOPBACK_TYPE2	2	/* For DEV_G15LV like device */
#define GT_PHY_LOOPBACK_TYPE3	3	/* For DEV_S15LV like device */
#define GT_PHY_LOOPBACK_TYPE4	4	/* For DEV_E1111 like device */

/* Line Loopback Register Type */
#define GT_PHY_LINE_LB_TYPE1	1	/* 0_2.14 */
#define GT_PHY_LINE_LB_TYPE2	2	/* 21_2.14 */
#define GT_PHY_LINE_LB_TYPE3	3	/* 20.14 */
#define GT_PHY_LINE_LB_TYPE4	4	/* 16.12 */

/* External Loopback Register Type */
#define GT_PHY_EX_LB_TYPE0	0	/* Don't do anything */
#define GT_PHY_EX_LB_TYPE1	1	/* For DEV_E1111 like dev */
#define GT_PHY_EX_LB_TYPE2	2	/* For DEV_E1149 like dev */

/* Restricted Page Access Type */
#define GT_PHY_PAGE_WRITE_BACK	0	/* For every device */
#define GT_PHY_PAGE_DIS_AUTO1	1	/* For 88E1111 type */
#define GT_PHY_PAGE_DIS_AUTO2	2	/* For 88E1121 type */
#define GT_PHY_NO_PAGE			3	/* No Pages */


/* definition for formula to calculate actual distance */
#ifdef FP_SUPPORT
#define FORMULA_PHY100M(_data)	((_data)*0.7861 - 18.862)
#define FORMULA_PHY1000M(_data)	((_data)*0.8018 - 28.751)
#else
#define FORMULA_PHY100M(_data)	(((long)(_data)*7861 - 188620)/10000 + (((((long)(_data)*7861 - 188620)%10000) >= 5000)?1:0))
#define FORMULA_PHY1000M(_data)	(((long)(_data)*8018 - 287510)/10000 + (((((long)(_data)*8018 - 287510)%10000) >= 5000)?1:0))
#endif

#define GT_ADV_VCT_CALC(_data)	    \
        (((long)(_data)*8333 - 191667)/10000 + (((((long)(_data)*8333 - 191667)%10000) >= 5000)?1:0))

#define GT_ADV_VCT_CALC_SHORT(_data)	    \
        (((long)(_data)*7143 - 71429)/10000 + (((((long)(_data)*7143 - 71429)%10000) >= 5000)?1:0)) 

/* macro to check VCT Failure */
#define IS_VCT_FAILED(_reg)		\
		(((_reg) & 0xFF) == 0xFF)

/* macro to find out if Amplitude is zero */
#define IS_ZERO_AMPLITUDE(_reg)	\
		(((_reg) & 0x7F00) == 0)

/* macro to retrieve Amplitude */
#define GET_AMPLITUDE(_reg)	\
		(((_reg) & 0x7F00) >> 8)
		
/* macro to find out if Amplitude is positive */
#define IS_POSITIVE_AMPLITUDE(_reg)	\
		(((_reg) & 0x8000) == 0x8000)

typedef struct _VCT_REGISTER
{
	GT_U8	page;
	GT_U8	regOffset;
} VCT_REGISTER;


#ifdef __cplusplus
}
#endif

#endif /* __gtPhyh */
