NXP PN7220 Compliant NFC Controller User Guide
- June 15, 2024
- NXP
Table of Contents
- PN7220 Compliant NFC Controller
- Introduction
- Kernel driver
- AOSP adaptation
- i.MX 8M Nano porting
- BOARD_SEPOLICY_DIRS += vendor/$(NXP_VENDOR_DIR)/nfc/sepolicy \
- vendor/$(NXP_VENDOR_DIR)/nfc/sepolicy/nfc
- Abbreviations
- References
- Note about the source code in the document
- Legal information
- Read User Manual Online (PDF format)
- Download This Manual (PDF format)
AN13971
PN7220 – Android porting guide
Rev. 1.0 — 18 September 2023
Application note
PN7220 Compliant NFC Controller
Document information
Information | Content |
---|---|
Keywords | PN7220, NCI, EMVCo, NFC Forum, Android, NFC |
Abstract | This document describes how to port PN7220 middleware release to |
Android.
NXP Semiconductors
Revision history
Revision history
Rev | Date | Description |
---|---|---|
v.1.0 | 20230818 | Initial version |
Introduction
This document provides guidelines for integrating a PN7220 NXP NCI-based NFC
controller into an Android platform from a software perspective.
It first explains how to install the required kernel driver, and then
describes step-by-step how to customize the AOSP sources to add support for
the PN7220 NFC controller. Figure 1 shows the architecture of the entire
Android NFC stack.
Figure 1. Android NFC stack
PN7220 is separated into single-host and dual-host scenarios. In general, the stack is the same for dual host, we add SMCU.
- The NXP I2C Driver is the kernel module that provides access to the hardware resources of the PN7220.
- The HAL module is the implementation of the specific HW abstraction layer of the controller NXP NFC.
- LibNfc-nci is a native library that provides NFC functionality.
- NFC JNI is a glue code between Java and Native classes.
- The NFC and EMVCo Framework is an application framework module that provides access to NFC and EMVCo functionality.
Kernel driver
The NFC Android stack uses a nxpnfc kernel driver to communicate with the PN7220. It is available here.
2.1 Driver details
The nxpnfc kernel driver offers communication with the PN7220 over an I2C
physical interface.
When loaded into the kernel, this driver exposes the interface to PN7220
through the device node named /dev/ nxpnfc.
2.2 Getting the source code
Clone the PN7220 driver repository into the kernel directory, replacing the
existing implementation:
$rm -rf drivers/nfc
$git clone “https://github.com/NXPNFCLinux/nxpnfc.git“-b PN7220-Driver
drivers/
This ends up with the folder drivers/nfc containing the following files:
- README.md: repository information
- Make file: driver heading make file
- Kcon fig: driver configuration file
- License: driver licensing terms
- nfc subfolder containing:
– commoc. c: generic driver implementation
– common. h: generic driver interface definition
– i2c_drv.c: i2c specific driver implementation
– i2c_drv.h: i2c specific driver interface definition
– Makefile: makefile that is included in the makefile of the driver
– Kbuild => build file
– Kconfig => driver configuration file
2.3 Building the driver
Including the driver into the kernel and making it load during the device boot
is done thanks to the devicetree.
After updating the device tree definition, the platform-related device tree
must be rebuilt. NXP suggests using kernel version 5.10, since in this version
complete validation is done.
- Download the kernel
- Get the driver source code.
- Change the device tree definition (specific to the device that we are using).
- Build the driver.
a. Through the menuconfig procedure, include the target driver in the build.
After rebuilding the complete kernel, the driver will be included in the kernel image. We must make sure that all new kernel images are copied into the AOSP build.
AOSP adaptation
NXP provides patches on top of the AOSP code. That means that the user can first get an AOSP code and apply patches from NXP. This section describes how to accomplish this. The current AOSP tag that we are using is [1].
3.1 AOSP build
-
We must get the AOSP source code. This we can do with:
$ repo init -u https://android.googlesource.com/platform/manifest-b android-13.0.0_r3
$ repo sync
Note: The repo tool must be installed on the system. Follow the instructions [2]. -
When we have source code, we can enter the directory and build it:
$cd Android_AROOT
$source build/envsetup.sh
$lunch select_target #target is DH we want to use for example: db845c- userdebug $make -j -
When AOSP is successfully built, we must get NXP patches. This we can do with:
$git clone “https://github.com/NXPNFCLinux/PN7220_Android13.git” vendor/nxp/ -
At this point, we have all needed to apply patches for PN7220 support. We can apply patches by running the install_NFC.sh script.
$chmod +x /vendor/nxp/nfc/install_NFC.sh #sometimes we need to add executable rights to script
$./vendor/nxp/nfc/install_NFC.sh
Note: Check the output after running install_NFC.sh. If needed, we must make some changes by hand. -
We can also add FW binaries:
$git clone xxxxxxx
$cp -r nfc-NXPNFCC_FW/InfraFW/pn7220/64-bit/libpn72xx_fw.so AROOT/vendor/nxp/pn7220/firmware/lib64/libpn72xx_fw.so
$cp -r nfc-NXPNFCC_FW/InfraFW/pn7220/32-bit/libpn72xx_fw.so AROOT/vendor/nxp/pn7220/firmware/lib/libpn72xx_fw.so -
Adding NFC to build
In the device.mk makefile (for example, device/brand/platform/device.mk), include specific makefiles:
$(call inherit-product, vendor/nxp/nfc/device-nfc.mk)
In the BoardConfig.mk makefile (for example, device/brand/platform/BoardConfig.mk), include a specific makefile:
-include vendor/nxp/nfc/BoardConfigNfc.mk -
Adding DTA application
$git clone https://github.com/NXPNFCProject/NXPAndroidDTA.git $git checkout NFC_DTA_v13.02_OpnSrc $patch -p1 AROOT_system_nfc-dta.patch
$ cp -r nfc-dta /system/nfc-dta
$/system/nfc-dta/$ mm -j -
Now we can build AOSP again with all the changes we made:
$cd framework/base
$mm
$cd ../..
$cd vendor/nxp/frameworks
$mm #after this one, we should see com.nxp.emvco.jar inside out/target/product/xxxx/system/framwework/
$cd ../../..
$cd hardware/nxp/nfc
$mm
$cd ../../..
$make -j
Now, we are able to flash our device host with the Android image that includes NFC features.
3.2 Android NFC Apps and Lib on targets
In this subsection, we describe where specific compiled files are pushed.
If there is any change, we can replace only that one file. Table 1 shows all
locations.
Table 1. Compiled files with device target
Project location | Compiled Files | Location in target device |
---|---|---|
“$ANDROID_ROOT”/packages/apps/Nfc | lib/NfcNci.apk | |
oat/libnfc_nci_jni.so | /system/app/NfcNci/ |
/system/lib64/
“$ANDROID_ROOT”/system/nfc| libnfc_nci.so| /system/lib64/
“$ANDROID_ROOT”/hardware/nxp/nfc| nfc_nci_nxp_pn72xx.so
android.hardware.nfc_72xx@1.2-service android.hardware.nfc_72xx@1.2-service.rc
android.hardware.nfc@1.0.so
android.hardware.nfc@1.1.so
android.hardware.nfc@1.2.so| /vendor/lib64
/vendor/bin/hw/
/vendor/etc/init
system/lib64/
system/lib64/
system/lib64/
“$ANDROID_ROOT”/hardware/nxp/nfc| vendor.nxp.nxpnfc@2.0.so| /system/lib64
“$ANDROID_ROOT”/vendor/nxp/frameworks| com.nxp.emvco.jar| /system/framework
/vendor/framework
“$ANDROID_ROOT”/hardware/nxp/emvco| emvco_poller.so
android.hardware.emvco-service
android.hardware.emvco-service.rc
android.hardware.emvco-V1-ndk.so
android.hardware.emvco-V2-ndk.so| /vendor/lib64
/vendor/bin/hw/
/vendor/etc/init
system/lib64/
system/lib64/
3.3 Patch mapping
Every patch must be applied to a specific location. Table 2 shows the patch
name and the location where we must apply it and a block name, which shows us
where in the NFC stack (Figure 1) is located.
Table 2. Patch location in NFC Stack
Block name | Patch name | Location to apply |
---|---|---|
NFC HAL and EMVCo HAL | AROOT_hardware_interfaces.patch | hardware/interfaces/ |
NFC Stack | AROOT_hardware_nxp_nfc.patch | hardware/nxp/nfc/ |
EMVCo L1 Data Exchange Layer = EMVCo Stack | AROOT_hardware_nxp_emvco.patch |
hardware/nxp/emvco/
LibNfc-Nci| AROOT_system_nfc.patch| system/nfc/
NFC JNI| AROOT_packages_apps_Nfc.patch| packages/apps/nfc/
NFC Service| AROOT_packages_apps_Nfc.patch| packages/apps/nfc/
NFC Framework| AROOT_frameworks_base.patch| frameworks/base/
EMVCo Framework| AROOT_vendor_nxp_frameworks.patch| vendor/nxp/frameworks/
3.4 Flashing images
Images can be found in /out/target/product/{selected_DH}. To flash system
images, we must run the following commands (tested on the Dragonboard 845c).
$ adb reboot bootloader
$ fastboot flash boot boot_uefi.img
$ fastboot flash vendor_boot vendor_boot.img
$ fastboot flash super super.img
$ fastboot flash userdata userdata.img
$ fastboot format:ext4 metadata $fastboot reboot
After the images are flashed, we must perform some MW clean-up by running the following commands (tested on the Dragonboard 845c).
$ adb wait-for-device
$ adb root
$ adb wait-for-device
$ adb remount
$ adb shell rm -rf vendor/etc/init/android.hardware.nfc@1.1-service.rc
$ adb shell rm -rf vendor/etc/init/android.hardware.nfc@1.2-service.rc
$ adb push
Test_APK/EMVCoAidlHalComplianceTest/EMVCoAidlHalComplianceTestsystem/etc
$ adb shell chmod 0777 /system/etc/EMVCoAidlHalComplianceTest
$ adb push Test_APK/EMVCoAidlHalDesfireTest/EMVCoAidlHalDesfireTest system/etc
$ adb shell chmod 0777 /system/etc/EMVCoAidlHalDesfireTest
$ adb push Test_APK/EMVCoModeSwitchApp/EMVCoModeSwitchApp.apk
system/app/EMVCoModeSwitchApp/EMVCoModeSwitchApp.apk
$ adb shell sync
$ adb reboot
$ adb wait-for-device
3.5 Config files
In PN7220, we have four different configuration files.
- libemvco-nxp.conf
- libnfc-nci.conf
- libnfc-nxp.conf
- libnfc-nxp-eeprom.conf
Note: Pay attention that the configuration files provided in the example
relate to the NFC controller demo board. These files must be adopted according
to the targeted integration.
All four files must be pushed to the specific location.
Table 3. Locations of configuration files
Name of configuration file | Location in device |
---|---|
libemvco-nxp.conf | vendor/etc |
libnfc-nci.conf | vendor/etc |
libnfc-nxp.conf | system/etc |
libnfc-nxp-eeprom.conf | vendor/etc |
libnfc-nxp-eeprom.conf
Table 4. libnfc-nxp-eeprom.conf explanation
Name | Explanation | Default value |
---|
NXP_SYSCLK
SRC_SEL| System clock source selection configuration| 0x01
NXP_SYSCLK
FREQ_SEL| System clock frequency selection configuration| 0x08
NXPENABLE
DISABLE_STANBY| Option to enable or disable Standby mode| 0x00
NXPENABLE
DISABLE_LPCD| Option to enable or disable LPCD.| 0x00
Note: If there is no clock configured, either PLL or Xtal, then the MW stack retries in a loop to get the clock and initialize successfully. libnfc- nci.conf
Table 5. libnfc-nci.conf explanation
Name | Explanation | Default value |
---|---|---|
APPL_TRACE_LEVEL | Log levels for libnfc-nci | 0xFF |
PROTOCOL_TRACE_LEVEL | Log levels for libnfc-nci | 0xFFFFFFFF |
NFC_DEBUG_ENABLED | NFC debug enable setting | 0x01 |
NFA_STORAGE | Set the target directory for NFC file storage | /data/vendor/nfc |
HOST_LISTEN_TECH_MASK | Configure host listen feature | 0x07 |
NCI_HAL_MODULE | NCI HAL Module name | nfc_nci.pn54x |
POLLING_TECH_MASK | Configuration of the polling technologies | 0x0F |
Table 5. libnfc-nci.conf explanation…continued
Name | Explanation | Default value |
---|---|---|
P2P_LISTEN_TECH_MASK | P2P is not supported in PN7220 | 0xC5 |
PRESERVE_STORAGE | Verify the content of all nonvolatile stores. | 0x01 |
AID_MATCHING_MODE | Provides different ways to match the AID | 0x03 |
NFA_MAX_EE_SUPPORTED | Maximum EE supported number | 0x01 |
OFFHOST_AID_ROUTE_PWR_STATE | Set the OffHost AID supported state | 0x3B |
Table 6. libnfc-nxp.conf explanation
Name | Explanation | Default value |
---|---|---|
NXPLOG_EXTNS_LOGLEVEL | Configuration for extns logging level | 0x03 |
NXPLOG_NCIHAL_LOGLEVEL | Configuration for enabling logging of HAL | 0x03 |
NXPLOG_NCIX_LOGLEVEL | Configuration for enabling logging of NCI TX packets |
0x03
NXPLOG_NCIR_LOGLEVEL| Configuration for enabling logging of NCI RX packets|
0x03
NXPLOG_FWDNLD_LOGLEVEL| Configuration for enabling logging of FW download
functionality| 0x03
NXPLOG_TML_LOGLEVEL| Configuration for enabling logging of TM| 0x03
NXP_NFC_DEV_NODE| NFC Device Node name| idev/rixpnfc”
MIFARE_READER_ENABLE| Extension for NFC reader for MIFARE enable| Ox01
NXP_FW_TYPE| Firmware file type| Ox01
NXP_I2CFRAGMENTATION ENABLED| Configure 12C fragmentation| 0x00
NFA_PROPRIETARY_CFG| Set Vendor proprietary configuration| {05, FF, FF, 06,
81, 80, 70, FF, FF}
NXP_EXT_TVDD_CFG| Set TVDD configuration mode| 0x02
NXP_EXT TVDD_CFG_1| Configure TVDD settings according to TVDD mode selected|
Check config file
NXP_EXT_TVDD_CFG_2| Configure TVDD settings according to TVDD mode selected|
Check config file
NXP_CORE_CONF| Configure standardized parts of the NFC controller| { 20, 02,
07, 02, 21, 01, 01, 18, 01, 02 }
NXP_CORE_CONF_EXTN| Configure proprietary parts of the NFC controller| {00,
00, 00, 00}
NXP_SET_CONFIG_ALWAYS| Always send CORE_CONF and CORE_CONF_EXTN (not
recommended enabling it.)| Ox00
NXP_RF_CONF_BLK_1| RF settings| Check config file
ISO_DEP_MAX_TRANSCEIVE| Define maximum ISO-DEP extended APDU length| OxFEFF
PRESENCE_CHECK_ALGORITHM| Set the algorithm used for the T4T presence check
procedure| 2
NXP_FLASH_CONFIG| Flashing Options Configurations| 0x02
Table 7. libemvco-nxp.conf explanation
Name | Explanation | Default value |
---|---|---|
NXP LOG EXTNS LOGLEVEL | Configuration for extns logging level | 0x03 |
NXP LOG NCIHAL LOGLEVEL | Configuration for enabling logging of HAL | 0x03 |
NXP LOG NCIX LOGLEVEL | Configuration for enabling logging of NCI TX packets |
0x03
NXP LOG NCIR LOGLEVEL| Configuration for enabling logging of NCI RX packets|
0x03
NXP LOG TML LOGLEVEL| Configuration for enabling logging of TML| 0x03
NXP_EMVCO_DEBUG_ENABLED| Enable debugging| 0x03
NXP EMVCO DEV NODE| EMVCo Device Node name| “/dev/nxpnfc”
NXP PCD SETTINGS| Configuration to set polling delay between 2 phases| (20,
02, 07, 01, A0, 64, 03, EC, 13, 06)
NXP SET CONFIG| Option to set config command for debugging purpose| Check
config file
NXP GET CONFIG| Option to get config command for debugging purpose| Check
config file
3.6 DTA APPLICATION
To allow NFC Forum certification testing, a device test application is
provided. It is composed of several components in the different Android
layers, which must be built and included in the Android image.
To push the DTA application, we must follow the next steps:
-
Copy all DTA files to one location
$cp -rf “out/target/product/hikey960/system/lib64/libosal.so” /DTA-PN7220
$cp -rf “out/target/product/hikey960/system/lib64/libmwif.so” /DTA-PN7220
$cp -rf “out/target/product/hikey960/system/lib64/libdta.so” /DTA-PN7220
$cp -rf “out/target/product/hikey960/system/lib64/libdta_jni.so” /DTA-PN7220
$cp -rf “out/target/product/hikey960/system/app/NxpDTA/NxpDTA.apk” /DTAPN7220 -
Push the binaries to the device as bellow
adb shell mkdir /system/app/NxpDTA/
adb push libosal.so /system/lib64/
adb push libdta.so /system/lib64/
adb push libdta_jni.so /system/lib64/
adb push libmwif.so /system/lib64/
adb push NxpDTA.apk /system/app/NxpDTA/
After flashing the target, the DTA application should then be present in the list of installed applications. Check UG for a detailed description of how to use the application.
i.MX 8M Nano porting
As an example, we show what porting to the i.MX 8M platform looks like. To get more information, check [3].
4.1 Hardware
At the moment, NXP does not provide the adapter board. Check Table 8 to see
how to connect boards with wires.
Table 8. PN7220 to i.MX 8M Nano connections
PIN | PN7220 | i.MX 8M NANO |
---|---|---|
VEN | J27 – 7 | J003 – 40 |
IRQ | J27 – 6 | J003 – 37 |
SDA | J27 – 3 | J003 – 3 |
SCL | J27 – 2 | J003 – 5 |
MODE_SWITCH | J43 – 32 | J003 – 38 |
GND | J27 – 1 | J003 – 39 |
4.2 Software
The steps described in this section explain how we can port PN7200 to the i.MX
8M Nano platform. Same steps with a bit of modification, it can be used to
port to any other DH that is running Android OS.
Note: In this porting example, we are using 13.0.0_1.0.0_Android_Source.
We can reuse patches related to AOSP code. What must be changed is:
- Device tree (in i.MX 8M Nano, this is AROOT_vendor_nxp-opensource_imx_kernel.patch)
- Device-specific patch (in i.MX 8M Nano, this is AROOT_device_nxp.patch)
In AROOT_vendor_nxp-opensource_imx_kernel.patch, we can see how the driver is
included and how the device tree is built. This is specific to every device
host since we must take care of pin configuration, and this is different
between boards. We also must take care of menu configuration.
In AROOT_device_nxp.patch, we are including nfc into the build. In general, we
are making sure, that all the services are included correctly, etc. When
porting to a specific device host, take this patch as a reference and include
all the things inside.
One additional thing we did in porting is located in the device-nfc.mk file:
We need to comment out following lines:
BOARD_SEPOLICY_DIRS += vendor/$(NXP_VENDOR_DIR)/nfc/sepolicy \
vendor/$(NXP_VENDOR_DIR)/nfc/sepolicy/nfc
The reason for this is that we are including sepolicy in the device-specific BoardConfig.mk file. Steps to build images:
Get AOSP code for i.MX8M Nano
Build AOSP
Get NXP patches ([5])
Apply all patches with install_nfc.sh
cd framework/base
mm
cd ../..
cd vendor/nxp/frameworks
mm #after this one, we should see com.nxp.emvco.jar inside out/target/product/ imx8mn/system/framwework/
cd ../../..
cd hardware/nxp/nfc
mm
cd ../../..
make
Download images and use uuu tool to flash i.MX8M Nano
Abbreviations
Table 9. Abbreviations
Acronym | Description |
---|---|
APDU | application protocol data unit |
AOSP | Android open source project |
DH | device host |
HAL | hardware abstraction layer |
FW | firmware |
I2C | inter-integrated circuit |
LPCD | lower powerd card detection |
NCI | NFC controller interface |
NFC | near-field communication |
MW | middleware |
PLL | phase-locked loop |
P2P | peer to peer |
RF | radio frequency |
SDA | serial data |
SMCU | secure microcontroller |
SW | software |
References
[1] AOSP r3 tag: https://android.googlesource.com/platform/manifest-b
android-13.0.0_r3
[2] Source control tools: https://source.android.com/docs/setup/download
[3] i.MX: https://www.nxp.com/design/software/embedded-software/i-mx-software
/android-os-for-i-mxapplications-processors:IMXANDROID
[4] PN7220 kernel driver:
https://github.com/NXPNFCLinux/nxpnfc/tree/PN7220-Driver
[5] PN7220 MW: https://github.com/NXPNFCLinux/PN7220_Android13
Note about the source code in the document
Example code shown in this document has the following copyright and
BSD-3-Clause license:
Copyright 2023 NXP Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following conditions are
met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials must be provided with the distribution.
- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Legal information
8.1 Definitions
Draft — A draft status on a document indicates that the content is still
under internal review and subject to formal approval, which may result in
modifications or additions. NXP Semiconductors does not give any
representations or warranties as to the accuracy or completeness of
information included in a draft version of a document and shall have no
liability for the consequences of use of such information.
8.2 Disclaimers
Limited warranty and liability — Information in this document is believed
to be accurate and reliable. However, NXP Semiconductors does not give any
representations or warranties, expressed or implied, as to the accuracy or
completeness of such information and shall have no liability for the
consequences of use of such information. NXP Semiconductors takes no
responsibility for the content in this document if provided by an information
source outside of NXP Semiconductors.
In no event shall NXP Semiconductors be liable for any indirect, incidental,
punitive, special or consequential damages (including – without limitation
lost profits, lost savings, business interruption, costs related to the
removal or replacement of any products or rework charges) whether or not such
damages are based on tort (including negligence), warranty, breach of contract
or any other legal theory.
Notwithstanding any damages that customer might incur for any reason
whatsoever, NXP Semiconductors’ aggregate and cumulative liability towards
customer for the products described herein shall be limited in accordance with
the Terms and conditions of commercial sale of NXP Semiconductors.
Right to make changes — NXP Semiconductors reserves the right to make
changes to information published in this document, including without
limitation specifications and product descriptions, at any time and without
notice. This document supersedes and replaces all information supplied prior
to the publication hereof.
Suitability for use — NXP Semiconductors products are not designed,
authorized or warranted to be suitable for use in life support, life-critical
or safety-critical systems or equipment, nor in applications where failure or
malfunction of an NXP Semiconductors product can reasonably be expected to
result in personal injury, death or severe property or environmental damage.
NXP Semiconductors and its suppliers accept no liability for inclusion and/or
use of NXP Semiconductors products in such equipment or applications and
therefore such inclusion and/or use is at the customer’s own risk.
Applications — Applications that are described herein for any of these
products are for illustrative purposes only. NXP Semiconductors makes no
representation or warranty that such applications will be suitable for the
specified use without further testing or modification. Customers are
responsible for the design and operation of their applications and products
using NXP Semiconductors products, and NXP Semiconductors accepts no liability
for any assistance with applications or customer product design. It is
customer’s sole responsibility to determine whether the NXP Semiconductors
product is suitable and fit for the customer’s applications and products
planned, as well as for the planned application and use of customer’s third
party customer(s). Customers should provide appropriate design and operating
safeguards to minimize the risks associated with their applications and
products.
NXP Semiconductors does not accept any liability related to any default,
damage, costs or problem which is based on any weakness or default in the
customer’s applications or products, or the application or use by customer’s
third party customer(s). Customer is responsible for doing all necessary
testing for the customer’s applications and products using NXP Semiconductors
products in order to avoid a default of the applications and the products or
of the application or use by customer’s third party customer(s). NXP does not
accept any liability in this respect.
Terms and conditions of commercial sale — NXP Semiconductors products are
sold subject to the general terms and conditions of commercial sale, as
published at http://www.nxp.com/profile/terms, unless otherwise agreed in a
valid written individual agreement. In case an individual agreement is
concluded only the terms and conditions of the respective agreement shall
apply. NXP Semiconductors hereby expressly objects to applying the customer’s
general terms and conditions with regard to the purchase of NXP Semiconductors
products by customer.
Export control — This document as well as the item(s) described herein
may be subject to export control regulations. Export might require a prior
authorization from competent authorities.
Suitability for use in non-automotive qualified products — Unless this
document expressly states that this specific NXP Semiconductors product is
automotive qualified, the product is not suitable for automotive use. It is
neither qualified nor tested in accordance with automotive testing or
application requirements. NXP Semiconductors accepts no liability for
inclusion and/or use of non-automotive qualified products in automotive
equipment or applications.
In the event that customer uses the product for design-in and use in
automotive applications to automotive specifications and standards, customer
(a) shall use the product without NXP Semiconductors’ warranty of the product
for such automotive applications, use and specifications, and (b) whenever
customer uses the product for automotive applications beyond NXP
Semiconductors’ specifications such use shall be solely at customer’s own
risk, and (c) customer fully indemnifies NXP Semiconductors for any liability,
damages or failed product claims resulting from customer design and use of the
product for automotive applications beyond NXP Semiconductors’ standard
warranty and NXP Semiconductors’ product specifications.
Evaluation products — This product is provided on an “as is” and “with
all faults” basis for evaluation purposes only. NXP Semiconductors, its
affiliates and their suppliers expressly disclaim all warranties, whether
express, implied or statutory, including but not limited to the implied
warranties of noninfringement, merchantability and fitness for a particular
purpose. The entire risk as to the quality, or arising out of the use or
performance, of this product remains with customer.
In no event shall NXP Semiconductors, its affiliates or their suppliers be
liable to customer for any special, indirect, consequential, punitive or
incidental damages (including without limitation damages for loss of business,
business interruption, loss of use, loss of data or information, and the like)
arising out the use of or inability to use the product, whether or not
based on tort (including negligence), strict liability, breach of contract,
breach of warranty or any other theory, even if advised of the possibility of
such damages. Notwithstanding any damages that customer might incur for any
reason whatsoever (including without limitation, all damages referenced above
and all direct or general damages), the entire liability of NXP
Semiconductors, its affiliates and their suppliers and customer’s exclusive
remedy for all of the foregoing shall be limited to actual damages incurred by
customer based on reasonable reliance up to the greater of the amount actually
paid by customer for the product or five dollars (US$5.00). The foregoing
limitations, exclusions and disclaimers shall apply to the maximum extent
permitted by applicable law, even if any remedy fails of its essential
purpose.
Translations — A non-English (translated) version of a document,
including the legal information in that document, is for reference only. The
English version shall prevail in case of any discrepancy between the
translated and English versions.
Security — Customer understands that all NXP products may be subject to
unidentified vulnerabilities or may support established security standards or
specifications with known limitations. Customer is responsible for the design
and operation of its applications and products throughout their lifecycles to
reduce the effect of these vulnerabilities on customer’s applications and
products. Customer’s responsibility also extends to other open and/or
proprietary technologies supported by NXP products for use in customer’s
applications. NXP accepts no liability for any vulnerability. Customer should
regularly check security updates from NXP and follow up appropriately.
Customer shall select products with security features that best meet rules,
regulations, and standards of the intended application and make the ultimate
design decisions regarding its products and is solely responsible for
compliance with all legal, regulatory, and security related requirements
concerning its products, regardless of any information or support that may be
provided by NXP.
NXP has a Product Security Incident Response Team (PSIRT) (reachable at
PSIRT@nxp.com) that manages the investigation,
reporting, and solution release to security vulnerabilities of NXP products.
NXP B.V. – NXP B.V. is not an operating company and it does not
distribute or sell products.
8.3 Licenses
Purchase of NXP ICs with NFC technology — Purchase of an NXP Semiconductors IC
that complies with one of the Near Field Communication (NFC) standards ISO/IEC
18092 and ISO/IEC 21481 does not convey an implied license under any patent
right infringed by implementation of any of those standards. Purchase of NXP
Semiconductors IC does not include a license to any NXP patent (or other IP
right) covering combinations of those products with other products, whether
hardware or software.
8.4 Trademarks
Notice: All referenced brands, product names, service names, and trademarks
are the property of their respective owners.
NXP — wordmark and logo are trademarks of NXP B.V.
EdgeVerse — is a trademark of NXP B.V.
i.MX — is a trademark of NXP B.V.
I2C-bus — logo is a trademark of NXP B.V.
Oracle and Java — are registered trademarks of Oracle and/or its affiliates.
Please be aware that important notices concerning this document and the product(s) described herein, have been included in section ‘Legal information’.
© 2023 NXP B.V.
For more information, please visit: http://www.nxp.com
All rights reserved.
Date of release: 18 September 2023
Document identifier: AN13971
AN13971
Application note
All information provided in this document is subject to legal disclaimers.
Rev. 1.0 — 18 September 2023
© 2023 NXP B.V. All rights reserved.
Read User Manual Online (PDF format)
Read User Manual Online (PDF format) >>