gprimelte: Add NFC configs
diff --git a/device.mk b/device.mk
index 2360e52..c1cbb34 100644
--- a/device.mk
+++ b/device.mk
@@ -30,6 +30,15 @@
$(LOCAL_PATH)/media/media_codecs.xml:system/etc/media_codecs.xml \
$(LOCAL_PATH)/media/media_profiles.xml:system/etc/media_profiles.xml
+#NFC
+PRODUCT_PACKAGES += \
+ NfcNci
+
+# NFC prebuilt files
+PRODUCT_COPY_FILES += \
+ $(LOCAL_PATH)/nfc/libnfc-sec-hal.conf:system/etc/libnfc-sec-hal.conf \
+ $(LOCAL_PATH)/nfc/libnfc-sec.conf:system/etc/libnfc-brcm.conf
+
# Properties
PRODUCT_PROPERTY_OVERRIDES += \
ro.product.model=SM-G530W \
diff --git a/nfc/libnfc-sec-hal.conf b/nfc/libnfc-sec-hal.conf
new file mode 100644
index 0000000..6a199c7
--- /dev/null
+++ b/nfc/libnfc-sec-hal.conf
@@ -0,0 +1,36 @@
+############################
+## NFC device is going to sleep mode after SLEEP_TIMEOUT(ms) and the device needs
+## wakeup delay(ms) when it is going to wake up from sleep mode.
+SLEEP_TIMEOUT=1000
+WAKEUP_DELAY=20
+
+############################
+## Pathes
+## F/W image
+FW_IMAGE="/vendor/firmware/sec_s3fwrn5_firmware.bin"
+
+## Reg file
+RFREG_FILE="/etc/sec_s3fwrn5_rfreg.bin"
+## Power driver
+POWER_DRIVER="/dev/sec-nfc"
+## Transport driver
+TRANS_DRIVER="/dev/sec-nfc"
+
+############################
+## TRACE_LEVEL (0: only err, 1: and debug, 2: trace also)
+## DATA TRACE level (0: not display, 1: simply, 2: all of data trace)
+TRACE_LEVEL=2
+DATA_TRACE=2
+
+############################
+## F/W download Option
+## 0 : Download for different version
+## 1 : Download for upper version
+## 2 : Force Download
+FW_UPDATE_MODE=0
+
+############################
+## Clock option for 19.2MHz PLL
+FW_CFG_CLK_TYPE=0x00
+FW_CFG_CLK_SPEED=0x01
+FW_CFG_CLK_REQ=0x01
diff --git a/nfc/libnfc-sec.conf b/nfc/libnfc-sec.conf
new file mode 100644
index 0000000..c720961
--- /dev/null
+++ b/nfc/libnfc-sec.conf
@@ -0,0 +1,320 @@
+###############################################################################
+# NFC Configuration for NON-HAL component S3FWRN5
+# Samsung Electronics, System LSI Division
+# Update Date : 2014/06/27
+# Region : All region except HongKong, SPRINT
+# F/W Version dependency : NONE
+# This file contains below
+# 1) Default routing information
+# 2) Partial AID setting
+# 3) UICC listen tech mask
+# 4) Listen tech mask for P2P
+# 5) Poll tech mask
+# 6) eSE warm reset
+# 7) Other Information
+
+################################################################################
+# 1) Default routing information
+# SPRINT : DEFAULT_ISODEP_ROUTE=0x02 (eSE only) / ACTIVE_SE=0x02
+# Other region : DEFAULT_ISODEP_ROUTE=0x03 (UICC) / ACTIVE_SE=0x03
+DEFAULT_ISODEP_ROUTE=0x03
+ACTIVE_SE=0x03
+
+###############################################################################
+# 2) Partial AID setting
+# This configuration may be changed by MNO specific requirement.
+# Description
+# 1st byte : NCI Length
+# 2nd byte : Number of set
+# 3rd~ bytes : Partial matching order
+# Matching value : Full matching = 0x00, Subset Matching = 0x01, Superset Matching : 0x02, Pattern Matching : 0x03
+# ex) 2f 39 03 02 01 02 --> order : full matching - subset matching - superset matching PARTIAL_AID={03:02:01:02}
+#PARTIAL_AID={02:01:02}
+
+###############################################################################
+# Guide for tech mask
+# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
+# Notable bits:
+# NFA_TECHNOLOGY_MASK_A 0x01
+# NFA_TECHNOLOGY_MASK_B 0x02
+# NFA_TECHNOLOGY_MASK_F 0x04
+# NFA_TECHNOLOGY_MASK_ISO15693 0x08
+# NFA_TECHNOLOGY_MASK_B_PRIME 0x10
+# NFA_TECHNOLOGY_MASK_KOVIO 0x20
+# NFA_TECHNOLOGY_MASK_A_ACTIVE 0x40
+# NFA_TECHNOLOGY_MASK_F_ACTIVE 0x80
+# Example :
+# Polling mask for A / B / F / V(15693) / Kovio / Active A / Active F
+# NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
+# NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
+# NFA_TECHNOLOGY_MASK_A_ACTIVE | NFA_TECHNOLOGY_MASK_F_ACTIVE.
+# 0x01 | 0x02 | 0x04 | 0x08 | 0x20 | 0x40
+# => POLLING_TECH_MASK=0xEF
+
+###############################################################################
+# 3) UICC listen tech mask
+# Force UICC to only listen to the following technology(s).
+# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B.
+# If this option is blocked by # comment, default value will be applied
+# Guide for each region
+# SPRINT : UICC_LISTEN_TECH_MASK=0x01 (Type A only)
+# HK : UICC_LISTEN_TECH_MASK=0x07 (Enable Type F card)
+# Other region : UICC_LISTEN_TECH_MASK=0x03 (Default value)
+UICC_LISTEN_TECH_MASK=0x03
+
+###############################################################################
+# 4) Listen tech mask for P2P
+# Force tag polling for the following technology(s).
+# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
+# NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
+# NFA_TECHNOLOGY_MASK_A_ACTIVE | NFA_TECHNOLOGY_MASK_F_ACTIVE.
+# Current Setting : Enable all poll tech
+POLLING_TECH_MASK=0xEF
+
+###############################################################################
+# 5) Poll tech mask
+# Force P2P to only listen for the following technology(s).
+# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
+# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F |
+# NFA_TECHNOLOGY_MASK_A_ACTIVE | NFA_TECHNOLOGY_MASK_F_ACTIVE
+# For HK, P2P_LISTEN_TECH_MASK may be 0xC0 for enhance type F card success ratio
+P2P_LISTEN_TECH_MASK=0xC4
+
+###############################################################################
+# Maximum Number of Credits to be allowed by the NFCC
+# This value overrides what the NFCC specifices allowing the host to have
+# the control to work-around transport limitations. If this value does
+# not exist or is set to 0, the NFCC will provide the number of credits.
+MAX_RF_DATA_CREDITS=1
+
+###############################################################################
+# When disconnecting from Oberthur secure element, perform a warm-reset of
+# the secure element to deselect the applet.
+# The default hex value of the command is 0x3. If this variable is undefined,
+# then this feature is not used.
+# 6) OBERTHUR_WARM_RESET_COMMAND must be enabled for all eSE model
+OBERTHUR_WARM_RESET_COMMAND=0x03
+
+###############################################################################
+# 7) Other Information
+# It will be checked in next version.
+###############################################################################
+
+###############################################################################
+# Application options
+APPL_TRACE_LEVEL=0xFF
+PROTOCOL_TRACE_LEVEL=0xFFFFFFFF
+
+PRESERVE_STORAGE=1
+
+# File used for NFA storage
+NFA_STORAGE="/data/nfc"
+
+###############################################################################
+# power control driver
+# Specify a kernel driver that support ioctl commands to control NFC_EN and
+# NFC_WAKE gpio signals.
+#
+# POWER_CONTRL_DRIVER=<driver>
+# i2c and spi driver may be used to control NFC_EN and NFC_WAKE signal
+POWER_CONTROL_DRIVER="/dev/sec-nfc"
+
+###############################################################################
+# transport driver
+#
+# TRANSPORT_DRIVER=<driver>
+#
+# where <driver> can be, for example:
+# "/dev/ttyS" (UART)
+# "/dev/bcmi2cnfc" (I2C)
+# "hwtun" (HW Tunnel)
+# "/dev/bcmspinfc" (SPI)
+# "/dev/btusb0" (BT USB)
+TRANSPORT_DRIVER="/dev/sec-nfc"
+
+###############################################################################
+# Default poll duration (in ms)
+# The defualt is 500ms if not set (see nfc_target.h) same as M project
+NFA_DM_DISC_DURATION_POLL=500
+
+###############################################################################
+# May not used in S3FWRN5
+###############################################################################
+
+###############################################################################
+# Insert a delay in milliseconds after NFC_WAKE and before write to NFCC
+NFC_WAKE_DELAY=20
+
+###############################################################################
+# Firmware patch file
+# If the value is not set then patch download is disabled.
+#FW_PATCH="/vendor/firmware/sec_s3fnrn3_firmware.bin"
+
+###############################################################################
+# Not used in S.LSI solution
+###############################################################################
+
+###############################################################################
+# Various Delay settings (in ms) used in USERIAL
+# POWER_ON_DELAY
+# Delay after turning on chip, before writing to transport (default 300)
+# PRE_POWER_OFF_DELAY
+# Delay after deasserting NFC-Wake before turn off chip (default 0)
+# POST_POWER_OFF_DELAY
+# Delay after turning off chip, before USERIAL_close returns (default 0)
+# CE3_PRE_POWER_OFF_DELAY
+# Delay after deasserting NFC-Wake before turn off chip (default 1000)
+# when going to CE3 Switch Off mode
+#
+#POWER_ON_DELAY=300
+PRE_POWER_OFF_DELAY=1500
+#POST_POWER_OFF_DELAY=0
+#CE3_PRE_POWER_OFF_DELAY=1000
+
+
+###############################################################################
+# Device Manager Config
+#
+# If NFA_DM_CFG is not provided, stack default settings are
+# used (see nfa_dm_cfg.c). They are as follows:
+# 0 (FALSE) Automatic NDEF detection when background polling
+# 0 (FALSE) Automatic NDEF read when background polling
+#
+#NFA_DM_CFG={00:00}
+
+
+###############################################################################
+# Startup Configuration (100 bytes maximum)
+#
+# For the 0xC2 parameter, set byte[0] to 60 to disable UICC Idle Timeout.
+# set to 61 to enable (The least significant bit of this byte enables
+# the power off when Idle mode).
+# 20 A1 07 00 == > These 4 bytes form a 4 byte value which decides the idle timeout(in us)
+# value to trigger the uicc deactivation.
+# NFC forum conformance
+#NFA_DM_START_UP_CFG={27:B2:04:E8:03:00:00:CF:02:02:08:CB:01:01:A5:01:01:CA:0A:00:00:00:00:06:F0:55:00:00:0F:80:01:01:B5:03:01:03:09:5B:01:02}
+# GCF combined + clfCfgTagPicc
+#NFA_DM_START_UP_CFG={48:CB:01:09:A5:01:01:CA:14:00:00:00:00:06:0C:D4:01:00:15:C0:E1:E4:00:C0:C6:2D:00:14:00:B5:03:01:03:FF:C2:08:61:00:82:04:80:C3:C9:01:80:01:01:C9:03:03:0F:AB:5B:01:02:B2:04:E8:03:00:00:CF:02:02:08:B1:06:00:20:00:00:00:12}
+
+###############################################################################
+# Startup Vendor Specific Configuration (100 bytes maximum);
+# byte[0] TLV total len = 0x5
+# byte[1] NCI_MTS_CMD|NCI_GID_PROP = 0x2f
+# byte[2] NCI_MSG_FRAME_LOG = 0x9
+# byte[3] 2
+# byte[4] 0=turn off RF frame logging; 1=turn on
+# byte[5] 0=turn off SWP frame logging; 1=turn on
+# NFA_DM_START_UP_VSC_CFG={05:2F:09:02:01:01}
+
+#HW FSM
+#NFA_DM_START_UP_VSC_CFG={04:2F:06:01:00}
+
+###############################################################################
+# Antenna Configuration - This data is used when setting 0xC8 config item
+# at startup (before discovery is started). If not used, no value is sent.
+#
+# The settings for this value are documented here:
+# http://wcgbu.broadcom.com/wpan/PM/Project%20Document%20Library/bcm20791B0/
+# Design/Doc/PHY%20register%20settings/BCM20791-B2-1027-02_PHY_Recommended_Reg_Settings.xlsx
+# This document is maintained by Paul Forshaw.
+#
+# The values marked as ?? should be tweaked per antenna or customer/app:
+# {20:C8:1E:06:??:00:??:??:??:00:??:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:??:01:00:00:40:04}
+# array[0] = 0x20 is length of the payload from array[1] to the end
+# array[1] = 0xC8 is PREINIT_DSP_CFG
+PREINIT_DSP_CFG={20:C8:1E:06:1F:00:0A:03:30:00:04:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:4E:01:00:00:40:04}
+
+###############################################################################
+# Configure crystal frequency when internal LPO can't detect the frequency.
+#XTAL_FREQUENCY=0
+
+###############################################################################
+# Use Nexus S NXP RC work to allow our stack/firmware to work with a retail
+# Nexus S that causes IOP issues. Note, this will not pass conformance and
+# should be removed for production.
+#USE_NXP_P2P_RC_WORKAROUND=1
+
+###############################################################################
+# Configure the default Destination Gate used by HCI (the default is 4, which
+# is the ETSI loopback gate.
+#NFA_HCI_DEFAULT_DEST_GATE=0x04
+
+###############################################################################
+# Configure the single default SE to use. The default is to use the first
+# SE that is detected by the stack. This value might be used when the phone
+# supports multiple SE (e.g. 0xF3 and 0xF4) but you want to force it to use
+# one of them (e.g. 0xF4).
+ACTIVE_SE=0xF3
+
+###############################################################################
+# Configure the NFC Extras to open and use a static pipe. If the value is
+# not set or set to 0, then the default is use a dynamic pipe based on a
+# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value
+# for each UICC (where F3="UICC0" and F4="UICC1")
+NFA_HCI_STATIC_PIPE_ID_F3=0x71
+NFA_HCI_STATIC_PIPE_ID_F4=0x71
+
+###############################################################################
+# This setting allows you to disable registering the T4t Virtual SE that causes
+# the NFCC to send PPSE requests to the DH.
+# The default setting is enabled (i.e. T4t Virtual SE is registered).
+#REGISTER_VIRTUAL_SE=1
+
+###############################################################################
+# When screen is turned off, specify the desired power state of the controller.
+# 0: power-off-sleep state; DEFAULT
+# 1: full-power state
+# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used)
+# 3: FPM CE in snooze mode, Switch Off, Battery Off still available.
+SCREEN_OFF_POWER_STATE=3
+
+###############################################################################
+# SPD Debug mode
+# If set to 1, any failure of downloading a patch will trigger a hard-stop
+#SPD_DEBUG=0
+
+###############################################################################
+# SPD Max Retry Count
+# The number of attempts to download a patch before giving up (defualt is 3).
+# Note, this resets after a power-cycle.
+#SPD_MAX_RETRY_COUNT=3
+
+###############################################################################
+# Patch RAM Version Checking
+# By default the stack will reject any attempt to download a patch where major
+# version is < the one that is in NVM. If this config item is set to 1 then
+# this version check is skipped.
+#
+#SPD_IGNORE_VERSION=0
+
+###############################################################################
+# I2C transport driver try to read multiple packets in read() if data is available
+# remove the comment below to enable this feature
+#READ_MULTIPLE_PACKETS=1
+
+###############################################################################
+# SPI transport driver options
+#SPI_NEGOTIATION={0A:F0:00:01:00:00:00:FF:FF:00:00}
+
+###############################################################################
+# UART transport driver options
+#
+# PORT=1,2,3,...
+# BAUD=115200, 19200, 9600, 4800,
+# DATABITS=8, 7, 6, 5
+# PARITY="even" | "odd" | "none"
+# STOPBITS="0" | "1" | "1.5" | "2"
+
+#UART_PORT=2
+#UART_BAUD=115200
+#UART_DATABITS=8
+#UART_PARITY="none"
+#UART_STOPBITS="1"
+
+###############################################################################
+# AID for Empty Select command
+# If specified, this AID will be substituted when an Empty SELECT command is
+# detected. The first byte is the length of the AID. Maximum length is 16.
+AID_FOR_EMPTY_SELECT={08:A0:00:00:01:51:00:00:00}
+
+NCI_HAL_MODULE="nfc_nci"