46
46
#include <config.h>
47
47
#include <initservice/initserviceif.H>
48
48
#include <sys/time.h>
49
+ #include <p9c_mss_maint_cmds.H>
49
50
50
51
using namespace TARGETING ;
51
52
using namespace ERRORLOG ;
@@ -565,29 +566,25 @@ void StateMachine::processCommandTimeout(const MonitorIDs & i_monitorIDs)
565
566
//target type is MBA
566
567
if ( TYPE_MBA == trgtType )
567
568
{
568
- //TODO RTC 155857
569
- //no longer have the mss_MaintCmd class at the moment
570
- //will need to update once we have Cumulus support
571
-
572
- //fapi2::ReturnCode fapirc =
573
- // static_cast<mss_MaintCmd *>((*wit)->data)->stopCmd();
574
- //err = fapi2::rcToErrl(fapirc);
575
-
576
- //if( nullptr != err )
577
- //{
578
- // MDIA_ERR("sm: mss_MaintCmd::stopCmd failed");
579
- // errlCommit(err, MDIA_COMP_ID);
580
- //}
581
-
582
- //fapirc =
583
- // static_cast<mss_MaintCmd *>((*wit)->data)->cleanupCmd();
584
- //err = fapi2::rcToErrl(fapirc);
585
-
586
- //if( nullptr != err )
587
- //{
588
- // MDIA_ERR("sm: mss_MaintCmd::cleanupCmd failed");
589
- // errlCommit(err, MDIA_COMP_ID);
590
- //}
569
+ fapi2 ::ReturnCode fapirc =
570
+ static_cast < mss_MaintCmd * > ((* wit )-> data )-> stopCmd ();
571
+ err = fapi2 ::rcToErrl (fapirc );
572
+
573
+ if ( nullptr != err )
574
+ {
575
+ MDIA_ERR ("sm: mss_MaintCmd::stopCmd failed" );
576
+ errlCommit (err , MDIA_COMP_ID );
577
+ }
578
+
579
+ fapirc =
580
+ static_cast < mss_MaintCmd * > ((* wit )-> data )-> cleanupCmd ();
581
+ err = fapi2 ::rcToErrl (fapirc );
582
+
583
+ if ( nullptr != err )
584
+ {
585
+ MDIA_ERR ("sm: mss_MaintCmd::cleanupCmd failed" );
586
+ errlCommit (err , MDIA_COMP_ID );
587
+ }
591
588
}
592
589
//target type is MCBIST
593
590
else
@@ -1018,9 +1015,7 @@ errlHndl_t StateMachine::doMaintCommand(WorkFlowProperties & i_wfp)
1018
1015
//target type is MBA
1019
1016
if (TYPE_MBA == trgtType )
1020
1017
{
1021
- /*TODO RTC 155857
1022
-
1023
- uint64_t stopCondition =
1018
+ uint32_t stopCondition =
1024
1019
mss_MaintCmd ::STOP_END_OF_RANK |
1025
1020
mss_MaintCmd ::STOP_ON_MPE |
1026
1021
mss_MaintCmd ::STOP_ON_UE |
@@ -1034,8 +1029,8 @@ errlHndl_t StateMachine::doMaintCommand(WorkFlowProperties & i_wfp)
1034
1029
stopCondition |= mss_MaintCmd ::STOP_ON_HARD_NCE_ETE ;
1035
1030
}
1036
1031
1037
- ecmdDataBufferBase startAddr(64) , endAddr(64) ;
1038
- mss_MaintCmd * cmd = NULL ;
1032
+ fapi2 :: buffer < uint64_t > startAddr , endAddr ;
1033
+ mss_MaintCmd * cmd = nullptr ;
1039
1034
cmd = static_cast < mss_MaintCmd * > (i_wfp .data );
1040
1035
fapi2 ::Target < fapi2 ::TARGET_TYPE_MBA > fapiMba (target );
1041
1036
@@ -1049,46 +1044,58 @@ errlHndl_t StateMachine::doMaintCommand(WorkFlowProperties & i_wfp)
1049
1044
break ;
1050
1045
}
1051
1046
1052
- fapirc = mss_get_address_range(
1047
+ fapi2 :: ReturnCode fapirc = mss_get_address_range (
1053
1048
fapiMba ,
1054
1049
MSS_ALL_RANKS ,
1055
1050
startAddr ,
1056
1051
endAddr );
1057
- err = fapiRcToErrl (fapirc);
1052
+ err = fapi2 :: rcToErrl (fapirc );
1058
1053
1059
1054
if (err )
1060
1055
{
1061
1056
MDIA_FAST ("sm: get_address_range failed" );
1062
1057
break ;
1063
1058
}
1064
1059
1060
+ ConstTargetHandle_t parent = getParentChip (target );
1061
+
1065
1062
// new command...use the full range
1066
1063
1067
1064
switch (workItem )
1068
1065
{
1069
1066
case START_RANDOM_PATTERN :
1070
- cmd = new mss_SuperFastRandomInit(
1071
- fapiMba,
1072
- startAddr,
1073
- endAddr,
1074
- mss_MaintCmd::PATTERN_RANDOM,
1075
- stopCondition,
1076
- false);
1077
-
1078
- MDIA_FAST("sm: random init %p on: %x", cmd,
1079
- get_huid(target));
1067
+ // TODO RTC 180118
1068
+ // For Cumulus PON we will only support init to 0
1069
+ if ( MODEL_CUMULUS != parent -> getAttr < ATTR_MODEL > ( ) )
1070
+ {
1071
+ cmd = new mss_SuperFastRandomInit (
1072
+ fapiMba ,
1073
+ startAddr ,
1074
+ endAddr ,
1075
+ mss_MaintCmd ::PATTERN_RANDOM ,
1076
+ stopCondition ,
1077
+ false);
1078
+
1079
+ MDIA_FAST ("sm: random init %p on: %x" , cmd ,
1080
+ get_huid (target ));
1081
+ }
1080
1082
break ;
1081
1083
1082
1084
case START_SCRUB :
1083
- cmd = new mss_SuperFastRead(
1084
- fapiMba,
1085
- startAddr,
1086
- endAddr,
1087
- stopCondition,
1088
- false);
1089
-
1090
- MDIA_FAST("sm: scrub %p on: %x", cmd,
1091
- get_huid(target));
1085
+ // TODO RTC 180118
1086
+ // For Cumulus PON we will only support init to 0
1087
+ if ( MODEL_CUMULUS != parent -> getAttr < ATTR_MODEL > ( ) )
1088
+ {
1089
+ cmd = new mss_SuperFastRead (
1090
+ fapiMba ,
1091
+ startAddr ,
1092
+ endAddr ,
1093
+ stopCondition ,
1094
+ false);
1095
+
1096
+ MDIA_FAST ("sm: scrub %p on: %x" , cmd ,
1097
+ get_huid (target ));
1098
+ }
1092
1099
break ;
1093
1100
case START_PATTERN_0 :
1094
1101
case START_PATTERN_1 :
@@ -1144,7 +1151,6 @@ errlHndl_t StateMachine::doMaintCommand(WorkFlowProperties & i_wfp)
1144
1151
}
1145
1152
}
1146
1153
1147
- */
1148
1154
}
1149
1155
//target type is MCBIST
1150
1156
else
@@ -1376,41 +1382,40 @@ bool StateMachine::processMaintCommandEvent(const MaintCommandEvent & i_event)
1376
1382
//target type is MBA
1377
1383
if (TYPE_MBA == trgtType )
1378
1384
{
1379
- //TODO RTC 155857
1380
- //mss_MaintCmd * cmd = static_cast<mss_MaintCmd *>(wfp.data);
1381
- //
1382
- //if(cmd && (flags & STOP_CMD))
1383
- //{
1384
- // MDIA_FAST("sm: stopping command: %p", target);
1385
-
1386
- // fapi2::ReturnCode fapirc = cmd->stopCmd();
1387
- // err = fapi2::rcToErrl(fapirc);
1388
-
1389
- // if (nullptr != err)
1390
- // {
1391
- // MDIA_ERR("sm: mss_MaintCmd::stopCmd failed");
1392
- // errlCommit(err, MDIA_COMP_ID);
1393
- // }
1394
- //}
1395
-
1396
- //if(cmd && (flags & CLEANUP_CMD))
1397
- //{
1398
- // // restore any init settings that
1399
- // // may have been changed by the command
1400
-
1401
- // fapi2::ReturnCode fapirc = cmd->cleanupCmd();
1402
- // err = fapi2::rcToErrl(fapirc);
1403
- // if(nullptr != err)
1404
- // {
1405
- // MDIA_ERR("sm: mss_MaintCmd::cleanupCmd failed");
1406
- // errlCommit(err, MDIA_COMP_ID);
1407
- // }
1408
- //}
1409
-
1410
- //if(cmd && (flags & DELETE_CMD))
1411
- //{
1412
- // delete cmd;
1413
- //}
1385
+ mss_MaintCmd * cmd = static_cast < mss_MaintCmd * > (wfp .data );
1386
+
1387
+ if (cmd && (flags & STOP_CMD ))
1388
+ {
1389
+ MDIA_FAST ("sm: stopping command: %p" , target );
1390
+
1391
+ fapi2 ::ReturnCode fapirc = cmd -> stopCmd ();
1392
+ err = fapi2 ::rcToErrl (fapirc );
1393
+
1394
+ if (nullptr != err )
1395
+ {
1396
+ MDIA_ERR ("sm: mss_MaintCmd::stopCmd failed" );
1397
+ errlCommit (err , MDIA_COMP_ID );
1398
+ }
1399
+ }
1400
+
1401
+ if (cmd && (flags & CLEANUP_CMD ))
1402
+ {
1403
+ // restore any init settings that
1404
+ // may have been changed by the command
1405
+
1406
+ fapi2 ::ReturnCode fapirc = cmd -> cleanupCmd ();
1407
+ err = fapi2 ::rcToErrl (fapirc );
1408
+ if (nullptr != err )
1409
+ {
1410
+ MDIA_ERR ("sm: mss_MaintCmd::cleanupCmd failed" );
1411
+ errlCommit (err , MDIA_COMP_ID );
1412
+ }
1413
+ }
1414
+
1415
+ if (cmd && (flags & DELETE_CMD ))
1416
+ {
1417
+ delete cmd ;
1418
+ }
1414
1419
}
1415
1420
//target type is MCBIST
1416
1421
else
0 commit comments