kernel/prism: add support for PON-ID PLOAM message
Change-Id: I07adb3deab5bf839440c78d51655e7ace5e83130
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuDb.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuDb.c
index 391bc35..0ac16db 100755
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuDb.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuDb.c
@@ -3403,3 +3403,217 @@
return(onuGponDb_s.onuGponGenTbl_s.onuLinkStatusCallback);
}
+/*******************************************************************************
+**
+** onuGponDbPONIdTypeABitGet
+** ____________________________________________________________________________
+**
+** DESCRIPTION: The function returns PON Id type A bit (from PON-ID maintenance)
+**
+** PARAMETERS: None
+**
+** OUTPUTS: None
+**
+** RETURNS: ponIdTypeABit
+**
+*******************************************************************************/
+MV_U8 onuGponDbPONIdTypeABitGet(void)
+{
+ return(onuGponDb_s.onuGponOperParamsTbl_s.onuGponPONIdTypeABit);
+}
+
+/*******************************************************************************
+**
+** onuGponDbPONIdTypeABitSet
+** ____________________________________________________________________________
+**
+** DESCRIPTION: The function sets PON Id type A bit (from PON-ID maintenance)
+** in the database
+**
+** PARAMETERS: MV_U8 ponIdTypeABit
+**
+** OUTPUTS: None
+**
+** RETURNS: MV_OK
+**
+*******************************************************************************/
+MV_STATUS onuGponDbPONIdTypeABitSet(MV_U8 ponIdTypeABit)
+{
+ onuGponDb_s.onuGponOperParamsTbl_s.onuGponPONIdTypeABit = ponIdTypeABit;
+
+ return(MV_OK);
+}
+
+/*******************************************************************************
+**
+** onuGponDbPONIdClassTypeGet
+** ____________________________________________________________________________
+**
+** DESCRIPTION: The function returns PONIdClassType (from PON-ID maintenance)
+**
+** PARAMETERS: None
+**
+** OUTPUTS: None
+**
+** RETURNS: ponIdClassType
+**
+*******************************************************************************/
+MV_U8 onuGponDbPONIdClassTypeGet(void)
+{
+ return(onuGponDb_s.onuGponOperParamsTbl_s.onuGponPONIdClassType);
+}
+
+/*******************************************************************************
+**
+** onuGponDbPONIdClassTypeGet
+** ____________________________________________________________________________
+**
+** DESCRIPTION: The function returns PONIdClassType (from PON-ID maintenance)
+**
+** PARAMETERS: None
+**
+** OUTPUTS: None
+**
+** RETURNS: ponIdClassType
+**
+*******************************************************************************/
+MV_U8* onuGponDbPONIdClassTypeStrGet(void)
+{
+ MV_U8 *ponIdClassTypeText[] = {"Class A", "Class B","Class B+","Class C","Class C+","reserved"};
+ MV_U8 *ret;
+
+ if (onuGponDb_s.onuGponOperParamsTbl_s.onuGponPONIdClassType > ONU_GPON_PON_ID_TYPE_CLASS_MAX)
+ {
+ ret = ponIdClassTypeText[ONU_GPON_PON_ID_TYPE_CLASS_MAX];
+ }
+ else
+ {
+ ret = ponIdClassTypeText[onuGponDb_s.onuGponOperParamsTbl_s.onuGponPONIdClassType];
+ }
+ return ret;
+}
+
+/*******************************************************************************
+**
+** onuGponDbPONIdClassTypeSet
+** ____________________________________________________________________________
+**
+** DESCRIPTION: The function sets PONIdClassType (from PON-ID maintenance)
+** in the database
+**
+** PARAMETERS: MV_U8 ponIdClassType
+**
+** OUTPUTS: None
+**
+** RETURNS: MV_OK
+**
+*******************************************************************************/
+MV_STATUS onuGponDbPONIdClassTypeSet(MV_U8 ponIdClassType)
+{
+ MV_STATUS ret = MV_OK;
+
+ if (ponIdClassType > ONU_GPON_PON_ID_TYPE_CLASS_MAX)
+ {
+ ret = MV_BAD_PARAM;
+ }
+ else
+ {
+ onuGponDb_s.onuGponOperParamsTbl_s.onuGponPONIdClassType = ponIdClassType;
+ }
+
+ return(ret);
+}
+
+/*******************************************************************************
+**
+** onuGponDbPONIdBytesInfoGet
+** ____________________________________________________________________________
+**
+** DESCRIPTION: The function returns PONId bytes info array (from PON-ID maintenance)
+**
+** PARAMETERS: None
+**
+** OUTPUTS: None
+**
+** RETURNS: ponIdBytesInfo
+**
+*******************************************************************************/
+void onuGponDbPONIdBytesInfoGet(MV_U8 *ponIdBytesInfo)
+{
+ memcpy(ponIdBytesInfo, &(onuGponDb_s.onuGponOperParamsTbl_s.onuGponPONIdBytesInfo[0]), ONU_GPON_PON_ID_BYTES_LEN);
+}
+
+/*******************************************************************************
+**
+** onuGponDbPONIdBytesInfoSet
+** ____________________________________________________________________________
+**
+** DESCRIPTION: The function sets PONId bytes info array (from PON-ID maintenance)
+** in the database
+**
+** PARAMETERS: MV_U8* ponIdBytesInfo
+**
+** OUTPUTS: None
+**
+** RETURNS: MV_OK
+**
+*******************************************************************************/
+MV_STATUS onuGponDbPONIdBytesInfoSet(MV_U8 *ponIdBytesInfo)
+{
+ MV_STATUS ret = MV_OK;
+
+ if (ponIdBytesInfo == NULL)
+ {
+ ret = MV_BAD_PARAM;
+ }
+ else
+ {
+ memcpy(&(onuGponDb_s.onuGponOperParamsTbl_s.onuGponPONIdBytesInfo[0]), ponIdBytesInfo, ONU_GPON_PON_ID_BYTES_LEN);
+ }
+
+ return(ret);
+}
+
+/*******************************************************************************
+**
+** onuGponDbPONIdOpticalLevelGet
+** ____________________________________________________________________________
+**
+** DESCRIPTION: The function returns PONId Tx Optical Level (from PON-ID maintenance)
+**
+** PARAMETERS: None
+**
+** OUTPUTS: None
+**
+** RETURNS: onuGponPONIdTxOpticalLevel
+**
+*******************************************************************************/
+MV_U16 onuGponDbPONIdOpticalLevelGet(void)
+{
+ return(onuGponDb_s.onuGponOperParamsTbl_s.onuGponPONIdTxOpticalLevel);
+}
+
+/*******************************************************************************
+**
+** onuGponDbPONIdOpticalLevelSet
+** ____________________________________________________________________________
+**
+** DESCRIPTION: The function sets PONId Tx Optical Level (from PON-ID maintenance)
+** in the database
+**
+** PARAMETERS: MV_U16 ponIdTxOpticalLevel
+**
+** OUTPUTS: None
+**
+** RETURNS: MV_OK
+**
+*******************************************************************************/
+MV_STATUS onuGponDbPONIdOpticalLevelSet(MV_U16 ponIdTxOpticalLevel)
+{
+ MV_STATUS ret = MV_OK;
+
+ onuGponDb_s.onuGponOperParamsTbl_s.onuGponPONIdTxOpticalLevel = ponIdTxOpticalLevel;
+
+ return(ret);
+}
+
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuDb.h b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuDb.h
index 535b6ea..5c9ae9f 100755
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuDb.h
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuDb.h
@@ -88,11 +88,14 @@
/******************************************************************************/
/* GPON Definitions */
-#define ONU_GPON_SN_LEN (8)
-#define ONU_GPON_PASS_LEN (10)
-#define ONU_GPON_PREAMBLE_LEN (3)
-#define ONU_GPON_DELIMITER_LEN (3)
-#define ONU_GPON_MSG_LEN (3)
+#define ONU_GPON_SN_LEN (8)
+#define ONU_GPON_PASS_LEN (10)
+#define ONU_GPON_PREAMBLE_LEN (3)
+#define ONU_GPON_DELIMITER_LEN (3)
+#define ONU_GPON_MSG_LEN (3)
+#define ONU_GPON_MSG_LEN (3)
+#define ONU_GPON_PON_ID_BYTES_LEN (7)
+#define ONU_GPON_PON_ID_TYPE_CLASS_MAX (4)
/* Enums
------------------------------------------------------------------------------*/
@@ -200,6 +203,10 @@
MV_BOOL onuGponGemPortSave[GPON_ONU_MAX_GEM_PORTS];
MV_U8 onuGponPassword[ONU_GPON_PASS_LEN]; /* ONU password */
MV_U16 onuGponReiSeqNum; /* ONU REI sequence number */
+ MV_U8 onuGponPONIdTypeABit; /* PON-ID Type A-bit */
+ MV_U8 onuGponPONIdClassType; /* PON-ID Class type */
+ MV_U8 onuGponPONIdBytesInfo[ONU_GPON_PON_ID_BYTES_LEN]; /* PON-ID Bytes info*/
+ MV_U16 onuGponPONIdTxOpticalLevel; /* PON-ID Type TxOpticalLevel */
}S_OnuGponOperParamsTbl;
/**************************************/
@@ -372,6 +379,15 @@
MV_U32 onuGponDbTcontResetGet(void);
MV_VOID onuGponDbGemRestoreSet(MV_BOOL gem_restore);
MV_BOOL onuGponDbGemRestoreGet(MV_VOID);
+MV_U8 onuGponDbPONIdTypeABitGet(void);
+MV_STATUS onuGponDbPONIdTypeABitSet(MV_U8 ponIdTypeABit);
+MV_U8 onuGponDbPONIdClassTypeGet(void);
+MV_U8* onuGponDbPONIdClassTypeStrGet(void);
+MV_STATUS onuGponDbPONIdClassTypeSet(MV_U8 ponIdClassType);
+void onuGponDbPONIdBytesInfoGet(MV_U8 *ponIdBytesInfo);
+MV_STATUS onuGponDbPONIdBytesInfoSet(MV_U8 *ponIdBytesInfo);
+MV_U16 onuGponDbPONIdOpticalLevelGet(void);
+MV_STATUS onuGponDbPONIdOpticalLevelSet(MV_U16 ponIdTxOpticalLevel);
/* ONU GPON BW Alloc param table API functions */
MV_STATUS onuGponDbBwAllocSet(MV_U32 entry, MV_U32 allocId, MV_BOOL valid);
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuInit.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuInit.c
index 773fa42..73ee3ff 100755
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuInit.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuInit.c
@@ -1001,6 +1001,7 @@
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_SN_MASK][state] = (GPONFUNCPTR)onuGponPonMngSerialNumberMaskMsg;
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_EXT_BURST_LEN][state] = (GPONFUNCPTR)onuGponPonMngExtBurstMsg;
+ onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_PON_ID][state] = (GPONFUNCPTR)onuGponPonMngPonIdMaintenanceMsg;
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_ASSIGN_ONU_ID][state] = (GPONFUNCPTR)onuGponPonMngOnuIdMsg;
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_DIS_SN][state] = (GPONFUNCPTR)onuGponPonMngDisSnMsg;
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_PHYSICAL_EQUIP_ERR][state] = (GPONFUNCPTR)onuGponPonMngPhyEquErrMsg;
@@ -1014,6 +1015,7 @@
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_DACT_ONU_ID][state] = (GPONFUNCPTR)onuGponPonMngDactOnuIdMsg;
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_DIS_SN][state] = (GPONFUNCPTR)onuGponPonMngDisSnMsg;
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_PHYSICAL_EQUIP_ERR][state] = (GPONFUNCPTR)onuGponPonMngPhyEquErrMsg;
+ onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_PON_ID][state] = (GPONFUNCPTR)onuGponPonMngPonIdMaintenanceMsg;
/* ONU GPON OPERATION STATE 05 */
/* --------------------------- */
@@ -1032,6 +1034,7 @@
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_REQ_KEY][state] = (GPONFUNCPTR)onuGponPonMngReqKeyMsg;
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_BER_INTERVAL][state] = (GPONFUNCPTR)onuGponPonMngBerIntervalMsg;
onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_KEY_SWITCH_TIME][state] = (GPONFUNCPTR)onuGponPonMngKeySwitchTimeMsg;
+ onuGponGenTbl_p->onuGponStateAndEventTbl[ONU_GPON_EVENT_MSG_PON_ID][state] = (GPONFUNCPTR)onuGponPonMngPonIdMaintenanceMsg;
/* ONU GPON POPUP STATE 06 */
/* ----------------------- */
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngr.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngr.c
index 139e964..3fae138 100755
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngr.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngr.c
@@ -108,7 +108,8 @@
"PST MESSAGE",
"BER INTERVAL",
"KEY SWITCHING TIME",
- "EXTENDED BURST LENGTH"
+ "EXTENDED BURST LENGTH",
+ "PON-ID MAINTENANCE"
};
extern spinlock_t onuPonIrqLock;
@@ -376,7 +377,7 @@
if ((onuId == ONU_GPON_BROADCAST_ONU_ID) || (onuId == appOnuId))
{
/* Handle valid messages */
- if ((msgId >= ONU_GPON_DS_MSG_OVERHEAD) && (msgId <= ONU_GPON_DS_MSG_EXT_BURST_LEN))
+ if ((msgId >= ONU_GPON_DS_MSG_OVERHEAD) && (msgId <= ONU_GPON_DS_MSG_LAST))
{
/* Call the relevant event function */
ptrFunc = (onuGponGenTbl_p->onuGponStateAndEventTbl[(msgId)][onuState]);
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngr.h b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngr.h
index 876cf5b..e971604 100755
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngr.h
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngr.h
@@ -169,6 +169,7 @@
void onuGponPonMngPstMsg(MV_U8 onuId, MV_U8 msgId, MV_U8 *msgData);
void onuGponPonMngKeySwitchTimeMsg(MV_U8 onuId, MV_U8 msgId, MV_U8 *msgData);
void onuGponPonMngExtBurstMsg(MV_U8 onuId, MV_U8 msgId, MV_U8 *msgData);
+void onuGponPonMngPonIdMaintenanceMsg(MV_U8 onuId, MV_U8 msgId, MV_U8 *msgData);
void onuGponPonMngTimerT01Hndl(unsigned long data);
void onuGponPonMngTimerT02Hndl(unsigned long data);
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngrStateMachine.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngrStateMachine.c
index fdaa147..fece1ec 100755
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngrStateMachine.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngrStateMachine.c
@@ -2597,6 +2597,53 @@
/*******************************************************************************
**
+** onuGponPonMngPonIdMaintenanceMsg
+** ____________________________________________________________________________
+**
+** DESCRIPTION: The function is called when PON-ID maintenance message is received
+** (message 21)
+**
+** PARAMETERS: MV_U8 onuId
+** MV_U8 msgId
+** MV_U8 *msgData
+**
+** OUTPUTS: None
+**
+** RETURNS: None
+**
+*******************************************************************************/
+void onuGponPonMngPonIdMaintenanceMsg(MV_U8 onuId, MV_U8 msgId, MV_U8 *msgData)
+{
+ MV_U16 ponIdTxOpticalLevel;
+ MV_U8 ponIdTypeAbit;
+ MV_U8 ponIdClassType;
+ MV_U8 ponIdBytes[ONU_GPON_PON_ID_BYTES_LEN];
+
+ ponIdTypeAbit = (msgData[0] & 0x80) >> 7;
+ onuGponDbPONIdTypeABitSet(ponIdTypeAbit);
+
+ ponIdClassType = (msgData[0] & 0x70) >> 4;
+ onuGponDbPONIdClassTypeSet(ponIdClassType);
+
+ memcpy(&(ponIdBytes[0]), &(msgData[1]), ONU_GPON_PON_ID_BYTES_LEN);
+ onuGponDbPONIdBytesInfoSet(&(ponIdBytes[0]));
+
+ ponIdTxOpticalLevel = (MV_U16)(msgData[8] << 8) + (MV_U16)(msgData[9]);
+ onuGponDbPONIdOpticalLevelSet(ponIdTxOpticalLevel);
+
+#ifdef MV_GPON_DEBUG_PRINT
+ mvPonPrint(PON_PRINT_DEBUG, PON_SM_MODULE,
+ "DEBUG: (%s:%d) PON-ID message rcv with ponIdTypeAbit: %d ponIdClassType: 0x%02x ponIdTxOpticalLevel: 0x%04x ponIdBytes[0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x]\n",
+ __FILE_DESC__, __LINE__,
+ ponIdTypeAbit, ponIdClassType, ponIdTxOpticalLevel,
+ ponIdBytes[0], ponIdBytes[1], ponIdBytes[2], ponIdBytes[3],
+ ponIdBytes[4], ponIdBytes[5], ponIdBytes[6]
+ );
+#endif /* MV_GPON_DEBUG_PRINT */
+}
+
+/*******************************************************************************
+**
** onuGponPonMngTimerT01Hndl
** ____________________________________________________________________________
**
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuPm.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuPm.c
index 4c78db0..492e1bd 100755
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuPm.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuPm.c
@@ -440,7 +440,7 @@
rxPloamPm->rxMsgTotalPloamCounter = g_OnuGponSwPm.rxMsgTotalPloamCounter;
for (numOfMsgIdIndex = ONU_GPON_DS_MSG_OVERHEAD;
- numOfMsgIdIndex <= ONU_GPON_DS_MSG_EXT_BURST_LEN;
+ numOfMsgIdIndex <= ONU_GPON_DS_MSG_LAST;
numOfMsgIdIndex++)
{
rxPloamPm->rxMsgIdPloamCounter[numOfMsgIdIndex] = g_OnuGponSwPm.rxMsgIdPloamCounter[numOfMsgIdIndex];
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/perf/gpon/gponOnuLnxKsUI.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/perf/gpon/gponOnuLnxKsUI.c
index cf45075..0587885 100755
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/perf/gpon/gponOnuLnxKsUI.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/perf/gpon/gponOnuLnxKsUI.c
@@ -143,6 +143,10 @@
MV_U32 intDelay,eqdDb,eqdAsic,fDelay;
MV_U32 snMsg[3], idleMsg[3];
MV_U8 *mchText[] = {"NO MATCH","MATCH "};
+ MV_U16 ponIdTxOpticalLevel;
+ MV_U8 ponIdTypeAbit;
+ MV_U8 ponIdClassType;
+ MV_U8 ponIdBytes[ONU_GPON_PON_ID_BYTES_LEN];
int off = 0;
onuGponDbSerialNumGet(serialNumber);
@@ -174,6 +178,13 @@
onuGponDbSnMsgGet(snMsg);
onuGponDbIdleMsgGet(idleMsg);
+ // PON-ID Manufacturer info
+ ponIdTypeAbit = onuGponDbPONIdTypeABitGet();
+ ponIdClassType = onuGponDbPONIdClassTypeGet();
+ onuGponDbPONIdBytesInfoGet(&(ponIdBytes[0]));
+ ponIdTxOpticalLevel = onuGponDbPONIdOpticalLevelGet();
+
+
off += mvOsSPrintf(buf+off, "\n");
off += mvOsSPrintf(buf+off, "ONT Full Information:\n");
off += mvOsSPrintf(buf+off, "---------------------\n");
@@ -210,6 +221,13 @@
off += mvOsSPrintf(buf+off, "Debug Mode: %s\n", boolText[onuGponPonMngDebugModeGet()]);
off += mvOsSPrintf(buf+off, "Overhead Manual Mode: %s\n", boolText[onuGponPonMngOverheadManualModeGet()]);
+ off += mvOsSPrintf(buf+off, "ponIdTypeAbit: %d\n", ponIdTypeAbit);
+ off += mvOsSPrintf(buf+off, "ponIdClassType: %s (%d)\n", onuGponDbPONIdClassTypeStrGet(), ponIdClassType);
+ off += mvOsSPrintf(buf+off, "ponIdTxOpticalLevel: 0x%02X\n", ponIdTxOpticalLevel);
+ off += mvOsSPrintf(buf+off, "ponIdBytes: [0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x]\n",
+ ponIdBytes[0], ponIdBytes[1], ponIdBytes[2], ponIdBytes[3],
+ ponIdBytes[4], ponIdBytes[5], ponIdBytes[6]);
+
return(off);
}
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/plat/ponOnuBoard.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/plat/ponOnuBoard.c
index c43260a..83e37e1 100755
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/plat/ponOnuBoard.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/plat/ponOnuBoard.c
@@ -981,13 +981,13 @@
}
/*******************************************************************************
-** ** 906
+**
** onuPonTxLaserOn
** ____________________________________________________________________________
**
** DESCRIPTION: The function turns ON/OFF TX laser using MPP
**
-** PARAMETERS: MV_BOOL on - MV_TRUE - turn TX laser ON, othervise OFF
+** PARAMETERS: MV_BOOL on - MV_TRUE - turn TX laser ON, otherwise OFF
**
** OUTPUTS: None
**
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/plat/ponOnuBoard.h b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/plat/ponOnuBoard.h
index ff48f05..321c32a 100755
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/plat/ponOnuBoard.h
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/plat/ponOnuBoard.h
@@ -178,6 +178,7 @@
MV_STATUS onuP2PDbXvrBurstEnablePolaritySet(MV_U32 val);
MV_U32 onuP2PDbXvrBurstEnablePolarityGet(void);
+void onuPonShutDownCallbackFunc(MV_U32 state);
#endif /* PON_FPGA */
diff --git a/arch/arm/plat-feroceon/mv_hal/pon/mvPonOnuDefines.h b/arch/arm/plat-feroceon/mv_hal/pon/mvPonOnuDefines.h
index 9620b1d..aee9016 100755
--- a/arch/arm/plat-feroceon/mv_hal/pon/mvPonOnuDefines.h
+++ b/arch/arm/plat-feroceon/mv_hal/pon/mvPonOnuDefines.h
@@ -206,7 +206,8 @@
#define ONU_GPON_DS_MSG_BER_INTERVAL (0x12)
#define ONU_GPON_DS_MSG_KEY_SWITCH_TIME (0x13)
#define ONU_GPON_DS_MSG_EXT_BURST_LEN (0x14)
-#define ONU_GPON_DS_MSG_LAST (0x14)
+#define ONU_GPON_DS_MSG_PON_ID (0x15)
+#define ONU_GPON_DS_MSG_LAST (ONU_GPON_DS_MSG_PON_ID)
/* Upstream */
#define ONU_GPON_US_MSG_SN_ONU (0x01)
@@ -265,6 +266,7 @@
#define ONU_GPON_EVENT_MSG_BER_INTERVAL (ONU_GPON_DS_MSG_BER_INTERVAL)
#define ONU_GPON_EVENT_MSG_KEY_SWITCH_TIME (ONU_GPON_DS_MSG_KEY_SWITCH_TIME)
#define ONU_GPON_EVENT_MSG_EXT_BURST_LEN (ONU_GPON_DS_MSG_EXT_BURST_LEN)
+#define ONU_GPON_EVENT_MSG_PON_ID (ONU_GPON_DS_MSG_PON_ID)
/* Alarms */
#define ONU_GPON_EVENT_ALM_GEN_BASE (ONU_GPON_ALARM_GEN_BASE)
diff --git a/arch/arm/plat-feroceon/mv_hal/pon/mvPonOnuMac.h b/arch/arm/plat-feroceon/mv_hal/pon/mvPonOnuMac.h
index 5fd3961..6827cd2 100755
--- a/arch/arm/plat-feroceon/mv_hal/pon/mvPonOnuMac.h
+++ b/arch/arm/plat-feroceon/mv_hal/pon/mvPonOnuMac.h
@@ -188,7 +188,7 @@
#define GPON_BURST_THRESHOLD (0x4E20) /* 20000 bytes */
#define MAC_LAST_UPSTREAM_PLOAM (ONU_GPON_US_MSG_ACK)
-#define MAC_LAST_DOWNSTREAM_PLOAM (ONU_GPON_DS_MSG_EXT_BURST_LEN)
+#define MAC_LAST_DOWNSTREAM_PLOAM (ONU_GPON_DS_MSG_LAST)
/* SW FIFO parameters */
#define GPON_SW_FIFO_SIZE (1024) /* Size of SW FIFO pool for PLOAM messages */