mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 21:44:06 +08:00
060b694929
Now that the SPDX tag is in all USB files, that identifies the license in a specific and legally-defined manner. So the extra GPL text wording can be removed as it is no longer needed at all. This is done on a quest to remove the 700+ different ways that files in the kernel describe the GPL license text. And there's unneeded stuff like the address (sometimes incorrect) for the FSF which is never needed. No copyright headers or other non-license-description text was removed. Cc: Felipe Balbi <felipe.balbi@linux.intel.com> Cc: Johan Hovold <johan@kernel.org> Cc: Arvind Yadav <arvind.yadav.cs@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
89 lines
2.0 KiB
C
89 lines
2.0 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Wire Adapter Host Controller Driver
|
|
* Common items to HWA and DWA based HCDs
|
|
*
|
|
* Copyright (C) 2005-2006 Intel Corporation
|
|
* Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
|
|
*
|
|
* FIXME: docs
|
|
*/
|
|
#include <linux/slab.h>
|
|
#include <linux/module.h>
|
|
#include "wusbhc.h"
|
|
#include "wa-hc.h"
|
|
|
|
/**
|
|
* Assumes
|
|
*
|
|
* wa->usb_dev and wa->usb_iface initialized and refcounted,
|
|
* wa->wa_descr initialized.
|
|
*/
|
|
int wa_create(struct wahc *wa, struct usb_interface *iface,
|
|
kernel_ulong_t quirks)
|
|
{
|
|
int result;
|
|
struct device *dev = &iface->dev;
|
|
|
|
if (iface->cur_altsetting->desc.bNumEndpoints < 3)
|
|
return -ENODEV;
|
|
|
|
result = wa_rpipes_create(wa);
|
|
if (result < 0)
|
|
goto error_rpipes_create;
|
|
wa->quirks = quirks;
|
|
/* Fill up Data Transfer EP pointers */
|
|
wa->dti_epd = &iface->cur_altsetting->endpoint[1].desc;
|
|
wa->dto_epd = &iface->cur_altsetting->endpoint[2].desc;
|
|
wa->dti_buf_size = usb_endpoint_maxp(wa->dti_epd);
|
|
wa->dti_buf = kmalloc(wa->dti_buf_size, GFP_KERNEL);
|
|
if (wa->dti_buf == NULL) {
|
|
result = -ENOMEM;
|
|
goto error_dti_buf_alloc;
|
|
}
|
|
result = wa_nep_create(wa, iface);
|
|
if (result < 0) {
|
|
dev_err(dev, "WA-CDS: can't initialize notif endpoint: %d\n",
|
|
result);
|
|
goto error_nep_create;
|
|
}
|
|
return 0;
|
|
|
|
error_nep_create:
|
|
kfree(wa->dti_buf);
|
|
error_dti_buf_alloc:
|
|
wa_rpipes_destroy(wa);
|
|
error_rpipes_create:
|
|
return result;
|
|
}
|
|
EXPORT_SYMBOL_GPL(wa_create);
|
|
|
|
|
|
void __wa_destroy(struct wahc *wa)
|
|
{
|
|
if (wa->dti_urb) {
|
|
usb_kill_urb(wa->dti_urb);
|
|
usb_put_urb(wa->dti_urb);
|
|
}
|
|
kfree(wa->dti_buf);
|
|
wa_nep_destroy(wa);
|
|
wa_rpipes_destroy(wa);
|
|
}
|
|
EXPORT_SYMBOL_GPL(__wa_destroy);
|
|
|
|
/**
|
|
* wa_reset_all - reset the WA device
|
|
* @wa: the WA to be reset
|
|
*
|
|
* For HWAs the radio controller and all other PALs are also reset.
|
|
*/
|
|
void wa_reset_all(struct wahc *wa)
|
|
{
|
|
/* FIXME: assuming HWA. */
|
|
wusbhc_reset_all(wa->wusb);
|
|
}
|
|
|
|
MODULE_AUTHOR("Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>");
|
|
MODULE_DESCRIPTION("Wireless USB Wire Adapter core");
|
|
MODULE_LICENSE("GPL");
|