Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
staging
sep
sep_dev.h
Go to the documentation of this file.
1
#ifndef __SEP_DEV_H__
2
#define __SEP_DEV_H__
3
4
/*
5
*
6
* sep_dev.h - Security Processor Device Structures
7
*
8
* Copyright(c) 2009-2011 Intel Corporation. All rights reserved.
9
* Contributions(c) 2009-2011 Discretix. All rights reserved.
10
*
11
* This program is free software; you can redistribute it and/or modify it
12
* under the terms of the GNU General Public License as published by the Free
13
* Software Foundation; version 2 of the License.
14
*
15
* This program is distributed in the hope that it will be useful, but WITHOUT
16
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
18
* more details.
19
*
20
* You should have received a copy of the GNU General Public License along with
21
* this program; if not, write to the Free Software Foundation, Inc., 59
22
* Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23
*
24
* CONTACTS:
25
*
26
* Mark Allyn
[email protected]
27
* Jayant Mangalampalli
[email protected]
28
*
29
* CHANGES
30
* 2010.09.14 upgrade to Medfield
31
* 2011.02.22 enable kernel crypto
32
*/
33
34
struct
sep_device
{
35
/* pointer to pci dev */
36
struct
pci_dev
*
pdev
;
37
38
/* character device file */
39
struct
cdev
sep_cdev
;
40
41
/* devices (using misc dev) */
42
struct
miscdevice
miscdev_sep
;
43
44
/* major / minor numbers of device */
45
dev_t
sep_devno
;
46
/* guards command sent counter */
47
spinlock_t
snd_rply_lck
;
48
/* guards driver memory usage in fastcall if */
49
struct
semaphore
sep_doublebuf
;
50
51
/* flags to indicate use and lock status of sep */
52
u32
pid_doing_transaction
;
53
unsigned
long
in_use_flags
;
54
55
/* address of the shared memory allocated during init for SEP driver
56
(coherent alloc) */
57
dma_addr_t
shared_bus
;
58
size_t
shared_size
;
59
void
*
shared_addr
;
60
61
/* start address of the access to the SEP registers from driver */
62
dma_addr_t
reg_physical_addr
;
63
dma_addr_t
reg_physical_end
;
64
void
__iomem
*
reg_addr
;
65
66
/* wait queue heads of the driver */
67
wait_queue_head_t
event_interrupt
;
68
wait_queue_head_t
event_transactions
;
69
70
struct
list_head
sep_queue_status
;
71
u32
sep_queue_num
;
72
spinlock_t
sep_queue_lock
;
73
74
/* Is this in use? */
75
u32
in_use
;
76
77
/* indicates whether power save is set up */
78
u32
power_save_setup
;
79
80
/* Power state */
81
u32
power_state
;
82
83
/* transaction counter that coordinates the
84
transactions between SEP and HOST */
85
unsigned
long
send_ct
;
86
/* counter for the messages from sep */
87
unsigned
long
reply_ct
;
88
89
/* The following are used for kernel crypto client requests */
90
u32
in_kernel
;
/* Set for kernel client request */
91
struct
tasklet_struct
finish_tasklet
;
92
enum
type_of_request
current_request
;
93
enum
hash_stage
current_hash_stage
;
94
struct
ahash_request
*
current_hash_req
;
95
struct
ablkcipher_request
*
current_cypher_req
;
96
struct
this_task_ctx
*
ta_ctx
;
97
struct
workqueue_struct
*
workqueue
;
98
};
99
100
extern
struct
sep_device
*
sep_dev
;
101
109
struct
sep_msgarea_hdr
{
110
u32
reserved
[2];
111
u32
token
;
112
u32
msg_len
;
113
u32
opcode
;
114
};
115
123
struct
sep_queue_data
{
124
u32
opcode
;
125
u32
size
;
126
s32
pid
;
127
u8
name
[
TASK_COMM_LEN
];
128
};
129
134
struct
sep_queue_info
{
135
struct
list_head
list
;
136
struct
sep_queue_data
data
;
137
};
138
139
static
inline
void
sep_write_reg(
struct
sep_device
*
dev
,
int
reg
,
u32
value
)
140
{
141
void
__iomem
*
addr
= dev->
reg_addr
+
reg
;
142
writel
(value, addr);
143
}
144
145
static
inline
u32
sep_read_reg(
struct
sep_device
*
dev
,
int
reg
)
146
{
147
void
__iomem
*
addr
= dev->
reg_addr
+
reg
;
148
return
readl
(addr);
149
}
150
151
/* wait for SRAM write complete(indirect write */
152
static
inline
void
sep_wait_sram_write(
struct
sep_device
*
dev
)
153
{
154
u32
reg_val
;
155
do
{
156
reg_val = sep_read_reg(dev,
HW_SRAM_DATA_READY_REG_ADDR
);
157
}
while
(!(reg_val & 1));
158
}
159
160
161
#endif
Generated on Thu Jan 10 2013 14:31:28 for Linux Kernel by
1.8.2