summaryrefslogtreecommitdiffstats
path: root/src/occ_gpe1/gpe_centaur.h
blob: ad8e2a7fa10d15d35cb4c217f916755b3ec1ee06 (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
#if !defined(_GPE_CENTAUR_H)
#define _GPE_CENTAUR_H

#include "ipc_structs.h"
#include "centaur_structs.h"

// IPC interface
void gpe_centaur_scom(ipc_msg_t* i_cmd, void* i_arg);
void gpe_centaur_data(ipc_msg_t* i_cmd, void* i_arg);
void gpe_centaur_init(ipc_msg_t* i_cmd, void* i_arg);

// HCODE interface
/**
 * Populate a CentaurConfiguration object
 * @param[out] 8 byte aligned pointer to the CentaurConfiguration object.
 * @return  [0 | return code]
 * @note  The CentaurConfiguration object is shared with the 405 so
 * it needs to be in non-cacheable sram.
 */
int gpe_centaur_configuration_create(CentaurConfiguration_t * o_config);

/**
 * Scom all of the centaurs with the same SCOM address.
 * @param[in] The CentaurConfig object
 * @param[in] The SCOM address
 * @param[out] The array of data collected. Must be large enough to hold
 *             uint64_t data from each centaur.
 * @return [0 | return code]
 */
int centaur_get_scom_vector(CentaurConfiguration_t* i_config,
                            uint32_t i_scom_address,
                            uint64_t* o_data);

/**
 * Scom one or more centaurs
 * @param[in] The CentaurConfig object
 * @param[in/out] The Centaur Scom Parms object
 * @return The return code is part of the Centaur Scom Parms object
 */
void gpe_scom_centaur(CentaurConfiguration_t* i_config,
                      CentaurScomParms_t* i_parms);


/**
 * Collect the centaur thermal data
 * @param[in] The CentaurConfig object
 * @param[in/out] The Centaur data parm object
 * @return [0 | return code]
 */
int centaur_get_mem_data(CentaurConfiguration_t* i_config,
                         CentaurGetMemDataParms_t* i_parms);

#endif
OpenPOWER on IntegriCloud