linux/drivers/staging/sep/sep_driver_config.h
<<
>>
Prefs
   1/*
   2 *
   3 *  sep_driver_config.h - Security Processor Driver configuration
   4 *
   5 *  Copyright(c) 2009-2011 Intel Corporation. All rights reserved.
   6 *  Contributions(c) 2009-2011 Discretix. All rights reserved.
   7 *
   8 *  This program is free software; you can redistribute it and/or modify it
   9 *  under the terms of the GNU General Public License as published by the Free
  10 *  Software Foundation; version 2 of the License.
  11 *
  12 *  This program is distributed in the hope that it will be useful, but WITHOUT
  13 *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  14 *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  15 *  more details.
  16 *
  17 *  You should have received a copy of the GNU General Public License along with
  18 *  this program; if not, write to the Free Software Foundation, Inc., 59
  19 *  Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  20 *
  21 *  CONTACTS:
  22 *
  23 *  Mark Allyn          mark.a.allyn@intel.com
  24 *  Jayant Mangalampalli jayant.mangalampalli@intel.com
  25 *
  26 *  CHANGES:
  27 *
  28 *  2010.06.26  Upgrade to Medfield
  29 *  2011.02.22  Enable kernel crypto
  30 *
  31 */
  32
  33#ifndef __SEP_DRIVER_CONFIG_H__
  34#define __SEP_DRIVER_CONFIG_H__
  35
  36
  37/*--------------------------------------
  38  DRIVER CONFIGURATION FLAGS
  39  -------------------------------------*/
  40
  41/* if flag is on , then the driver is running in polling and
  42        not interrupt mode */
  43#define SEP_DRIVER_POLLING_MODE                         0
  44
  45/* flag which defines if the shared area address should be
  46        reconfigured (send to SEP anew) during init of the driver */
  47#define SEP_DRIVER_RECONFIG_MESSAGE_AREA                0
  48
  49/* the mode for running on the ARM1172 Evaluation platform (flag is 1) */
  50#define SEP_DRIVER_ARM_DEBUG_MODE                       0
  51
  52/* Critical message area contents for sanity checking */
  53#define SEP_START_MSG_TOKEN                             0x02558808
  54/*-------------------------------------------
  55        INTERNAL DATA CONFIGURATION
  56        -------------------------------------------*/
  57
  58/* flag for the input array */
  59#define SEP_DRIVER_IN_FLAG                              0
  60
  61/* flag for output array */
  62#define SEP_DRIVER_OUT_FLAG                             1
  63
  64/* maximum number of entries in one LLI tables */
  65#define SEP_DRIVER_ENTRIES_PER_TABLE_IN_SEP             31
  66
  67/* minimum data size of the MLLI table */
  68#define SEP_DRIVER_MIN_DATA_SIZE_PER_TABLE              16
  69
  70/* flag that signifies tah the lock is
  71currently held by the process (struct file) */
  72#define SEP_DRIVER_OWN_LOCK_FLAG                        1
  73
  74/* flag that signifies tah the lock is currently NOT
  75held by the process (struct file) */
  76#define SEP_DRIVER_DISOWN_LOCK_FLAG                     0
  77
  78/* indicates whether driver has mapped/unmapped shared area */
  79#define SEP_REQUEST_DAEMON_MAPPED 1
  80#define SEP_REQUEST_DAEMON_UNMAPPED 0
  81
  82/*--------------------------------------------------------
  83        SHARED AREA  memory total size is 36K
  84        it is divided is following:
  85
  86        SHARED_MESSAGE_AREA                     8K         }
  87                                                                        }
  88        STATIC_POOL_AREA                        4K         } MAPPED AREA ( 24 K)
  89                                                                        }
  90        DATA_POOL_AREA                          12K        }
  91
  92        SYNCHRONIC_DMA_TABLES_AREA              29K
  93
  94        placeholder until drver changes
  95        FLOW_DMA_TABLES_AREA                    4K
  96
  97        SYSTEM_MEMORY_AREA                      3k
  98
  99        SYSTEM_MEMORY total size is 3k
 100        it is divided as following:
 101
 102        TIME_MEMORY_AREA                     8B
 103-----------------------------------------------------------*/
 104
 105#define SEP_DEV_NAME "sep_sec_driver"
 106#define SEP_DEV_SINGLETON "sep_sec_singleton_driver"
 107#define SEP_DEV_DAEMON "sep_req_daemon_driver"
 108
 109
 110/*
 111        the minimum length of the message - includes 2 reserved fields
 112        at the start, then token, message size and opcode fields. all dwords
 113*/
 114#define SEP_DRIVER_MIN_MESSAGE_SIZE_IN_BYTES                    (5*sizeof(u32))
 115
 116/*
 117        the maximum length of the message - the rest of the message shared
 118        area will be dedicated to the dma lli tables
 119*/
 120#define SEP_DRIVER_MAX_MESSAGE_SIZE_IN_BYTES                    (8 * 1024)
 121
 122/* the size of the message shared area in pages */
 123#define SEP_DRIVER_MESSAGE_SHARED_AREA_SIZE_IN_BYTES            (8 * 1024)
 124
 125/* the size of the data pool static area in pages */
 126#define SEP_DRIVER_STATIC_AREA_SIZE_IN_BYTES                    (4 * 1024)
 127
 128/* the size of the data pool shared area size in pages */
 129#define SEP_DRIVER_DATA_POOL_SHARED_AREA_SIZE_IN_BYTES          (16 * 1024)
 130
 131/* the size of the message shared area in pages */
 132#define SYNCHRONIC_DMA_TABLES_AREA_SIZE_BYTES   (1024 * 29)
 133
 134/* Placeholder until driver changes */
 135#define SEP_DRIVER_FLOW_DMA_TABLES_AREA_SIZE_IN_BYTES           (1024 * 4)
 136
 137/* system data (time, caller id etc') pool */
 138#define SEP_DRIVER_SYSTEM_DATA_MEMORY_SIZE_IN_BYTES             (1024 * 3)
 139
 140/* Offset of the sep printf buffer in the message area */
 141#define SEP_DRIVER_PRINTF_OFFSET_IN_BYTES                       (5888)
 142
 143/* the size in bytes of the time memory */
 144#define SEP_DRIVER_TIME_MEMORY_SIZE_IN_BYTES                    8
 145
 146/* the size in bytes of the RAR parameters memory */
 147#define SEP_DRIVER_SYSTEM_RAR_MEMORY_SIZE_IN_BYTES              8
 148
 149/* area size that is mapped  - we map the MESSAGE AREA, STATIC POOL and
 150        DATA POOL areas. area must be module 4k */
 151#define SEP_DRIVER_MMMAP_AREA_SIZE                              (1024 * 28)
 152
 153/*-----------------------------------------------
 154        offsets of the areas starting from the shared area start address
 155*/
 156
 157/* message area offset */
 158#define SEP_DRIVER_MESSAGE_AREA_OFFSET_IN_BYTES                 0
 159
 160/* static pool area offset */
 161#define SEP_DRIVER_STATIC_AREA_OFFSET_IN_BYTES \
 162        (SEP_DRIVER_MESSAGE_SHARED_AREA_SIZE_IN_BYTES)
 163
 164/* data pool area offset */
 165#define SEP_DRIVER_DATA_POOL_AREA_OFFSET_IN_BYTES \
 166        (SEP_DRIVER_STATIC_AREA_OFFSET_IN_BYTES + \
 167        SEP_DRIVER_STATIC_AREA_SIZE_IN_BYTES)
 168
 169/* synchronic dma tables area offset */
 170#define SYNCHRONIC_DMA_TABLES_AREA_OFFSET_BYTES \
 171        (SEP_DRIVER_DATA_POOL_AREA_OFFSET_IN_BYTES + \
 172        SEP_DRIVER_DATA_POOL_SHARED_AREA_SIZE_IN_BYTES)
 173
 174/* system memory offset in bytes */
 175#define SEP_DRIVER_SYSTEM_DATA_MEMORY_OFFSET_IN_BYTES \
 176        (SYNCHRONIC_DMA_TABLES_AREA_OFFSET_BYTES + \
 177        SYNCHRONIC_DMA_TABLES_AREA_SIZE_BYTES)
 178
 179/* offset of the time area */
 180#define SEP_DRIVER_SYSTEM_TIME_MEMORY_OFFSET_IN_BYTES \
 181        (SEP_DRIVER_SYSTEM_DATA_MEMORY_OFFSET_IN_BYTES)
 182
 183/* offset of the RAR area */
 184#define SEP_DRIVER_SYSTEM_RAR_MEMORY_OFFSET_IN_BYTES \
 185        (SEP_DRIVER_SYSTEM_TIME_MEMORY_OFFSET_IN_BYTES + \
 186        SEP_DRIVER_TIME_MEMORY_SIZE_IN_BYTES)
 187
 188/* offset of the caller id area */
 189#define SEP_CALLER_ID_OFFSET_BYTES \
 190        (SEP_DRIVER_SYSTEM_RAR_MEMORY_OFFSET_IN_BYTES + \
 191        SEP_DRIVER_SYSTEM_RAR_MEMORY_SIZE_IN_BYTES)
 192
 193/* offset of the DCB area */
 194#define SEP_DRIVER_SYSTEM_DCB_MEMORY_OFFSET_IN_BYTES \
 195        (SEP_DRIVER_SYSTEM_DATA_MEMORY_OFFSET_IN_BYTES + \
 196        0x400)
 197
 198/* offset of the ext cache area */
 199#define SEP_DRIVER_SYSTEM_EXT_CACHE_ADDR_OFFSET_IN_BYTES \
 200        SEP_DRIVER_SYSTEM_RAR_MEMORY_OFFSET_IN_BYTES
 201
 202/* offset of the allocation data pointer area */
 203#define SEP_DRIVER_DATA_POOL_ALLOCATION_OFFSET_IN_BYTES \
 204        (SEP_CALLER_ID_OFFSET_BYTES + \
 205        SEP_CALLER_ID_HASH_SIZE_IN_BYTES)
 206
 207/* the token that defines the start of time address */
 208#define SEP_TIME_VAL_TOKEN                                    0x12345678
 209
 210#define FAKE_RAR_SIZE (1024*1024) /* used only for mfld */
 211/* DEBUG LEVEL MASKS */
 212
 213/* size of the caller id hash (sha2) */
 214#define SEP_CALLER_ID_HASH_SIZE_IN_BYTES                      32
 215
 216/* size of the caller id hash (sha2) in 32 bit words */
 217#define SEP_CALLER_ID_HASH_SIZE_IN_WORDS                8
 218
 219/* maximum number of entries in the caller id table */
 220#define SEP_CALLER_ID_TABLE_NUM_ENTRIES                       20
 221
 222/* maximum number of symmetric operation (that require DMA resource)
 223        per one message */
 224#define SEP_MAX_NUM_SYNC_DMA_OPS                        16
 225
 226/* the token that defines the start of time address */
 227#define SEP_RAR_VAL_TOKEN                                     0xABABABAB
 228
 229/* ioctl error that should be returned when trying
 230   to realloc the cache/resident second time */
 231#define SEP_ALREADY_INITIALIZED_ERR                           12
 232
 233/* bit that locks access to the shared area */
 234#define SEP_TRANSACTION_STARTED_LOCK_BIT                      0
 235
 236/* bit that lock access to the poll  - after send_command */
 237#define SEP_WORKING_LOCK_BIT                                  1
 238
 239/* the token that defines the static pool address address */
 240#define SEP_STATIC_POOL_VAL_TOKEN                             0xABBAABBA
 241
 242/* the token that defines the data pool pointers address */
 243#define SEP_DATA_POOL_POINTERS_VAL_TOKEN                      0xEDDEEDDE
 244
 245/* the token that defines the data pool pointers address */
 246#define SEP_EXT_CACHE_ADDR_VAL_TOKEN                          0xBABABABA
 247
 248/* Time limit for SEP to finish */
 249#define WAIT_TIME 10
 250
 251/* Delay for pm runtime suspend (reduces pm thrashing with bursty traffic */
 252#define SUSPEND_DELAY 10
 253
 254/* Number of delays to wait until scu boots after runtime resume */
 255#define SCU_DELAY_MAX 50
 256
 257/* Delay for each iteration (usec) wait for scu boots after runtime resume */
 258#define SCU_DELAY_ITERATION 10
 259
 260
 261/*
 262 * Bits used in struct sep_call_status to check that
 263 * driver's APIs are called in valid order
 264 */
 265
 266/* Bit offset which indicates status of sep_write() */
 267#define SEP_FASTCALL_WRITE_DONE_OFFSET          0
 268
 269/* Bit offset which indicates status of sep_mmap() */
 270#define SEP_LEGACY_MMAP_DONE_OFFSET             1
 271
 272/* Bit offset which indicates status of the SEP_IOCSENDSEPCOMMAND ioctl */
 273#define SEP_LEGACY_SENDMSG_DONE_OFFSET          2
 274
 275/* Bit offset which indicates status of sep_poll() */
 276#define SEP_LEGACY_POLL_DONE_OFFSET             3
 277
 278/* Bit offset which indicates status of the SEP_IOCENDTRANSACTION ioctl */
 279#define SEP_LEGACY_ENDTRANSACTION_DONE_OFFSET   4
 280
 281/*
 282 * Used to limit number of concurrent processes
 283 * allowed to allocate dynamic buffers in fastcall
 284 * interface.
 285 */
 286#define SEP_DOUBLEBUF_USERS_LIMIT               3
 287
 288/* Identifier for valid fastcall header */
 289#define SEP_FC_MAGIC                            0xFFAACCAA
 290
 291/*
 292 * Used for enabling driver runtime power management.
 293 * Useful for enabling/disabling it during performance
 294 * testing
 295 */
 296#define SEP_ENABLE_RUNTIME_PM
 297
 298#endif /* SEP DRIVER CONFIG */
 299