diff options
Diffstat (limited to 'src/lib/occlib/occhw_shared_data.h')
-rw-r--r-- | src/lib/occlib/occhw_shared_data.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/lib/occlib/occhw_shared_data.h b/src/lib/occlib/occhw_shared_data.h new file mode 100644 index 0000000..643691a --- /dev/null +++ b/src/lib/occlib/occhw_shared_data.h @@ -0,0 +1,93 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/lib/occlib/occhw_shared_data.h $ */ +/* */ +/* OpenPOWER OnChipController Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2015 */ +/* [+] 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 __OCCHW_OSD_H__ +#define __OCCHW_OSD_H__ +//----------------------------------------------------------------------------- +// *! (C) Copyright International Business Machines Corp. 2015 +// *! All Rights Reserved -- Property of IBM +// *! *** IBM Confidential *** +//----------------------------------------------------------------------------- + +/// \file occhw_osd.h +/// \brief Common header for shared data within the OCC complex +/// + +#include "kernel.h" +#include "ipc_structs.h" +#include "occhw_scom_cmd.h" + +/// Hardcoded address for the location of the OCC shared data segment +/// This is placed in the non-cacheable aliased region of SRAM space +#ifndef OSD_ADDR +#define OSD_ADDR 0xf7f00000 +#endif + +/// Total space of the OCC shared data segment +#define OSD_TOTAL_SHARED_DATA_BYTES 4096 + +/// Reserve space for IPC data in case it needs to grow +#define OSD_IPC_RESERVED_BYTES 2048 + +/// Reserve space for Debug +#define OSD_DEBUG_RESERVED_BYTES 512 + +#define OSD_GPE_SCOM_ADDR (OSD_ADDR + OSD_IPC_RESERVED_BYTES + OSD_DEBUG_RESERVED_BYTES) + +#define OSD_GPE_SCOM_RESERVED_BYTES 32 + +#ifndef __ASSEMBLER__ +typedef union +{ + struct + { + union + { + ipc_shared_data_t ipc_data; //880 bytes + uint8_t ipc_reserved[OSD_IPC_RESERVED_BYTES]; + }; + union + { + //debug_shared_data_t debug_data; + uint8_t debug_reserved[OSD_DEBUG_RESERVED_BYTES]; + }; + union + { + occhw_scom_cmd_t scom_cmd; + uint8_t gpe_scom_reserved[OSD_GPE_SCOM_RESERVED_BYTES]; + }; + + }; + uint8_t total_reserved[OSD_TOTAL_SHARED_DATA_BYTES]; +} occhw_osd_t; + +// Fail to compile if ipc_shared_data exceeds the reserved space +KERN_STATIC_ASSERT((sizeof(ipc_shared_data_t) <= OSD_IPC_RESERVED_BYTES)); + +/// Hardcoded pointer for the location of the OCC shared data segment +#define OSD_PTR ((occhw_osd_t*) OSD_ADDR) + +#endif /*__ASSEMBLER__*/ + +#endif /* __OCCHW_OSD_H__ */ |