###############################################################################
# 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"
