diff options
| author | Evan Chu <evanchu@broadcom.com> | 2013-06-14 13:57:47 -0400 |
|---|---|---|
| committer | Martijn Coenen <maco@google.com> | 2013-08-05 08:56:44 -0700 |
| commit | df5080d7feca9827fd0306471c54f52ecf185c22 (patch) | |
| tree | 1bbf8790d2c5fc9c7d276a0a2677e7e8a770a3ee /halimpl/bcm2079x/hal | |
| parent | 7c69b2723b60a59df4aaa58b13985b3483b291bf (diff) | |
| download | android_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.c | 3 | ||||
| -rw-r--r-- | halimpl/bcm2079x/hal/hal/nfc_hal_hci.c | 24 | ||||
| -rw-r--r-- | halimpl/bcm2079x/hal/hal/nfc_hal_prm.c | 47 |
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 { |
