summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Chu <evanchu@broadcom.com>2014-02-03 10:01:33 -0500
committerMartijn Coenen <maco@google.com>2014-05-19 13:28:25 -0700
commit3c8ee3d9f5df8d315dc9d47a4fb05d6411028e8a (patch)
treedb6ee166a093ce072f64cf8fd46dc2ce92b9b88f
parentf0ab6c7239c3580550eda490042eaa1805b98302 (diff)
downloadlibnfc-nci-3c8ee3d9f5df8d315dc9d47a4fb05d6411028e8a.tar.gz
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
-rw-r--r--halimpl/bcm2079x/adaptation/patchram.cpp10
-rw-r--r--src/include/config.h1
2 files changed, 11 insertions, 0 deletions
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 UINT8 sConfig [CONFIG_MAX_LEN];
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 @@ void configureCrystalFrequency ()
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 @@ void configureCrystalFrequency ()
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 @@ int GetNumValue(const char* name, void* p_value, unsigned long len);
#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"