/*******************************************************************************
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.

******************************************************************************/

/******************************************************************************
**  FILE        : gponOnuLnxKsMI.h                                           **
**                                                                           **
**  DESCRIPTION : This file contains ONU GPON Management Interface           **
*******************************************************************************
*                                                                             *                              
*  MODIFICATION HISTORY:                                                      *
*                                                                             *
*   29Oct06  Oren Ben Hayun   created                                         *  
* =========================================================================== *      
******************************************************************************/
#ifndef _ONU_GPON_LINUX_KS_MNG_INTERFACE_H
#define _ONU_GPON_LINUX_KS_MNG_INTERFACE_H

/* Include Files
------------------------------------------------------------------------------*/
 
/* Definitions
------------------------------------------------------------------------------*/ 
#define MVGPON_IOCTL_INIT               _IOW(MVPON_IOCTL_MAGIC, 1,  unsigned int)
#define MVGPON_IOCTL_BEN_INIT           _IOW(MVPON_IOCTL_MAGIC, 2,  unsigned int)
#define MVGPON_IOCTL_DATA_TCONT_CONFIG	_IOW(MVPON_IOCTL_MAGIC, 3,  unsigned int)
#define MVGPON_IOCTL_DATA_TCONT_CLEAR   _IOR(MVPON_IOCTL_MAGIC, 4,  unsigned int)
#define MVGPON_IOCTL_DATA_TCONT_RESET	 _IO(MVPON_IOCTL_MAGIC, 5)
#define MVGPON_IOCTL_INFO               _IOR(MVPON_IOCTL_MAGIC, 6,  unsigned int)
#define MVGPON_IOCTL_ALARM              _IOR(MVPON_IOCTL_MAGIC, 7,  unsigned int)
#define MVGPON_IOCTL_PM                 _IOR(MVPON_IOCTL_MAGIC, 8,  unsigned int)
#define MVGPON_IOCTL_GEM                _IOW(MVPON_IOCTL_MAGIC, 9,  unsigned int)
#define MVGPON_IOCTL_GEMPORT_PM_CONFIG  _IOW(MVPON_IOCTL_MAGIC, 10, unsigned int)
#define MVGPON_IOCTL_GEMPORT_PM_GET     _IOR(MVPON_IOCTL_MAGIC, 11, unsigned int)
#define MVGPON_IOCTL_GEMPORT_PM_RESET   _IOW(MVPON_IOCTL_MAGIC, 12, unsigned int)
#define MVGPON_IOCTL_GEMPORT_STATE_GET  _IOW(MVPON_IOCTL_MAGIC, 13, unsigned int)
#define MVGPON_IOCTL_GEMPORT_STATE_SET  _IOW(MVPON_IOCTL_MAGIC, 14, unsigned int)

#define ONU_GPON_DEBUG_STATE        (0xFF)

/* Enums                              
------------------------------------------------------------------------------*/ 
typedef enum
{
  E_GPON_IOCTL_PM_PLOAM_RX = 1,
  E_GPON_IOCTL_PM_PLOAM_TX = 2,
  E_GPON_IOCTL_PM_BW_MAP   = 3,
  E_GPON_IOCTL_PM_FEC      = 4,
  E_GPON_IOCTL_PM_GEM_RX   = 5,
  E_GPON_IOCTL_PM_GEM_TX   = 6
}E_GponIoctlPmSection;

typedef enum
{
  E_GEPON_IOCTL_GEM_ADD         = 1,
  E_GEPON_IOCTL_GEM_REMOVE      = 2,
  E_GEPON_IOCTL_GEM_CLEARALL    = 3
}E_GponIoctlGemAction;

typedef enum
{
  GEMPORTPMCMD_STOP  = 0, 
  GEMPORTPMCMD_START = 1
}E_GponIoctlGemPortCmd;

/* Typedefs
------------------------------------------------------------------------------*/
typedef struct                                                                                                                                
{                                                                                                                                             
  MV_U32 rxIdlePloam;                                                                                                                       
  MV_U32 rxCrcErrorPloam;                                                                                                                   
  MV_U32 rxFifoOverErrorPloam;                                                                                                              
  MV_U32 rxBroadcastPloam;                                                                                                                  
  MV_U32 rxOnuIdPloam;                                                                                                                      
  MV_U32 rxMsgIdPloam[ONU_GPON_DS_MSG_LAST+1];                                                                                              
  MV_U32 rxMsgTotalPloam;                                                                                                                   
}S_GponIoctlPloamRxPm;                                                                                                                            

