diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-17 16:15:55 -0500 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-17 16:15:55 -0500 |
commit | 8dea78da5cee153b8af9c07a2745f6c55057fe12 (patch) | |
tree | a8f4d49d63b1ecc92f2fddceba0655b2472c5bd9 /include/linux/phonet.h | |
parent | 406089d01562f1e2bf9f089fd7637009ebaad589 (diff) |
Patched in Tegra support.
Diffstat (limited to 'include/linux/phonet.h')
-rw-r--r-- | include/linux/phonet.h | 159 |
1 files changed, 158 insertions, 1 deletions
diff --git a/include/linux/phonet.h b/include/linux/phonet.h index f691b04fc5c..6fb13841db4 100644 --- a/include/linux/phonet.h +++ b/include/linux/phonet.h | |||
@@ -19,11 +19,166 @@ | |||
19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA |
20 | * 02110-1301 USA | 20 | * 02110-1301 USA |
21 | */ | 21 | */ |
22 | |||
22 | #ifndef LINUX_PHONET_H | 23 | #ifndef LINUX_PHONET_H |
23 | #define LINUX_PHONET_H | 24 | #define LINUX_PHONET_H |
24 | 25 | ||
25 | #include <uapi/linux/phonet.h> | 26 | #include <linux/types.h> |
27 | |||
28 | /* Automatic protocol selection */ | ||
29 | #define PN_PROTO_TRANSPORT 0 | ||
30 | /* Phonet datagram socket */ | ||
31 | #define PN_PROTO_PHONET 1 | ||
32 | /* Phonet pipe */ | ||
33 | #define PN_PROTO_PIPE 2 | ||
34 | #define PHONET_NPROTO 3 | ||
35 | |||
36 | /* Socket options for SOL_PNPIPE level */ | ||
37 | #define PNPIPE_ENCAP 1 | ||
38 | #define PNPIPE_IFINDEX 2 | ||
39 | #define PNPIPE_HANDLE 3 | ||
40 | |||
41 | #define PNADDR_ANY 0 | ||
42 | #define PNADDR_BROADCAST 0xFC | ||
43 | #define PNPORT_RESOURCE_ROUTING 0 | ||
44 | |||
45 | /* Values for PNPIPE_ENCAP option */ | ||
46 | #define PNPIPE_ENCAP_NONE 0 | ||
47 | #define PNPIPE_ENCAP_IP 1 | ||
48 | |||
49 | /* ioctls */ | ||
50 | #define SIOCPNGETOBJECT (SIOCPROTOPRIVATE + 0) | ||
51 | #define SIOCPNADDRESOURCE (SIOCPROTOPRIVATE + 14) | ||
52 | #define SIOCPNDELRESOURCE (SIOCPROTOPRIVATE + 15) | ||
53 | |||
54 | /* Phonet protocol header */ | ||
55 | struct phonethdr { | ||
56 | __u8 pn_rdev; | ||
57 | __u8 pn_sdev; | ||
58 | __u8 pn_res; | ||
59 | __be16 pn_length; | ||
60 | __u8 pn_robj; | ||
61 | __u8 pn_sobj; | ||
62 | } __attribute__((packed)); | ||
63 | |||
64 | /* Common Phonet payload header */ | ||
65 | struct phonetmsg { | ||
66 | __u8 pn_trans_id; /* transaction ID */ | ||
67 | __u8 pn_msg_id; /* message type */ | ||
68 | union { | ||
69 | struct { | ||
70 | __u8 pn_submsg_id; /* message subtype */ | ||
71 | __u8 pn_data[5]; | ||
72 | } base; | ||
73 | struct { | ||
74 | __u16 pn_e_res_id; /* extended resource ID */ | ||
75 | __u8 pn_e_submsg_id; /* message subtype */ | ||
76 | __u8 pn_e_data[3]; | ||
77 | } ext; | ||
78 | } pn_msg_u; | ||
79 | }; | ||
80 | #define PN_COMMON_MESSAGE 0xF0 | ||
81 | #define PN_COMMGR 0x10 | ||
82 | #define PN_PREFIX 0xE0 /* resource for extended messages */ | ||
83 | #define pn_submsg_id pn_msg_u.base.pn_submsg_id | ||
84 | #define pn_e_submsg_id pn_msg_u.ext.pn_e_submsg_id | ||
85 | #define pn_e_res_id pn_msg_u.ext.pn_e_res_id | ||
86 | #define pn_data pn_msg_u.base.pn_data | ||
87 | #define pn_e_data pn_msg_u.ext.pn_e_data | ||
88 | |||
89 | /* data for unreachable errors */ | ||
90 | #define PN_COMM_SERVICE_NOT_IDENTIFIED_RESP 0x01 | ||
91 | #define PN_COMM_ISA_ENTITY_NOT_REACHABLE_RESP 0x14 | ||
92 | #define pn_orig_msg_id pn_data[0] | ||
93 | #define pn_status pn_data[1] | ||
94 | #define pn_e_orig_msg_id pn_e_data[0] | ||
95 | #define pn_e_status pn_e_data[1] | ||
96 | |||
97 | /* Phonet socket address structure */ | ||
98 | struct sockaddr_pn { | ||
99 | sa_family_t spn_family; | ||
100 | __u8 spn_obj; | ||
101 | __u8 spn_dev; | ||
102 | __u8 spn_resource; | ||
103 | __u8 spn_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - 3]; | ||
104 | } __attribute__((packed)); | ||
105 | |||
106 | /* Well known address */ | ||
107 | #define PN_DEV_PC 0x10 | ||
108 | |||
109 | static inline __u16 pn_object(__u8 addr, __u16 port) | ||
110 | { | ||
111 | return (addr << 8) | (port & 0x3ff); | ||
112 | } | ||
26 | 113 | ||
114 | static inline __u8 pn_obj(__u16 handle) | ||
115 | { | ||
116 | return handle & 0xff; | ||
117 | } | ||
118 | |||
119 | static inline __u8 pn_dev(__u16 handle) | ||
120 | { | ||
121 | return handle >> 8; | ||
122 | } | ||
123 | |||
124 | static inline __u16 pn_port(__u16 handle) | ||
125 | { | ||
126 | return handle & 0x3ff; | ||
127 | } | ||
128 | |||
129 | static inline __u8 pn_addr(__u16 handle) | ||
130 | { | ||
131 | return (handle >> 8) & 0xfc; | ||
132 | } | ||
133 | |||
134 | static inline void pn_sockaddr_set_addr(struct sockaddr_pn *spn, __u8 addr) | ||
135 | { | ||
136 | spn->spn_dev &= 0x03; | ||
137 | spn->spn_dev |= addr & 0xfc; | ||
138 | } | ||
139 | |||
140 | static inline void pn_sockaddr_set_port(struct sockaddr_pn *spn, __u16 port) | ||
141 | { | ||
142 | spn->spn_dev &= 0xfc; | ||
143 | spn->spn_dev |= (port >> 8) & 0x03; | ||
144 | spn->spn_obj = port & 0xff; | ||
145 | } | ||
146 | |||
147 | static inline void pn_sockaddr_set_object(struct sockaddr_pn *spn, | ||
148 | __u16 handle) | ||
149 | { | ||
150 | spn->spn_dev = pn_dev(handle); | ||
151 | spn->spn_obj = pn_obj(handle); | ||
152 | } | ||
153 | |||
154 | static inline void pn_sockaddr_set_resource(struct sockaddr_pn *spn, | ||
155 | __u8 resource) | ||
156 | { | ||
157 | spn->spn_resource = resource; | ||
158 | } | ||
159 | |||
160 | static inline __u8 pn_sockaddr_get_addr(const struct sockaddr_pn *spn) | ||
161 | { | ||
162 | return spn->spn_dev & 0xfc; | ||
163 | } | ||
164 | |||
165 | static inline __u16 pn_sockaddr_get_port(const struct sockaddr_pn *spn) | ||
166 | { | ||
167 | return ((spn->spn_dev & 0x03) << 8) | spn->spn_obj; | ||
168 | } | ||
169 | |||
170 | static inline __u16 pn_sockaddr_get_object(const struct sockaddr_pn *spn) | ||
171 | { | ||
172 | return pn_object(spn->spn_dev, spn->spn_obj); | ||
173 | } | ||
174 | |||
175 | static inline __u8 pn_sockaddr_get_resource(const struct sockaddr_pn *spn) | ||
176 | { | ||
177 | return spn->spn_resource; | ||
178 | } | ||
179 | |||
180 | /* Phonet device ioctl requests */ | ||
181 | #ifdef __KERNEL__ | ||
27 | #define SIOCPNGAUTOCONF (SIOCDEVPRIVATE + 0) | 182 | #define SIOCPNGAUTOCONF (SIOCDEVPRIVATE + 0) |
28 | 183 | ||
29 | struct if_phonet_autoconf { | 184 | struct if_phonet_autoconf { |
@@ -37,4 +192,6 @@ struct if_phonet_req { | |||
37 | } ifr_ifru; | 192 | } ifr_ifru; |
38 | }; | 193 | }; |
39 | #define ifr_phonet_autoconf ifr_ifru.ifru_phonet_autoconf | 194 | #define ifr_phonet_autoconf ifr_ifru.ifru_phonet_autoconf |
195 | #endif /* __KERNEL__ */ | ||
196 | |||
40 | #endif | 197 | #endif |