diff options
author | Martin Peschke <mpeschke@de.ibm.com> | 2017-04-08 19:02:59 +0200 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2017-11-07 09:57:34 -0500 |
commit | dbb8adce3d255b9ff0e2c7f6de019d1927cd635d (patch) | |
tree | 97efe78788630d57101212dcc398070598a8c73b | |
parent | 55c0c777de88b11446f570ce45e9ecbf985d0e67 (diff) | |
download | talos-sbe-dbb8adce3d255b9ff0e2c7f6de019d1927cd635d.tar.gz talos-sbe-dbb8adce3d255b9ff0e2c7f6de019d1927cd635d.zip |
p9_dd_container: simple generic standalone DD level container
Change-Id: I4c9d8cb28d4ae6a8b21c87ebaad07c1fd7163b85
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39588
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Claus M. Olsen <cmolsen@us.ibm.com>
Reviewed-by: Sumit Kumar <sumit_kumar@in.ibm.com>
Reviewed-by: Martin Peschke <mpeschke@de.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49297
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
-rw-r--r-- | src/import/chips/p9/utils/imageProcs/p9_dd_container.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/import/chips/p9/utils/imageProcs/p9_dd_container.h b/src/import/chips/p9/utils/imageProcs/p9_dd_container.h new file mode 100644 index 00000000..7026a40c --- /dev/null +++ b/src/import/chips/p9/utils/imageProcs/p9_dd_container.h @@ -0,0 +1,94 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/utils/imageProcs/p9_dd_container.h $ */ +/* */ +/* OpenPOWER sbe 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 _P9_DD_CONTAINER_H_ +#define _P9_DD_CONTAINER_H_ + +#include <stdint.h> + +#define P9_DD_CONTAINER_MAGIC 0x4444434F // "DDCO" + +#define P9_DD_SUCCESS 0 +#define P9_DD_FAILURE_BROKEN 1 +#define P9_DD_FAILURE_NOMEM 2 +#define P9_DD_FAILURE_NOT_FOUND 3 +#define P9_DD_FAILURE_DOES_NOT_EXIST 4 +#define P9_DD_FAILURE_DUPLICATE 5 + +// header for each dd level block inside container +struct p9_dd_block +{ + uint32_t iv_offset; + uint32_t iv_size; + uint8_t iv_dd; + uint8_t iv_reserved[3]; +}; + +// container header +struct p9_dd_cont +{ + uint32_t iv_magic; + uint8_t iv_num; + uint8_t iv_reserved[3]; + struct p9_dd_block iv_blocks[0]; +}; + +// iterator that can be used to iterate through all dd level blocks +struct p9_dd_iter +{ + struct p9_dd_cont* iv_cont; + uint8_t iv_idx; +}; + +// initialisation of iterator +#define P9_DD_ITER_INIT(dd_cont) { .iv_cont = (dd_cont), .iv_idx = 0 } + +#ifdef __cplusplus +extern "C" { +#endif + +// validates container +int p9_dd_validate(struct p9_dd_cont* i_cont); + +void p9_dd_betoh(struct p9_dd_block* i_block_be, + struct p9_dd_block* io_block_he); + +// iterates through all dd level blocks +struct p9_dd_block* p9_dd_next(struct p9_dd_iter* io_iter); + +// returns address of dd level content (without meta data) +int p9_dd_get( + uint8_t* i_cont, uint8_t i_dd, uint8_t** o_buf, uint32_t* o_size); + +// enlarges (reallocates) container and copies dd level block into container +int p9_dd_add( + uint8_t** io_cont, uint32_t* o_cont_size, uint8_t i_dd, + uint8_t* i_buf, uint32_t i_buf_size); + +#ifdef __cplusplus +} +#endif + +#endif |