Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Ported the needed structs and the first set of SBE FIFO functions: getFifoScom, putFifoScom, and the shell for performFifoChipOp. Change-Id: Ief8876266950f166d867dbab8c8fcc8b94398860 RTC:175100 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41932 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-by: William A. Bryan <wilbryan@us.ibm.com> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
- Loading branch information
1 parent
cc46aff
commit 99f068d
Showing
4 changed files
with
223 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
/* IBM_PROLOG_BEGIN_TAG */ | ||
/* This is an automatically generated prolog. */ | ||
/* */ | ||
/* $Source: src/occ_405/firdata/sbe_fifo.c $ */ | ||
/* */ | ||
/* OpenPOWER OnChipController Project */ | ||
/* */ | ||
/* Contributors Listed Below - COPYRIGHT 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 */ | ||
#include "sbe_fifo.h" | ||
#include <trac.h> | ||
|
||
/** @brief Performs a FIFO operation (read or write) | ||
* @param i_target The SCOM target. | ||
* @param i_fifoRequest the FIFO request data structure | ||
* @param i_fifoResponse the response from SBE | ||
* @param i_responseSize the size of the response | ||
* @return Non-SUCCESS if the operation fails. SUCCESS otherwise. | ||
*/ | ||
uint32_t performFifoChipOp(SCOM_Trgt_t* i_target, | ||
uint32_t* i_fifoRequest, | ||
uint32_t* i_fifoResponse, | ||
uint32_t i_responseSize) | ||
{ | ||
uint32_t l_rc = SUCCESS; | ||
|
||
TRAC_INFO("Enter performFifoChipOp"); | ||
|
||
|
||
TRAC_INFO("Exit performFifoChioOp"); | ||
|
||
return l_rc; | ||
} | ||
|
||
/** @brief Performs a write SCOM operation using SBE FIFO | ||
* @param i_target The SCOM target. | ||
* @param i_addr 64-bit SCOM address. | ||
* @param i_data 64-bit data to write. | ||
* @return Non-SUCCESS if the SCOM fails. SUCCESS otherwise. | ||
*/ | ||
int32_t putFifoScom(SCOM_Trgt_t* i_target, uint64_t i_addr, uint64_t i_data) | ||
{ | ||
uint32_t l_rc = SUCCESS; | ||
|
||
TRAC_INFO("Enter putFifoScom"); | ||
|
||
struct fifoPutScomRequest l_fifoRequest; | ||
struct fifoPutScomResponse l_fifoResponse; | ||
|
||
l_fifoRequest.wordCnt = PUT_SCOM_REQUEST_WORD_CNT; | ||
l_fifoRequest.reserved = 0; | ||
l_fifoRequest.commandClass = SBE_FIFO_CLASS_SCOM_ACCESS; | ||
l_fifoRequest.command = SBE_FIFO_CMD_PUT_SCOM; | ||
l_fifoRequest.address = i_addr; | ||
l_fifoRequest.data = i_data; | ||
|
||
l_rc = performFifoChipOp(i_target, | ||
(uint32_t*)&l_fifoRequest, | ||
(uint32_t*)&l_fifoResponse, | ||
sizeof(struct fifoPutScomResponse)); | ||
|
||
TRAC_INFO("Exit putFifoScom"); | ||
|
||
return l_rc; | ||
} | ||
|
||
/** @brief Performs a read SCOM operation using SBE FIFO | ||
* @param i_target The SCOM target. | ||
* @param i_addr 64-bit SCOM address. | ||
* @param o_data 64-bit returned value. | ||
* @return Non-SUCCESS if the SCOM fails. SUCCESS otherwise. | ||
*/ | ||
int32_t getFifoScom(SCOM_Trgt_t* i_target, uint64_t i_addr, uint64_t* o_data) | ||
{ | ||
uint32_t l_rc = SUCCESS; | ||
|
||
TRAC_INFO("Enter getFifoScom"); | ||
|
||
struct fifoGetScomRequest l_fifoRequest; | ||
struct fifoGetScomResponse l_fifoResponse; | ||
|
||
l_fifoRequest.wordCnt = GET_SCOM_REQUEST_WORD_CNT; | ||
l_fifoRequest.reserved = 0; | ||
l_fifoRequest.commandClass = SBE_FIFO_CLASS_SCOM_ACCESS; | ||
l_fifoRequest.command = SBE_FIFO_CMD_GET_SCOM; | ||
l_fifoRequest.address = i_addr; | ||
|
||
l_rc = performFifoChipOp(i_target, | ||
(uint32_t*)&l_fifoRequest, | ||
(uint32_t*)&l_fifoResponse, | ||
sizeof(struct fifoGetScomResponse)); | ||
|
||
//Always return data even if there is an error | ||
*o_data = l_fifoResponse.data; | ||
|
||
TRAC_INFO("Exit getFifoScom"); | ||
|
||
return l_rc; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
/* IBM_PROLOG_BEGIN_TAG */ | ||
/* This is an automatically generated prolog. */ | ||
/* */ | ||
/* $Source: src/occ_405/firdata/sbe_fifo.h $ */ | ||
/* */ | ||
/* OpenPOWER OnChipController Project */ | ||
/* */ | ||
/* Contributors Listed Below - COPYRIGHT 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 __SBE_FIFO_H | ||
#define __SBE_FIFO_H | ||
|
||
#include <scom_trgt.h> | ||
#include <stdint.h> | ||
|
||
#define PACKED __attribute__((__packed__)) | ||
|
||
#define PUT_SCOM_REQUEST_WORD_CNT 0x06 | ||
#define GET_SCOM_REQUEST_WORD_CNT 0x04 | ||
|
||
#define SBE_FIFO_CMD_GET_SCOM 0x01 | ||
#define SBE_FIFO_CMD_PUT_SCOM 0x02 | ||
#define SBE_FIFO_CLASS_SCOM_ACCESS 0xA2 | ||
|
||
struct statusHeader | ||
{ | ||
uint16_t magic; //set to 0xC0DE | ||
uint8_t commandClass; | ||
uint8_t command; | ||
uint16_t primaryStatus; | ||
uint16_t secondaryStatus; | ||
} PACKED; | ||
|
||
struct ffdc_struct | ||
{ | ||
const void* ptr; | ||
size_t size; | ||
}; | ||
|
||
struct fifoPutScomRequest | ||
{ | ||
uint32_t wordCnt; | ||
uint16_t reserved; | ||
uint8_t commandClass; | ||
uint8_t command; | ||
uint64_t address; | ||
uint64_t data; | ||
} PACKED; | ||
|
||
struct fifoPutScomResponse | ||
{ | ||
struct statusHeader status; | ||
struct ffdc_struct ffdc; //ffdc data | ||
uint32_t status_distance; //distance to status | ||
} PACKED; | ||
|
||
struct fifoGetScomRequest | ||
{ | ||
uint32_t wordCnt; | ||
uint16_t reserved; | ||
uint8_t commandClass; | ||
uint8_t command; | ||
uint64_t address; | ||
} PACKED; | ||
|
||
struct fifoGetScomResponse | ||
{ | ||
uint64_t data; //Data (0..31) + (32..63) | ||
struct statusHeader status; | ||
struct ffdc_struct ffdc; //ffdc data | ||
uint32_t status_distance; // distance to status | ||
} PACKED; | ||
|
||
/** @brief Performs a write SCOM operation using SBE FIFO | ||
* @param i_target The SCOM target. | ||
* @param i_addr 64-bit SCOM address. | ||
* @param i_data 64-bit data to write. | ||
* @return Non-SUCCESS if the SCOM fails. SUCCESS otherwise. | ||
*/ | ||
int32_t putFifoScom(SCOM_Trgt_t* i_target, uint64_t i_addr, uint64_t i_data); | ||
|
||
/** @brief Performs a read SCOM operation using SBE FIFO | ||
* @param i_target The SCOM target. | ||
* @param i_addr 64-bit SCOM address. | ||
* @param o_data 64-bit returned value. | ||
* @return Non-SUCCESS if the SCOM fails. SUCCESS otherwise. | ||
*/ | ||
int32_t getFifoScom(SCOM_Trgt_t* i_target, uint64_t i_addr, uint64_t* o_data); | ||
|
||
#endif | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -104,4 +104,5 @@ INPUT ( amec_amester.o | |
native.o | ||
scom_trgt.o | ||
scom_util.o | ||
scom_addr_util.o) | ||
scom_addr_util.o | ||
sbe_fifo.o) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters