NFC: Modify third party libnfc-nci

The third party libnfc-nci has to coexist with the AOSP baseline.
Furthermore, it has to be compatible with the NQx chip family.

Modified makefiles and config files to reflect NQx naming scheme.
Modified HAL to avoid modifications to libhardware for new ioctl
function pointer.

Change-Id: I9c9c7e8679c71edfa0c29d2cdcc10041915b9d6e
diff --git a/Android.mk b/Android.mk
index aa04ff6..f9608cd 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,3 +1,4 @@
+ifeq ($(strip $(TARGET_USES_NQ_NFC)),true)
 # function to find all *.cpp files under a directory
 define all-cpp-files-under
 $(patsubst ./%,%, \
@@ -67,8 +68,10 @@
 # Build shared library system/lib/libnfc-nci.so for stack code.
 
 LOCAL_ARM_MODE := arm
-LOCAL_MODULE := libnfc-nci
+LOCAL_MODULE := libnqnfc-nci
 LOCAL_MODULE_TAGS := optional
+LOCAL_PROPRIETARY_MODULE := true
+LOCAL_MODULE_OWNER := nxp
 LOCAL_SHARED_LIBRARIES := libhardware_legacy libcutils liblog libdl libhardware
 LOCAL_CFLAGS += $(D_CFLAGS)
 LOCAL_C_INCLUDES := $(LOCAL_PATH)/src/include \
@@ -94,3 +97,4 @@
 
 ######################################
 include $(call all-makefiles-under,$(LOCAL_PATH))
+endif
diff --git a/CleanSpec.mk b/CleanSpec.mk
index e051104..cf3a247 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -43,7 +43,7 @@
 #$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
 #$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
 #$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libnfc-nci_intermediates)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libnqnfc-nci_intermediates)
 
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
diff --git a/halimpl/pn54x/Android.mk b/halimpl/pn54x/Android.mk
index 2bd1269..5e44761 100644
--- a/halimpl/pn54x/Android.mk
+++ b/halimpl/pn54x/Android.mk
@@ -32,11 +32,13 @@
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-LOCAL_MODULE := nfc_nci.pn54x.default
+LOCAL_MODULE := nfc_nci.nqx.default
 LOCAL_MODULE_RELATIVE_PATH := hw
 LOCAL_SRC_FILES := $(call all-c-files-under, .)  $(call all-cpp-files-under, .)
 LOCAL_SHARED_LIBRARIES := libhardware_legacy libcutils liblog libdl
 LOCAL_MODULE_TAGS := optional
+LOCAL_PROPRIETARY_MODULE := true
+LOCAL_MODULE_OWNER := nxp
 
 LOCAL_C_INCLUDES += \
 	$(LOCAL_PATH)/utils \
@@ -75,3 +77,19 @@
 #LOCAL_CFLAGS += -DFELICA_CLT_ENABLE
 #-DNXP_PN547C1_DOWNLOAD
 include $(BUILD_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE       := libnfc-brcm.conf
+LOCAL_MODULE_TAGS  := optional
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH  := $(TARGET_OUT_ETC)
+LOCAL_SRC_FILES    := $(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE       := libnfc-nxp.conf
+LOCAL_MODULE_TAGS  := optional
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH  := $(TARGET_OUT_ETC)
+LOCAL_SRC_FILES    := libnfc-nxp-PN548C2_example.conf
+include $(BUILD_PREBUILT)
diff --git a/halimpl/pn54x/hal/phNxpNciHal.c b/halimpl/pn54x/hal/phNxpNciHal.c
index 5c5bea4..b1447c0 100644
--- a/halimpl/pn54x/hal/phNxpNciHal.c
+++ b/halimpl/pn54x/hal/phNxpNciHal.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Not a Contribution.
+ *
  * Copyright (C) 2015 NXP Semiconductors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -472,8 +475,8 @@
     }
     else if (!GetNxpStrValue (NAME_NXP_NFC_DEV_NODE, nfc_dev_node, sizeof (nfc_dev_node)))
     {
-        NXPLOG_NCIHAL_E("Invalid nfc device node name keeping the default device node /dev/pn544");
-        strcpy (nfc_dev_node, "/dev/pn544");
+        NXPLOG_NCIHAL_E("Invalid nfc device node name keeping the default device node /dev/nq-nci");
+        strcpy (nfc_dev_node, "/dev/nq-nci");
     }
 
     /* Configure hardware link */
diff --git a/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h b/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h
index a8dfc61..fa842fd 100644
--- a/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h
+++ b/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Not a Contribution.
+ *
  * Copyright (C) 2015 NXP Semiconductors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,11 +23,15 @@
 #include <hardware/hardware.h>
 #include <hardware/nfc.h>
 
+#define NFC_NCI_NXP_PN54X_HARDWARE_MODULE_ID "nfc_nci.nqx"
+
 typedef struct
 {
     struct nfc_nci_device nci_device;
 
     /* Local definitions */
+    int (*ioctl)(const struct nfc_nci_device *p_dev, long arg, void *p_data);
+
 } pn547_dev_t;
 
 /* NXP HAL functions */
diff --git a/halimpl/pn54x/libnfc-brcm.conf b/halimpl/pn54x/libnfc-brcm.conf
index c98668a..56f9fa9 100644
--- a/halimpl/pn54x/libnfc-brcm.conf
+++ b/halimpl/pn54x/libnfc-brcm.conf
@@ -363,7 +363,7 @@
 
 ###############################################################################
 # NCI Hal Module name
-NCI_HAL_MODULE="nfc_nci.pn54x"
+NCI_HAL_MODULE="nfc_nci.nqx"
 
 ##############################################################################
 # Deactivate notification wait time out in seconds used in ETSI Reader mode
diff --git a/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf b/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
index 1333636..131ad19 100644
--- a/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
@@ -19,7 +19,7 @@
 
 ###############################################################################
 # Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn544"
+NXP_NFC_DEV_NODE="/dev/nq-nci"
 
 ###############################################################################
 # Extension for Mifare reader enable
diff --git a/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf b/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf
index ea3231e..12a53ce 100644
--- a/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf
@@ -19,7 +19,7 @@
 
 ###############################################################################
 # Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn544"
+NXP_NFC_DEV_NODE="/dev/nq-nci"
 
 ###############################################################################
 # Extension for Mifare reader enable
@@ -278,4 +278,4 @@
 #1 = enabling adding aid  to NFCC routing table.
 #0 = disabling adding aid to NFCC routing table.
 NXP_ENABLE_ADD_AID=0x01
-################################################################################
\ No newline at end of file
+################################################################################
diff --git a/halimpl/pn54x/nfc_nci.c b/halimpl/pn54x/nfc_nci.c
index 4c984e7..2110937 100644
--- a/halimpl/pn54x/nfc_nci.c
+++ b/halimpl/pn54x/nfc_nci.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Not a Contribution.
+ *
  * Copyright (C) 2015 NXP Semiconductors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -225,7 +228,7 @@
         /* NCI HAL method pointers */
         dev->nci_device.open = hal_open;
         dev->nci_device.write = hal_write;
-        dev->nci_device.ioctl = hal_ioctl;
+        dev->ioctl = hal_ioctl;
         dev->nci_device.core_initialized = hal_core_initialized;
         dev->nci_device.pre_discover = hal_pre_discover;
         dev->nci_device.close = hal_close;
diff --git a/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c b/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
index e6998d7..88ce590 100644
--- a/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
+++ b/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Not a Contribution.
+ *
  * Copyright (C) 2015 NXP Semiconductors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -1413,8 +1416,8 @@
     }
     else if (!GetNxpStrValue (NAME_NXP_NFC_DEV_NODE, nfc_dev_node, sizeof (nfc_dev_node)))
     {
-        NXPLOG_NCIHAL_E("Invalid nfc device node name keeping the default device node /dev/pn544");
-        strcpy (nfc_dev_node, "/dev/pn544");
+        NXPLOG_NCIHAL_E("Invalid nfc device node name keeping the default device node /dev/nq-nci");
+        strcpy (nfc_dev_node, "/dev/nq-nci");
     }
 
     gDrvCfg.nClientId = phDal4Nfc_msgget(0, 0600);
diff --git a/halimpl/pn54x/tml/phTmlNfc_i2c.c b/halimpl/pn54x/tml/phTmlNfc_i2c.c
index ed3fe4f..9d86f55 100644
--- a/halimpl/pn54x/tml/phTmlNfc_i2c.c
+++ b/halimpl/pn54x/tml/phTmlNfc_i2c.c
@@ -362,7 +362,7 @@
         return NFCSTATUS_FAILED;
     }
 
