summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTapas Dey <tdey@codeaurora.org>2021-07-28 15:13:58 +0530
committerTapas Dey <tdey@codeaurora.org>2021-09-17 20:04:37 +0530
commit5e9491093890e98925e8432447708c230fffaf52 (patch)
tree6dbcaff05aefc6a83fea67fb9c8e989f9162bd27
parent2655707f613a157132d41421d8057d693f3974c5 (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.h4
-rw-r--r--halimpl/dnld/phDnldNfc.cc60
-rw-r--r--halimpl/inc/Nxp_Features.h4
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