diff options
author | crgeddes <crgeddes@us.ibm.com> | 2015-08-26 13:50:30 -0500 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2016-03-03 16:17:52 -0500 |
commit | c73c1d03450fb1dfa0ef9c98485999aeaa0257d7 (patch) | |
tree | 70056c4a6b064db49d7419d2d5040f6569ea51fc /src/include/bootloader | |
parent | 8f30c7db00a3ce2940900ec2ba67838bcf432b98 (diff) | |
download | talos-hostboot-c73c1d03450fb1dfa0ef9c98485999aeaa0257d7.tar.gz talos-hostboot-c73c1d03450fb1dfa0ef9c98485999aeaa0257d7.zip |
FFS Support for Bootloader
This commit moves functionality out of pnor_common.C and puts it in
a new file pnor_utils.C this file will be shared with bootloader and
hostboot code. Quite a few files were pulled apart in order to make
includes easier across modules. These are lpc_const.H and pnor_const.H.
bl_pnorAccess leverages the new pnor_utils.C file that will help the
bootloader parse pnor TOC
Change-Id: I740f6f8a707760756a261535e62e2d0a849324f8
RTC:134064
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/696
Tested-by: Jenkins Server
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/include/bootloader')
-rw-r--r-- | src/include/bootloader/bl_pnorAccess.H | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/include/bootloader/bl_pnorAccess.H b/src/include/bootloader/bl_pnorAccess.H new file mode 100644 index 000000000..bc19a4dc2 --- /dev/null +++ b/src/include/bootloader/bl_pnorAccess.H @@ -0,0 +1,104 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/include/bootloader/bl_pnorAccess.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* [+] 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 __BL_PNORACCESS_H +#define __BL_PNORACCESS_H + + +#include <pnor_const.H> +#include <pnor_utils.H> +#include <ffs.h> + +/** @file bl_pnorAccess.H + * @brief Provides interface to the PNOR flash for bootloader + */ + +/** + * @brief bootloader PNOR access class + * Provide interfaces for the bootloader to look through pnor and find toc + */ + +class bl_pnorAccess +{ + + friend class pnorutilsTest; + public: + +/** + * @brief Get the hostboot base image + * + * @param[in] i_pnorStart MMIO address to access the start of pnor flash + * + * @param[out] o_hbbSection Struct that holds information about the + * Hostboot Base Image Section + * + * @param[out] o_errCode Anything besides PNOR:NO_ERROR is an error + * + * @param[out] o_tocUsed Tells you which table of contents was used + * + * @return void + */ +static void getHBBSection(uint64_t i_pnorStart, + PNOR::SectionData_t& o_hbbSection, + uint32_t& o_errCode, + uint8_t& o_tocUsed); + + private: +/** + * @brief Read in the toc and get information about each section + * + * @param[in] i_tocBuffer Buffer containing a single TOC + * + * @param[out] o_errCode Anything besides PNOR:NO_ERROR is an error + * + * @param[out] o_TOC Array of section data describing contents of pnor + * + * @param[in] i_baseAddr MMIO address to access the start of pnor flash + * + * @return void + */ +static void readTOC(uint8_t i_tocBuffer[PNOR::TOC_SIZE], uint32_t & o_errCode, + PNOR::SectionData_t * o_TOC, uint64_t i_baseAddr); + +/** + * @brief Find a valid TOC within specified side of pnor flash + side is determined by the base mmio address passed in + * + * @param[in] i_pnorBase MMIO address to access the start of pnor flash + * + * @param[out] o_TOC Array of section data describing contents of pnor + * + * @param[out] o_errCode Anything besides PNOR:NO_ERROR is an error + * + * @param[out] o_tocUsed Tells you which table of contents was used + * + * @return void + */ +static void findTOC(uint64_t i_pnorBase, PNOR::SectionData_t * o_TOC, + uint32_t& o_errCode, uint8_t& o_tocUsed); + +}; + +#endif
\ No newline at end of file |