diff options
Diffstat (limited to 'drivers/usb/wusbcore/wusbhc.h')
-rw-r--r-- | drivers/usb/wusbcore/wusbhc.h | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/drivers/usb/wusbcore/wusbhc.h b/drivers/usb/wusbcore/wusbhc.h index d0c132434f1b..797c2453a35b 100644 --- a/drivers/usb/wusbcore/wusbhc.h +++ b/drivers/usb/wusbcore/wusbhc.h | |||
@@ -64,6 +64,13 @@ | |||
64 | #include <linux/uwb.h> | 64 | #include <linux/uwb.h> |
65 | #include <linux/usb/wusb.h> | 65 | #include <linux/usb/wusb.h> |
66 | 66 | ||
67 | /* | ||
68 | * Time from a WUSB channel stop request to the last transmitted MMC. | ||
69 | * | ||
70 | * This needs to be > 4.096 ms in case no MMCs can be transmitted in | ||
71 | * zone 0. | ||
72 | */ | ||
73 | #define WUSB_CHANNEL_STOP_DELAY_MS 8 | ||
67 | 74 | ||
68 | /** | 75 | /** |
69 | * Wireless USB device | 76 | * Wireless USB device |
@@ -147,7 +154,6 @@ struct wusb_port { | |||
147 | u16 status; | 154 | u16 status; |
148 | u16 change; | 155 | u16 change; |
149 | struct wusb_dev *wusb_dev; /* connected device's info */ | 156 | struct wusb_dev *wusb_dev; /* connected device's info */ |
150 | unsigned reset_count; | ||
151 | u32 ptk_tkid; | 157 | u32 ptk_tkid; |
152 | }; | 158 | }; |
153 | 159 | ||
@@ -198,21 +204,18 @@ struct wusb_port { | |||
198 | * @mmcies_max Max number of Information Elements this HC can send | 204 | * @mmcies_max Max number of Information Elements this HC can send |
199 | * in its MMC. Read-only. | 205 | * in its MMC. Read-only. |
200 | * | 206 | * |
207 | * @start Start the WUSB channel. | ||
208 | * | ||
209 | * @stop Stop the WUSB channel after the specified number of | ||
210 | * milliseconds. Channel Stop IEs should be transmitted | ||
211 | * as required by [WUSB] 4.16.2.1. | ||
212 | * | ||
201 | * @mmcie_add HC specific operation (WHCI or HWA) for adding an | 213 | * @mmcie_add HC specific operation (WHCI or HWA) for adding an |
202 | * MMCIE. | 214 | * MMCIE. |
203 | * | 215 | * |
204 | * @mmcie_rm HC specific operation (WHCI or HWA) for removing an | 216 | * @mmcie_rm HC specific operation (WHCI or HWA) for removing an |
205 | * MMCIE. | 217 | * MMCIE. |
206 | * | 218 | * |
207 | * @enc_types Array which describes the encryptions methods | ||
208 | * supported by the host as described in WUSB1.0 -- | ||
209 | * one entry per supported method. As of WUSB1.0 there | ||
210 | * is only four methods, we make space for eight just in | ||
211 | * case they decide to add some more (and pray they do | ||
212 | * it in sequential order). if 'enc_types[enc_method] | ||
213 | * != 0', then it is supported by the host. enc_method | ||
214 | * is USB_ENC_TYPE*. | ||
215 | * | ||
216 | * @set_ptk: Set the PTK and enable encryption for a device. Or, if | 219 | * @set_ptk: Set the PTK and enable encryption for a device. Or, if |
217 | * the supplied key is NULL, disable encryption for that | 220 | * the supplied key is NULL, disable encryption for that |
218 | * device. | 221 | * device. |
@@ -249,7 +252,8 @@ struct wusbhc { | |||
249 | struct uwb_pal pal; | 252 | struct uwb_pal pal; |
250 | 253 | ||
251 | unsigned trust_timeout; /* in jiffies */ | 254 | unsigned trust_timeout; /* in jiffies */ |
252 | struct wuie_host_info *wuie_host_info; /* Includes CHID */ | 255 | struct wusb_ckhdid chid; |
256 | struct wuie_host_info *wuie_host_info; | ||
253 | 257 | ||
254 | struct mutex mutex; /* locks everything else */ | 258 | struct mutex mutex; /* locks everything else */ |
255 | u16 cluster_id; /* Wireless USB Cluster ID */ | 259 | u16 cluster_id; /* Wireless USB Cluster ID */ |
@@ -269,7 +273,7 @@ struct wusbhc { | |||
269 | u8 mmcies_max; | 273 | u8 mmcies_max; |
270 | /* FIXME: make wusbhc_ops? */ | 274 | /* FIXME: make wusbhc_ops? */ |
271 | int (*start)(struct wusbhc *wusbhc); | 275 | int (*start)(struct wusbhc *wusbhc); |
272 | void (*stop)(struct wusbhc *wusbhc); | 276 | void (*stop)(struct wusbhc *wusbhc, int delay); |
273 | int (*mmcie_add)(struct wusbhc *wusbhc, u8 interval, u8 repeat_cnt, | 277 | int (*mmcie_add)(struct wusbhc *wusbhc, u8 interval, u8 repeat_cnt, |
274 | u8 handle, struct wuie_hdr *wuie); | 278 | u8 handle, struct wuie_hdr *wuie); |
275 | int (*mmcie_rm)(struct wusbhc *wusbhc, u8 handle); | 279 | int (*mmcie_rm)(struct wusbhc *wusbhc, u8 handle); |
@@ -373,20 +377,17 @@ static inline void wusbhc_put(struct wusbhc *wusbhc) | |||
373 | usb_put_hcd(&wusbhc->usb_hcd); | 377 | usb_put_hcd(&wusbhc->usb_hcd); |
374 | } | 378 | } |
375 | 379 | ||
376 | int wusbhc_start(struct wusbhc *wusbhc, const struct wusb_ckhdid *chid); | 380 | int wusbhc_start(struct wusbhc *wusbhc); |
377 | void wusbhc_stop(struct wusbhc *wusbhc); | 381 | void wusbhc_stop(struct wusbhc *wusbhc); |
378 | extern int wusbhc_chid_set(struct wusbhc *, const struct wusb_ckhdid *); | 382 | extern int wusbhc_chid_set(struct wusbhc *, const struct wusb_ckhdid *); |
379 | 383 | ||
380 | /* Device connect handling */ | 384 | /* Device connect handling */ |
381 | extern int wusbhc_devconnect_create(struct wusbhc *); | 385 | extern int wusbhc_devconnect_create(struct wusbhc *); |
382 | extern void wusbhc_devconnect_destroy(struct wusbhc *); | 386 | extern void wusbhc_devconnect_destroy(struct wusbhc *); |
383 | extern int wusbhc_devconnect_start(struct wusbhc *wusbhc, | 387 | extern int wusbhc_devconnect_start(struct wusbhc *wusbhc); |
384 | const struct wusb_ckhdid *chid); | ||
385 | extern void wusbhc_devconnect_stop(struct wusbhc *wusbhc); | 388 | extern void wusbhc_devconnect_stop(struct wusbhc *wusbhc); |
386 | extern int wusbhc_devconnect_auth(struct wusbhc *, u8); | ||
387 | extern void wusbhc_handle_dn(struct wusbhc *, u8 srcaddr, | 389 | extern void wusbhc_handle_dn(struct wusbhc *, u8 srcaddr, |
388 | struct wusb_dn_hdr *dn_hdr, size_t size); | 390 | struct wusb_dn_hdr *dn_hdr, size_t size); |
389 | extern int wusbhc_dev_reset(struct wusbhc *wusbhc, u8 port); | ||
390 | extern void __wusbhc_dev_disable(struct wusbhc *wusbhc, u8 port); | 391 | extern void __wusbhc_dev_disable(struct wusbhc *wusbhc, u8 port); |
391 | extern int wusb_usb_ncb(struct notifier_block *nb, unsigned long val, | 392 | extern int wusb_usb_ncb(struct notifier_block *nb, unsigned long val, |
392 | void *priv); | 393 | void *priv); |
@@ -432,6 +433,7 @@ extern void wusb_dev_sec_rm(struct wusb_dev *) ; | |||
432 | extern int wusb_dev_4way_handshake(struct wusbhc *, struct wusb_dev *, | 433 | extern int wusb_dev_4way_handshake(struct wusbhc *, struct wusb_dev *, |
433 | struct wusb_ckhdid *ck); | 434 | struct wusb_ckhdid *ck); |
434 | void wusbhc_gtk_rekey(struct wusbhc *wusbhc); | 435 | void wusbhc_gtk_rekey(struct wusbhc *wusbhc); |
436 | int wusb_dev_update_address(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev); | ||
435 | 437 | ||
436 | 438 | ||
437 | /* WUSB Cluster ID handling */ | 439 | /* WUSB Cluster ID handling */ |