• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/wusbcore/

Lines Matching refs:wusb_dev

11 static void wusb_dev_free(struct wusb_dev *wusb_dev)
13 if (wusb_dev) {
14 kfree(wusb_dev->set_gtk_req);
15 usb_free_urb(wusb_dev->set_gtk_urb);
16 kfree(wusb_dev);
20 static struct wusb_dev *wusb_dev_alloc(struct wusbhc *wusbhc)
22 struct wusb_dev *wusb_dev;
26 wusb_dev = kzalloc(sizeof(*wusb_dev), GFP_KERNEL);
27 if (wusb_dev == NULL)
30 wusb_dev->wusbhc = wusbhc;
32 INIT_WORK(&wusb_dev->devconnect_acked_work, wusbhc_devconnect_acked_work);
37 wusb_dev->set_gtk_urb = urb;
42 wusb_dev->set_gtk_req = req;
50 return wusb_dev;
52 wusb_dev_free(wusb_dev);
70 struct wusb_dev *dev_itr;
97 static struct wusb_dev *wusbhc_cack_add(struct wusbhc *wusbhc,
102 struct wusb_dev *wusb_dev;
108 list_for_each_entry(wusb_dev, &wusbhc->cack_list, cack_node)
109 if (!memcmp(&wusb_dev->cdid, &dnc->CDID,
110 sizeof(wusb_dev->cdid)))
111 return wusb_dev;
113 wusb_dev = wusb_dev_alloc(wusbhc);
114 if (wusb_dev == NULL)
116 wusb_dev_init(wusb_dev);
117 wusb_dev->cdid = dnc->CDID;
118 wusb_dev->port_idx = port_idx;
127 bitmap_fill(wusb_dev->availability.bm, UWB_NUM_MAS);
137 result = wusb_set_dev_addr(wusbhc, wusb_dev, dev_addr);
141 wusb_dev->entry_ts = jiffies;
142 list_add_tail(&wusb_dev->cack_node, &wusbhc->cack_list);
146 return wusb_dev;
154 static void wusbhc_cack_rm(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev)
156 list_del_init(&wusb_dev->cack_node);
164 void wusbhc_devconnect_acked(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev)
166 wusbhc_cack_rm(wusbhc, wusb_dev);
175 struct wusb_dev *wusb_dev = container_of(work, struct wusb_dev,
177 struct wusbhc *wusbhc = wusb_dev->wusbhc;
180 wusbhc_devconnect_acked(wusbhc, wusb_dev);
183 wusb_dev_put(wusb_dev);
192 struct wusb_dev *wusb_dev;
201 if (port->wusb_dev
202 && memcmp(&dnc->CDID, &port->wusb_dev->cdid, sizeof(dnc->CDID)) == 0)
229 wusb_dev = wusbhc_cack_add(wusbhc, dnc, pr_cdid, idx);
230 if (wusb_dev == NULL)
238 port->wusb_dev = wusb_dev;
265 * wusb_dev
270 struct wusb_dev *wusb_dev = port->wusb_dev;
276 if (wusb_dev) {
277 dev_dbg(wusbhc->dev, "disconnecting device from port %d\n", wusb_dev->port_idx);
278 if (!list_empty(&wusb_dev->cack_node))
279 list_del_init(&wusb_dev->cack_node);
281 wusb_dev_put(wusb_dev);
283 port->wusb_dev = NULL;
300 struct wusb_dev *wusb_dev;
313 wusb_dev = wusb_port->wusb_dev;
315 if (wusb_dev == NULL)
317 if (wusb_dev->usb_dev == NULL || !wusb_dev->usb_dev->authenticated)
320 if (time_after(jiffies, wusb_dev->entry_ts + tt)) {
322 wusb_dev->addr);
324 } else if (time_after(jiffies, wusb_dev->entry_ts + tt/2)) {
326 ie->bDeviceAddress[keep_alives++] = wusb_dev->addr;
356 * Find the wusb_dev from its device address.
362 static struct wusb_dev *wusbhc_find_dev_by_addr(struct wusbhc *wusbhc, u8 addr)
373 return wusb_port_by_idx(wusbhc, port)->wusb_dev;
378 struct wusb_dev *wusb_dev = wusb_port_by_idx(wusbhc, p)->wusb_dev;
379 if (wusb_dev && wusb_dev->addr == addr)
380 return wusb_dev;
393 static void wusbhc_handle_dn_alive(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev)
396 wusb_dev->entry_ts = jiffies;
451 static void wusbhc_handle_dn_disconnect(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev)
455 dev_info(dev, "DN DISCONNECT: device 0x%02x going down\n", wusb_dev->addr);
458 __wusbhc_dev_disconnect(wusbhc, wusb_port_by_idx(wusbhc, wusb_dev->port_idx));
480 struct wusb_dev *wusb_dev;
488 wusb_dev = wusbhc_find_dev_by_addr(wusbhc, srcaddr);
489 if (wusb_dev == NULL && dn_hdr->bType != WUSB_DN_CONNECT) {
500 wusbhc_handle_dn_alive(wusbhc, wusb_dev);
503 wusbhc_handle_dn_disconnect(wusbhc, wusb_dev);
542 struct wusb_dev *wusb_dev;
545 wusb_dev = wusb_port_by_idx(wusbhc, port_idx)->wusb_dev;
546 if (wusb_dev == NULL) {
559 ie->bDeviceAddress = wusb_dev->addr;
575 * @wusb_dev: referenced and unlocked
588 struct wusb_dev *wusb_dev,
624 if (cap_size != sizeof(*wusb_dev->wusb_cap_descr))
628 sizeof(*wusb_dev->wusb_cap_descr));
630 wusb_dev->wusb_cap_descr = itr;
648 * @wusb_dev: referenced and unlocked
656 * wusb_dev->wusb_cap_descr, which is what we'll need later on.
659 struct wusb_dev *wusb_dev)
696 result = wusb_dev_bos_grok(usb_dev, wusb_dev, bos, result);
699 wusb_dev->bos = bos;
705 wusb_dev->wusb_cap_descr = NULL;
709 static void wusb_dev_bos_rm(struct wusb_dev *wusb_dev)
711 kfree(wusb_dev->bos);
712 wusb_dev->wusb_cap_descr = NULL;
731 struct wusb_dev *wusb_dev;
745 wusb_dev = __wusb_dev_get_by_usb_dev(wusbhc, usb_dev);
748 if (wusb_dev == NULL)
750 wusb_dev->usb_dev = usb_get_dev(usb_dev);
751 usb_dev->wusb_dev = wusb_dev_get(wusb_dev);
752 result = wusb_dev_sec_add(wusbhc, usb_dev, wusb_dev);
757 /* Now query the device for it's BOS and attach it to wusb_dev */
758 result = wusb_dev_bos_add(usb_dev, wusb_dev);
763 result = wusb_dev_sysfs_add(wusbhc, usb_dev, wusb_dev);
767 wusb_dev_put(wusb_dev);
772 wusb_dev_sysfs_rm(wusb_dev);
774 wusb_dev_bos_rm(wusb_dev);
776 wusb_dev_sec_rm(wusb_dev);
791 struct wusb_dev *wusb_dev = usb_dev->wusb_dev;
796 wusb_dev_sysfs_rm(wusb_dev);
797 wusb_dev_bos_rm(wusb_dev);
798 wusb_dev_sec_rm(wusb_dev);
799 wusb_dev->usb_dev = NULL;
800 usb_dev->wusb_dev = NULL;
801 wusb_dev_put(wusb_dev);
837 * Return a referenced wusb_dev given a @wusbhc and @usb_dev
839 struct wusb_dev *__wusb_dev_get_by_usb_dev(struct wusbhc *wusbhc,
842 struct wusb_dev *wusb_dev;
847 wusb_dev = wusb_port_by_idx(wusbhc, port_idx)->wusb_dev;
848 if (wusb_dev != NULL) /* ops, device is gone */
849 wusb_dev_get(wusb_dev);
850 return wusb_dev;
856 struct wusb_dev *wusb_dev = container_of(_wusb_dev, struct wusb_dev, refcnt);
858 list_del_init(&wusb_dev->cack_node);
859 wusb_dev_free(wusb_dev);
934 if (wusbhc->port[i].wusb_dev)
948 * @wusb_dev: the WUSB device
951 int wusb_set_dev_addr(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev, u8 addr)
955 wusb_dev->addr = addr;
956 result = wusbhc->dev_info_set(wusbhc, wusb_dev);
959 "address\n", wusb_dev->port_idx);
962 wusb_dev->port_idx,
964 wusb_dev->addr);