diff options
author | Tapas Dey <tdey@codeaurora.org> | 2021-07-28 15:13:58 +0530 |
---|---|---|
committer | Tapas Dey <tdey@codeaurora.org> | 2021-09-17 20:04:37 +0530 |
commit | 5e9491093890e98925e8432447708c230fffaf52 (patch) | |
tree | 6dbcaff05aefc6a83fea67fb9c8e989f9162bd27 | |
parent | 2655707f613a157132d41421d8057d693f3974c5 (diff) |
NFC: Update usage of NQXX FW binary paths in HAL layer
With Android upgrade requirement, build rules for prebuilt
binary have been updated, due to which the FW binary is now
built at both /vendor/lib and /vendor/lib64 directories.
In order to pick correct FW binary based on the build
architecture, update the FW binary paths usage based
on the build architecture being used for compilation.
Change-Id: Ife5def6b6c2c01b2b8a4e4f764dde5dc40377433
-rw-r--r-- | extns/impl/nxpnfc/2.0/Nxp_Features.h | 4 | ||||
-rw-r--r-- | halimpl/dnld/phDnldNfc.cc | 60 | ||||
-rw-r--r-- | halimpl/inc/Nxp_Features.h | 4 |
3 files changed, 45 insertions, 23 deletions
diff --git a/extns/impl/nxpnfc/2.0/Nxp_Features.h b/extns/impl/nxpnfc/2.0/Nxp_Features.h index 8a276d9..2531297 100644 --- a/extns/impl/nxpnfc/2.0/Nxp_Features.h +++ b/extns/impl/nxpnfc/2.0/Nxp_Features.h @@ -24,7 +24,11 @@ #define STRMAX_1 40 #define STRMAX_2 100 +#if (defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64)) +#define FW_DLL_ROOT_DIR "/system/vendor/lib64/" +#else #define FW_DLL_ROOT_DIR "/system/vendor/lib/" +#endif #define FW_DLL_EXTENSION ".so" #define FW_MOBILE_MAJOR_NUMBER_PN553 0x01 diff --git a/halimpl/dnld/phDnldNfc.cc b/halimpl/dnld/phDnldNfc.cc index f6576ab..fcdf8a2 100644 --- a/halimpl/dnld/phDnldNfc.cc +++ b/halimpl/dnld/phDnldNfc.cc @@ -24,7 +24,7 @@ #include <phNxpLog.h> #include <dlfcn.h> #include <phNxpConfig.h> - +#include <string.h> static void* pFwLibHandle; /* Global firmware lib handle used in this file only */ uint16_t wMwVer = 0; /* Middleware version no */ @@ -961,17 +961,24 @@ NFCSTATUS phDnldNfc_LoadFW(const char* pathName, uint8_t** pImgInfo, void* pImageInfo = NULL; void* pImageInfoLen = NULL; if (pathName == NULL) { - if(nfcFL.chipType == pn548C2) { - pathName = "/vendor/lib/libpn548ad_fw.so"; - } else if(nfcFL.chipType == pn551) { - pathName = "/vendor/lib/libpn551_fw.so"; - } else if(nfcFL.chipType == pn553) { - pathName = "/vendor/lib/libpn553_fw.so"; - } else if(nfcFL.chipType == pn557) { - pathName = "/vendor/lib/libpn557_fw.so"; - } else { - pathName = "/vendor/lib/libpn547_fw.so"; - } + char mPathName[50] = {'\0'}; + #if (defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64)) + strlcpy(mPathName, "/vendor/lib64/", sizeof(mPathName)); + #else + strlcpy(mPathName, "/vendor/lib/", sizeof(mPathName)); + #endif + if(nfcFL.chipType == pn548C2) { + strlcat(mPathName, "libpn548ad_fw.so", sizeof(mPathName)); + } else if(nfcFL.chipType == pn551) { + strlcat(mPathName, "libpn551_fw.so", sizeof(mPathName)); + } else if(nfcFL.chipType == pn553) { + strlcat(mPathName, "libpn553_fw.so", sizeof(mPathName)); + } else if(nfcFL.chipType == pn557) { + strlcat(mPathName, "libpn557_fw.so", sizeof(mPathName)); + } else { + strlcat(mPathName, "libpn547_fw.so", sizeof(mPathName)); + } + pathName = mPathName; } /* check if the handle is not NULL then free the library */ @@ -1035,17 +1042,24 @@ NFCSTATUS phDnldNfc_LoadRecoveryFW(const char* pathName, uint8_t** pImgInfo, /* check for path name */ if (pathName == NULL) { - if(nfcFL.chipType == pn548C2) { - pathName = "/vendor/lib/libpn548ad_fw.so"; - } else if(nfcFL.chipType == pn551) { - pathName = "/vendor/lib/libpn551_fw.so"; - } else if(nfcFL.chipType == pn553) { - pathName = "/vendor/lib/libpn553_fw.so"; - }else if(nfcFL.chipType == pn557) { - pathName = "/vendor/lib/libpn557_fw.so"; - } else { - pathName = "/vendor/lib/libpn547_fw.so"; - } + char mPathName[50] = {'\0'}; + #if (defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64)) + strlcpy(mPathName, "/vendor/lib64/", sizeof(mPathName)); + #else + strlcpy(mPathName, "/vendor/lib/", sizeof(mPathName)); + #endif + if(nfcFL.chipType == pn548C2) { + strlcat(mPathName, "libpn548ad_fw.so", sizeof(mPathName));; + } else if(nfcFL.chipType == pn551) { + strlcat(mPathName, "libpn551_fw.so", sizeof(mPathName)); + } else if(nfcFL.chipType == pn553) { + strlcat(mPathName, "libpn553_fw.so", sizeof(mPathName)); + } else if(nfcFL.chipType == pn557) { + strlcat(mPathName, "libpn557_fw.so", sizeof(mPathName)); + } else { + strlcat(mPathName, "libpn547_fw.so", sizeof(mPathName)); + } + pathName = mPathName; } /* check if the handle is not NULL then free the library */ if (pFwLibHandle != NULL) { diff --git a/halimpl/inc/Nxp_Features.h b/halimpl/inc/Nxp_Features.h index 28f8301..d48e748 100644 --- a/halimpl/inc/Nxp_Features.h +++ b/halimpl/inc/Nxp_Features.h @@ -24,7 +24,11 @@ #define STRMAX_1 40 #define STRMAX_2 100 +#if (defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64)) +#define FW_DLL_ROOT_DIR "/vendor/lib64/" +#else #define FW_DLL_ROOT_DIR "/vendor/lib/" +#endif #define FW_DLL_EXTENSION ".so" #define FW_MOBILE_MAJOR_NUMBER_PN553 0x01 |