diff options
Diffstat (limited to 'drivers/staging/usbip/vhci.h')
| -rw-r--r-- | drivers/staging/usbip/vhci.h | 63 |
1 files changed, 25 insertions, 38 deletions
diff --git a/drivers/staging/usbip/vhci.h b/drivers/staging/usbip/vhci.h index 41a1fe5138f..a863a98a91c 100644 --- a/drivers/staging/usbip/vhci.h +++ b/drivers/staging/usbip/vhci.h @@ -6,20 +6,19 @@ * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * - * This is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA. */ -#include <linux/platform_device.h> -#include <linux/usb/hcd.h> +#ifndef __USBIP_VHCI_H +#define __USBIP_VHCI_H +#include <linux/device.h> +#include <linux/list.h> +#include <linux/spinlock.h> +#include <linux/sysfs.h> +#include <linux/types.h> +#include <linux/usb.h> +#include <linux/usb/hcd.h> +#include <linux/wait.h> struct vhci_device { struct usb_device *udev; @@ -33,12 +32,11 @@ struct vhci_device { /* speed of a remote device */ enum usb_device_speed speed; - /* vhci root-hub port to which this device is attached */ + /* vhci root-hub port to which this device is attached */ __u32 rhport; struct usbip_device ud; - /* lock for the below link lists */ spinlock_t priv_lock; @@ -54,7 +52,6 @@ struct vhci_device { wait_queue_head_t waitq_tx; }; - /* urb->hcpriv, use container_of() */ struct vhci_priv { unsigned long seqnum; @@ -64,7 +61,6 @@ struct vhci_priv { struct urb *urb; }; - struct vhci_unlink { /* seqnum of this request */ unsigned long seqnum; @@ -75,22 +71,17 @@ struct vhci_unlink { unsigned long unlink_seqnum; }; -/* - * The number of ports is less than 16 ? - * USB_MAXCHILDREN is statically defined to 16 in usb.h. Its maximum value - * would be 31 because the event_bits[1] of struct usb_hub is defined as - * unsigned long in hub.h - */ +/* Number of supported ports. Value has an upperbound of USB_MAXCHILDREN */ #define VHCI_NPORTS 8 /* for usb_bus.hcpriv */ struct vhci_hcd { - spinlock_t lock; + spinlock_t lock; - u32 port_status[VHCI_NPORTS]; + u32 port_status[VHCI_NPORTS]; - unsigned resuming:1; - unsigned long re_timeout; + unsigned resuming:1; + unsigned long re_timeout; atomic_t seqnum; @@ -100,26 +91,20 @@ struct vhci_hcd { * But, the index of this array begins from 0. */ struct vhci_device vdev[VHCI_NPORTS]; - - /* vhci_device which has not been assiged its address yet */ - int pending_port; }; - extern struct vhci_hcd *the_controller; -extern struct attribute_group dev_attr_group; - - -/*-------------------------------------------------------------------------*/ -/* prototype declaration */ +extern const struct attribute_group dev_attr_group; /* vhci_hcd.c */ void rh_port_connect(int rhport, enum usb_device_speed speed); -void rh_port_disconnect(int rhport); -void vhci_rx_loop(struct usbip_task *ut); -void vhci_tx_loop(struct usbip_task *ut); -#define hardware (&the_controller->pdev.dev) +/* vhci_rx.c */ +struct urb *pickup_urb_and_free_priv(struct vhci_device *vdev, __u32 seqnum); +int vhci_rx_loop(void *data); + +/* vhci_tx.c */ +int vhci_tx_loop(void *data); static inline struct vhci_device *port_to_vdev(__u32 port) { @@ -140,3 +125,5 @@ static inline struct device *vhci_dev(struct vhci_hcd *vhci) { return vhci_to_hcd(vhci)->self.controller; } + +#endif /* __USBIP_VHCI_H */ |
