summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRahul Batra <rbatra@us.ibm.com>2017-03-15 12:21:53 -0500
committerJoshua Hunsberger <jahunsbe@us.ibm.com>2017-10-23 17:14:43 -0500
commitb9fdaab794f7e76c759df5ca38aa1a5551dc0646 (patch)
treecc5a3f98e3370baf542f307f0de99d50592e33a5
parente4163f42954717a9a6c0e727c280413ca65547b9 (diff)
downloadtalos-hcode-b9fdaab794f7e76c759df5ca38aa1a5551dc0646.tar.gz
talos-hcode-b9fdaab794f7e76c759df5ca38aa1a5551dc0646.zip
CME Pstate Updates(Platform Interdependence)
- Added dpll_pstate0 calculation in pstate parameter block code Change-Id: I0e8530ab510678e839421d88930e2156ba337f74 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/37982 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com> Reviewed-by: ASHISH A. MORE <ashish.more@in.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h11
-rw-r--r--import/chips/p9/procedures/ppe_closed/cme/p9_cme_main.c2
-rw-r--r--import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c2
-rw-r--r--import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_pstate.c5
-rw-r--r--import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_pstate.h2
-rw-r--r--import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c27
-rw-r--r--import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_pmcr.c4
-rw-r--r--import/chips/p9/procedures/ppe_closed/cme/topfiles.mk4
-rw-r--r--import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_irq_handlers.c4
9 files changed, 32 insertions, 29 deletions
diff --git a/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h b/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
index 74ca11a2..80001f4f 100644
--- a/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
+++ b/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
@@ -209,16 +209,16 @@ typedef struct
uint8_t droop_large_override_enable;
uint8_t droop_extreme_override_enable;
uint8_t overvolt_override_enable;
- uint16_t fmin_override_khz_enable;
- uint16_t fmax_override_khz_enable;
+ uint8_t fmin_override_khz_enable;
+ uint8_t fmax_override_khz_enable;
// The respecitve *_enable above indicate which index values are valid
uint8_t droop_small_override[VPD_PV_POINTS];
uint8_t droop_large_override[VPD_PV_POINTS];
uint8_t droop_extreme_override[VPD_PV_POINTS];
uint8_t overvolt_override[VPD_PV_POINTS];
- uint16_t fmin_override_khz[VPD_PV_POINTS];
- uint16_t fmax_override_khz[VPD_PV_POINTS];
+ uint8_t fmin_override_khz[VPD_PV_POINTS];
+ uint8_t fmax_override_khz[VPD_PV_POINTS];
/// Pad structure to 8-byte alignment
/// @todo pad once fully structure is complete.
@@ -327,6 +327,9 @@ typedef struct
/// VDM Data
VDMParmBlock vdm;
+ /// DPLL pstate 0 value
+ uint32_t dpll_pstate0_value;
+
} LocalPstateParmBlock;
#ifdef __cplusplus
diff --git a/import/chips/p9/procedures/ppe_closed/cme/p9_cme_main.c b/import/chips/p9/procedures/ppe_closed/cme/p9_cme_main.c
index bb978c3b..7317a51d 100644
--- a/import/chips/p9/procedures/ppe_closed/cme/p9_cme_main.c
+++ b/import/chips/p9/procedures/ppe_closed/cme/p9_cme_main.c
@@ -126,7 +126,7 @@ EXTERNAL_IRQ_TABLE_END
#define CME_THREAD_STACK_SIZE_STOP_EXIT 512
#define CME_THREAD_STACK_SIZE_STOP_ENTRY 512
-#define CME_THREAD_STACK_SIZE_PSTATE_DB 256
+#define CME_THREAD_STACK_SIZE_PSTATE_DB 384
#define CME_THREAD_STACK_SIZE_PSTATE_PMCR 256
#if TEST_ONLY_BCE_IRR
#define CME_THREAD_STACK_SIZE_BCE_IRR 256
diff --git a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c
index 4e3ac93d..a3ede88b 100644
--- a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c
+++ b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c
@@ -34,7 +34,7 @@
#include "p9_cme_flags.h"
#include "p9_cme_pstate.h"
#include "pstate_pgpe_cme_api.h"
-#include "p9_pstate_vpd.h"
+//#include "p9_pstate_vpd.h"
#include "ppe42_cache.h"
//
diff --git a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_pstate.c b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_pstate.c
index e96fcb89..f0cc54cb 100644
--- a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_pstate.c
+++ b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_pstate.c
@@ -50,11 +50,14 @@
#include "cmehw_common.h"
#include "cmehw_interrupts.h"
#include "p9_cme_pstate.h"
-
+#include "p9_hcode_image_defines.H"
//
//Globals
//
+cmeHeader_t* G_cmeHeader;
+LocalPstateParmBlock* G_lppb;
+
//
//send_pig_packet
diff --git a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_pstate.h b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_pstate.h
index 5ed3c178..ec37e922 100644
--- a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_pstate.h
+++ b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_pstate.h
@@ -38,6 +38,8 @@
#include "pk.h"
#include "pstate_pgpe_cme_api.h"
#include "gpehw_common.h"
+#include "p9_hcode_image_defines.H"
+#include "p9_pstates_cmeqm.h"
enum PMCR_CONTROL
{
diff --git a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c
index e553dfba..0ed7f425 100644
--- a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c
+++ b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c
@@ -41,25 +41,21 @@
#include "p9_cme_irq.h"
#include "p9_cme_flags.h"
#include "p9_cme_pstate.h"
-#include "p9_cme_header.h"
+//#include "p9_cme_header.h"
#include "pstate_pgpe_cme_api.h"
-#include "p9_pstate_vpd.h"
+//#include "p9_pstate_vpd.h"
#include "ppe42_cache.h"
+#include "p9_hcode_image_defines.H"
//
-//Globals
+//External Globals and globals
//
extern CmePstateRecord G_cme_pstate_record;
+extern cmeHeader_t* G_cmeHeader;
+extern LocalPstateParmBlock* G_lppb;
cme_pstate_db_data_t G_db_thread_data;
-//\todo Use PState Parameter Block structures. RTC
-extern global_pstate_table_t G_gpst;
-//extern freq_2_idx_entry_t G_freq2idx[NUM_FREQ_REGIONS];
-//extern uint16_t G_cgm_table[CGM_TRANSITIONS];
-extern uint8_t G_resclkEnabled;
-extern cme_header_t* G_cme_header;
-
//
//Function Prototypes
//
@@ -88,13 +84,14 @@ void p9_cme_pstate_db_handler(void* arg, PkIrqId irq)
//
void p9_cme_pstate_db_thread(void* arg)
{
- PK_TRACE("DB_TH: Started\n");
+ PK_TRACE_INF("DB_TH: Started\n");
uint32_t cme_flags;
PkMachineContext ctx;
uint32_t pir;
- //\todo Read the data from HOMER code. RTC
- p9_pstate_vpd_init();
+ G_cmeHeader = (cmeHeader_t*)(CME_SRAM_HEADER_ADDR);
+ G_lppb = (LocalPstateParmBlock*)(G_cmeHeader->g_cme_pstate_region_offset + CME_SRAM_BASE_ADDR);
+ PK_TRACE_INF("DB_TH: Hdr=0x%x, LPPB=0x%x\n", (uint32_t)G_cmeHeader, (uint32_t)G_lppb);
//Read CME_LCL_FLAGS
cme_flags = in32(CME_LCL_FLAGS);
@@ -168,8 +165,7 @@ void p9_cme_pstate_db_thread(void* arg)
out64(CME_LCL_EIMR_OR, BIT64(7));//Disable InterCME_IN0
g_eimr_override |= BIT64(7);
-
- G_db_thread_data.dpll_pstate0_value = G_gpst.pstate0_frequency_khz / G_gpst.frequency_step_khz;
+ G_db_thread_data.dpll_pstate0_value = G_lppb->dpll_pstate0_value;
}
else
{
@@ -476,6 +472,7 @@ inline void p9_cme_pstate_freq_update(uint64_t dbData)
PK_TRACE_INF("DB_TH: DBData=0x%08x%08x\n", dbData >> 32, dbData);
PK_TRACE_INF("DB_TH: Dpll0=0x%x\n", G_db_thread_data.dpll_pstate0_value);
+ PK_TRACE_INF("DB_TH: Hdr=0x%x, LPPB=0x%x\n", (uint32_t)G_cmeHeader, (uint32_t)G_lppb);
//Adjust DPLL
cppm_ippmcmd_t cppm_ippmcmd;
diff --git a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_pmcr.c b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_pmcr.c
index 2f2a73b3..373bc80d 100644
--- a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_pmcr.c
+++ b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_pmcr.c
@@ -41,9 +41,9 @@
#include "p9_cme_irq.h"
#include "p9_cme_flags.h"
#include "p9_cme_pstate.h"
-#include "p9_cme_header.h"
+//#include "p9_cme_header.h"
#include "pstate_pgpe_cme_api.h"
-#include "p9_pstate_vpd.h"
+//#include "p9_pstate_vpd.h"
#include "ppe42_cache.h"
//
diff --git a/import/chips/p9/procedures/ppe_closed/cme/topfiles.mk b/import/chips/p9/procedures/ppe_closed/cme/topfiles.mk
index 7bfb7e3d..54d8ec69 100644
--- a/import/chips/p9/procedures/ppe_closed/cme/topfiles.mk
+++ b/import/chips/p9/procedures/ppe_closed/cme/topfiles.mk
@@ -34,9 +34,7 @@ UTILS-C-SOURCES = utils/p9_putringutils.c \
PSTATE-C-SOURCES = pstate_cme/p9_cme_pstate.c \
pstate_cme/p9_cme_thread_db.c \
pstate_cme/p9_cme_thread_pmcr.c \
- pstate_cme/p9_cme_header.c \
- pstate_cme/p9_cme_intercme.c \
- pstate_cme/p9_pstate_vpd.c
+ pstate_cme/p9_cme_intercme.c
STOP-C-SOURCES = stop_cme/p9_cme_stop_irq_handlers.c \
stop_cme/p9_cme_stop_enter_thread.c \
diff --git a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_irq_handlers.c b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_irq_handlers.c
index c533a3b8..2e40242d 100644
--- a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_irq_handlers.c
+++ b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_irq_handlers.c
@@ -65,13 +65,13 @@ void p9_pgpe_irq_handler_sgpe_halt(void* arg, PkIrqId irq)
//
//Checkstop GPE2 Interrupt Handler
//
-//\TODO
-//Implement this handler. Should call code same as "Pstart STOP" IPC from OCC
void p9_pgpe_irq_handler_xstop_gpe2(void* arg, PkIrqId irq)
{
PK_TRACE_DBG("XSTOP GPE2: Enter\n");
PkMachineContext ctx;
+ pk_halt();
+
pk_irq_vec_restore(&ctx);//Restore interrupts
PK_TRACE_DBG("XSTOP GPE2: Exit\n");
}
OpenPOWER on IntegriCloud