summaryrefslogtreecommitdiffstats
path: root/halimpl/bcm2079x/hal
diff options
context:
space:
mode:
authorEvan Chu <evanchu@broadcom.com>2013-06-14 13:57:47 -0400
committerMartijn Coenen <maco@google.com>2013-08-05 08:56:44 -0700
commitdf5080d7feca9827fd0306471c54f52ecf185c22 (patch)
tree1bbf8790d2c5fc9c7d276a0a2677e7e8a770a3ee /halimpl/bcm2079x/hal
parent7c69b2723b60a59df4aaa58b13985b3483b291bf (diff)
downloadandroid_hardware_broadcom_nfc-df5080d7feca9827fd0306471c54f52ecf185c22.tar.gz
android_hardware_broadcom_nfc-df5080d7feca9827fd0306471c54f52ecf185c22.tar.bz2
android_hardware_broadcom_nfc-df5080d7feca9827fd0306471c54f52ecf185c22.zip
Upgrade stack to NFA_MI_1.03.62.
.conf variable SPD_IGNORE_VERSION is removed. Stack always download firmware if a difference is detected. Change-Id: I2a5e21254e6c0df7829506c1c3c2f6ffa44c0048
Diffstat (limited to 'halimpl/bcm2079x/hal')
-rw-r--r--halimpl/bcm2079x/hal/hal/nfc_hal_dm.c3
-rw-r--r--halimpl/bcm2079x/hal/hal/nfc_hal_hci.c24
-rw-r--r--halimpl/bcm2079x/hal/hal/nfc_hal_prm.c47
3 files changed, 31 insertions, 43 deletions
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_dm.c b/halimpl/bcm2079x/hal/hal/nfc_hal_dm.c
index 4b0f034..58482c5 100644
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_dm.c
+++ b/halimpl/bcm2079x/hal/hal/nfc_hal_dm.c
@@ -382,7 +382,8 @@ tNFC_HAL_XTAL_INDEX nfc_hal_dm_get_xtal_index (UINT32 brcm_hw_id, UINT16 *p_xtal
for (xx = 0; xx < nfc_post_reset_cb.dev_init_config.num_xtal_cfg; xx++)
{
- if (brcm_hw_id == nfc_post_reset_cb.dev_init_config.xtal_cfg[xx].brcm_hw_id)
+ if ((brcm_hw_id & BRCM_NFC_GEN_MASK)
+ == nfc_post_reset_cb.dev_init_config.xtal_cfg[xx].brcm_hw_id)
{
*p_xtal_freq = nfc_post_reset_cb.dev_init_config.xtal_cfg[xx].xtal_freq;
return (nfc_post_reset_cb.dev_init_config.xtal_cfg[xx].xtal_index);
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_hci.c b/halimpl/bcm2079x/hal/hal/nfc_hal_hci.c
index af42d77..9fd0c27 100644
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_hci.c
+++ b/halimpl/bcm2079x/hal/hal/nfc_hal_hci.c
@@ -67,6 +67,8 @@ static void nfc_hal_hci_vsc_cback (tNFC_HAL_NCI_EVT event, UINT16 data_len, UINT
*******************************************************************************/
void nfc_hal_hci_evt_hdlr (tNFC_HAL_HCI_EVENT_DATA *p_evt_data)
{
+ HAL_TRACE_DEBUG0 ("nfc_hal_hci_evt_hdlr ()");
+
switch (p_evt_data->hdr.event)
{
case NFC_HAL_HCI_RSP_NV_READ_EVT:
@@ -105,6 +107,8 @@ void nfc_hal_hci_enable (void)
UINT8 *p_hci_netwk_cmd;
+ HAL_TRACE_DEBUG0 ("nfc_hal_hci_enable ()");
+
if (nfc_hal_cb.nvm_cb.nvm_type == NCI_SPD_NVM_TYPE_NONE)
{
HAL_TRACE_DEBUG1 ("nfc_hal_hci_enable (): No HCI NETWK CMD to send for NVM Type: 0x%02x", nfc_hal_cb.nvm_cb.nvm_type);
@@ -175,7 +179,7 @@ void nfc_hal_hci_handle_hci_netwk_info (UINT8 *p_data)
UINT8 target_handle;
UINT8 hci_netwk_cmd[1 + NFC_HAL_HCI_SESSION_ID_LEN];
- HAL_TRACE_DEBUG0 ("nfc_hal_hci_handle_hci_netwk_info()");
+ HAL_TRACE_DEBUG0 ("nfc_hal_hci_handle_hci_netwk_info ()");
/* skip NCI header byte0 (MT,GID), byte1 (OID) */
p += 2;
@@ -357,6 +361,8 @@ void nfc_hal_hci_handle_hcp_pkt_from_hc (UINT8 *p_data)
UINT8 hci_netwk_cmd[1 + NFC_HAL_HCI_SESSION_ID_LEN];
UINT8 source_host;
+ HAL_TRACE_DEBUG0 ("nfc_hal_hci_handle_hcp_pkt_from_hc ()");
+
if (!nfc_hal_cb.hci_cb.hci_fw_workaround)
return;
@@ -424,6 +430,8 @@ void nfc_hal_hci_handle_nv_read (UINT8 block, tHAL_NFC_STATUS status, UINT16 siz
UINT8 *p;
UINT8 *p_hci_netwk_info = NULL;
+ HAL_TRACE_DEBUG3 ("nfc_hal_hci_handle_nv_read (): Block: [0x%02x], Status: [0x%02x], Size: [0x%04x]", block, status, size);
+
/* Stop timer as NVDATA Read Completed */
nfc_hal_main_stop_quick_timer (&nfc_hal_cb.hci_cb.hci_timer);
@@ -506,6 +514,8 @@ void nfc_hal_hci_remove_dyn_pipe_to_uicc1 (void)
UINT8 xx;
UINT8 source_host, dest_host, pipe_id;
+ HAL_TRACE_DEBUG0 ("nfc_hal_hci_remove_dyn_pipe_to_uicc1 ()");
+
p = (UINT8 *) (nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf + NFC_HAL_HCI_MIN_DH_NETWK_INFO_SIZE);
np = p;
num_dyn_pipes = *(p - 1);
@@ -544,6 +554,8 @@ void nfc_hal_hci_init_complete (tHAL_NFC_STATUS status)
{
UINT8 *p_hci_netwk_cmd;
+ HAL_TRACE_DEBUG1 ("nfc_hal_hci_init_complete (): Status: [0x%02x]", status);
+
if (nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf)
{
p_hci_netwk_cmd = (UINT8 *) (nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf - NCI_MSG_HDR_SIZE);
@@ -560,7 +572,7 @@ void nfc_hal_hci_init_complete (tHAL_NFC_STATUS status)
NFC_HAL_SET_INIT_STATE (NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_cb.p_stack_cback (HAL_NFC_POST_INIT_CPLT_EVT, HAL_NFC_STATUS_OK);
+ nfc_hal_cb.p_stack_cback (HAL_NFC_POST_INIT_CPLT_EVT, status);
}
/*******************************************************************************
@@ -576,10 +588,13 @@ void nfc_hal_hci_set_next_hci_netwk_config (UINT8 block)
{
UINT8 *p_hci_netwk_cmd;
+ HAL_TRACE_DEBUG1 ("nfc_hal_hci_set_next_hci_netwk_config (): Block: [0x%02x]", block);
+
switch (block)
{
case HC_F3_NV_BLOCK:
if ( (p_nfc_hal_cfg->nfc_hal_hci_uicc_support & HAL_NFC_HCI_UICC1_HOST)
+ &&(nfc_hal_cb.hci_cb.p_hci_netwk_info_buf)
&&((!nfc_hal_cb.hci_cb.hci_fw_workaround) || (nfc_hal_cb.nvm_cb.nvm_type == NCI_SPD_NVM_TYPE_EEPROM)) )
{
/* Send command to read nvram data for 0xF4 */
@@ -635,11 +650,16 @@ static void nfc_hal_hci_vsc_cback (tNFC_HAL_NCI_EVT event, UINT16 data_len, UINT
p_ret = p_data + NCI_MSG_HDR_SIZE;
status = *p_ret;
+ HAL_TRACE_DEBUG3 ("nfc_hal_hci_vsc_cback (): Event: [0x%02x], Data length: [0x%04x], Status: [0x%02x]", event, data_len, status);
+
if (event != NFC_VS_HCI_NETWK_RSP)
return;
if (status != HAL_NFC_STATUS_OK)
+ {
nfc_hal_hci_init_complete (HAL_NFC_STATUS_FAILED);
+ return;
+ }
switch (nfc_hal_cb.hci_cb.hci_netwk_config_block)
{
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_prm.c b/halimpl/bcm2079x/hal/hal/nfc_hal_prm.c
index eae3d6c..f8bf1a7 100644
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_prm.c
+++ b/halimpl/bcm2079x/hal/hal/nfc_hal_prm.c
@@ -365,53 +365,20 @@ void nfc_hal_prm_spd_check_version (void)
/*********************************************************************
* Version check of patchfile against NVM
*********************************************************************/
-
-#if (!defined (NFC_HAL_PRM_SKIP_VERSION_CHECK) || (NFC_HAL_PRM_SKIP_VERSION_CHECK == FALSE))
- /* Download the patchfile if no patches in NVM */
- if ((nfc_hal_cb.nvm_cb.project_id == 0) || !(nfc_hal_cb.nvm_cb.flags & NFC_HAL_NVM_FLAGS_PATCH_PRESENT))
+ if ( (nfc_hal_cb.nvm_cb.ver_major == patchfile_ver_major)
+ &&(nfc_hal_cb.nvm_cb.ver_minor == patchfile_ver_minor)
+ && !(nfc_hal_cb.nvm_cb.flags & (NFC_HAL_NVM_FLAGS_FPM_BAD | NFC_HAL_NVM_FLAGS_LPM_BAD)) )
{
- /* No patch in NVM, need to download all */
- nfc_hal_cb.prm.spd_patch_needed_mask = patchfile_patch_present_mask;
-
- HAL_TRACE_DEBUG2 ("No previous patch detected. Downloading patch %i.%i",
- patchfile_ver_major, patchfile_ver_minor);
- }
- /* Skip download if project ID of patchfile does not match NVM */
- else if (nfc_hal_cb.nvm_cb.project_id != patchfile_project_id)
- {
- /* Project IDs mismatch */
- HAL_TRACE_DEBUG2 ("Patch download skipped: Mismatched Project ID (NVM ProjId: 0x%04x, Patchfile ProjId: 0x%04x)",
- nfc_hal_cb.nvm_cb.project_id, patchfile_project_id);
-
- return_code = NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT;
- }
- /* Skip download if version of patchfile older or equal to version in NVM */
- /* unless NVM is corrupted (then don't skip download if patchfile has the same major ver)*/
- else if ( (nfc_hal_cb.nvm_cb.ver_major > patchfile_ver_major)
- ||( (nfc_hal_cb.nvm_cb.ver_major == patchfile_ver_major) && (nfc_hal_cb.nvm_cb.ver_minor == patchfile_ver_minor)
- && !((patchfile_patch_present_mask & ( 1 << NFC_HAL_PRM_SPD_POWER_MODE_LPM)) && (nfc_hal_cb.nvm_cb.lpm_size == 0)) /* Do not skip download: patchfile has LPM, but NVM does not */
- && !((patchfile_patch_present_mask & ( 1 << NFC_HAL_PRM_SPD_POWER_MODE_FPM)) && (nfc_hal_cb.nvm_cb.fpm_size == 0)) /* Do not skip download: patchfile has FPM, but NVM does not */
- && !(nfc_hal_cb.nvm_cb.flags & (NFC_HAL_NVM_FLAGS_FPM_BAD |NFC_HAL_NVM_FLAGS_LPM_BAD)) ) )
- {
- /* NVM version is newer than patchfile */
- HAL_TRACE_DEBUG2 ("Patch download skipped. NVM patch (version %i.%i) is newer than the patchfile ",
- nfc_hal_cb.nvm_cb.ver_major, nfc_hal_cb.nvm_cb.ver_minor);
-
+ HAL_TRACE_DEBUG0 ("NVM contains the same patch version as in the patch file. Skip");
return_code = NFC_HAL_PRM_COMPLETE_EVT;
}
- /* Remaining cases: patchfile major version is newer than NVM; or major version is the same with different minor version */
- /* Download all patches in the patchfile */
else
{
+ HAL_TRACE_DEBUG5 ("NVM patch version %i.%i. Downloading version %i.%i flags:0x%x",
+ nfc_hal_cb.nvm_cb.ver_major, nfc_hal_cb.nvm_cb.ver_minor,
+ patchfile_ver_major, patchfile_ver_minor, nfc_hal_cb.nvm_cb.flags);
nfc_hal_cb.prm.spd_patch_needed_mask = patchfile_patch_present_mask;
-
- HAL_TRACE_DEBUG4 ("Downloading patch version: %i.%i (previous version in NVM: %i.%i)...",
- patchfile_ver_major, patchfile_ver_minor,
- nfc_hal_cb.nvm_cb.ver_major, nfc_hal_cb.nvm_cb.ver_minor);
}
-#else /* NFC_HAL_PRM_SKIP_VERSION_CHECK */
- nfc_hal_cb.prm.spd_patch_needed_mask = patchfile_patch_present_mask;
-#endif
}
else
{