-    ret = ioctl((int32_t)pDevHandle, P544_SET_NFC_SERVICE_PID, pid);
+    ret = ioctl((intptr_t)pDevHandle, P544_SET_NFC_SERVICE_PID, pid);
     return ret;
 }
 
diff --git a/src/adaptation/NfcAdaptation.cpp b/src/adaptation/NfcAdaptation.cpp
index 210bd9d..0639270 100644
--- a/src/adaptation/NfcAdaptation.cpp
+++ b/src/adaptation/NfcAdaptation.cpp
@@ -1,5 +1,11 @@
 /******************************************************************************
  *
+ *  Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ *  Not a Contribution.
+ *
+ *  Copyright (C) 2015 NXP Semiconductors
+ *  The original Work has been changed by NXP Semiconductors.
+ *
  *  Copyright (C) 1999-2012 Broadcom Corporation
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,25 +21,6 @@
  *  limitations under the License.
  *
  ******************************************************************************/
-/******************************************************************************
- *
- *  The original Work has been changed by NXP Semiconductors.
- *
- *  Copyright (C) 2015 NXP Semiconductors
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- ******************************************************************************/
 #include "OverrideLog.h"
 #include "NfcAdaptation.h"
 extern "C"
@@ -325,8 +312,8 @@
     int ret = 0; //0 means success
     if ( !GetStrValue ( NAME_NCI_HAL_MODULE, nci_hal_module, sizeof ( nci_hal_module) ) )
     {
-        ALOGE("No HAL module specified in config, falling back to BCM2079x");
-        strlcpy (nci_hal_module, "nfc_nci.bcm2079x", sizeof(nci_hal_module));
+        ALOGE("No HAL module specified in config, falling back to nqx");
+        strlcpy (nci_hal_module, "nfc_nci.nqx", sizeof(nci_hal_module));
     }
     const hw_module_t* hw_module = NULL;
 
@@ -484,6 +471,12 @@
 }
 
 #if((NFC_POWER_MANAGEMENT == TRUE)&&(NXP_EXTNS == TRUE))
+typedef struct {
+    struct nfc_nci_device nci_device;
+
+    /* Local definitions */
+    int(*ioctl)(const struct nfc_nci_device *p_dev, long arg, void *p_data);
+} pn547_dev_t;
 /*******************************************************************************
 **
 ** Function:    NfcAdaptation::HalIoctl
@@ -505,7 +498,8 @@
     ALOGD ("%s", func);
     if (mHalDeviceContext)
     {
-        return (mHalDeviceContext->ioctl (mHalDeviceContext, arg, p_data));
+        pn547_dev_t *dev = (pn547_dev_t*)mHalDeviceContext;
+        return (dev->ioctl (mHalDeviceContext, arg, p_data));
     }
     return -1;
 }