projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
NetXen: Added ethtool support for user level tools.
[powerpc.git]
/
drivers
/
usb
/
gadget
/
pxa2xx_udc.c
diff --git
a/drivers/usb/gadget/pxa2xx_udc.c
b/drivers/usb/gadget/pxa2xx_udc.c
index
f1adcf8
..
b78de96
100644
(file)
--- a/
drivers/usb/gadget/pxa2xx_udc.c
+++ b/
drivers/usb/gadget/pxa2xx_udc.c
@@
-43,11
+43,11
@@
#include <linux/mm.h>
#include <linux/platform_device.h>
#include <linux/dma-mapping.h>
#include <linux/mm.h>
#include <linux/platform_device.h>
#include <linux/dma-mapping.h>
+#include <linux/irq.h>
#include <asm/byteorder.h>
#include <asm/dma.h>
#include <asm/io.h>
#include <asm/byteorder.h>
#include <asm/dma.h>
#include <asm/io.h>
-#include <asm/irq.h>
#include <asm/system.h>
#include <asm/mach-types.h>
#include <asm/unaligned.h>
#include <asm/system.h>
#include <asm/mach-types.h>
#include <asm/unaligned.h>
@@
-110,7
+110,7
@@
static int use_dma = 1;
module_param(use_dma, bool, 0);
MODULE_PARM_DESC (use_dma, "true to use dma");
module_param(use_dma, bool, 0);
MODULE_PARM_DESC (use_dma, "true to use dma");
-static void dma_nodesc_handler (int dmach, void *_ep
, struct pt_regs *r
);
+static void dma_nodesc_handler (int dmach, void *_ep);
static void kick_dma(struct pxa2xx_ep *ep, struct pxa2xx_request *req);
#ifdef USE_OUT_DMA
static void kick_dma(struct pxa2xx_ep *ep, struct pxa2xx_request *req);
#ifdef USE_OUT_DMA
@@
-828,7
+828,7
@@
static void cancel_dma(struct pxa2xx_ep *ep)
}
/* dma channel stopped ... normal tx end (IN), or on error (IN/OUT) */
}
/* dma channel stopped ... normal tx end (IN), or on error (IN/OUT) */
-static void dma_nodesc_handler(int dmach, void *_ep
, struct pt_regs *r
)
+static void dma_nodesc_handler(int dmach, void *_ep)
{
struct pxa2xx_ep *ep = _ep;
struct pxa2xx_request *req;
{
struct pxa2xx_ep *ep = _ep;
struct pxa2xx_request *req;
@@
-1623,7
+1623,6
@@
int usb_gadget_register_driver(struct usb_gadget_driver *driver)
if (!driver
|| driver->speed < USB_SPEED_FULL
|| !driver->bind
if (!driver
|| driver->speed < USB_SPEED_FULL
|| !driver->bind
- || !driver->unbind
|| !driver->disconnect
|| !driver->setup)
return -EINVAL;
|| !driver->disconnect
|| !driver->setup)
return -EINVAL;
@@
-1694,7
+1693,7
@@
int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
if (!dev)
return -ENODEV;
if (!dev)
return -ENODEV;
- if (!driver || driver != dev->driver)
+ if (!driver || driver != dev->driver
|| !driver->unbind
)
return -EINVAL;
local_irq_disable();
return -EINVAL;
local_irq_disable();
@@
-1724,7
+1723,7
@@
EXPORT_SYMBOL(usb_gadget_unregister_driver);
*/
static irqreturn_t
*/
static irqreturn_t
-lubbock_vbus_irq(int irq, void *_dev
, struct pt_regs *r
)
+lubbock_vbus_irq(int irq, void *_dev)
{
struct pxa2xx_udc *dev = _dev;
int vbus;
{
struct pxa2xx_udc *dev = _dev;
int vbus;
@@
-1754,8
+1753,7
@@
lubbock_vbus_irq(int irq, void *_dev, struct pt_regs *r)
#endif
#endif
-static irqreturn_t
-udc_vbus_irq(int irq, void *_dev, struct pt_regs *r)
+static irqreturn_t udc_vbus_irq(int irq, void *_dev)
{
struct pxa2xx_udc *dev = _dev;
int vbus = pxa_gpio_get(dev->mach->gpio_vbus);
{
struct pxa2xx_udc *dev = _dev;
int vbus = pxa_gpio_get(dev->mach->gpio_vbus);
@@
-2084,7
+2082,7
@@
static void handle_ep(struct pxa2xx_ep *ep)
* could cause usb protocol errors.
*/
static irqreturn_t
* could cause usb protocol errors.
*/
static irqreturn_t
-pxa2xx_udc_irq(int irq, void *_dev
, struct pt_regs *r
)
+pxa2xx_udc_irq(int irq, void *_dev)
{
struct pxa2xx_udc *dev = _dev;
int handled;
{
struct pxa2xx_udc *dev = _dev;
int handled;
@@
-2473,6
+2471,7
@@
static struct pxa2xx_udc memory = {
#define PXA210_B1 0x00000123
#define PXA210_B0 0x00000122
#define IXP425_A0 0x000001c1
#define PXA210_B1 0x00000123
#define PXA210_B0 0x00000122
#define IXP425_A0 0x000001c1
+#define IXP425_B0 0x000001f1
#define IXP465_AD 0x00000200
/*
#define IXP465_AD 0x00000200
/*
@@
-2510,6
+2509,7
@@
static int __init pxa2xx_udc_probe(struct platform_device *pdev)
break;
#elif defined(CONFIG_ARCH_IXP4XX)
case IXP425_A0:
break;
#elif defined(CONFIG_ARCH_IXP4XX)
case IXP425_A0:
+ case IXP425_B0:
case IXP465_AD:
dev->has_cfr = 1;
out_dma = 0;
case IXP465_AD:
dev->has_cfr = 1;
out_dma = 0;
@@
-2637,9
+2637,11
@@
static int __exit pxa2xx_udc_remove(struct platform_device *pdev)
{
struct pxa2xx_udc *dev = platform_get_drvdata(pdev);
{
struct pxa2xx_udc *dev = platform_get_drvdata(pdev);
+ if (dev->driver)
+ return -EBUSY;
+
udc_disable(dev);
remove_proc_files();
udc_disable(dev);
remove_proc_files();
- usb_gadget_unregister_driver(dev->driver);
if (dev->got_irq) {
free_irq(IRQ_USB, dev);
if (dev->got_irq) {
free_irq(IRQ_USB, dev);