Support custom crystal frequency on 20795A1 chip
Support new .conf variable XTAL_PARAMS_CFG to configure custom
crystal frequency. Variable XTAL_PARAMS_CFG is used if and only if
variable XTAL_FREQ_INDEX=0xFF.
Change-Id: I21112677f6e1109f9b6f23df51c819f5febd3bdd
diff --git a/halimpl/bcm2079x/adaptation/patchram.cpp b/halimpl/bcm2079x/adaptation/patchram.cpp
index 4c278cd..e33bac3 100644
--- a/halimpl/bcm2079x/adaptation/patchram.cpp
+++ b/halimpl/bcm2079x/adaptation/patchram.cpp
@@ -45,12 +45,14 @@
static StartupConfig sStartupConfig;
static StartupConfig sLptdConfig;
static StartupConfig sPreDiscoveryConfig;
+static StartupConfig sXtalCustomParam;
extern UINT8 *p_nfc_hal_dm_start_up_cfg; //defined in the HAL
static UINT8 nfa_dm_start_up_vsc_cfg[CONFIG_MAX_LEN];
extern UINT8 *p_nfc_hal_dm_start_up_vsc_cfg; //defined in the HAL
extern UINT8 *p_nfc_hal_dm_lptd_cfg; //defined in the HAL
static UINT8 sDontSendLptd[] = { 0 };
extern UINT8 *p_nfc_hal_pre_discover_cfg; //defined in the HAL
+extern UINT8 *p_nfc_hal_dm_xtal_params_cfg; //defined in HAL
extern tSNOOZE_MODE_CONFIG gSnoozeModeCfg;
extern tNFC_HAL_CFG *p_nfc_hal_cfg;
@@ -589,6 +591,7 @@
UINT32 hwId = 0;
UINT16 xtalFreq = 0;
UINT8 xtalIndex = 0;
+ int actualLen = 0;
GetNumValue (NAME_XTAL_HARDWARE_ID, &num, sizeof(num));
hwId = num;
@@ -599,6 +602,13 @@
GetNumValue (NAME_XTAL_FREQ_INDEX, &num, sizeof(num));
xtalIndex = (UINT8) num;
+ actualLen = GetStrValue (NAME_XTAL_PARAMS_CFG, (char*)sConfig, sizeof(sConfig));
+ if (actualLen && (xtalIndex == NFC_HAL_XTAL_INDEX_SPECIAL)) //whether to use custom crystal frequency
+ {
+ sXtalCustomParam.append (sConfig, actualLen);
+ p_nfc_hal_dm_xtal_params_cfg = const_cast<UINT8*> (sXtalCustomParam.getInternalBuffer ());
+ }
+
if ((hwId == 0) && (xtalFreq == 0) && (xtalIndex == 0))
return;
diff --git a/src/include/config.h b/src/include/config.h
index e864d28..4113d65 100644
--- a/src/include/config.h
+++ b/src/include/config.h
@@ -79,6 +79,7 @@
#define NAME_XTAL_HARDWARE_ID "XTAL_HARDWARE_ID"
#define NAME_XTAL_FREQUENCY "XTAL_FREQUENCY"
#define NAME_XTAL_FREQ_INDEX "XTAL_FREQ_INDEX"
+#define NAME_XTAL_PARAMS_CFG "XTAL_PARAMS_CFG"
#define NAME_EXCLUSIVE_SE_ACCESS "EXCLUSIVE_SE_ACCESS"
#define NAME_DBG_NO_UICC_IDLE_TIMEOUT_TOGGLING "DBG_NO_UICC_IDLE_TIMEOUT_TOGGLING"
#define NAME_PRESENCE_CHECK_ALGORITHM "PRESENCE_CHECK_ALGORITHM"