typedef struct                                                                                                                                
{                                                                                                                                             
  MV_U32 txErrMsgIdPloam[ONU_GPON_US_MSG_LAST+1];                                                                                           
  MV_U32 txMsgIdPloam[ONU_GPON_US_MSG_LAST+1];                                                                                                                                  
  MV_U32 txMsgTotalPloam;                                                                    
}S_GponIoctlPloamTxPm;                                                                             
                                                                                               
typedef struct                                                                                 
{                                                                                              
  MV_U32 allocCrcErr;                                                                        
  MV_U32 allocCorrectableCrcErr;                                                                                                                                                  
  MV_U32 allocUnCorrectableCrcErr;                                                                                                             
  MV_U32 allocCorrec;                                                                                                                          
  MV_U32 totalReceivedAllocBytes;                                                                                                              
}S_GponIoctlBwMapPm;                                                                                                                                 
                                                                                                                                                 
typedef struct                                                                                                                                   
{                                                                                                          
  MV_U32 receivedBytes;                                                                                  
  MV_U32 correctedBytes;                                                                                                                    
  MV_U32 correctedBits;                                                                                                                     
  MV_U32 receivedCodeWords;                                                                                                                 
  MV_U32 uncorrectedCodeWords;                                                                                                              
}S_GponIoctlFecPm;                                                                                                                                
                                                                                                                                              
typedef struct                                                                                                                                
{                                                                                                                                             
  MV_U32 gemRxIdleGemFrames;                                                                                
  MV_U32 gemRxValidGemFrames;                                                                               
  MV_U32 gemRxUndefinedGemFrames;                                                                                                                 
  MV_U32 gemRxOmciFrames;                                                                                                                         
  MV_U32 gemRxDroppedGemFrames;                                                                                                                   
  MV_U32 gemRxDroppedOmciFrames;                                                                                                                  
  MV_U32 gemRxGemFramesWithUncorrHecErr;                                                                                                          
  MV_U32 gemRxGemFramesWithOneFixedHecErr;                                                                                             
  MV_U32 gemRxGemFramesWithTwoFixedHecErr;                                                                                             
  MV_U32 gemRxTotalByteCountOfReceivedValidGemFrames;                                                                                  
  MV_U32 gemRxTotalByteCountOfReceivedUndefinedGemFrames;                                                                              
  MV_U32 gemRxGemReassembleMemoryFlush;                                                                                                
  MV_U32 gemRxGemSynchLost;                                                                                                            
  MV_U32 gemRxEthFramesWithCorrFcs;                                                                                                    
  MV_U32 gemRxEthFramesWithFcsError;                                                                                                   
  MV_U32 gemRxOmciFramesWithCorrCrc;                                                                                                   
  MV_U32 gemRxOmciFramesWithCrcError;                                                                                                  
}S_GponIoctlGemRxPm;              

typedef struct                                                                                                            
{                                                                                                                         
  MV_U32 gemTxGemPtiTypeOneFrames;                                                                                      
  MV_U32 gemTxGemPtiTypeZeroFrames;                                                                                     
  MV_U32 gemTxIdleGemFrames;                                                                                            
  MV_U32 gemTxEthFramesViaTconti[ONU_GPON_MAX_NUM_OF_T_CONTS];                                                          
  MV_U32 gemTxEthBytesViaTconti[ONU_GPON_MAX_NUM_OF_T_CONTS];                                                           
  MV_U32 gemTxGemFramesViaTconti[ONU_GPON_MAX_NUM_OF_T_CONTS];                                                           
  MV_U32 gemTxIdleGemFramesViaTconti[ONU_GPON_MAX_NUM_OF_T_CONTS];                                                      
}S_GponIoctlGemTxPm;                                                                                                          
                                                                                                                          
