diff options
| author | Love Khanna <love.khanna@nxp.com> | 2017-06-29 01:23:26 +0000 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2017-06-29 01:23:26 +0000 |
| commit | 32c31119310c33bc64c6256f75ac104ac8f1284e (patch) | |
| tree | 3c190d7e73b0ce99607ba5d668c7eace13f3be61 /halimpl | |
| parent | 2fada0489ddaef9a296692cfa3a9f62f9fec6c7a (diff) | |
| parent | 7202e66fd2d463c75feca95d26d75d3cf71a4d92 (diff) | |
| download | android_hardware_broadcom_nfc-32c31119310c33bc64c6256f75ac104ac8f1284e.tar.gz android_hardware_broadcom_nfc-32c31119310c33bc64c6256f75ac104ac8f1284e.tar.bz2 android_hardware_broadcom_nfc-32c31119310c33bc64c6256f75ac104ac8f1284e.zip | |
halimpl: PN81A FW download support
am: 7202e66fd2
Change-Id: I0262a531ce8fdcea0d4c6c4ac8f514f171522726
Diffstat (limited to 'halimpl')
| -rw-r--r-- | halimpl/pn54x/common/phNfcCommon.h | 4 | ||||
| -rw-r--r-- | halimpl/pn54x/hal/phNxpNciHal.c | 92 | ||||
| -rw-r--r-- | halimpl/pn54x/hal/phNxpNciHal.h | 5 |
3 files changed, 69 insertions, 32 deletions
diff --git a/halimpl/pn54x/common/phNfcCommon.h b/halimpl/pn54x/common/phNfcCommon.h index 13b7070..638a133 100644 --- a/halimpl/pn54x/common/phNfcCommon.h +++ b/halimpl/pn54x/common/phNfcCommon.h @@ -73,6 +73,10 @@ #if (NFC_NXP_CHIP_TYPE == PN548C2) #define COMPILATION_MW "PN548C2" +#elif (NFC_NXP_CHIP_TYPE == PN551) +#define COMPILATION_MW "PN551" +#elif (NFC_NXP_CHIP_TYPE == PN553) +#define COMPILATION_MW "PN553" #else #define COMPILATION_MW "PN547C2" #endif diff --git a/halimpl/pn54x/hal/phNxpNciHal.c b/halimpl/pn54x/hal/phNxpNciHal.c index 1b4ee89..0180cda 100644 --- a/halimpl/pn54x/hal/phNxpNciHal.c +++ b/halimpl/pn54x/hal/phNxpNciHal.c @@ -30,7 +30,19 @@ #define PN547C2_CLOCK_SETTING #undef PN547C2_FACTORY_RESET_DEBUG #define CORE_RES_STATUS_BYTE 3 +/* FW Mobile major number */ +#define FW_MOBILE_MAJOR_NUMBER_PN553 0x01 +#define FW_MOBILE_MAJOR_NUMBER_PN81A 0x02 +#define FW_MOBILE_MAJOR_NUMBER_PN551 0x05 +#define FW_MOBILE_MAJOR_NUMBER_PN48AD 0x01 +#if (NFC_NXP_CHIP_TYPE == PN551) +#define FW_MOBILE_MAJOR_NUMBER FW_MOBILE_MAJOR_NUMBER_PN551 +#elif (NFC_NXP_CHIP_TYPE == PN553) +#define FW_MOBILE_MAJOR_NUMBER FW_MOBILE_MAJOR_NUMBER_PN553 +#else +#define FW_MOBILE_MAJOR_NUMBER FW_MOBILE_MAJOR_NUMBER_PN48AD +#endif /* Processing of ISO 15693 EOF */ extern uint8_t icode_send_eof; extern uint8_t icode_detected; @@ -291,11 +303,6 @@ static NFCSTATUS phNxpNciHal_fw_download(void) { ******************************************************************************/ static NFCSTATUS phNxpNciHal_CheckValidFwVersion(void) { NFCSTATUS status = NFCSTATUS_NOT_ALLOWED; -#if (NFC_NXP_CHIP_TYPE == PN551) - const unsigned char sfw_mobile_major_no = 0x05; -#else - const unsigned char sfw_mobile_major_no = 0x01; -#endif const unsigned char sfw_infra_major_no = 0x02; unsigned char ufw_current_major_no = 0x00; unsigned long num = 0; @@ -304,36 +311,49 @@ static NFCSTATUS phNxpNciHal_CheckValidFwVersion(void) { /* extract the firmware's major no */ ufw_current_major_no = ((0x00FF) & (wFwVer >> 8U)); - NXPLOG_NCIHAL_D("%s current_major_no = 0x%x", __func__, ufw_current_major_no); - if (ufw_current_major_no == sfw_mobile_major_no) { + NXPLOG_NCIHAL_D("%s current_major_no = 0x%x", __FUNCTION__, + ufw_current_major_no); + if ((ufw_current_major_no == FW_MOBILE_MAJOR_NUMBER) || + ((ufw_current_major_no == FW_MOBILE_MAJOR_NUMBER_PN81A && + (nxpncihal_ctrl.nci_info.nci_version == NCI_VERSION_2_0)))) + + { status = NFCSTATUS_SUCCESS; } else if (ufw_current_major_no == sfw_infra_major_no) { - /* Check the nxp config file if still want to go for download */ - /* By default NAME_NXP_FW_PROTECION_OVERRIDE will not be defined in config - file. - If user really want to override the Infra firmware over mobile firmware, - please - put "NXP_FW_PROTECION_OVERRIDE=0x01" in libnfc-nxp.conf file. - Please note once Infra firmware downloaded to Mobile device, The device - can never be updated to Mobile firmware*/ - isfound = GetNxpNumValue(NAME_NXP_FW_PROTECION_OVERRIDE, &num, sizeof(num)); - if (isfound > 0) { - if (num == 0x01) { - NXPLOG_NCIHAL_D("Override Infra FW over Mobile"); - status = NFCSTATUS_SUCCESS; + if (rom_version == FW_MOBILE_ROM_VERSION_PN553 && + nxpncihal_ctrl.nci_info.nci_version == NCI_VERSION_2_0) { + NXPLOG_NCIHAL_D(" PN81A allow Fw download with major number = 0x%x", + ufw_current_major_no); + status = NFCSTATUS_SUCCESS; + } else { + /* Check the nxp config file if still want to go for download */ + /* By default NAME_NXP_FW_PROTECION_OVERRIDE will not be defined in config + file. + If user really want to override the Infra firmware over mobile + firmware, please + put "NXP_FW_PROTECION_OVERRIDE=0x01" in libnfc-nxp.conf file. + Please note once Infra firmware downloaded to Mobile device, The device + can never be updated to Mobile firmware*/ + isfound = + GetNxpNumValue(NAME_NXP_FW_PROTECION_OVERRIDE, &num, sizeof(num)); + if (isfound > 0) { + if (num == 0x01) { + NXPLOG_NCIHAL_D("Override Infra FW over Mobile"); + status = NFCSTATUS_SUCCESS; + } else { + NXPLOG_NCIHAL_D( + "Firmware download not allowed (NXP_FW_PROTECION_OVERRIDE " + "invalid value)"); + } } else { NXPLOG_NCIHAL_D( - "Firmware download not allowed (NXP_FW_PROTECION_OVERRIDE invalid " - "value)"); + "Firmware download not allowed (NXP_FW_PROTECION_OVERRIDE not " + "defined)"); } - } else { - NXPLOG_NCIHAL_D( - "Firmware download not allowed (NXP_FW_PROTECION_OVERRIDE not " - "defiend)"); } } #if (NFC_NXP_CHIP_TYPE != PN547C2) - else if (gRecFWDwnld == true) { + else if (gRecFWDwnld == TRUE) { status = NFCSTATUS_SUCCESS; } #endif @@ -658,13 +678,20 @@ clean_and_return: ******************************************************************************/ int phNxpNciHal_fw_mw_ver_check() { NFCSTATUS status = NFCSTATUS_FAILED; - if (!strcmp(COMPILATION_MW, "PN551") && (rom_version == 0x10) && - (fw_maj_ver == 0x05)) { + if (!(strcmp(COMPILATION_MW, "PN553")) && + (rom_version == FW_MOBILE_ROM_VERSION_PN553) && + (fw_maj_ver == 0x01 || fw_maj_ver == 0x02)) { + status = NFCSTATUS_SUCCESS; + } else if (!strcmp(COMPILATION_MW, "PN551") && + (rom_version == FW_MOBILE_ROM_VERSION_PN551) && + (fw_maj_ver == 0x05)) { status = NFCSTATUS_SUCCESS; - } else if (!strcmp(COMPILATION_MW, "PN548C2") && (rom_version == 0x10) && + } else if (!strcmp(COMPILATION_MW, "PN548C2") && + (rom_version == FW_MOBILE_ROM_VERSION_PN548AD) && (fw_maj_ver == 0x01)) { status = NFCSTATUS_SUCCESS; - } else if (!strcmp(COMPILATION_MW, "PN547C2") && (rom_version == 0x08) && + } else if (!strcmp(COMPILATION_MW, "PN547C2") && + (rom_version == FW_MOBILE_ROM_VERSION_PN547C2) && (fw_maj_ver == 0x01)) { status = NFCSTATUS_SUCCESS; } @@ -2337,8 +2364,9 @@ int check_config_parameter() { NFCSTATUS status = NFCSTATUS_FAILED; uint8_t param_clock_src = CLK_SRC_PLL; if (nxpprofile_ctrl.bClkSrcVal == CLK_SRC_PLL) { +#if (NFC_NXP_CHIP_TYPE != PN553) param_clock_src = param_clock_src << 3; - +#endif if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_13MHZ) { param_clock_src |= 0x00; } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_19_2MHZ) { diff --git a/halimpl/pn54x/hal/phNxpNciHal.h b/halimpl/pn54x/hal/phNxpNciHal.h index e03ad7b..00ec236 100644 --- a/halimpl/pn54x/hal/phNxpNciHal.h +++ b/halimpl/pn54x/hal/phNxpNciHal.h @@ -31,6 +31,11 @@ #define NCI_VERSION_UNKNOWN 0x00 typedef void(phNxpNciHal_control_granted_callback_t)(); +/*ROM CODE VERSION FW*/ +#define FW_MOBILE_ROM_VERSION_PN551 0x10 +#define FW_MOBILE_ROM_VERSION_PN553 0x11 +#define FW_MOBILE_ROM_VERSION_PN548AD 0x10 +#define FW_MOBILE_ROM_VERSION_PN547C2 0x08 /* NCI Data */ #define NCI_MT_CMD 0x20 |
