1*b86003c4SMarkus Pfeiffer /* $FreeBSD: head/sys/dev/usb/usb_request.h 250207 2013-05-03 11:10:04Z hselasky $ */ 212bd3c8bSSascha Wildner /*- 312bd3c8bSSascha Wildner * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. 412bd3c8bSSascha Wildner * 512bd3c8bSSascha Wildner * Redistribution and use in source and binary forms, with or without 612bd3c8bSSascha Wildner * modification, are permitted provided that the following conditions 712bd3c8bSSascha Wildner * are met: 812bd3c8bSSascha Wildner * 1. Redistributions of source code must retain the above copyright 912bd3c8bSSascha Wildner * notice, this list of conditions and the following disclaimer. 1012bd3c8bSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 1112bd3c8bSSascha Wildner * notice, this list of conditions and the following disclaimer in the 1212bd3c8bSSascha Wildner * documentation and/or other materials provided with the distribution. 1312bd3c8bSSascha Wildner * 1412bd3c8bSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1512bd3c8bSSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1612bd3c8bSSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1712bd3c8bSSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1812bd3c8bSSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1912bd3c8bSSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2012bd3c8bSSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2112bd3c8bSSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2212bd3c8bSSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2312bd3c8bSSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2412bd3c8bSSascha Wildner * SUCH DAMAGE. 2512bd3c8bSSascha Wildner */ 2612bd3c8bSSascha Wildner 2712bd3c8bSSascha Wildner #ifndef _USB_REQUEST_H_ 2812bd3c8bSSascha Wildner #define _USB_REQUEST_H_ 2912bd3c8bSSascha Wildner 3012bd3c8bSSascha Wildner struct usb_process; 3112bd3c8bSSascha Wildner 3212bd3c8bSSascha Wildner usb_error_t usbd_req_clear_hub_feature(struct usb_device *udev, 33722d05c3SSascha Wildner struct lock *lock, uint16_t sel); 3412bd3c8bSSascha Wildner usb_error_t usbd_req_clear_port_feature(struct usb_device *udev, 35722d05c3SSascha Wildner struct lock *lock, uint8_t port, uint16_t sel); 3612bd3c8bSSascha Wildner usb_error_t usbd_req_get_alt_interface_no(struct usb_device *udev, 37722d05c3SSascha Wildner struct lock *lock, uint8_t *alt_iface_no, 3812bd3c8bSSascha Wildner uint8_t iface_index); 39722d05c3SSascha Wildner usb_error_t usbd_req_get_config(struct usb_device *udev, struct lock *lock, 4012bd3c8bSSascha Wildner uint8_t *pconf); 4112bd3c8bSSascha Wildner usb_error_t usbd_req_get_descriptor_ptr(struct usb_device *udev, 4212bd3c8bSSascha Wildner struct usb_config_descriptor **ppcd, uint16_t wValue); 43722d05c3SSascha Wildner usb_error_t usbd_req_get_config_desc(struct usb_device *udev, struct lock *lock, 4412bd3c8bSSascha Wildner struct usb_config_descriptor *d, uint8_t conf_index); 4512bd3c8bSSascha Wildner usb_error_t usbd_req_get_config_desc_full(struct usb_device *udev, 46722d05c3SSascha Wildner struct lock *lock, struct usb_config_descriptor **ppcd, 4757bed822SMarkus Pfeiffer uint8_t conf_index); 48722d05c3SSascha Wildner usb_error_t usbd_req_get_desc(struct usb_device *udev, struct lock *lock, 4912bd3c8bSSascha Wildner uint16_t *actlen, void *desc, uint16_t min_len, 5012bd3c8bSSascha Wildner uint16_t max_len, uint16_t id, uint8_t type, 5112bd3c8bSSascha Wildner uint8_t index, uint8_t retries); 52722d05c3SSascha Wildner usb_error_t usbd_req_get_device_desc(struct usb_device *udev, struct lock *lock, 5312bd3c8bSSascha Wildner struct usb_device_descriptor *d); 5412bd3c8bSSascha Wildner usb_error_t usbd_req_get_device_status(struct usb_device *udev, 55722d05c3SSascha Wildner struct lock *lock, struct usb_status *st); 5612bd3c8bSSascha Wildner usb_error_t usbd_req_get_hub_descriptor(struct usb_device *udev, 57722d05c3SSascha Wildner struct lock *lock, struct usb_hub_descriptor *hd, 5812bd3c8bSSascha Wildner uint8_t nports); 5912bd3c8bSSascha Wildner usb_error_t usbd_req_get_ss_hub_descriptor(struct usb_device *udev, 60722d05c3SSascha Wildner struct lock *lock, struct usb_hub_ss_descriptor *hd, 6112bd3c8bSSascha Wildner uint8_t nports); 62722d05c3SSascha Wildner usb_error_t usbd_req_get_hub_status(struct usb_device *udev, struct lock *lock, 6312bd3c8bSSascha Wildner struct usb_hub_status *st); 64722d05c3SSascha Wildner usb_error_t usbd_req_get_port_status(struct usb_device *udev, struct lock *lock, 6512bd3c8bSSascha Wildner struct usb_port_status *ps, uint8_t port); 66722d05c3SSascha Wildner usb_error_t usbd_req_reset_port(struct usb_device *udev, struct lock *lock, 6712bd3c8bSSascha Wildner uint8_t port); 6812bd3c8bSSascha Wildner usb_error_t usbd_req_warm_reset_port(struct usb_device *udev, 69722d05c3SSascha Wildner struct lock *lock, uint8_t port); 70722d05c3SSascha Wildner usb_error_t usbd_req_set_address(struct usb_device *udev, struct lock *lock, 7112bd3c8bSSascha Wildner uint16_t addr); 72722d05c3SSascha Wildner usb_error_t usbd_req_set_hub_feature(struct usb_device *udev, struct lock *lock, 7312bd3c8bSSascha Wildner uint16_t sel); 7412bd3c8bSSascha Wildner usb_error_t usbd_req_set_port_feature(struct usb_device *udev, 75722d05c3SSascha Wildner struct lock *lock, uint8_t port, uint16_t sel); 76722d05c3SSascha Wildner usb_error_t usbd_setup_device_desc(struct usb_device *udev, struct lock *lock); 77722d05c3SSascha Wildner usb_error_t usbd_req_re_enumerate(struct usb_device *udev, struct lock *lock); 7812bd3c8bSSascha Wildner usb_error_t usbd_req_clear_device_feature(struct usb_device *udev, 79722d05c3SSascha Wildner struct lock *lock, uint16_t sel); 8012bd3c8bSSascha Wildner usb_error_t usbd_req_set_device_feature(struct usb_device *udev, 81722d05c3SSascha Wildner struct lock *lock, uint16_t sel); 8212bd3c8bSSascha Wildner usb_error_t usbd_req_set_hub_u1_timeout(struct usb_device *udev, 83722d05c3SSascha Wildner struct lock *lock, uint8_t port, uint8_t timeout); 8412bd3c8bSSascha Wildner usb_error_t usbd_req_set_hub_u2_timeout(struct usb_device *udev, 85722d05c3SSascha Wildner struct lock *lock, uint8_t port, uint8_t timeout); 8612bd3c8bSSascha Wildner usb_error_t usbd_req_set_hub_depth(struct usb_device *udev, 87722d05c3SSascha Wildner struct lock *lock, uint16_t depth); 88722d05c3SSascha Wildner usb_error_t usbd_req_reset_tt(struct usb_device *udev, struct lock *lock, 8912bd3c8bSSascha Wildner uint8_t port); 90722d05c3SSascha Wildner usb_error_t usbd_req_clear_tt_buffer(struct usb_device *udev, struct lock *lock, 9112bd3c8bSSascha Wildner uint8_t port, uint8_t addr, uint8_t type, uint8_t endpoint); 9212bd3c8bSSascha Wildner usb_error_t usbd_req_set_port_link_state(struct usb_device *udev, 93722d05c3SSascha Wildner struct lock *lock, uint8_t port, uint8_t link_state); 945e41ab93SMarkus Pfeiffer usb_error_t usbd_req_set_lpm_info(struct usb_device *udev, struct lock *lock, 955e41ab93SMarkus Pfeiffer uint8_t port, uint8_t besl, uint8_t addr, uint8_t rwe); 9612bd3c8bSSascha Wildner 9757bed822SMarkus Pfeiffer void * usbd_alloc_config_desc(struct usb_device *, uint32_t); 9857bed822SMarkus Pfeiffer void usbd_free_config_desc(struct usb_device *, void *); 9957bed822SMarkus Pfeiffer 10012bd3c8bSSascha Wildner #endif /* _USB_REQUEST_H_ */ 101