typedef struct                                                                                                            
{                                                                                                                         
  unsigned int  section;                                                                                                  
  union                                                                                                                   
  {                                                                                                                       
    S_GponIoctlPloamRxPm ploamRx;                                                                                             
    S_GponIoctlPloamTxPm ploamTx;                                                                                             
    S_GponIoctlBwMapPm   bwMap;                                                             
    S_GponIoctlFecPm     fec;                                                                             
    S_GponIoctlGemRxPm   gemRx;                                                                           
    S_GponIoctlGemTxPm   gemTx;                                                                           
  };                                                                                                  
}S_GponIoctlPm;                                                                                           
                                                                                                      
typedef struct                                                                                        
{                                                                                                     
  MV_U32 alarmTbl[ONU_GPON_NUM_OF_ALARMS];                                                      
}S_GponIoctlAlarm;                                                                                        
                                                                                                      
typedef struct                                                                                         
{                                                                                        
  MV_U32 onuId;      
  MV_U32 onuState;      
  MV_U32 onuSignalDetect;      
  MV_U32 onuDsSyncOn;
  MV_U32 omccPort;                                                                 
  MV_U32 omccValid;  
  MV_U32 serialNumSource;
  MV_U8  serialNum[8];                                                            
  MV_U8  password[10];     
  MV_U32 disableSn;
  MV_U32 clearGem;  
  MV_U32 clearTcont;
  MV_U32 restoreGem;
  MV_U32 dgPolarity;
  MV_U32 ponXvrBurstEnPolarity;
  MV_U32 ponXvrPolarity;
  MV_U32 p2pXvrBurstEnPolarity;
  MV_U32 p2pXvrPolarity;
  MV_U32 fecHyst;
  MV_U32 couplingMode;    /* AC Coupling Mode */
}S_GponIoctlInfo;  
                                                                                         
typedef struct                                                                           
{                                                                                        
  MV_U32 alloc;                                                                    
  MV_U32 tcont;    
  MV_U32 gemPort;                                                                    
  MV_U32 gemState;    
}S_GponIoctlData;                                                                            
                                                                                         
typedef struct                                                                           
{
  MV_U32 mask;   
  MV_U32 polarity;
  MV_U32 delay;  
  MV_U32 enStop; 
  MV_U32 enStart;
}S_GponIoctlXvr;

/* Gem */
typedef struct                                                                           
{   
  uint32_t             gemmap[GPON_ONU_MAX_GEM_PORTS/32];   
  E_GponIoctlGemAction action;
}S_GponIoctlGem;

typedef struct
{
  E_GponIoctlGemPortCmd command;
  MV_U16                gem_port;
}S_GponIoctlGemPortPmConfig;

typedef struct
{
  MV_U16  gem_port;

  MV_U64  good_octets_received;
  MV_U32  bad_octets_received;
  MV_U32  mac_trans_error;
  MV_U32  good_frames_received;
  MV_U32  bad_frames_received;
  MV_U32  broadcast_frames_received;
  MV_U32  multicast_frames_received;
  MV_U32  frames_64_octets;
  MV_U32  frames_65_to_127_octets;
  MV_U32  frames_128_to_255octets;
  MV_U32  frames_256_to_511_octets;
  MV_U32  frames_512_to_1023_octets; 
  MV_U32  frames_1024_to_max_octets; 
  MV_U64  good_octets_sent;
  MV_U32  good_frames_sent;
  MV_U32  multicast_frames_sent;
  MV_U32  broadcast_frames_sent;
  MV_U32  bad_crc_received;
} S_GponIoctlGemPortMibCounters;

typedef struct 
{
  S_GponIoctlInfo  g_info;
  S_GponIoctlAlarm alarm;
  S_GponIoctlPm    g_pm;
  S_GponIoctlData  data;
  struct cdev      cdev;
}S_GponModuleCdev;

/* Global variables
------------------------------------------------------------------------------*/

/* Global functions
------------------------------------------------------------------------------*/

/* Global variables
------------------------------------------------------------------------------*/

/* Global functions
------------------------------------------------------------------------------*/

MV_STATUS onuGponMngInterfaceCreate(void);
MV_STATUS onuGponMngInterfaceRelease(void);
void      onuGponMiNotifyCallback(MV_U32 onuState);

/* Macros
------------------------------------------------------------------------------*/    

#endif /* _ONU_GPON_LINUX_KS_MNG_INTERFACE_H */

  

