Lines Matching refs:gadget
27 * struct usb_os_string - represents OS String to be reported by a gadget
43 * The code in this file is utility code, used to build a gadget driver
69 * NOTE: we try to help gadget drivers which might not be setting
94 * if we can't find any descriptors at all, then this gadget deserves to
134 * according to gadget speed.
135 * @g: pointer to the gadget
143 * endpoint according to gadget speed and saves it in the
272 * according to gadget speed.
273 * @g: pointer to the gadget
280 * endpoint according to gadget speed and saves it in the
300 * Context: single threaded during gadget setup
379 * usb_function_deactivate - prevent function and gadget enumeration
382 * Blocks response of the gadget driver to host enumeration by
407 status = usb_gadget_deactivate(cdev->gadget);
419 * usb_function_activate - allow function and gadget enumeration
423 * are delaying their activation, the gadget driver will respond to
442 status = usb_gadget_activate(cdev->gadget);
456 * Context: single threaded during gadget setup
505 struct usb_gadget *gadget = func->config->cdev->gadget;
508 if (!gadget->ops->func_wakeup)
525 return gadget->ops->func_wakeup(gadget, id);
554 /* Reset the rw bit if gadget is not capable of it */
616 struct usb_gadget *gadget = cdev->gadget;
622 if (gadget->speed >= USB_SPEED_SUPER)
623 speed = gadget->speed;
624 else if (gadget_is_dualspeed(gadget)) {
626 if (gadget->speed == USB_SPEED_HIGH)
679 struct usb_gadget *gadget = cdev->gadget;
686 if (gadget_is_dualspeed(gadget)) {
687 if (gadget->speed == USB_SPEED_HIGH)
689 if (gadget->speed == USB_SPEED_SUPER)
691 if (gadget->speed == USB_SPEED_SUPER_PLUS)
739 if (cdev->gadget->ops->get_config_params) {
740 cdev->gadget->ops->get_config_params(cdev->gadget,
765 if (cdev->gadget->lpm_capable) {
780 if (gadget_is_superspeed(cdev->gadget)) {
800 if (gadget_is_superspeed_plus(cdev->gadget)) {
806 if (cdev->gadget->max_ssp_rate == USB_SSP_GEN_2x2)
835 * Use 1 SSID if the gadget supports up to gen2x1 or not
839 * Use 1 SSID if the gadget supports up to gen1x2:
842 * Use 2 SSIDs if the gadget supports up to gen2x2:
853 if (cdev->gadget->max_ssp_rate == USB_SSP_GEN_2x1 ||
854 cdev->gadget->max_ssp_rate == USB_SSP_GEN_UNKNOWN)
921 qual->bMaxPacketSize0 = cdev->gadget->ep0->maxpacket;
950 struct usb_gadget *gadget = cdev->gadget;
953 unsigned power = gadget_is_otg(gadget) ? 8 : 100;
980 usb_speed_string(gadget->speed),
986 usb_gadget_set_state(gadget, USB_STATE_CONFIGURED);
1003 descriptors = function_descriptors(f, gadget->speed);
1043 if (gadget->speed < USB_SPEED_SUPER)
1049 usb_gadget_set_remote_wakeup(gadget, 1);
1051 usb_gadget_set_remote_wakeup(gadget, 0);
1054 usb_gadget_set_selfpowered(gadget);
1056 usb_gadget_clear_selfpowered(gadget);
1058 usb_gadget_vbus_draw(gadget, power);
1091 * @cdev: wraps the USB gadget
1094 * Context: single threaded during gadget setup
1124 status = usb_gadget_check_config(cdev->gadget);
1151 ? (gadget_is_dualspeed(cdev->gadget)
1167 usb_ep_autoconfig_reset(cdev->gadget);
1198 * @cdev: wraps the USB gadget
1372 * Context: single threaded during gadget setup
1400 * Context: single threaded during gadget setup
1480 * usb_gstrings_attach() - attach gadget strings to a cdev and assign ids
1545 * Context: single threaded during gadget setup
1606 ret = usb_ep_queue(cdev->gadget->ep0, req, gfp_flags);
1773 * housekeeping for the gadget function we're implementing. Most of
1777 composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
1779 struct usb_composite_dev *cdev = get_gadget_data(gadget);
1804 * gadget might need to intercept e.g. a control-OUT completion
1811 gadget->ep0->driver_data = cdev;
1832 cdev->gadget->ep0->maxpacket;
1833 if (gadget_is_superspeed(gadget)) {
1834 if (gadget->speed >= USB_SPEED_SUPER) {
1841 if (gadget->lpm_capable || cdev->use_webusb)
1851 if (!gadget_is_dualspeed(gadget) ||
1852 gadget->speed >= USB_SPEED_SUPER)
1859 if (!gadget_is_dualspeed(gadget) ||
1860 gadget->speed >= USB_SPEED_SUPER)
1875 if (gadget_is_superspeed(gadget) ||
1876 gadget->lpm_capable || cdev->use_webusb) {
1882 if (gadget_is_otg(gadget)) {
1895 if (gadget->otg_caps &&
1896 (gadget->otg_caps->otg_rev >= 0x0200))
1914 if (gadget_is_otg(gadget)) {
1915 if (gadget->a_hnp_support)
1917 else if (gadget->a_alt_hnp_support)
1982 if (gadget_is_otg(gadget) && gadget->hnp_polling_support &&
1987 *((u8 *)req->buf) = gadget->host_request_flag;
1999 if (!gadget_is_superspeed(gadget))
2033 if (!gadget_is_superspeed(gadget))
2284 composite_setup_complete(gadget->ep0, req);
2297 static void __composite_disconnect(struct usb_gadget *gadget)
2299 struct usb_composite_dev *cdev = get_gadget_data(gadget);
2314 void composite_disconnect(struct usb_gadget *gadget)
2316 usb_gadget_vbus_draw(gadget, 0);
2317 __composite_disconnect(gadget);
2320 void composite_reset(struct usb_gadget *gadget)
2327 usb_gadget_vbus_draw(gadget, 100);
2328 __composite_disconnect(gadget);
2336 struct usb_gadget *gadget = dev_to_usb_gadget(dev);
2337 struct usb_composite_dev *cdev = get_gadget_data(gadget);
2343 static void __composite_unbind(struct usb_gadget *gadget, bool unbind_driver)
2345 struct usb_composite_dev *cdev = get_gadget_data(gadget);
2372 set_gadget_data(gadget, NULL);
2375 static void composite_unbind(struct usb_gadget *gadget)
2377 __composite_unbind(gadget, true);
2421 struct usb_gadget *gadget = cdev->gadget;
2425 cdev->req = usb_ep_alloc_request(gadget->ep0, GFP_KERNEL);
2433 ret = device_create_file(&gadget->dev, &dev_attr_suspended);
2439 gadget->ep0->driver_data = cdev;
2449 usb_gadget_set_selfpowered(gadget);
2455 usb_ep_autoconfig_reset(gadget);
2460 usb_ep_free_request(gadget->ep0, cdev->req);
2500 usb_ep_dequeue(cdev->gadget->ep0, cdev->os_desc_req);
2504 usb_ep_free_request(cdev->gadget->ep0, cdev->os_desc_req);
2509 usb_ep_dequeue(cdev->gadget->ep0, cdev->req);
2513 usb_ep_free_request(cdev->gadget->ep0, cdev->req);
2517 device_remove_file(&cdev->gadget->dev, &dev_attr_suspended);
2529 &cdev->gadget->ep_list, ep_list) {
2535 static int composite_bind(struct usb_gadget *gadget,
2547 cdev->gadget = gadget;
2548 set_gadget_data(gadget, cdev);
2556 /* composite gadget needs to assign strings for whole device (like
2565 status = composite_os_desc_req_prepare(cdev, gadget->ep0);
2580 __composite_unbind(gadget, false);
2586 void composite_suspend(struct usb_gadget *gadget)
2588 struct usb_composite_dev *cdev = get_gadget_data(gadget);
2606 usb_gadget_set_selfpowered(gadget);
2607 usb_gadget_vbus_draw(gadget, 2);
2610 void composite_resume(struct usb_gadget *gadget)
2612 struct usb_composite_dev *cdev = get_gadget_data(gadget);
2635 if (gadget->speed < USB_SPEED_SUPER)
2641 usb_gadget_clear_selfpowered(gadget);
2643 usb_gadget_vbus_draw(gadget, maxpower);
2647 usb_gadget_vbus_draw(gadget, maxpower);
2675 * Context: single threaded during gadget setup
2682 * On successful return, the gadget is ready to respond to requests from
2751 composite_setup_complete(cdev->gadget->ep0, req);
2759 static char *composite_default_mfr(struct usb_gadget *gadget)
2762 init_utsname()->release, gadget->name);
2791 cdev->def_manufacturer = composite_default_mfr(cdev->gadget);