summaryrefslogtreecommitdiffstats
path: root/src/sbefw/core/sbecmdiplcontrol.H
blob: 7b05f3f7d596503dfd7a040a07ff4871a194e71f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* $Source: src/sbefw/core/sbecmdiplcontrol.H $                           */
/*                                                                        */
/* OpenPOWER sbe Project                                                  */
/*                                                                        */
/* Contributors Listed Below - COPYRIGHT 2015,2017                        */
/*                                                                        */
/*                                                                        */
/* Licensed under the Apache License, Version 2.0 (the "License");        */
/* you may not use this file except in compliance with the License.       */
/* You may obtain a copy of the License at                                */
/*                                                                        */
/*     http://www.apache.org/licenses/LICENSE-2.0                         */
/*                                                                        */
/* Unless required by applicable law or agreed to in writing, software    */
/* distributed under the License is distributed on an "AS IS" BASIS,      */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        */
/* implied. See the License for the specific language governing           */
/* permissions and limitations under the License.                         */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/*
 * @file: ppe/sbe/sbefw/sbecmdiplcontrol.H
 *
 * @brief This file contains the SBE command details
 *
 */

#ifndef __SBEFW_SBECMDIPLCONTROL_H
#define __SBEFW_SBECMDIPLCONTROL_H

#include <stdint.h>
#include "sbecmdgeneric.H"


namespace fapi2
{
    class ReturnCode;
}

// Major isteps which are supported
typedef enum
{
    SBE_ISTEP2 = 2,
    SBE_ISTEP_FIRST = SBE_ISTEP2,
    SBE_ISTEP3 = 3,
    SBE_ISTEP_LAST_SLAVE = SBE_ISTEP3,
    SBE_ISTEP4 = 4,
    SBE_ISTEP5 = 5,
    SBE_ISTEP_LAST_MASTER = SBE_ISTEP5,
}sbe_supported_steps_t;

// Major MPIPL isteps which are supported
static const uint32_t SBE_ISTEP_MPIPL_START         = 96;
static const uint32_t SBE_ISTEP_MPIPL_CONTINUE      = 97;
static const uint32_t SBE_ISTEP_STOPCLOCK           = 98;
static const uint32_t MPIPL_START_MAX_SUBSTEPS      = 8;
static const uint32_t MPIPL_CONTINUE_MAX_SUBSTEPS   = 7;
static const uint32_t ISTEP_STOPCLOCK_MAX_SUBSTEPS  = 1;

// constants
static const uint32_t ISTEP2_MAX_SUBSTEPS = 17;
static const uint32_t ISTEP3_MAX_SUBSTEPS = 22;
static const uint32_t ISTEP4_MAX_SUBSTEPS = 34;
static const uint32_t ISTEP5_MAX_SUBSTEPS = 2;
static const uint8_t ISTEP_MINOR_START = 1;
static const uint8_t SLAVE_LAST_MINOR_ISTEP = 20;
static const uint8_t ISTEP2_MINOR_START = 2;

extern uint64_t G_ring_save[8];
extern const uint64_t G_ring_index[10];

/**
 * @brief Support function to execute specific istep
 *
 * @param[in] i_major Major Istep Number
 * @param[in] i_minor Minor Istep Number
 *
 * @return FAPI2_RC_SUCCESS if success, else error code.
 */
fapi2::ReturnCode sbeExecuteIstep (uint8_t i_major, uint8_t i_minor);


/**
  * @brief execute istep chipop (0xA101)
  *
  * @param[in] i_pArg Buffer to be passed to the function (not used as of now)
  *
  * @return    Rc from the FIFO access utility
  */
uint32_t sbeHandleIstep(uint8_t *i_pArg);

/**
 * @brief Executes IPL steps in continuous mode.
 *
 * @par On the master SBE, this will run
 *      all steps from 2.2 to 5.2. On the slave SBE, it runs all steps from 2.2
 *      to 3.18.
 *      In case an error is encountered, the execution is aborted.
 */
void sbeDoContinuousIpl();

/**
  * @brief  Handles Sbe Get FFDC chip-op (0xA801)
  *
  * @param[in] i_pArg Buffer to be passed to the function (not used as of now)
  *
  * @return    Rc from the FIFO access utility
  */
uint32_t sbeGetSbeFfdc(uint8_t *i_pArg);

/**
  * @brief  Handles Sbe Get FFDC chip-op (0xA803)
  *
  * @param[in] i_pArg Buffer to be passed to the function (not used as of now)
  *
  * @return    Rc from the FIFO access utility
  */
uint32_t sbeGetFreqSupported(uint8_t *i_pArg);

/**
  * @brief execute suspend IO chip-op (0xA102)
  *
  * @param[in] i_pArg Buffer to be passed to the function (not used as of now)
  *
  * @return    Rc from the FIFO access utility
  */
uint32_t sbeHandleSuspendIO(uint8_t *i_pArg);

#endif // __SBEFW_SBECMDIPLCONTROL_H
OpenPOWER on IntegriCloud