112bd3c8bSSascha Wildner#- 212bd3c8bSSascha Wildner# Copyright (c) 2008 Hans Petter Selasky. All rights reserved. 312bd3c8bSSascha Wildner# 412bd3c8bSSascha Wildner# Redistribution and use in source and binary forms, with or without 512bd3c8bSSascha Wildner# modification, are permitted provided that the following conditions 612bd3c8bSSascha Wildner# are met: 712bd3c8bSSascha Wildner# 1. Redistributions of source code must retain the above copyright 812bd3c8bSSascha Wildner# notice, this list of conditions and the following disclaimer, 912bd3c8bSSascha Wildner# without modification, immediately at the beginning of the file. 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# 3. The name of the author may not be used to endorse or promote products 1412bd3c8bSSascha Wildner# derived from this software without specific prior written permission. 1512bd3c8bSSascha Wildner# 1612bd3c8bSSascha Wildner# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1712bd3c8bSSascha Wildner# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1812bd3c8bSSascha Wildner# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1912bd3c8bSSascha Wildner# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2012bd3c8bSSascha Wildner# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2112bd3c8bSSascha Wildner# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2212bd3c8bSSascha Wildner# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2312bd3c8bSSascha Wildner# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2412bd3c8bSSascha Wildner# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2512bd3c8bSSascha Wildner# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2612bd3c8bSSascha Wildner# 27*45f67c02SMarkus Pfeiffer# $FreeBSD: head/sys/dev/usb/usb_if.m 228483 2011-12-14 00:28:54Z hselasky $ 2812bd3c8bSSascha Wildner# 2912bd3c8bSSascha Wildner 3012bd3c8bSSascha Wildner# USB interface description 3112bd3c8bSSascha Wildner# 3212bd3c8bSSascha Wildner 3312bd3c8bSSascha Wildner#include <sys/bus.h> 3412bd3c8bSSascha Wildner 3512bd3c8bSSascha WildnerINTERFACE usb; 3612bd3c8bSSascha Wildner 3712bd3c8bSSascha Wildner# The device received a control request 3812bd3c8bSSascha Wildner# 3912bd3c8bSSascha Wildner# The value pointed to by "pstate" can be updated to 4012bd3c8bSSascha Wildner# "USB_HR_COMPLETE_OK" to indicate that the control 4112bd3c8bSSascha Wildner# read transfer is complete, in case of short USB 4212bd3c8bSSascha Wildner# control transfers. 4312bd3c8bSSascha Wildner# 4412bd3c8bSSascha Wildner# Return values: 4512bd3c8bSSascha Wildner# 0: Success 4612bd3c8bSSascha Wildner# ENOTTY: Transaction stalled 4712bd3c8bSSascha Wildner# Else: Use builtin request handler 4812bd3c8bSSascha Wildner# 4912bd3c8bSSascha WildnerMETHOD int handle_request { 5012bd3c8bSSascha Wildner device_t dev; 5112bd3c8bSSascha Wildner const void *req; /* pointer to the device request */ 5212bd3c8bSSascha Wildner void **pptr; /* data pointer */ 5312bd3c8bSSascha Wildner uint16_t *plen; /* maximum transfer length */ 5412bd3c8bSSascha Wildner uint16_t offset; /* data offset */ 5512bd3c8bSSascha Wildner uint8_t *pstate; /* set if transfer is complete, see USB_HR_XXX */ 5612bd3c8bSSascha Wildner}; 5712bd3c8bSSascha Wildner 5812bd3c8bSSascha Wildner# Take controller from BIOS 5912bd3c8bSSascha Wildner# 6012bd3c8bSSascha Wildner# Return values: 6112bd3c8bSSascha Wildner# 0: Success 6212bd3c8bSSascha Wildner# Else: Failure 6312bd3c8bSSascha Wildner# 6412bd3c8bSSascha WildnerMETHOD int take_controller { 6512bd3c8bSSascha Wildner device_t dev; 6612bd3c8bSSascha Wildner}; 67