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
include
net
caif
cfctrl.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) ST-Ericsson AB 2010
3
* Author: Sjur Brendeland/
[email protected]
4
* License terms: GNU General Public License (GPL) version 2
5
*/
6
7
#ifndef CFCTRL_H_
8
#define CFCTRL_H_
9
#include <
net/caif/caif_layer.h
>
10
#include <
net/caif/cfsrvl.h
>
11
12
/* CAIF Control packet commands */
13
enum
cfctrl_cmd
{
14
CFCTRL_CMD_LINK_SETUP
= 0,
15
CFCTRL_CMD_LINK_DESTROY
= 1,
16
CFCTRL_CMD_LINK_ERR
= 2,
17
CFCTRL_CMD_ENUM
= 3,
18
CFCTRL_CMD_SLEEP
= 4,
19
CFCTRL_CMD_WAKE
= 5,
20
CFCTRL_CMD_LINK_RECONF
= 6,
21
CFCTRL_CMD_START_REASON
= 7,
22
CFCTRL_CMD_RADIO_SET
= 8,
23
CFCTRL_CMD_MODEM_SET
= 9,
24
CFCTRL_CMD_MASK
= 0xf
25
};
26
27
/* Channel types */
28
enum
cfctrl_srv
{
29
CFCTRL_SRV_DECM
= 0,
30
CFCTRL_SRV_VEI
= 1,
31
CFCTRL_SRV_VIDEO
= 2,
32
CFCTRL_SRV_DBG
= 3,
33
CFCTRL_SRV_DATAGRAM
= 4,
34
CFCTRL_SRV_RFM
= 5,
35
CFCTRL_SRV_UTIL
= 6,
36
CFCTRL_SRV_MASK
= 0xf
37
};
38
39
#define CFCTRL_RSP_BIT 0x20
40
#define CFCTRL_ERR_BIT 0x10
41
42
struct
cfctrl_rsp
{
43
void
(*
linksetup_rsp
)(
struct
cflayer
*layer,
u8
linkid,
44
enum
cfctrl_srv
serv,
u8
phyid,
45
struct
cflayer
*adapt_layer);
46
void
(*
linkdestroy_rsp
)(
struct
cflayer
*layer,
u8
linkid);
47
void
(*
linkerror_ind
)(
void
);
48
void
(*
enum_rsp
)(
void
);
49
void
(*
sleep_rsp
)(
void
);
50
void
(*
wake_rsp
)(
void
);
51
void
(*
restart_rsp
)(
void
);
52
void
(*
radioset_rsp
)(
void
);
53
void
(*
reject_rsp
)(
struct
cflayer
*layer,
u8
linkid,
54
struct
cflayer
*client_layer);
55
};
56
57
/* Link Setup Parameters for CAIF-Links. */
58
struct
cfctrl_link_param
{
59
enum
cfctrl_srv
linktype
;
/* (T3,T0) Type of Channel */
60
u8
priority
;
/* (P4,P0) Priority of the channel */
61
u8
phyid
;
/* (U2-U0) Physical interface to connect */
62
u8
endpoint
;
/* (E1,E0) Endpoint for data channels */
63
u8
chtype
;
/* (H1,H0) Channel-Type, applies to
64
* VEI, DEBUG */
65
union
{
66
struct
{
67
u8
connid
;
/* (D7,D0) Video LinkId */
68
}
video
;
69
70
struct
{
71
u32
connid
;
/* (N31,Ngit0) Connection ID used
72
* for Datagram */
73
}
datagram
;
74
75
struct
{
76
u32
connid
;
/* Connection ID used for RFM */
77
char
volume
[20];
/* Volume to mount for RFM */
78
}
rfm
;
/* Configuration for RFM */
79
80
struct
{
81
u16
fifosize_kb
;
/* Psock FIFO size in KB */
82
u16
fifosize_bufs
;
/* Psock # signal buffers */
83
char
name
[16];
/* Name of the PSOCK service */
84
u8
params
[255];
/* Link setup Parameters> */
85
u16
paramlen
;
/* Length of Link Setup
86
* Parameters */
87
}
utility
;
/* Configuration for Utility Links (Psock) */
88
}
u
;
89
};
90
91
/* This structure is used internally in CFCTRL */
92
struct
cfctrl_request_info
{
93
int
sequence_no
;
94
enum
cfctrl_cmd
cmd
;
95
u8
channel_id
;
96
struct
cfctrl_link_param
param
;
97
struct
cflayer
*
client_layer
;
98
struct
list_head
list
;
99
};
100
101
struct
cfctrl
{
102
struct
cfsrvl
serv
;
103
struct
cfctrl_rsp
res
;
104
atomic_t
req_seq_no
;
105
atomic_t
rsp_seq_no
;
106
struct
list_head
list
;
107
/* Protects from simultaneous access to first_req list */
108
spinlock_t
info_list_lock
;
109
#ifndef CAIF_NO_LOOP
110
u8
loop_linkid
;
111
int
loop_linkused
[256];
112
/* Protects simultaneous access to loop_linkid and loop_linkused */
113
spinlock_t
loop_linkid_lock
;
114
#endif
115
116
};
117
118
void
cfctrl_enum_req
(
struct
cflayer
*
cfctrl
,
u8
physlinkid);
119
int
cfctrl_linkup_request
(
struct
cflayer
*
cfctrl
,
120
struct
cfctrl_link_param
*
param
,
121
struct
cflayer
*user_layer);
122
int
cfctrl_linkdown_req
(
struct
cflayer
*
cfctrl
,
u8
linkid,
123
struct
cflayer
*
client
);
124
125
struct
cflayer
*
cfctrl_create
(
void
);
126
struct
cfctrl_rsp
*
cfctrl_get_respfuncs
(
struct
cflayer
*layer);
127
int
cfctrl_cancel_req
(
struct
cflayer
*layr,
struct
cflayer
*adap_layer);
128
void
cfctrl_remove
(
struct
cflayer
*layr);
129
130
#endif
/* CFCTRL_H_ */
Generated on Thu Jan 10 2013 14:53:02 for Linux Kernel by
1.8.2