From 76a5df9bf306d9dc446db4b395012770b4dd1c28 Mon Sep 17 00:00:00 2001 From: William Bryan Date: Wed, 18 Nov 2015 15:40:30 -0600 Subject: Core data initialization and 24-core support RTC: 140187 RTC: 140186 Change-Id: I574acdc3933b4bc181a584226ea432b9abe72592 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22182 Reviewed-by: Wael Elessawy Tested-by: Fadi Kassem Reviewed-by: Fadi Kassem --- src/occ_gpe0/apss_util.c | 22 ++++++++++++++++++++++ src/occ_gpe0/apss_util.h | 3 +++ src/occ_gpe0/img_defs.mk | 7 ++++++- src/occ_gpe0/ipc_func_tables.c | 4 +++- 4 files changed, 34 insertions(+), 2 deletions(-) (limited to 'src/occ_gpe0') diff --git a/src/occ_gpe0/apss_util.c b/src/occ_gpe0/apss_util.c index 4e9082f..a742be3 100644 --- a/src/occ_gpe0/apss_util.c +++ b/src/occ_gpe0/apss_util.c @@ -170,5 +170,27 @@ void busy_wait(uint32_t t_microseconds) while (current_decrementer_value > end_decrementer_value) // Wait until end_decrementer_value is reached MFDEC(current_decrementer_value); +} + +void ipc_scom_operation(ipc_msg_t* cmd, void* arg) +{ + int l_rc; + ipc_async_cmd_t *async_cmd = (ipc_async_cmd_t*)cmd; + ipc_scom_op_t *scom_op = (ipc_scom_op_t*) async_cmd->cmd_data; + if (scom_op->read) + { + l_rc = getscom_abs(scom_op->addr, &scom_op->data); + } + else + { + l_rc = putscom_abs(scom_op->addr, scom_op->data); + } + + if(l_rc) + { + scom_op->rc = l_rc; + PK_TRACE("Error doing generic scom! RC: 0x%08X Addr: 0x%08X Read: %d Data: 0x%08X", l_rc, + scom_op->addr, scom_op->read, scom_op->data); + } } diff --git a/src/occ_gpe0/apss_util.h b/src/occ_gpe0/apss_util.h index 9d0a763..2107d40 100644 --- a/src/occ_gpe0/apss_util.h +++ b/src/occ_gpe0/apss_util.h @@ -27,6 +27,9 @@ #define _APSS_UTIL_H #include +#include +#include +#include void apss_set_ffdc(GpeErrorStruct *o_error, uint32_t i_addr, uint32_t i_rc, uint64_t i_ffdc); diff --git a/src/occ_gpe0/img_defs.mk b/src/occ_gpe0/img_defs.mk index ade3c6b..fe5ea31 100644 --- a/src/occ_gpe0/img_defs.mk +++ b/src/occ_gpe0/img_defs.mk @@ -94,6 +94,10 @@ ifndef COMMONLIB_SRCDIR export COMMONLIB_SRCDIR = $(abspath ../lib/common) endif +ifndef OCC_COMMON_TYPES_DIR +export OCC_COMMON_TYPES_DIR = $(abspath ../occ_405/incl/) +endif + ifndef OCCLIB_SRCDIR export OCCLIB_SRCDIR = $(abspath ../lib/occlib) endif @@ -177,7 +181,8 @@ DEFS += $(GCC-DEFS) INCLUDES += $(IMG_INCLUDES) $(GLOBAL_INCLUDES) \ -I$(PK_SRCDIR)/kernel -I$(PK_SRCDIR)/ppe42 -I$(PK_SRCDIR)/trace \ -I$(PK_SRCDIR)/$(PPE_TYPE) -I$(PK_SRCDIR)/../../include \ - -I$(PK_SRCDIR)/../../include/registers -I$(OCCLIB_SRCDIR) -I$(COMMONLIB_SRCDIR) + -I$(PK_SRCDIR)/../../include/registers -I$(OCCLIB_SRCDIR) -I$(COMMONLIB_SRCDIR) \ + -I$(OCC_COMMON_TYPES_DIR) PIPE-CFLAGS = -pipe -Wa,-m405 diff --git a/src/occ_gpe0/ipc_func_tables.c b/src/occ_gpe0/ipc_func_tables.c index c1ea1e7..4d1e97f 100644 --- a/src/occ_gpe0/ipc_func_tables.c +++ b/src/occ_gpe0/ipc_func_tables.c @@ -24,12 +24,14 @@ /* IBM_PROLOG_END_TAG */ #include "ipc_api.h" #include "ipc_ping.h" +#include "apss_util.h" void apss_init_gpio(ipc_msg_t* cmd, void* arg); void apss_init_mode(ipc_msg_t* cmd, void* arg); void apss_start_pwr_meas_read(ipc_msg_t* cmd, void* arg); void apss_continue_pwr_meas_read(ipc_msg_t* cmd, void* arg); void apss_complete_pwr_meas_read(ipc_msg_t* cmd, void* arg); +void ipc_scom_operation(ipc_msg_t* cmd, void* arg); extern ipc_msgq_t G_gpe0_test_msgq0; @@ -59,7 +61,7 @@ IPC_HANDLER(apss_init_mode, 0) // 2 - IPC_ST_APSS_INIT_MODE_FUNCID IPC_HANDLER(apss_start_pwr_meas_read, 0) // 3 - IPC_ST_APSS_START_PWR_MEAS_READ_FUNCID IPC_HANDLER(apss_continue_pwr_meas_read, 0) // 4 - IPC_ST_APSS_CONTINUE_PWR_MEAS_READ_FUNCID IPC_HANDLER(apss_complete_pwr_meas_read, 0) // 5 - IPC_ST_APSS_COMPLETE_PWR_MEAS_READ_FUNCID -IPC_HANDLER_DEFAULT // 6 +IPC_HANDLER(ipc_scom_operation, 0) // 6 - IPC_ST_SCOM_OPERATION IPC_HANDLER_DEFAULT // 7 IPC_HANDLER_DEFAULT // 8 IPC_HANDLER_DEFAULT // 9 -- cgit v1.2.1