1/****************************************************************************** 2 * 3 * Copyright (C) 2012-2014 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19#ifndef GKI_HAL_TARGET_H 20#define GKI_HAL_TARGET_H 21 22#ifdef BUILDCFG 23#include "buildcfg_hal.h" 24#endif 25 26#include "data_types.h" 27 28/* Define export prefixes for modules exported by HAL */ 29#ifndef GKI_API 30#define GKI_API 31#endif 32 33#ifndef UDRV_API 34#define UDRV_API 35#endif 36 37#ifndef EXPORT_API 38#define EXPORT_API 39#endif 40 41 42/****************************************************************************** 43** 44** Task configuration 45** 46******************************************************************************/ 47 48/* Definitions of task IDs for inter-task messaging */ 49#ifndef NFC_HAL_TASK 50#define NFC_HAL_TASK 0 51#endif 52 53/* The number of GKI tasks in the software system. */ 54#ifndef GKI_MAX_TASKS 55#define GKI_MAX_TASKS 1 56#endif 57 58 59/****************************************************************************** 60** 61** Buffer pool assignment 62** 63******************************************************************************/ 64 65/* GKI pool for NCI messages */ 66#ifndef NFC_HAL_NCI_POOL_ID 67#define NFC_HAL_NCI_POOL_ID GKI_POOL_ID_1 68#endif 69 70#ifndef NFC_HAL_NCI_POOL_BUF_SIZE 71#define NFC_HAL_NCI_POOL_BUF_SIZE GKI_BUF1_SIZE 72#endif 73 74 75/****************************************************************************** 76** 77** Timer configuration 78** 79******************************************************************************/ 80 81/* The number of GKI timers in the software system. */ 82#ifndef GKI_NUM_TIMERS 83#define GKI_NUM_TIMERS 2 84#endif 85 86/* A conversion value for translating ticks to calculate GKI timer. */ 87#ifndef TICKS_PER_SEC 88#define TICKS_PER_SEC 100 89#endif 90 91/************************************************************************ 92** Utility macros converting ticks to time with user define OS ticks per sec 93**/ 94#ifndef GKI_MS_TO_TICKS 95#define GKI_MS_TO_TICKS(x) ((x) / (1000 / TICKS_PER_SEC)) 96#endif 97 98#ifndef GKI_SECS_TO_TICKS 99#define GKI_SECS_TO_TICKS(x) ((x) * (TICKS_PER_SEC)) 100#endif 101 102#ifndef GKI_TICKS_TO_MS 103#define GKI_TICKS_TO_MS(x) ((x) * 1000 / TICKS_PER_SEC) 104#endif 105 106#ifndef GKI_TICKS_TO_SECS 107#define GKI_TICKS_TO_SECS(x) ((x) / TICKS_PER_SEC) 108#endif 109 110 111 112/* TICK per second from OS (OS dependent change this macro accordingly to various OS) */ 113#ifndef OS_TICKS_PER_SEC 114#define OS_TICKS_PER_SEC 1000 115#endif 116 117/************************************************************************ 118** Utility macros converting ticks to time with user define OS ticks per sec 119**/ 120 121#ifndef GKI_OS_TICKS_TO_MS 122#define GKI_OS_TICKS_TO_MS(x) ((x) * 1000 / OS_TICKS_PER_SEC) 123#endif 124 125 126#ifndef GKI_OS_TICKS_TO_SECS 127#define GKI_OS_TICKS_TO_SECS(x) ((x) / OS_TICKS_PER_SEC)) 128#endif 129 130 131/* delay in ticks before stopping system tick. */ 132#ifndef GKI_DELAY_STOP_SYS_TICK 133#define GKI_DELAY_STOP_SYS_TICK 10 134#endif 135 136/* Option to guarantee no preemption during timer expiration (most system don't need this) */ 137#ifndef GKI_TIMER_LIST_NOPREEMPT 138#define GKI_TIMER_LIST_NOPREEMPT FALSE 139#endif 140 141/****************************************************************************** 142** 143** Buffer configuration 144** 145******************************************************************************/ 146 147/* TRUE if GKI uses dynamic buffers. */ 148#ifndef GKI_USE_DYNAMIC_BUFFERS 149#define GKI_USE_DYNAMIC_BUFFERS FALSE 150#endif 151 152/* The size of the buffers in pool 0. */ 153#ifndef GKI_BUF0_SIZE 154#define GKI_BUF0_SIZE 64 155#endif 156 157/* The number of buffers in buffer pool 0. */ 158#ifndef GKI_BUF0_MAX 159#define GKI_BUF0_MAX 8 160#endif 161 162/* The ID of buffer pool 0. */ 163#ifndef GKI_POOL_ID_0 164#define GKI_POOL_ID_0 0 165#endif 166 167/* The size of the buffers in pool 1. */ 168#ifndef GKI_BUF1_SIZE 169#define GKI_BUF1_SIZE 288 170#endif 171 172/* The number of buffers in buffer pool 1. */ 173#ifndef GKI_BUF1_MAX 174#define GKI_BUF1_MAX 8 175#endif 176 177/* The ID of buffer pool 1. */ 178#ifndef GKI_POOL_ID_1 179#define GKI_POOL_ID_1 1 180#endif 181 182/* The size of the largest PUBLIC fixed buffer in system. */ 183#ifndef GKI_MAX_BUF_SIZE 184#define GKI_MAX_BUF_SIZE GKI_BUF1_SIZE 185#endif 186 187/* The pool ID of the largest PUBLIC fixed buffer in system. */ 188#ifndef GKI_MAX_BUF_SIZE_POOL_ID 189#define GKI_MAX_BUF_SIZE_POOL_ID GKI_POOL_ID_1 190#endif 191 192/* buffer size for USERIAL, it must large enough to hold NFC_HDR and max packet size */ 193#ifndef USERIAL_POOL_BUF_SIZE 194#define USERIAL_POOL_BUF_SIZE GKI_BUF1_SIZE 195#endif 196 197/* buffer pool ID for USERIAL */ 198#ifndef USERIAL_POOL_ID 199#define USERIAL_POOL_ID GKI_POOL_ID_1 200#endif 201 202#ifndef GKI_NUM_FIXED_BUF_POOLS 203#define GKI_NUM_FIXED_BUF_POOLS 2 204#endif 205 206/* The number of fixed and dynamic buffer pools */ 207#ifndef GKI_NUM_TOTAL_BUF_POOLS 208#define GKI_NUM_TOTAL_BUF_POOLS 2 209#endif 210 211/* The buffer pool usage mask. */ 212#ifndef GKI_DEF_BUFPOOL_PERM_MASK 213#define GKI_DEF_BUFPOOL_PERM_MASK 0xfff0 214#endif 215 216/* The buffer corruption check flag. */ 217#ifndef GKI_ENABLE_BUF_CORRUPTION_CHECK 218#define GKI_ENABLE_BUF_CORRUPTION_CHECK TRUE 219#endif 220 221/* The GKI severe error macro. */ 222#ifndef GKI_SEVERE 223#define GKI_SEVERE(code) 224#endif 225 226/* TRUE if GKI includes debug functionality. */ 227#ifndef GKI_DEBUG 228#define GKI_DEBUG FALSE 229#endif 230 231/* Maximum number of exceptions logged. */ 232#ifndef GKI_MAX_EXCEPTION 233#define GKI_MAX_EXCEPTION 8 234#endif 235 236/* Maximum number of chars stored for each exception message. */ 237#ifndef GKI_MAX_EXCEPTION_MSGLEN 238#define GKI_MAX_EXCEPTION_MSGLEN 64 239#endif 240 241#ifndef GKI_SEND_MSG_FROM_ISR 242#define GKI_SEND_MSG_FROM_ISR FALSE 243#endif 244 245 246#if defined(GKI_DEBUG) && (GKI_DEBUG == TRUE) 247#ifdef LOG_TAG 248#undef LOG_TAG 249#endif 250#define LOG_TAG "GKI_LINUX" 251/* GKI Trace Macros */ 252#define GKI_TRACE_0(m) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m) 253#define GKI_TRACE_1(m,p1) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1) 254#define GKI_TRACE_2(m,p1,p2) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1,p2) 255#define GKI_TRACE_3(m,p1,p2,p3) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1,p2,p3) 256#define GKI_TRACE_4(m,p1,p2,p3,p4) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1,p2,p3,p4) 257#define GKI_TRACE_5(m,p1,p2,p3,p4,p5) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1,p2,p3,p4,p5) 258#define GKI_TRACE_6(m,p1,p2,p3,p4,p5,p6) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1,p2,p3,p4,p5,p6) 259#else 260#define GKI_TRACE_0(m) 261#define GKI_TRACE_1(m,p1) 262#define GKI_TRACE_2(m,p1,p2) 263#define GKI_TRACE_3(m,p1,p2,p3) 264#define GKI_TRACE_4(m,p1,p2,p3,p4) 265#define GKI_TRACE_5(m,p1,p2,p3,p4,p5) 266#define GKI_TRACE_6(m,p1,p2,p3,p4,p5,p6) 267 268#endif 269 270#define GKI_TRACE_ERROR_0(m) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m) 271#define GKI_TRACE_ERROR_1(m,p1) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1) 272#define GKI_TRACE_ERROR_2(m,p1,p2) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1,p2) 273#define GKI_TRACE_ERROR_3(m,p1,p2,p3) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1,p2,p3) 274#define GKI_TRACE_ERROR_4(m,p1,p2,p3,p4) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1,p2,p3,p4) 275#define GKI_TRACE_ERROR_5(m,p1,p2,p3,p4,p5) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1,p2,p3,p4,p5) 276#define GKI_TRACE_ERROR_6(m,p1,p2,p3,p4,p5,p6) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1,p2,p3,p4,p5,p6) 277 278#ifdef __cplusplus 279extern "C" 280{ 281#endif 282 283extern void LogMsg (UINT32 trace_set_mask, const char *fmt_str, ...); 284 285#ifdef __cplusplus 286} 287#endif 288 289#endif /* GKI_TARGET_H */ 290