From 2efa0ad54c389a3d6f7b43adf78dd83691fae0ae Mon Sep 17 00:00:00 2001 From: Gerry Stellenberg Date: Thu, 1 Oct 2009 22:46:18 -0500 Subject: [PATCH] Added function IsStern() to assest PRDevice.cpp in determining the machineType. --- src/PRHardware.cpp | 6 ++++++ src/PRHardware.h | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/PRHardware.cpp b/src/PRHardware.cpp index fb98f22..7b316b7 100644 --- a/src/PRHardware.cpp +++ b/src/PRHardware.cpp @@ -32,6 +32,12 @@ #include "PRHardware.h" #include "PRCommon.h" +bool_t IsStern (uint32_t hardware_data) { + if ( ((hardware_data & P_ROC_BOARD_VERSION_MASK) >> P_ROC_BOARD_VERSION_SHIFT) == 0x1) + return ( ((hardware_data & P_ROC_AUTO_STERN_DETECT_MASK) >> P_ROC_AUTO_STERN_DETECT_SHIFT) == P_ROC_AUTO_STERN_DETECT_VALUE); + else + return ( ((hardware_data & P_ROC_MANUAL_STERN_DETECT_MASK) >> P_ROC_MANUAL_STERN_DETECT_SHIFT) == P_ROC_MANUAL_STERN_DETECT_VALUE); +} uint32_t CreateRegRequestWord( uint32_t select, uint32_t addr, uint32_t num_words ) { return ( (P_ROC_READ << P_ROC_COMMAND_SHIFT) | diff --git a/src/PRHardware.h b/src/PRHardware.h index 910fc01..6d67d21 100644 --- a/src/PRHardware.h +++ b/src/PRHardware.h @@ -44,6 +44,15 @@ const uint32_t P_ROC_INIT_PATTERN_A = 0x801F1122; const uint32_t P_ROC_INIT_PATTERN_B = 0x345678AB; const uint32_t P_ROC_CHIP_ID = 0xFEEDBEEF; +const uint32_t P_ROC_AUTO_STERN_DETECT_SHIFT = 8; +const uint32_t P_ROC_AUTO_STERN_DETECT_MASK = 0x00000100; +const uint32_t P_ROC_AUTO_STERN_DETECT_VALUE = 0x1; +const uint32_t P_ROC_MANUAL_STERN_DETECT_SHIFT = 0; +const uint32_t P_ROC_MANUAL_STERN_DETECT_MASK = 0x00000001; +const uint32_t P_ROC_MANUAL_STERN_DETECT_VALUE = 0x00000000; +const uint32_t P_ROC_BOARD_VERSION_SHIFT = 7; +const uint32_t P_ROC_BOARD_VERSION_MASK = 0x00000080; + const uint32_t P_ROC_ADDR_MASK = 0x000FFFFF; const uint32_t P_ROC_HEADER_LENGTH_MASK = 0x7FF00000; const uint32_t P_ROC_COMMAND_MASK = 0x80000000; @@ -208,6 +217,7 @@ typedef struct PRSwitchRuleInternal { } PRSwitchRuleInternal; +bool_t IsStern (uint32_t hardware_data); uint32_t CreateRegRequestWord( uint32_t select, uint32_t addr, uint32_t num_words); uint32_t CreateBurstCommand ( uint32_t select, uint32_t addr, uint32_t num_words); int32_t CreateDriverUpdateGlobalConfigBurst ( uint32_t * burst, PRDriverGlobalConfig *driver_globals);