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
|
/* IBM_PROLOG_BEGIN_TAG */
/* This is an automatically generated prolog. */
/* */
/* $Source: src/usr/scom/scomtrans.H $ */
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2012,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
/* 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 */
#ifndef __SCOMTRANS_H
#define __SCOMTRANS_H
#include <devicefw/driverif.H>
#include <p9_cu.H>
#include <centaur_scominfo.H>
/** @file scomtrans.H
* @brief Provides the interfaces to perform a SCom
*/
namespace SCOM
{
/**
* @brief Performs translates the scom, handles indirect and does scom
* This function performs the translation and get the
* correct target and continues the scom Operation.
*
* @param[in] i_opType Operation type, see DeviceFW::OperationType
* in driverif.H
* @param[in] i_target SCom target
* @param[in/out] io_buffer Read: pointer to output data storage
* Write: pointer to data to be written
* @param[in/out] io_buflen Input: size of io_buffer (in bytes)
* Output: Read: size of output data
* Write: size of data written
* @param[in] i_accessType Select from DeviceFW::AccessType enum
* (usrif.H)
* @param[in] i_args This is an argument list for DD framework.
* In this function, there's only one argument,
* which is the SCom address value.
*/
errlHndl_t startScomProcess(DeviceFW::OperationType i_opType,
TARGETING::Target* i_target,
void* io_buffer,
size_t& io_buflen,
int64_t i_accessType,
va_list i_args);
/**
* @brief This function translates a p9 scom address using
* the interface that the HW team provided.
*
* @param[in] i_target SCom target is passed in
* @param[in] i_type Type of the target
* @param[in|out] io_addr Address to be translated
* @param[out] o_needsWakeup Enable SW before scom
* @param[in] i_opMode Defaults to 0 (Standard)
* @return errlHndl_t
*/
errlHndl_t p9_translation (TARGETING::Target * &i_target,
TARGETING::TYPE i_type,
uint64_t &io_addr,
bool & o_needsWakeup,
uint64_t i_opMode = 0);
/**
* @brief This function translates a centaur scom address using
* the interface that the HW team provided.
*
* @param[in] i_target SCom target is passed in
* @param[in] i_type Type of the target
* @param[in|out] io_addr Address to be translated
* @param[in] i_opMode Defaults to 0 (Standard)
* @return errlHndl_t
*/
errlHndl_t centaur_translation (TARGETING::Target * &i_target,
TARGETING::TYPE i_type,
uint64_t &io_addr,
uint64_t i_opMode = 0);
/**
* @brief This function gets the p9 chip unit for this target type.
*
* @param[in] i_type Type of the target
* @param[out] o_chipUnit Chip unit related to target type
* @return bool True if there was an error trying to find
* a chipUnit related to the inputed target type
*/
bool getChipUnitP9 (TARGETING::TYPE i_type,
p9ChipUnits_t &o_chipUnit);
/**
* @brief This function gets the centaur chip unit for this target type.
*
* @param[in] i_type Type of the target
* @param[out] o_chipUnit Chip unit related to target type
* @return bool True if there was an error trying to find
* a chipUnit related to the inputed target type
*/
bool getChipUnitCentaur (TARGETING::TYPE i_type,
centaurChipUnits_t &o_chipUnit);
/**
* @brief Computes the chip/ddlevel value to be passed into translator
*
* @param[in] i_target SCom target is passed in
* @return uint32_t Chip/ddlevel mode value for target,
* see p9_scominfo.H for values
*/
uint32_t getChipLevel (TARGETING::Target* i_target);
}; // End namespace
#endif
|