diff options
author | Evan Chu <evanchu@broadcom.com> | 2014-02-03 10:01:33 -0500 |
---|---|---|
committer | Martijn Coenen <maco@google.com> | 2014-05-19 13:28:25 -0700 |
commit | 3c8ee3d9f5df8d315dc9d47a4fb05d6411028e8a (patch) | |
tree | db6ee166a093ce072f64cf8fd46dc2ce92b9b88f | |
parent | f0ab6c7239c3580550eda490042eaa1805b98302 (diff) | |
download | libnfc-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.cpp | 10 | ||||
-rw-r--r-- | src/include/config.h | 1 |
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" |