diff --git a/modules/Android.mk b/modules/Android.mk
index 3f410c1..faa8bb3 100644
--- a/modules/Android.mk
+++ b/modules/Android.mk
@@ -1,2 +1,2 @@
-hardware_modules := gralloc hwcomposer audio nfc local_time power usbaudio audio_remote_submix
+hardware_modules := gralloc hwcomposer audio nfc nfc-nci local_time power usbaudio audio_remote_submix
 include $(call all-named-subdir-makefiles,$(hardware_modules))
diff --git a/modules/nfc-nci/Android.mk b/modules/nfc-nci/Android.mk
new file mode 100644
index 0000000..97262ef
--- /dev/null
+++ b/modules/nfc-nci/Android.mk
@@ -0,0 +1,25 @@
+# Copyright (C) 2011 The Android Open Source Project
+#
+# 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.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := nfc_nci.default
+LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
+LOCAL_SRC_FILES := nfc_nci_example.c
+LOCAL_SHARED_LIBRARIES := liblog libcutils
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/modules/nfc-nci/nfc_nci_example.c b/modules/nfc-nci/nfc_nci_example.c
new file mode 100644
index 0000000..01914f0
--- /dev/null
+++ b/modules/nfc-nci/nfc_nci_example.c
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * 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 <errno.h>
+#include <string.h>
+
+#include <cutils/log.h>
+#include <hardware/hardware.h>
+#include <hardware/nfc.h>
+
+
+/*
+ * NCI HAL method implementations. These must be overriden
+ */
+static int hal_open(const struct nfc_nci_device *dev,
+        nfc_stack_callback_t *p_cback) {
+    ALOGE("NFC-NCI HAL: %s", __FUNCTION__);
+    return 0;
+}
+
+static int hal_write(const struct nfc_nci_device *dev,
+        uint16_t data_len, const uint8_t *p_data) {
+    ALOGE("NFC-NCI HAL: %s", __FUNCTION__);
+    return 0;
+}
+
+static int hal_core_initialized(const struct nfc_nci_device *dev,
+        uint8_t* p_core_init_rsp_params) {
+    ALOGE("NFC-NCI HAL: %s", __FUNCTION__);
+    return 0;
+}
+
+static int hal_pre_discover(const struct nfc_nci_device *dev) {
+    ALOGE("NFC-NCI HAL: %s", __FUNCTION__);
+    return 0;
+}
+
+static int hal_close(const struct nfc_nci_device *dev) {
+    ALOGE("NFC-NCI HAL: %s", __FUNCTION__);
+    return 0;
+}
+
+static int hal_control_granted (const struct nfc_nci_device *p_dev)
+{
+    ALOGE("NFC-NCI HAL: %s", __FUNCTION__);
+    return 0;
+}
+
+
+static int hal_power_cycle (const struct nfc_nci_device *p_dev)
+{
+    ALOGE("NFC-NCI HAL: %s", __FUNCTION__);
+    return 0;
+}
+
+/*
+ * Generic device handling below - can generally be left unchanged.
+ */
+/* Close an opened nfc device instance */
+static int nfc_close(hw_device_t *dev) {
+    free(dev);
+    return 0;
+}
+
+static int nfc_open(const hw_module_t* module, const char* name,
+        hw_device_t** device) {
+    if (strcmp(name, NFC_NCI_CONTROLLER) == 0) {
+        nfc_nci_device_t *dev = calloc(1, sizeof(nfc_nci_device_t));
+
+        dev->common.tag = HARDWARE_DEVICE_TAG;
+        dev->common.version = 0x00010000; // [31:16] major, [15:0] minor
+        dev->common.module = (struct hw_module_t*) module;
+        dev->common.close = nfc_close;
+
+        // NCI HAL method pointers
+        dev->open = hal_open;
+        dev->write = hal_write;
+        dev->core_initialized = hal_core_initialized;
+        dev->pre_discover = hal_pre_discover;
+        dev->close = hal_close;
+        dev->control_granted = hal_control_granted;
+        dev->power_cycle = hal_power_cycle;
+
+        *device = (hw_device_t*) dev;
+
+        return 0;
+    } else {
+        return -EINVAL;
+    }
+}
+
+
+static struct hw_module_methods_t nfc_module_methods = {
+    .open = nfc_open,
+};
+
+struct nfc_nci_module_t HAL_MODULE_INFO_SYM = {
+    .common = {
+        .tag = HARDWARE_MODULE_TAG,
+        .module_api_version = 0x0100, // [15:8] major, [7:0] minor (1.0)
+        .hal_api_version = 0x00, // 0 is only valid value
+        .id = NFC_NCI_HARDWARE_MODULE_ID,
+        .name = "Default NFC NCI HW HAL",
+        .author = "The Android Open Source Project",
+        .methods = &nfc_module_methods,
+    },
+};
diff --git a/modules/nfc/Android.mk b/modules/nfc/Android.mk
index d541b21..429fb43 100644
--- a/modules/nfc/Android.mk
+++ b/modules/nfc/Android.mk
@@ -18,7 +18,7 @@
 
 LOCAL_MODULE := nfc.default
 LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
-LOCAL_SRC_FILES := nfc_hw_example.c
+LOCAL_SRC_FILES := nfc_pn544_example.c
 LOCAL_SHARED_LIBRARIES := liblog libcutils
 LOCAL_MODULE_TAGS := optional
 
diff --git a/modules/nfc/nfc_hw_example.c b/modules/nfc/nfc_pn544_example.c
similarity index 100%
rename from modules/nfc/nfc_hw_example.c
rename to modules/nfc/nfc_pn544_example.c
