1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu *  Copyright (C) 2012-2014 Broadcom Corporation
4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  you may not use this file except in compliance with the License.
7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  You may obtain a copy of the License at:
8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  See the License for the specific language governing permissions and
15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  limitations under the License.
16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
185c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_TARGET_H
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_TARGET_H
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
225c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#include "gki.h"
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "data_types.h"
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************
26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NCI related configuration
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project****************************************************************************/
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Initial Max Control Packet Payload Size (until receiving payload size in INIT_CORE_RSP) */
30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_NCI_INIT_CTRL_PAYLOAD_SIZE
31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_NCI_INIT_CTRL_PAYLOAD_SIZE      0xFF
32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Number of bytes to reserve in front of NCI messages (e.g. for transport header) */
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_NCI_MSG_OFFSET_SIZE
36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_NCI_MSG_OFFSET_SIZE             1
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFC-WAKE */
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_LP_NFC_WAKE_GPIO
41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_LP_NFC_WAKE_GPIO                UPIO_GENERAL3
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFCC snooze mode idle timeout before deassert NFC_WAKE in ms */
45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_LP_IDLE_TIMEOUT
46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_LP_IDLE_TIMEOUT                 100
47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFC snooze mode */
50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_LP_SNOOZE_MODE
51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_LP_SNOOZE_MODE                  NFC_HAL_LP_SNOOZE_MODE_UART
52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Idle Threshold Host in 100ms unit */
55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_LP_IDLE_THRESHOLD_HOST
56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_LP_IDLE_THRESHOLD_HOST          0
57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Idle Threshold HC in 100ms unit */
60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_LP_IDLE_THRESHOLD_HC
61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_LP_IDLE_THRESHOLD_HC            0
62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Default NFCC power-up baud rate */
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_DEFAULT_BAUD
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_DEFAULT_BAUD                    USERIAL_BAUD_115200
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* time (in ms) between power off and on NFCC */
71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_POWER_CYCLE_DELAY
72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_POWER_CYCLE_DELAY               100
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
755c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen/* time (in ms) between power off and on NFCC */
765c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#ifndef NFC_HAL_NFCC_ENABLE_TIMEOUT
775c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NFC_HAL_NFCC_ENABLE_TIMEOUT             1000
785c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif
795c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_PRM_DEBUG
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_PRM_DEBUG                       TRUE
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* max patch data length (Can be overridden by platform for ACL HCI command size) */
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_PRM_HCD_CMD_MAXLEN
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_PRM_HCD_CMD_MAXLEN              250
87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Require PreI2C patch by default */
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_PRE_I2C_PATCH_INCLUDED
91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_PRE_I2C_PATCH_INCLUDED          TRUE
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Mininum payload size for SPD NCI commands (used to validate HAL_NfcPrmSetSpdNciCmdPayloadSize) */
95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Default is 32, as required by the NCI specifications; however this value may be          */
96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* over-riden for platforms that have transport packet limitations                          */
97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE
98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE    (32)
99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
1015c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen/* amount of time to wait for authenticating/committing patch to NVM */
1025c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#ifndef NFC_HAL_PRM_COMMIT_DELAY
1035c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NFC_HAL_PRM_COMMIT_DELAY                (30000)
104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* amount of time to wait after downloading preI2C patch before downloading LPM/FPM patch */
107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_PRM_POST_I2C_FIX_DELAY
108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_PRM_POST_I2C_FIX_DELAY          (200)
109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFCC will respond to more than one technology during listen discovery  */
112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_DM_MULTI_TECH_RESP
113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_DM_MULTI_TECH_RESP              TRUE
114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Data rate for 15693 command/response, it must be same as RW_I93_FLAG_DATA_RATE in nfc_target.h */
117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_I93_FLAG_DATA_RATE_LOW          0x00
118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_I93_FLAG_DATA_RATE_HIGH         0x02
119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_I93_FLAG_DATA_RATE
121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_I93_FLAG_DATA_RATE              NFC_HAL_I93_FLAG_DATA_RATE_HIGH
122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
124a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu/* NFC HAL HCI */
125a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu#ifndef NFC_HAL_HCI_INCLUDED
126a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu#define NFC_HAL_HCI_INCLUDED                    TRUE
127a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu#endif
128a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu
129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Quick Timer */
130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef QUICK_TIMER_TICKS_PER_SEC
131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define QUICK_TIMER_TICKS_PER_SEC               100       /* 10ms timer */
132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_SHARED_TRANSPORT_ENABLED
135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_SHARED_TRANSPORT_ENABLED        FALSE
136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Enable verbose tracing by default */
139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_TRACE_VERBOSE
140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_TRACE_VERBOSE                   TRUE
141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_INITIAL_TRACE_LEVEL
144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_INITIAL_TRACE_LEVEL             5
145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Map NFC serial port to USERIAL_PORT_6 by default */
148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef USERIAL_NFC_PORT
149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define USERIAL_NFC_PORT                        (USERIAL_PORT_6)
150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Restore NFCC baud rate to default on shutdown if baud rate was updated */
153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_RESTORE_BAUD_ON_SHUTDOWN
154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_RESTORE_BAUD_ON_SHUTDOWN        TRUE
155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Enable protocol tracing by default */
158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_TRACE_PROTOCOL
159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_TRACE_PROTOCOL                  TRUE
160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
1615c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
1625c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen/* Legacy protocol-trace-enable macro */
1635c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#ifndef BT_TRACE_PROTOCOL
164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_TRACE_PROTOCOL                       (NFC_HAL_TRACE_PROTOCOL)
1655c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif
166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
1675c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen/* Enable HAL tracing by default */
1685c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#ifndef NFC_HAL_USE_TRACES
1695c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NFC_HAL_USE_TRACES                      TRUE
170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
1725c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen/* HAL trace macros */
1735c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#if (NFC_HAL_USE_TRACES == TRUE)
1745c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NCI_TRACE_0(l,t,m)                           LogMsg((TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t)),(m))
1755c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NCI_TRACE_1(l,t,m,p1)                        LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t),(m),(UINTPTR)(p1))
1765c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NCI_TRACE_2(l,t,m,p1,p2)                     LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t),(m),(UINTPTR)(p1),   \
1775c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen                                                        (UINTPTR)(p2))
1785c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NCI_TRACE_3(l,t,m,p1,p2,p3)                  LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t),(m),(UINTPTR)(p1),   \
1795c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen                                                        (UINTPTR)(p2),(UINTPTR)(p3))
1805c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NCI_TRACE_4(l,t,m,p1,p2,p3,p4)               LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t),(m),(UINTPTR)(p1),   \
1815c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen                                                        (UINTPTR)(p2),(UINTPTR)(p3),(UINTPTR)(p4))
1825c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NCI_TRACE_5(l,t,m,p1,p2,p3,p4,p5)            LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t),(m),(UINTPTR)(p1),   \
1835c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen                                                        (UINTPTR)(p2),(UINTPTR)(p3),(UINTPTR)(p4), \
1845c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen                                                        (UINTPTR)(p5))
1855c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NCI_TRACE_6(l,t,m,p1,p2,p3,p4,p5,p6)         LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t),(m),(UINTPTR)(p1),   \
1865c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen                                                        (UINTPTR)(p2),(UINTPTR)(p3),(UINTPTR)(p4), \
1875c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen                                                        (UINTPTR)(p5),(UINTPTR)(p6))
1885c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
1895c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR0(m)                     {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) NCI_TRACE_0(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m);}
1905c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR1(m,p1)                  {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) NCI_TRACE_1(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m,p1);}
1915c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR2(m,p1,p2)               {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) NCI_TRACE_2(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m,p1,p2);}
1925c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR3(m,p1,p2,p3)            {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) NCI_TRACE_3(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m,p1,p2,p3);}
1935c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR4(m,p1,p2,p3,p4)         {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) NCI_TRACE_4(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m,p1,p2,p3,p4);}
1945c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR5(m,p1,p2,p3,p4,p5)      {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) NCI_TRACE_5(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m,p1,p2,p3,p4,p5);}
1955c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR6(m,p1,p2,p3,p4,p5,p6)   {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) NCI_TRACE_6(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m,p1,p2,p3,p4,p5,p6);}
1965c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
1975c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING0(m)                   {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) NCI_TRACE_0(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m);}
1985c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING1(m,p1)                {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) NCI_TRACE_1(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m,p1);}
1995c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING2(m,p1,p2)             {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) NCI_TRACE_2(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m,p1,p2);}
2005c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING3(m,p1,p2,p3)          {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) NCI_TRACE_3(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m,p1,p2,p3);}
2015c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING4(m,p1,p2,p3,p4)       {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) NCI_TRACE_4(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m,p1,p2,p3,p4);}
2025c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING5(m,p1,p2,p3,p4,p5)    {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) NCI_TRACE_5(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m,p1,p2,p3,p4,p5);}
2035c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING6(m,p1,p2,p3,p4,p5,p6) {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) NCI_TRACE_6(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m,p1,p2,p3,p4,p5,p6);}
2045c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
2055c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API0(m)                       {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) NCI_TRACE_0(TRACE_LAYER_HAL, TRACE_TYPE_API, m);}
2065c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API1(m,p1)                    {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) NCI_TRACE_1(TRACE_LAYER_HAL, TRACE_TYPE_API, m,p1);}
2075c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API2(m,p1,p2)                 {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) NCI_TRACE_2(TRACE_LAYER_HAL, TRACE_TYPE_API, m,p1,p2);}
2085c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API3(m,p1,p2,p3)              {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) NCI_TRACE_3(TRACE_LAYER_HAL, TRACE_TYPE_API, m,p1,p2,p3);}
2095c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API4(m,p1,p2,p3,p4)           {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) NCI_TRACE_4(TRACE_LAYER_HAL, TRACE_TYPE_API, m,p1,p2,p3,p4);}
2105c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API5(m,p1,p2,p3,p4,p5)        {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) NCI_TRACE_5(TRACE_LAYER_HAL, TRACE_TYPE_API, m,p1,p2,p3,p4,p5);}
2115c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API6(m,p1,p2,p3,p4,p5,p6)     {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) NCI_TRACE_6(TRACE_LAYER_HAL, TRACE_TYPE_API, m,p1,p2,p3,p4,p5,p6);}
2125c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
2135c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT0(m)                     {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) NCI_TRACE_0(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m);}
2145c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT1(m,p1)                  {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) NCI_TRACE_1(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m, p1);}
2155c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT2(m,p1,p2)               {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) NCI_TRACE_2(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m,p1,p2);}
2165c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT3(m,p1,p2,p3)            {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) NCI_TRACE_3(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m,p1,p2,p3);}
2175c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT4(m,p1,p2,p3,p4)         {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) NCI_TRACE_4(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m,p1,p2,p3,p4);}
2185c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT5(m,p1,p2,p3,p4,p5)      {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) NCI_TRACE_5(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m,p1,p2,p3,p4,p5);}
2195c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT6(m,p1,p2,p3,p4,p5,p6)   {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) NCI_TRACE_6(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m,p1,p2,p3,p4,p5,p6);}
2205c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
2215c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG0(m)                     {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) NCI_TRACE_0(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m);}
2225c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG1(m,p1)                  {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) NCI_TRACE_1(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m,p1);}
2235c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG2(m,p1,p2)               {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) NCI_TRACE_2(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m,p1,p2);}
2245c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG3(m,p1,p2,p3)            {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) NCI_TRACE_3(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m,p1,p2,p3);}
2255c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG4(m,p1,p2,p3,p4)         {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) NCI_TRACE_4(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m,p1,p2,p3,p4);}
2265c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG5(m,p1,p2,p3,p4,p5)      {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) NCI_TRACE_5(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m,p1,p2,p3,p4,p5);}
2275c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG6(m,p1,p2,p3,p4,p5,p6)   {if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) NCI_TRACE_6(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m,p1,p2,p3,p4,p5,p6);}
2285c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
2295c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#else /* Disable HAL tracing */
2305c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
2315c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_0(l,t,m)
2325c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_1(l,t,m,p1)
2335c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_2(l,t,m,p1,p2)
2345c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_3(l,t,m,p1,p2,p3)
2355c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_4(l,t,m,p1,p2,p3,p4)
2365c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_5(l,t,m,p1,p2,p3,p4,p5)
2375c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_6(l,t,m,p1,p2,p3,p4,p5,p6)
2385c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
2395c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR0(m)
2405c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR1(m,p1)
2415c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR2(m,p1,p2)
2425c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR3(m,p1,p2,p3)
2435c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR4(m,p1,p2,p3,p4)
2445c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR5(m,p1,p2,p3,p4,p5)
2455c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_ERROR6(m,p1,p2,p3,p4,p5,p6)
2465c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
2475c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING0(m)
2485c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING1(m,p1)
2495c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING2(m,p1,p2)
2505c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING3(m,p1,p2,p3)
2515c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING4(m,p1,p2,p3,p4)
2525c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING5(m,p1,p2,p3,p4,p5)
2535c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_WARNING6(m,p1,p2,p3,p4,p5,p6)
2545c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
2555c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API0(m)
2565c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API1(m,p1)
2575c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API2(m,p1,p2)
2585c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API3(m,p1,p2,p3)
2595c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API4(m,p1,p2,p3,p4)
2605c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API5(m,p1,p2,p3,p4,p5)
2615c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_API6(m,p1,p2,p3,p4,p5,p6)
2625c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
2635c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT0(m)
2645c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT1(m,p1)
2655c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT2(m,p1,p2)
2665c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT3(m,p1,p2,p3)
2675c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT4(m,p1,p2,p3,p4)
2685c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT5(m,p1,p2,p3,p4,p5)
2695c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_EVENT6(m,p1,p2,p3,p4,p5,p6)
2705c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
2715c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG0(m)
2725c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG1(m,p1)
2735c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG2(m,p1,p2)
2745c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG3(m,p1,p2,p3)
2755c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG4(m,p1,p2,p3,p4)
2765c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG5(m,p1,p2,p3,p4,p5)
2775c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HAL_TRACE_DEBUG6(m,p1,p2,p3,p4,p5,p6)
2785c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif  /* Disable HAL tracing */
2795c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif  /* GKI_TARGET_H */
281