at91_udc.c revision 0f91349b89f37dfad7b77f7829a105b6a0f526ec
1/*
2 * at91_udc -- driver for at91-series USB peripheral controller
3 *
4 * Copyright (C) 2004 by Thomas Rathbone
5 * Copyright (C) 2005 by HP Labs
6 * Copyright (C) 2005 by David Brownell
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the
20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 * Boston, MA  02111-1307, USA.
22 */
23
24#undef	VERBOSE_DEBUG
25#undef	PACKET_TRACE
26
27#include <linux/kernel.h>
28#include <linux/module.h>
29#include <linux/platform_device.h>
30#include <linux/delay.h>
31#include <linux/ioport.h>
32#include <linux/slab.h>
33#include <linux/errno.h>
34#include <linux/init.h>
35#include <linux/list.h>
36#include <linux/interrupt.h>
37#include <linux/proc_fs.h>
38#include <linux/clk.h>
39#include <linux/usb/ch9.h>
40#include <linux/usb/gadget.h>
41#include <linux/prefetch.h>
42
43#include <asm/byteorder.h>
44#include <mach/hardware.h>
45#include <asm/io.h>
46#include <asm/irq.h>
47#include <asm/system.h>
48#include <asm/gpio.h>
49
50#include <mach/board.h>
51#include <mach/cpu.h>
52#include <mach/at91sam9261_matrix.h>
53
54#include "at91_udc.h"
55
56
57/*
58 * This controller is simple and PIO-only.  It's used in many AT91-series
59 * full speed USB controllers, including the at91rm9200 (arm920T, with MMU),
60 * at91sam926x (arm926ejs, with MMU), and several no-mmu versions.
61 *
62 * This driver expects the board has been wired with two GPIOs suppporting
63 * a VBUS sensing IRQ, and a D+ pullup.  (They may be omitted, but the
64 * testing hasn't covered such cases.)
65 *
66 * The pullup is most important (so it's integrated on sam926x parts).  It
67 * provides software control over whether the host enumerates the device.
68 *
69 * The VBUS sensing helps during enumeration, and allows both USB clocks
70 * (and the transceiver) to stay gated off until they're necessary, saving
71 * power.  During USB suspend, the 48 MHz clock is gated off in hardware;
72 * it may also be gated off by software during some Linux sleep states.
73 */
74
75#define	DRIVER_VERSION	"3 May 2006"
76
77static const char driver_name [] = "at91_udc";
78static const char ep0name[] = "ep0";
79
80#define VBUS_POLL_TIMEOUT	msecs_to_jiffies(1000)
81
82#define at91_udp_read(udc, reg) \
83	__raw_readl((udc)->udp_baseaddr + (reg))
84#define at91_udp_write(udc, reg, val) \
85	__raw_writel((val), (udc)->udp_baseaddr + (reg))
86
87/*-------------------------------------------------------------------------*/
88
89#ifdef CONFIG_USB_GADGET_DEBUG_FILES
90
91#include <linux/seq_file.h>
92
93static const char debug_filename[] = "driver/udc";
94
95#define FOURBITS "%s%s%s%s"
96#define EIGHTBITS FOURBITS FOURBITS
97
98static void proc_ep_show(struct seq_file *s, struct at91_ep *ep)
99{
100	static char		*types[] = {
101		"control", "out-iso", "out-bulk", "out-int",
102		"BOGUS",   "in-iso",  "in-bulk",  "in-int"};
103
104	u32			csr;
105	struct at91_request	*req;
106	unsigned long	flags;
107	struct at91_udc	*udc = ep->udc;
108
109	spin_lock_irqsave(&udc->lock, flags);
110
111	csr = __raw_readl(ep->creg);
112
113	/* NOTE:  not collecting per-endpoint irq statistics... */
114
115	seq_printf(s, "\n");
116	seq_printf(s, "%s, maxpacket %d %s%s %s%s\n",
117			ep->ep.name, ep->ep.maxpacket,
118			ep->is_in ? "in" : "out",
119			ep->is_iso ? " iso" : "",
120			ep->is_pingpong
121				? (ep->fifo_bank ? "pong" : "ping")
122				: "",
123			ep->stopped ? " stopped" : "");
124	seq_printf(s, "csr %08x rxbytes=%d %s %s %s" EIGHTBITS "\n",
125		csr,
126		(csr & 0x07ff0000) >> 16,
127		(csr & (1 << 15)) ? "enabled" : "disabled",
128		(csr & (1 << 11)) ? "DATA1" : "DATA0",
129		types[(csr & 0x700) >> 8],
130
131		/* iff type is control then print current direction */
132		(!(csr & 0x700))
133			? ((csr & (1 << 7)) ? " IN" : " OUT")
134			: "",
135		(csr & (1 << 6)) ? " rxdatabk1" : "",
136		(csr & (1 << 5)) ? " forcestall" : "",
137		(csr & (1 << 4)) ? " txpktrdy" : "",
138
139		(csr & (1 << 3)) ? " stallsent" : "",
140		(csr & (1 << 2)) ? " rxsetup" : "",
141		(csr & (1 << 1)) ? " rxdatabk0" : "",
142		(csr & (1 << 0)) ? " txcomp" : "");
143	if (list_empty (&ep->queue))
144		seq_printf(s, "\t(queue empty)\n");
145
146	else list_for_each_entry (req, &ep->queue, queue) {
147		unsigned	length = req->req.actual;
148
149		seq_printf(s, "\treq %p len %d/%d buf %p\n",
150				&req->req, length,
151				req->req.length, req->req.buf);
152	}
153	spin_unlock_irqrestore(&udc->lock, flags);
154}
155
156static void proc_irq_show(struct seq_file *s, const char *label, u32 mask)
157{
158	int i;
159
160	seq_printf(s, "%s %04x:%s%s" FOURBITS, label, mask,
161		(mask & (1 << 13)) ? " wakeup" : "",
162		(mask & (1 << 12)) ? " endbusres" : "",
163
164		(mask & (1 << 11)) ? " sofint" : "",
165		(mask & (1 << 10)) ? " extrsm" : "",
166		(mask & (1 << 9)) ? " rxrsm" : "",
167		(mask & (1 << 8)) ? " rxsusp" : "");
168	for (i = 0; i < 8; i++) {
169		if (mask & (1 << i))
170			seq_printf(s, " ep%d", i);
171	}
172	seq_printf(s, "\n");
173}
174
175static int proc_udc_show(struct seq_file *s, void *unused)
176{
177	struct at91_udc	*udc = s->private;
178	struct at91_ep	*ep;
179	u32		tmp;
180
181	seq_printf(s, "%s: version %s\n", driver_name, DRIVER_VERSION);
182
183	seq_printf(s, "vbus %s, pullup %s, %s powered%s, gadget %s\n\n",
184		udc->vbus ? "present" : "off",
185		udc->enabled
186			? (udc->vbus ? "active" : "enabled")
187			: "disabled",
188		udc->selfpowered ? "self" : "VBUS",
189		udc->suspended ? ", suspended" : "",
190		udc->driver ? udc->driver->driver.name : "(none)");
191
192	/* don't access registers when interface isn't clocked */
193	if (!udc->clocked) {
194		seq_printf(s, "(not clocked)\n");
195		return 0;
196	}
197
198	tmp = at91_udp_read(udc, AT91_UDP_FRM_NUM);
199	seq_printf(s, "frame %05x:%s%s frame=%d\n", tmp,
200		(tmp & AT91_UDP_FRM_OK) ? " ok" : "",
201		(tmp & AT91_UDP_FRM_ERR) ? " err" : "",
202		(tmp & AT91_UDP_NUM));
203
204	tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
205	seq_printf(s, "glbstate %02x:%s" FOURBITS "\n", tmp,
206		(tmp & AT91_UDP_RMWUPE) ? " rmwupe" : "",
207		(tmp & AT91_UDP_RSMINPR) ? " rsminpr" : "",
208		(tmp & AT91_UDP_ESR) ? " esr" : "",
209		(tmp & AT91_UDP_CONFG) ? " confg" : "",
210		(tmp & AT91_UDP_FADDEN) ? " fadden" : "");
211
212	tmp = at91_udp_read(udc, AT91_UDP_FADDR);
213	seq_printf(s, "faddr   %03x:%s fadd=%d\n", tmp,
214		(tmp & AT91_UDP_FEN) ? " fen" : "",
215		(tmp & AT91_UDP_FADD));
216
217	proc_irq_show(s, "imr   ", at91_udp_read(udc, AT91_UDP_IMR));
218	proc_irq_show(s, "isr   ", at91_udp_read(udc, AT91_UDP_ISR));
219
220	if (udc->enabled && udc->vbus) {
221		proc_ep_show(s, &udc->ep[0]);
222		list_for_each_entry (ep, &udc->gadget.ep_list, ep.ep_list) {
223			if (ep->desc)
224				proc_ep_show(s, ep);
225		}
226	}
227	return 0;
228}
229
230static int proc_udc_open(struct inode *inode, struct file *file)
231{
232	return single_open(file, proc_udc_show, PDE(inode)->data);
233}
234
235static const struct file_operations proc_ops = {
236	.owner		= THIS_MODULE,
237	.open		= proc_udc_open,
238	.read		= seq_read,
239	.llseek		= seq_lseek,
240	.release	= single_release,
241};
242
243static void create_debug_file(struct at91_udc *udc)
244{
245	udc->pde = proc_create_data(debug_filename, 0, NULL, &proc_ops, udc);
246}
247
248static void remove_debug_file(struct at91_udc *udc)
249{
250	if (udc->pde)
251		remove_proc_entry(debug_filename, NULL);
252}
253
254#else
255
256static inline void create_debug_file(struct at91_udc *udc) {}
257static inline void remove_debug_file(struct at91_udc *udc) {}
258
259#endif
260
261
262/*-------------------------------------------------------------------------*/
263
264static void done(struct at91_ep *ep, struct at91_request *req, int status)
265{
266	unsigned	stopped = ep->stopped;
267	struct at91_udc	*udc = ep->udc;
268
269	list_del_init(&req->queue);
270	if (req->req.status == -EINPROGRESS)
271		req->req.status = status;
272	else
273		status = req->req.status;
274	if (status && status != -ESHUTDOWN)
275		VDBG("%s done %p, status %d\n", ep->ep.name, req, status);
276
277	ep->stopped = 1;
278	spin_unlock(&udc->lock);
279	req->req.complete(&ep->ep, &req->req);
280	spin_lock(&udc->lock);
281	ep->stopped = stopped;
282
283	/* ep0 is always ready; other endpoints need a non-empty queue */
284	if (list_empty(&ep->queue) && ep->int_mask != (1 << 0))
285		at91_udp_write(udc, AT91_UDP_IDR, ep->int_mask);
286}
287
288/*-------------------------------------------------------------------------*/
289
290/* bits indicating OUT fifo has data ready */
291#define	RX_DATA_READY	(AT91_UDP_RX_DATA_BK0 | AT91_UDP_RX_DATA_BK1)
292
293/*
294 * Endpoint FIFO CSR bits have a mix of bits, making it unsafe to just write
295 * back most of the value you just read (because of side effects, including
296 * bits that may change after reading and before writing).
297 *
298 * Except when changing a specific bit, always write values which:
299 *  - clear SET_FX bits (setting them could change something)
300 *  - set CLR_FX bits (clearing them could change something)
301 *
302 * There are also state bits like FORCESTALL, EPEDS, DIR, and EPTYPE
303 * that shouldn't normally be changed.
304 *
305 * NOTE at91sam9260 docs mention synch between UDPCK and MCK clock domains,
306 * implying a need to wait for one write to complete (test relevant bits)
307 * before starting the next write.  This shouldn't be an issue given how
308 * infrequently we write, except maybe for write-then-read idioms.
309 */
310#define	SET_FX	(AT91_UDP_TXPKTRDY)
311#define	CLR_FX	(RX_DATA_READY | AT91_UDP_RXSETUP \
312		| AT91_UDP_STALLSENT | AT91_UDP_TXCOMP)
313
314/* pull OUT packet data from the endpoint's fifo */
315static int read_fifo (struct at91_ep *ep, struct at91_request *req)
316{
317	u32 __iomem	*creg = ep->creg;
318	u8 __iomem	*dreg = ep->creg + (AT91_UDP_FDR(0) - AT91_UDP_CSR(0));
319	u32		csr;
320	u8		*buf;
321	unsigned int	count, bufferspace, is_done;
322
323	buf = req->req.buf + req->req.actual;
324	bufferspace = req->req.length - req->req.actual;
325
326	/*
327	 * there might be nothing to read if ep_queue() calls us,
328	 * or if we already emptied both pingpong buffers
329	 */
330rescan:
331	csr = __raw_readl(creg);
332	if ((csr & RX_DATA_READY) == 0)
333		return 0;
334
335	count = (csr & AT91_UDP_RXBYTECNT) >> 16;
336	if (count > ep->ep.maxpacket)
337		count = ep->ep.maxpacket;
338	if (count > bufferspace) {
339		DBG("%s buffer overflow\n", ep->ep.name);
340		req->req.status = -EOVERFLOW;
341		count = bufferspace;
342	}
343	__raw_readsb(dreg, buf, count);
344
345	/* release and swap pingpong mem bank */
346	csr |= CLR_FX;
347	if (ep->is_pingpong) {
348		if (ep->fifo_bank == 0) {
349			csr &= ~(SET_FX | AT91_UDP_RX_DATA_BK0);
350			ep->fifo_bank = 1;
351		} else {
352			csr &= ~(SET_FX | AT91_UDP_RX_DATA_BK1);
353			ep->fifo_bank = 0;
354		}
355	} else
356		csr &= ~(SET_FX | AT91_UDP_RX_DATA_BK0);
357	__raw_writel(csr, creg);
358
359	req->req.actual += count;
360	is_done = (count < ep->ep.maxpacket);
361	if (count == bufferspace)
362		is_done = 1;
363
364	PACKET("%s %p out/%d%s\n", ep->ep.name, &req->req, count,
365			is_done ? " (done)" : "");
366
367	/*
368	 * avoid extra trips through IRQ logic for packets already in
369	 * the fifo ... maybe preventing an extra (expensive) OUT-NAK
370	 */
371	if (is_done)
372		done(ep, req, 0);
373	else if (ep->is_pingpong) {
374		/*
375		 * One dummy read to delay the code because of a HW glitch:
376		 * CSR returns bad RXCOUNT when read too soon after updating
377		 * RX_DATA_BK flags.
378		 */
379		csr = __raw_readl(creg);
380
381		bufferspace -= count;
382		buf += count;
383		goto rescan;
384	}
385
386	return is_done;
387}
388
389/* load fifo for an IN packet */
390static int write_fifo(struct at91_ep *ep, struct at91_request *req)
391{
392	u32 __iomem	*creg = ep->creg;
393	u32		csr = __raw_readl(creg);
394	u8 __iomem	*dreg = ep->creg + (AT91_UDP_FDR(0) - AT91_UDP_CSR(0));
395	unsigned	total, count, is_last;
396	u8		*buf;
397
398	/*
399	 * TODO: allow for writing two packets to the fifo ... that'll
400	 * reduce the amount of IN-NAKing, but probably won't affect
401	 * throughput much.  (Unlike preventing OUT-NAKing!)
402	 */
403
404	/*
405	 * If ep_queue() calls us, the queue is empty and possibly in
406	 * odd states like TXCOMP not yet cleared (we do it, saving at
407	 * least one IRQ) or the fifo not yet being free.  Those aren't
408	 * issues normally (IRQ handler fast path).
409	 */
410	if (unlikely(csr & (AT91_UDP_TXCOMP | AT91_UDP_TXPKTRDY))) {
411		if (csr & AT91_UDP_TXCOMP) {
412			csr |= CLR_FX;
413			csr &= ~(SET_FX | AT91_UDP_TXCOMP);
414			__raw_writel(csr, creg);
415			csr = __raw_readl(creg);
416		}
417		if (csr & AT91_UDP_TXPKTRDY)
418			return 0;
419	}
420
421	buf = req->req.buf + req->req.actual;
422	prefetch(buf);
423	total = req->req.length - req->req.actual;
424	if (ep->ep.maxpacket < total) {
425		count = ep->ep.maxpacket;
426		is_last = 0;
427	} else {
428		count = total;
429		is_last = (count < ep->ep.maxpacket) || !req->req.zero;
430	}
431
432	/*
433	 * Write the packet, maybe it's a ZLP.
434	 *
435	 * NOTE:  incrementing req->actual before we receive the ACK means
436	 * gadget driver IN bytecounts can be wrong in fault cases.  That's
437	 * fixable with PIO drivers like this one (save "count" here, and
438	 * do the increment later on TX irq), but not for most DMA hardware.
439	 *
440	 * So all gadget drivers must accept that potential error.  Some
441	 * hardware supports precise fifo status reporting, letting them
442	 * recover when the actual bytecount matters (e.g. for USB Test
443	 * and Measurement Class devices).
444	 */
445	__raw_writesb(dreg, buf, count);
446	csr &= ~SET_FX;
447	csr |= CLR_FX | AT91_UDP_TXPKTRDY;
448	__raw_writel(csr, creg);
449	req->req.actual += count;
450
451	PACKET("%s %p in/%d%s\n", ep->ep.name, &req->req, count,
452			is_last ? " (done)" : "");
453	if (is_last)
454		done(ep, req, 0);
455	return is_last;
456}
457
458static void nuke(struct at91_ep *ep, int status)
459{
460	struct at91_request *req;
461
462	// terminer chaque requete dans la queue
463	ep->stopped = 1;
464	if (list_empty(&ep->queue))
465		return;
466
467	VDBG("%s %s\n", __func__, ep->ep.name);
468	while (!list_empty(&ep->queue)) {
469		req = list_entry(ep->queue.next, struct at91_request, queue);
470		done(ep, req, status);
471	}
472}
473
474/*-------------------------------------------------------------------------*/
475
476static int at91_ep_enable(struct usb_ep *_ep,
477				const struct usb_endpoint_descriptor *desc)
478{
479	struct at91_ep	*ep = container_of(_ep, struct at91_ep, ep);
480	struct at91_udc	*udc = ep->udc;
481	u16		maxpacket;
482	u32		tmp;
483	unsigned long	flags;
484
485	if (!_ep || !ep
486			|| !desc || ep->desc
487			|| _ep->name == ep0name
488			|| desc->bDescriptorType != USB_DT_ENDPOINT
489			|| (maxpacket = le16_to_cpu(desc->wMaxPacketSize)) == 0
490			|| maxpacket > ep->maxpacket) {
491		DBG("bad ep or descriptor\n");
492		return -EINVAL;
493	}
494
495	if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
496		DBG("bogus device state\n");
497		return -ESHUTDOWN;
498	}
499
500	tmp = usb_endpoint_type(desc);
501	switch (tmp) {
502	case USB_ENDPOINT_XFER_CONTROL:
503		DBG("only one control endpoint\n");
504		return -EINVAL;
505	case USB_ENDPOINT_XFER_INT:
506		if (maxpacket > 64)
507			goto bogus_max;
508		break;
509	case USB_ENDPOINT_XFER_BULK:
510		switch (maxpacket) {
511		case 8:
512		case 16:
513		case 32:
514		case 64:
515			goto ok;
516		}
517bogus_max:
518		DBG("bogus maxpacket %d\n", maxpacket);
519		return -EINVAL;
520	case USB_ENDPOINT_XFER_ISOC:
521		if (!ep->is_pingpong) {
522			DBG("iso requires double buffering\n");
523			return -EINVAL;
524		}
525		break;
526	}
527
528ok:
529	spin_lock_irqsave(&udc->lock, flags);
530
531	/* initialize endpoint to match this descriptor */
532	ep->is_in = usb_endpoint_dir_in(desc);
533	ep->is_iso = (tmp == USB_ENDPOINT_XFER_ISOC);
534	ep->stopped = 0;
535	if (ep->is_in)
536		tmp |= 0x04;
537	tmp <<= 8;
538	tmp |= AT91_UDP_EPEDS;
539	__raw_writel(tmp, ep->creg);
540
541	ep->desc = desc;
542	ep->ep.maxpacket = maxpacket;
543
544	/*
545	 * reset/init endpoint fifo.  NOTE:  leaves fifo_bank alone,
546	 * since endpoint resets don't reset hw pingpong state.
547	 */
548	at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
549	at91_udp_write(udc, AT91_UDP_RST_EP, 0);
550
551	spin_unlock_irqrestore(&udc->lock, flags);
552	return 0;
553}
554
555static int at91_ep_disable (struct usb_ep * _ep)
556{
557	struct at91_ep	*ep = container_of(_ep, struct at91_ep, ep);
558	struct at91_udc	*udc = ep->udc;
559	unsigned long	flags;
560
561	if (ep == &ep->udc->ep[0])
562		return -EINVAL;
563
564	spin_lock_irqsave(&udc->lock, flags);
565
566	nuke(ep, -ESHUTDOWN);
567
568	/* restore the endpoint's pristine config */
569	ep->desc = NULL;
570	ep->ep.maxpacket = ep->maxpacket;
571
572	/* reset fifos and endpoint */
573	if (ep->udc->clocked) {
574		at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
575		at91_udp_write(udc, AT91_UDP_RST_EP, 0);
576		__raw_writel(0, ep->creg);
577	}
578
579	spin_unlock_irqrestore(&udc->lock, flags);
580	return 0;
581}
582
583/*
584 * this is a PIO-only driver, so there's nothing
585 * interesting for request or buffer allocation.
586 */
587
588static struct usb_request *
589at91_ep_alloc_request(struct usb_ep *_ep, gfp_t gfp_flags)
590{
591	struct at91_request *req;
592
593	req = kzalloc(sizeof (struct at91_request), gfp_flags);
594	if (!req)
595		return NULL;
596
597	INIT_LIST_HEAD(&req->queue);
598	return &req->req;
599}
600
601static void at91_ep_free_request(struct usb_ep *_ep, struct usb_request *_req)
602{
603	struct at91_request *req;
604
605	req = container_of(_req, struct at91_request, req);
606	BUG_ON(!list_empty(&req->queue));
607	kfree(req);
608}
609
610static int at91_ep_queue(struct usb_ep *_ep,
611			struct usb_request *_req, gfp_t gfp_flags)
612{
613	struct at91_request	*req;
614	struct at91_ep		*ep;
615	struct at91_udc		*udc;
616	int			status;
617	unsigned long		flags;
618
619	req = container_of(_req, struct at91_request, req);
620	ep = container_of(_ep, struct at91_ep, ep);
621
622	if (!_req || !_req->complete
623			|| !_req->buf || !list_empty(&req->queue)) {
624		DBG("invalid request\n");
625		return -EINVAL;
626	}
627
628	if (!_ep || (!ep->desc && ep->ep.name != ep0name)) {
629		DBG("invalid ep\n");
630		return -EINVAL;
631	}
632
633	udc = ep->udc;
634
635	if (!udc || !udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
636		DBG("invalid device\n");
637		return -EINVAL;
638	}
639
640	_req->status = -EINPROGRESS;
641	_req->actual = 0;
642
643	spin_lock_irqsave(&udc->lock, flags);
644
645	/* try to kickstart any empty and idle queue */
646	if (list_empty(&ep->queue) && !ep->stopped) {
647		int	is_ep0;
648
649		/*
650		 * If this control request has a non-empty DATA stage, this
651		 * will start that stage.  It works just like a non-control
652		 * request (until the status stage starts, maybe early).
653		 *
654		 * If the data stage is empty, then this starts a successful
655		 * IN/STATUS stage.  (Unsuccessful ones use set_halt.)
656		 */
657		is_ep0 = (ep->ep.name == ep0name);
658		if (is_ep0) {
659			u32	tmp;
660
661			if (!udc->req_pending) {
662				status = -EINVAL;
663				goto done;
664			}
665
666			/*
667			 * defer changing CONFG until after the gadget driver
668			 * reconfigures the endpoints.
669			 */
670			if (udc->wait_for_config_ack) {
671				tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
672				tmp ^= AT91_UDP_CONFG;
673				VDBG("toggle config\n");
674				at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
675			}
676			if (req->req.length == 0) {
677ep0_in_status:
678				PACKET("ep0 in/status\n");
679				status = 0;
680				tmp = __raw_readl(ep->creg);
681				tmp &= ~SET_FX;
682				tmp |= CLR_FX | AT91_UDP_TXPKTRDY;
683				__raw_writel(tmp, ep->creg);
684				udc->req_pending = 0;
685				goto done;
686			}
687		}
688
689		if (ep->is_in)
690			status = write_fifo(ep, req);
691		else {
692			status = read_fifo(ep, req);
693
694			/* IN/STATUS stage is otherwise triggered by irq */
695			if (status && is_ep0)
696				goto ep0_in_status;
697		}
698	} else
699		status = 0;
700
701	if (req && !status) {
702		list_add_tail (&req->queue, &ep->queue);
703		at91_udp_write(udc, AT91_UDP_IER, ep->int_mask);
704	}
705done:
706	spin_unlock_irqrestore(&udc->lock, flags);
707	return (status < 0) ? status : 0;
708}
709
710static int at91_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
711{
712	struct at91_ep		*ep;
713	struct at91_request	*req;
714	unsigned long		flags;
715	struct at91_udc		*udc;
716
717	ep = container_of(_ep, struct at91_ep, ep);
718	if (!_ep || ep->ep.name == ep0name)
719		return -EINVAL;
720
721	udc = ep->udc;
722
723	spin_lock_irqsave(&udc->lock, flags);
724
725	/* make sure it's actually queued on this endpoint */
726	list_for_each_entry (req, &ep->queue, queue) {
727		if (&req->req == _req)
728			break;
729	}
730	if (&req->req != _req) {
731		spin_unlock_irqrestore(&udc->lock, flags);
732		return -EINVAL;
733	}
734
735	done(ep, req, -ECONNRESET);
736	spin_unlock_irqrestore(&udc->lock, flags);
737	return 0;
738}
739
740static int at91_ep_set_halt(struct usb_ep *_ep, int value)
741{
742	struct at91_ep	*ep = container_of(_ep, struct at91_ep, ep);
743	struct at91_udc	*udc = ep->udc;
744	u32 __iomem	*creg;
745	u32		csr;
746	unsigned long	flags;
747	int		status = 0;
748
749	if (!_ep || ep->is_iso || !ep->udc->clocked)
750		return -EINVAL;
751
752	creg = ep->creg;
753	spin_lock_irqsave(&udc->lock, flags);
754
755	csr = __raw_readl(creg);
756
757	/*
758	 * fail with still-busy IN endpoints, ensuring correct sequencing
759	 * of data tx then stall.  note that the fifo rx bytecount isn't
760	 * completely accurate as a tx bytecount.
761	 */
762	if (ep->is_in && (!list_empty(&ep->queue) || (csr >> 16) != 0))
763		status = -EAGAIN;
764	else {
765		csr |= CLR_FX;
766		csr &= ~SET_FX;
767		if (value) {
768			csr |= AT91_UDP_FORCESTALL;
769			VDBG("halt %s\n", ep->ep.name);
770		} else {
771			at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
772			at91_udp_write(udc, AT91_UDP_RST_EP, 0);
773			csr &= ~AT91_UDP_FORCESTALL;
774		}
775		__raw_writel(csr, creg);
776	}
777
778	spin_unlock_irqrestore(&udc->lock, flags);
779	return status;
780}
781
782static const struct usb_ep_ops at91_ep_ops = {
783	.enable		= at91_ep_enable,
784	.disable	= at91_ep_disable,
785	.alloc_request	= at91_ep_alloc_request,
786	.free_request	= at91_ep_free_request,
787	.queue		= at91_ep_queue,
788	.dequeue	= at91_ep_dequeue,
789	.set_halt	= at91_ep_set_halt,
790	// there's only imprecise fifo status reporting
791};
792
793/*-------------------------------------------------------------------------*/
794
795static int at91_get_frame(struct usb_gadget *gadget)
796{
797	struct at91_udc *udc = to_udc(gadget);
798
799	if (!to_udc(gadget)->clocked)
800		return -EINVAL;
801	return at91_udp_read(udc, AT91_UDP_FRM_NUM) & AT91_UDP_NUM;
802}
803
804static int at91_wakeup(struct usb_gadget *gadget)
805{
806	struct at91_udc	*udc = to_udc(gadget);
807	u32		glbstate;
808	int		status = -EINVAL;
809	unsigned long	flags;
810
811	DBG("%s\n", __func__ );
812	spin_lock_irqsave(&udc->lock, flags);
813
814	if (!udc->clocked || !udc->suspended)
815		goto done;
816
817	/* NOTE:  some "early versions" handle ESR differently ... */
818
819	glbstate = at91_udp_read(udc, AT91_UDP_GLB_STAT);
820	if (!(glbstate & AT91_UDP_ESR))
821		goto done;
822	glbstate |= AT91_UDP_ESR;
823	at91_udp_write(udc, AT91_UDP_GLB_STAT, glbstate);
824
825done:
826	spin_unlock_irqrestore(&udc->lock, flags);
827	return status;
828}
829
830/* reinit == restore initial software state */
831static void udc_reinit(struct at91_udc *udc)
832{
833	u32 i;
834
835	INIT_LIST_HEAD(&udc->gadget.ep_list);
836	INIT_LIST_HEAD(&udc->gadget.ep0->ep_list);
837
838	for (i = 0; i < NUM_ENDPOINTS; i++) {
839		struct at91_ep *ep = &udc->ep[i];
840
841		if (i != 0)
842			list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
843		ep->desc = NULL;
844		ep->stopped = 0;
845		ep->fifo_bank = 0;
846		ep->ep.maxpacket = ep->maxpacket;
847		ep->creg = (void __iomem *) udc->udp_baseaddr + AT91_UDP_CSR(i);
848		// initialiser une queue par endpoint
849		INIT_LIST_HEAD(&ep->queue);
850	}
851}
852
853static void stop_activity(struct at91_udc *udc)
854{
855	struct usb_gadget_driver *driver = udc->driver;
856	int i;
857
858	if (udc->gadget.speed == USB_SPEED_UNKNOWN)
859		driver = NULL;
860	udc->gadget.speed = USB_SPEED_UNKNOWN;
861	udc->suspended = 0;
862
863	for (i = 0; i < NUM_ENDPOINTS; i++) {
864		struct at91_ep *ep = &udc->ep[i];
865		ep->stopped = 1;
866		nuke(ep, -ESHUTDOWN);
867	}
868	if (driver) {
869		spin_unlock(&udc->lock);
870		driver->disconnect(&udc->gadget);
871		spin_lock(&udc->lock);
872	}
873
874	udc_reinit(udc);
875}
876
877static void clk_on(struct at91_udc *udc)
878{
879	if (udc->clocked)
880		return;
881	udc->clocked = 1;
882	clk_enable(udc->iclk);
883	clk_enable(udc->fclk);
884}
885
886static void clk_off(struct at91_udc *udc)
887{
888	if (!udc->clocked)
889		return;
890	udc->clocked = 0;
891	udc->gadget.speed = USB_SPEED_UNKNOWN;
892	clk_disable(udc->fclk);
893	clk_disable(udc->iclk);
894}
895
896/*
897 * activate/deactivate link with host; minimize power usage for
898 * inactive links by cutting clocks and transceiver power.
899 */
900static void pullup(struct at91_udc *udc, int is_on)
901{
902	int	active = !udc->board.pullup_active_low;
903
904	if (!udc->enabled || !udc->vbus)
905		is_on = 0;
906	DBG("%sactive\n", is_on ? "" : "in");
907
908	if (is_on) {
909		clk_on(udc);
910		at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXRSM);
911		at91_udp_write(udc, AT91_UDP_TXVC, 0);
912		if (cpu_is_at91rm9200())
913			gpio_set_value(udc->board.pullup_pin, active);
914		else if (cpu_is_at91sam9260() || cpu_is_at91sam9263() || cpu_is_at91sam9g20()) {
915			u32	txvc = at91_udp_read(udc, AT91_UDP_TXVC);
916
917			txvc |= AT91_UDP_TXVC_PUON;
918			at91_udp_write(udc, AT91_UDP_TXVC, txvc);
919		} else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) {
920			u32	usbpucr;
921
922			usbpucr = at91_sys_read(AT91_MATRIX_USBPUCR);
923			usbpucr |= AT91_MATRIX_USBPUCR_PUON;
924			at91_sys_write(AT91_MATRIX_USBPUCR, usbpucr);
925		}
926	} else {
927		stop_activity(udc);
928		at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXRSM);
929		at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS);
930		if (cpu_is_at91rm9200())
931			gpio_set_value(udc->board.pullup_pin, !active);
932		else if (cpu_is_at91sam9260() || cpu_is_at91sam9263() || cpu_is_at91sam9g20()) {
933			u32	txvc = at91_udp_read(udc, AT91_UDP_TXVC);
934
935			txvc &= ~AT91_UDP_TXVC_PUON;
936			at91_udp_write(udc, AT91_UDP_TXVC, txvc);
937		} else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) {
938			u32	usbpucr;
939
940			usbpucr = at91_sys_read(AT91_MATRIX_USBPUCR);
941			usbpucr &= ~AT91_MATRIX_USBPUCR_PUON;
942			at91_sys_write(AT91_MATRIX_USBPUCR, usbpucr);
943		}
944		clk_off(udc);
945	}
946}
947
948/* vbus is here!  turn everything on that's ready */
949static int at91_vbus_session(struct usb_gadget *gadget, int is_active)
950{
951	struct at91_udc	*udc = to_udc(gadget);
952	unsigned long	flags;
953
954	// VDBG("vbus %s\n", is_active ? "on" : "off");
955	spin_lock_irqsave(&udc->lock, flags);
956	udc->vbus = (is_active != 0);
957	if (udc->driver)
958		pullup(udc, is_active);
959	else
960		pullup(udc, 0);
961	spin_unlock_irqrestore(&udc->lock, flags);
962	return 0;
963}
964
965static int at91_pullup(struct usb_gadget *gadget, int is_on)
966{
967	struct at91_udc	*udc = to_udc(gadget);
968	unsigned long	flags;
969
970	spin_lock_irqsave(&udc->lock, flags);
971	udc->enabled = is_on = !!is_on;
972	pullup(udc, is_on);
973	spin_unlock_irqrestore(&udc->lock, flags);
974	return 0;
975}
976
977static int at91_set_selfpowered(struct usb_gadget *gadget, int is_on)
978{
979	struct at91_udc	*udc = to_udc(gadget);
980	unsigned long	flags;
981
982	spin_lock_irqsave(&udc->lock, flags);
983	udc->selfpowered = (is_on != 0);
984	spin_unlock_irqrestore(&udc->lock, flags);
985	return 0;
986}
987
988static int at91_start(struct usb_gadget_driver *driver,
989		int (*bind)(struct usb_gadget *));
990static int at91_stop(struct usb_gadget_driver *driver);
991
992static const struct usb_gadget_ops at91_udc_ops = {
993	.get_frame		= at91_get_frame,
994	.wakeup			= at91_wakeup,
995	.set_selfpowered	= at91_set_selfpowered,
996	.vbus_session		= at91_vbus_session,
997	.pullup			= at91_pullup,
998	.start			= at91_start,
999	.stop			= at91_stop,
1000
1001	/*
1002	 * VBUS-powered devices may also also want to support bigger
1003	 * power budgets after an appropriate SET_CONFIGURATION.
1004	 */
1005	// .vbus_power		= at91_vbus_power,
1006};
1007
1008/*-------------------------------------------------------------------------*/
1009
1010static int handle_ep(struct at91_ep *ep)
1011{
1012	struct at91_request	*req;
1013	u32 __iomem		*creg = ep->creg;
1014	u32			csr = __raw_readl(creg);
1015
1016	if (!list_empty(&ep->queue))
1017		req = list_entry(ep->queue.next,
1018			struct at91_request, queue);
1019	else
1020		req = NULL;
1021
1022	if (ep->is_in) {
1023		if (csr & (AT91_UDP_STALLSENT | AT91_UDP_TXCOMP)) {
1024			csr |= CLR_FX;
1025			csr &= ~(SET_FX | AT91_UDP_STALLSENT | AT91_UDP_TXCOMP);
1026			__raw_writel(csr, creg);
1027		}
1028		if (req)
1029			return write_fifo(ep, req);
1030
1031	} else {
1032		if (csr & AT91_UDP_STALLSENT) {
1033			/* STALLSENT bit == ISOERR */
1034			if (ep->is_iso && req)
1035				req->req.status = -EILSEQ;
1036			csr |= CLR_FX;
1037			csr &= ~(SET_FX | AT91_UDP_STALLSENT);
1038			__raw_writel(csr, creg);
1039			csr = __raw_readl(creg);
1040		}
1041		if (req && (csr & RX_DATA_READY))
1042			return read_fifo(ep, req);
1043	}
1044	return 0;
1045}
1046
1047union setup {
1048	u8			raw[8];
1049	struct usb_ctrlrequest	r;
1050};
1051
1052static void handle_setup(struct at91_udc *udc, struct at91_ep *ep, u32 csr)
1053{
1054	u32 __iomem	*creg = ep->creg;
1055	u8 __iomem	*dreg = ep->creg + (AT91_UDP_FDR(0) - AT91_UDP_CSR(0));
1056	unsigned	rxcount, i = 0;
1057	u32		tmp;
1058	union setup	pkt;
1059	int		status = 0;
1060
1061	/* read and ack SETUP; hard-fail for bogus packets */
1062	rxcount = (csr & AT91_UDP_RXBYTECNT) >> 16;
1063	if (likely(rxcount == 8)) {
1064		while (rxcount--)
1065			pkt.raw[i++] = __raw_readb(dreg);
1066		if (pkt.r.bRequestType & USB_DIR_IN) {
1067			csr |= AT91_UDP_DIR;
1068			ep->is_in = 1;
1069		} else {
1070			csr &= ~AT91_UDP_DIR;
1071			ep->is_in = 0;
1072		}
1073	} else {
1074		// REVISIT this happens sometimes under load; why??
1075		ERR("SETUP len %d, csr %08x\n", rxcount, csr);
1076		status = -EINVAL;
1077	}
1078	csr |= CLR_FX;
1079	csr &= ~(SET_FX | AT91_UDP_RXSETUP);
1080	__raw_writel(csr, creg);
1081	udc->wait_for_addr_ack = 0;
1082	udc->wait_for_config_ack = 0;
1083	ep->stopped = 0;
1084	if (unlikely(status != 0))
1085		goto stall;
1086
1087#define w_index		le16_to_cpu(pkt.r.wIndex)
1088#define w_value		le16_to_cpu(pkt.r.wValue)
1089#define w_length	le16_to_cpu(pkt.r.wLength)
1090
1091	VDBG("SETUP %02x.%02x v%04x i%04x l%04x\n",
1092			pkt.r.bRequestType, pkt.r.bRequest,
1093			w_value, w_index, w_length);
1094
1095	/*
1096	 * A few standard requests get handled here, ones that touch
1097	 * hardware ... notably for device and endpoint features.
1098	 */
1099	udc->req_pending = 1;
1100	csr = __raw_readl(creg);
1101	csr |= CLR_FX;
1102	csr &= ~SET_FX;
1103	switch ((pkt.r.bRequestType << 8) | pkt.r.bRequest) {
1104
1105	case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8)
1106			| USB_REQ_SET_ADDRESS:
1107		__raw_writel(csr | AT91_UDP_TXPKTRDY, creg);
1108		udc->addr = w_value;
1109		udc->wait_for_addr_ack = 1;
1110		udc->req_pending = 0;
1111		/* FADDR is set later, when we ack host STATUS */
1112		return;
1113
1114	case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8)
1115			| USB_REQ_SET_CONFIGURATION:
1116		tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT) & AT91_UDP_CONFG;
1117		if (pkt.r.wValue)
1118			udc->wait_for_config_ack = (tmp == 0);
1119		else
1120			udc->wait_for_config_ack = (tmp != 0);
1121		if (udc->wait_for_config_ack)
1122			VDBG("wait for config\n");
1123		/* CONFG is toggled later, if gadget driver succeeds */
1124		break;
1125
1126	/*
1127	 * Hosts may set or clear remote wakeup status, and
1128	 * devices may report they're VBUS powered.
1129	 */
1130	case ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8)
1131			| USB_REQ_GET_STATUS:
1132		tmp = (udc->selfpowered << USB_DEVICE_SELF_POWERED);
1133		if (at91_udp_read(udc, AT91_UDP_GLB_STAT) & AT91_UDP_ESR)
1134			tmp |= (1 << USB_DEVICE_REMOTE_WAKEUP);
1135		PACKET("get device status\n");
1136		__raw_writeb(tmp, dreg);
1137		__raw_writeb(0, dreg);
1138		goto write_in;
1139		/* then STATUS starts later, automatically */
1140	case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8)
1141			| USB_REQ_SET_FEATURE:
1142		if (w_value != USB_DEVICE_REMOTE_WAKEUP)
1143			goto stall;
1144		tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
1145		tmp |= AT91_UDP_ESR;
1146		at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
1147		goto succeed;
1148	case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8)
1149			| USB_REQ_CLEAR_FEATURE:
1150		if (w_value != USB_DEVICE_REMOTE_WAKEUP)
1151			goto stall;
1152		tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
1153		tmp &= ~AT91_UDP_ESR;
1154		at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
1155		goto succeed;
1156
1157	/*
1158	 * Interfaces have no feature settings; this is pretty useless.
1159	 * we won't even insist the interface exists...
1160	 */
1161	case ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_INTERFACE) << 8)
1162			| USB_REQ_GET_STATUS:
1163		PACKET("get interface status\n");
1164		__raw_writeb(0, dreg);
1165		__raw_writeb(0, dreg);
1166		goto write_in;
1167		/* then STATUS starts later, automatically */
1168	case ((USB_TYPE_STANDARD|USB_RECIP_INTERFACE) << 8)
1169			| USB_REQ_SET_FEATURE:
1170	case ((USB_TYPE_STANDARD|USB_RECIP_INTERFACE) << 8)
1171			| USB_REQ_CLEAR_FEATURE:
1172		goto stall;
1173
1174	/*
1175	 * Hosts may clear bulk/intr endpoint halt after the gadget
1176	 * driver sets it (not widely used); or set it (for testing)
1177	 */
1178	case ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_ENDPOINT) << 8)
1179			| USB_REQ_GET_STATUS:
1180		tmp = w_index & USB_ENDPOINT_NUMBER_MASK;
1181		ep = &udc->ep[tmp];
1182		if (tmp >= NUM_ENDPOINTS || (tmp && !ep->desc))
1183			goto stall;
1184
1185		if (tmp) {
1186			if ((w_index & USB_DIR_IN)) {
1187				if (!ep->is_in)
1188					goto stall;
1189			} else if (ep->is_in)
1190				goto stall;
1191		}
1192		PACKET("get %s status\n", ep->ep.name);
1193		if (__raw_readl(ep->creg) & AT91_UDP_FORCESTALL)
1194			tmp = (1 << USB_ENDPOINT_HALT);
1195		else
1196			tmp = 0;
1197		__raw_writeb(tmp, dreg);
1198		__raw_writeb(0, dreg);
1199		goto write_in;
1200		/* then STATUS starts later, automatically */
1201	case ((USB_TYPE_STANDARD|USB_RECIP_ENDPOINT) << 8)
1202			| USB_REQ_SET_FEATURE:
1203		tmp = w_index & USB_ENDPOINT_NUMBER_MASK;
1204		ep = &udc->ep[tmp];
1205		if (w_value != USB_ENDPOINT_HALT || tmp >= NUM_ENDPOINTS)
1206			goto stall;
1207		if (!ep->desc || ep->is_iso)
1208			goto stall;
1209		if ((w_index & USB_DIR_IN)) {
1210			if (!ep->is_in)
1211				goto stall;
1212		} else if (ep->is_in)
1213			goto stall;
1214
1215		tmp = __raw_readl(ep->creg);
1216		tmp &= ~SET_FX;
1217		tmp |= CLR_FX | AT91_UDP_FORCESTALL;
1218		__raw_writel(tmp, ep->creg);
1219		goto succeed;
1220	case ((USB_TYPE_STANDARD|USB_RECIP_ENDPOINT) << 8)
1221			| USB_REQ_CLEAR_FEATURE:
1222		tmp = w_index & USB_ENDPOINT_NUMBER_MASK;
1223		ep = &udc->ep[tmp];
1224		if (w_value != USB_ENDPOINT_HALT || tmp >= NUM_ENDPOINTS)
1225			goto stall;
1226		if (tmp == 0)
1227			goto succeed;
1228		if (!ep->desc || ep->is_iso)
1229			goto stall;
1230		if ((w_index & USB_DIR_IN)) {
1231			if (!ep->is_in)
1232				goto stall;
1233		} else if (ep->is_in)
1234			goto stall;
1235
1236		at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
1237		at91_udp_write(udc, AT91_UDP_RST_EP, 0);
1238		tmp = __raw_readl(ep->creg);
1239		tmp |= CLR_FX;
1240		tmp &= ~(SET_FX | AT91_UDP_FORCESTALL);
1241		__raw_writel(tmp, ep->creg);
1242		if (!list_empty(&ep->queue))
1243			handle_ep(ep);
1244		goto succeed;
1245	}
1246
1247#undef w_value
1248#undef w_index
1249#undef w_length
1250
1251	/* pass request up to the gadget driver */
1252	if (udc->driver) {
1253		spin_unlock(&udc->lock);
1254		status = udc->driver->setup(&udc->gadget, &pkt.r);
1255		spin_lock(&udc->lock);
1256	}
1257	else
1258		status = -ENODEV;
1259	if (status < 0) {
1260stall:
1261		VDBG("req %02x.%02x protocol STALL; stat %d\n",
1262				pkt.r.bRequestType, pkt.r.bRequest, status);
1263		csr |= AT91_UDP_FORCESTALL;
1264		__raw_writel(csr, creg);
1265		udc->req_pending = 0;
1266	}
1267	return;
1268
1269succeed:
1270	/* immediate successful (IN) STATUS after zero length DATA */
1271	PACKET("ep0 in/status\n");
1272write_in:
1273	csr |= AT91_UDP_TXPKTRDY;
1274	__raw_writel(csr, creg);
1275	udc->req_pending = 0;
1276}
1277
1278static void handle_ep0(struct at91_udc *udc)
1279{
1280	struct at91_ep		*ep0 = &udc->ep[0];
1281	u32 __iomem		*creg = ep0->creg;
1282	u32			csr = __raw_readl(creg);
1283	struct at91_request	*req;
1284
1285	if (unlikely(csr & AT91_UDP_STALLSENT)) {
1286		nuke(ep0, -EPROTO);
1287		udc->req_pending = 0;
1288		csr |= CLR_FX;
1289		csr &= ~(SET_FX | AT91_UDP_STALLSENT | AT91_UDP_FORCESTALL);
1290		__raw_writel(csr, creg);
1291		VDBG("ep0 stalled\n");
1292		csr = __raw_readl(creg);
1293	}
1294	if (csr & AT91_UDP_RXSETUP) {
1295		nuke(ep0, 0);
1296		udc->req_pending = 0;
1297		handle_setup(udc, ep0, csr);
1298		return;
1299	}
1300
1301	if (list_empty(&ep0->queue))
1302		req = NULL;
1303	else
1304		req = list_entry(ep0->queue.next, struct at91_request, queue);
1305
1306	/* host ACKed an IN packet that we sent */
1307	if (csr & AT91_UDP_TXCOMP) {
1308		csr |= CLR_FX;
1309		csr &= ~(SET_FX | AT91_UDP_TXCOMP);
1310
1311		/* write more IN DATA? */
1312		if (req && ep0->is_in) {
1313			if (handle_ep(ep0))
1314				udc->req_pending = 0;
1315
1316		/*
1317		 * Ack after:
1318		 *  - last IN DATA packet (including GET_STATUS)
1319		 *  - IN/STATUS for OUT DATA
1320		 *  - IN/STATUS for any zero-length DATA stage
1321		 * except for the IN DATA case, the host should send
1322		 * an OUT status later, which we'll ack.
1323		 */
1324		} else {
1325			udc->req_pending = 0;
1326			__raw_writel(csr, creg);
1327
1328			/*
1329			 * SET_ADDRESS takes effect only after the STATUS
1330			 * (to the original address) gets acked.
1331			 */
1332			if (udc->wait_for_addr_ack) {
1333				u32	tmp;
1334
1335				at91_udp_write(udc, AT91_UDP_FADDR,
1336						AT91_UDP_FEN | udc->addr);
1337				tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
1338				tmp &= ~AT91_UDP_FADDEN;
1339				if (udc->addr)
1340					tmp |= AT91_UDP_FADDEN;
1341				at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
1342
1343				udc->wait_for_addr_ack = 0;
1344				VDBG("address %d\n", udc->addr);
1345			}
1346		}
1347	}
1348
1349	/* OUT packet arrived ... */
1350	else if (csr & AT91_UDP_RX_DATA_BK0) {
1351		csr |= CLR_FX;
1352		csr &= ~(SET_FX | AT91_UDP_RX_DATA_BK0);
1353
1354		/* OUT DATA stage */
1355		if (!ep0->is_in) {
1356			if (req) {
1357				if (handle_ep(ep0)) {
1358					/* send IN/STATUS */
1359					PACKET("ep0 in/status\n");
1360					csr = __raw_readl(creg);
1361					csr &= ~SET_FX;
1362					csr |= CLR_FX | AT91_UDP_TXPKTRDY;
1363					__raw_writel(csr, creg);
1364					udc->req_pending = 0;
1365				}
1366			} else if (udc->req_pending) {
1367				/*
1368				 * AT91 hardware has a hard time with this
1369				 * "deferred response" mode for control-OUT
1370				 * transfers.  (For control-IN it's fine.)
1371				 *
1372				 * The normal solution leaves OUT data in the
1373				 * fifo until the gadget driver is ready.
1374				 * We couldn't do that here without disabling
1375				 * the IRQ that tells about SETUP packets,
1376				 * e.g. when the host gets impatient...
1377				 *
1378				 * Working around it by copying into a buffer
1379				 * would almost be a non-deferred response,
1380				 * except that it wouldn't permit reliable
1381				 * stalling of the request.  Instead, demand
1382				 * that gadget drivers not use this mode.
1383				 */
1384				DBG("no control-OUT deferred responses!\n");
1385				__raw_writel(csr | AT91_UDP_FORCESTALL, creg);
1386				udc->req_pending = 0;
1387			}
1388
1389		/* STATUS stage for control-IN; ack.  */
1390		} else {
1391			PACKET("ep0 out/status ACK\n");
1392			__raw_writel(csr, creg);
1393
1394			/* "early" status stage */
1395			if (req)
1396				done(ep0, req, 0);
1397		}
1398	}
1399}
1400
1401static irqreturn_t at91_udc_irq (int irq, void *_udc)
1402{
1403	struct at91_udc		*udc = _udc;
1404	u32			rescans = 5;
1405	int			disable_clock = 0;
1406	unsigned long		flags;
1407
1408	spin_lock_irqsave(&udc->lock, flags);
1409
1410	if (!udc->clocked) {
1411		clk_on(udc);
1412		disable_clock = 1;
1413	}
1414
1415	while (rescans--) {
1416		u32 status;
1417
1418		status = at91_udp_read(udc, AT91_UDP_ISR)
1419			& at91_udp_read(udc, AT91_UDP_IMR);
1420		if (!status)
1421			break;
1422
1423		/* USB reset irq:  not maskable */
1424		if (status & AT91_UDP_ENDBUSRES) {
1425			at91_udp_write(udc, AT91_UDP_IDR, ~MINIMUS_INTERRUPTUS);
1426			at91_udp_write(udc, AT91_UDP_IER, MINIMUS_INTERRUPTUS);
1427			/* Atmel code clears this irq twice */
1428			at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_ENDBUSRES);
1429			at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_ENDBUSRES);
1430			VDBG("end bus reset\n");
1431			udc->addr = 0;
1432			stop_activity(udc);
1433
1434			/* enable ep0 */
1435			at91_udp_write(udc, AT91_UDP_CSR(0),
1436					AT91_UDP_EPEDS | AT91_UDP_EPTYPE_CTRL);
1437			udc->gadget.speed = USB_SPEED_FULL;
1438			udc->suspended = 0;
1439			at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_EP(0));
1440
1441			/*
1442			 * NOTE:  this driver keeps clocks off unless the
1443			 * USB host is present.  That saves power, but for
1444			 * boards that don't support VBUS detection, both
1445			 * clocks need to be active most of the time.
1446			 */
1447
1448		/* host initiated suspend (3+ms bus idle) */
1449		} else if (status & AT91_UDP_RXSUSP) {
1450			at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXSUSP);
1451			at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_RXRSM);
1452			at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXSUSP);
1453			// VDBG("bus suspend\n");
1454			if (udc->suspended)
1455				continue;
1456			udc->suspended = 1;
1457
1458			/*
1459			 * NOTE:  when suspending a VBUS-powered device, the
1460			 * gadget driver should switch into slow clock mode
1461			 * and then into standby to avoid drawing more than
1462			 * 500uA power (2500uA for some high-power configs).
1463			 */
1464			if (udc->driver && udc->driver->suspend) {
1465				spin_unlock(&udc->lock);
1466				udc->driver->suspend(&udc->gadget);
1467				spin_lock(&udc->lock);
1468			}
1469
1470		/* host initiated resume */
1471		} else if (status & AT91_UDP_RXRSM) {
1472			at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXRSM);
1473			at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_RXSUSP);
1474			at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXRSM);
1475			// VDBG("bus resume\n");
1476			if (!udc->suspended)
1477				continue;
1478			udc->suspended = 0;
1479
1480			/*
1481			 * NOTE:  for a VBUS-powered device, the gadget driver
1482			 * would normally want to switch out of slow clock
1483			 * mode into normal mode.
1484			 */
1485			if (udc->driver && udc->driver->resume) {
1486				spin_unlock(&udc->lock);
1487				udc->driver->resume(&udc->gadget);
1488				spin_lock(&udc->lock);
1489			}
1490
1491		/* endpoint IRQs are cleared by handling them */
1492		} else {
1493			int		i;
1494			unsigned	mask = 1;
1495			struct at91_ep	*ep = &udc->ep[1];
1496
1497			if (status & mask)
1498				handle_ep0(udc);
1499			for (i = 1; i < NUM_ENDPOINTS; i++) {
1500				mask <<= 1;
1501				if (status & mask)
1502					handle_ep(ep);
1503				ep++;
1504			}
1505		}
1506	}
1507
1508	if (disable_clock)
1509		clk_off(udc);
1510
1511	spin_unlock_irqrestore(&udc->lock, flags);
1512
1513	return IRQ_HANDLED;
1514}
1515
1516/*-------------------------------------------------------------------------*/
1517
1518static void nop_release(struct device *dev)
1519{
1520	/* nothing to free */
1521}
1522
1523static struct at91_udc controller = {
1524	.gadget = {
1525		.ops	= &at91_udc_ops,
1526		.ep0	= &controller.ep[0].ep,
1527		.name	= driver_name,
1528		.dev	= {
1529			.init_name = "gadget",
1530			.release = nop_release,
1531		}
1532	},
1533	.ep[0] = {
1534		.ep = {
1535			.name	= ep0name,
1536			.ops	= &at91_ep_ops,
1537		},
1538		.udc		= &controller,
1539		.maxpacket	= 8,
1540		.int_mask	= 1 << 0,
1541	},
1542	.ep[1] = {
1543		.ep = {
1544			.name	= "ep1",
1545			.ops	= &at91_ep_ops,
1546		},
1547		.udc		= &controller,
1548		.is_pingpong	= 1,
1549		.maxpacket	= 64,
1550		.int_mask	= 1 << 1,
1551	},
1552	.ep[2] = {
1553		.ep = {
1554			.name	= "ep2",
1555			.ops	= &at91_ep_ops,
1556		},
1557		.udc		= &controller,
1558		.is_pingpong	= 1,
1559		.maxpacket	= 64,
1560		.int_mask	= 1 << 2,
1561	},
1562	.ep[3] = {
1563		.ep = {
1564			/* could actually do bulk too */
1565			.name	= "ep3-int",
1566			.ops	= &at91_ep_ops,
1567		},
1568		.udc		= &controller,
1569		.maxpacket	= 8,
1570		.int_mask	= 1 << 3,
1571	},
1572	.ep[4] = {
1573		.ep = {
1574			.name	= "ep4",
1575			.ops	= &at91_ep_ops,
1576		},
1577		.udc		= &controller,
1578		.is_pingpong	= 1,
1579		.maxpacket	= 256,
1580		.int_mask	= 1 << 4,
1581	},
1582	.ep[5] = {
1583		.ep = {
1584			.name	= "ep5",
1585			.ops	= &at91_ep_ops,
1586		},
1587		.udc		= &controller,
1588		.is_pingpong	= 1,
1589		.maxpacket	= 256,
1590		.int_mask	= 1 << 5,
1591	},
1592	/* ep6 and ep7 are also reserved (custom silicon might use them) */
1593};
1594
1595static void at91_vbus_update(struct at91_udc *udc, unsigned value)
1596{
1597	value ^= udc->board.vbus_active_low;
1598	if (value != udc->vbus)
1599		at91_vbus_session(&udc->gadget, value);
1600}
1601
1602static irqreturn_t at91_vbus_irq(int irq, void *_udc)
1603{
1604	struct at91_udc	*udc = _udc;
1605
1606	/* vbus needs at least brief debouncing */
1607	udelay(10);
1608	at91_vbus_update(udc, gpio_get_value(udc->board.vbus_pin));
1609
1610	return IRQ_HANDLED;
1611}
1612
1613static void at91_vbus_timer_work(struct work_struct *work)
1614{
1615	struct at91_udc *udc = container_of(work, struct at91_udc,
1616					    vbus_timer_work);
1617
1618	at91_vbus_update(udc, gpio_get_value_cansleep(udc->board.vbus_pin));
1619
1620	if (!timer_pending(&udc->vbus_timer))
1621		mod_timer(&udc->vbus_timer, jiffies + VBUS_POLL_TIMEOUT);
1622}
1623
1624static void at91_vbus_timer(unsigned long data)
1625{
1626	struct at91_udc *udc = (struct at91_udc *)data;
1627
1628	/*
1629	 * If we are polling vbus it is likely that the gpio is on an
1630	 * bus such as i2c or spi which may sleep, so schedule some work
1631	 * to read the vbus gpio
1632	 */
1633	if (!work_pending(&udc->vbus_timer_work))
1634		schedule_work(&udc->vbus_timer_work);
1635}
1636
1637static int at91_start(struct usb_gadget_driver *driver,
1638		int (*bind)(struct usb_gadget *))
1639{
1640	struct at91_udc	*udc = &controller;
1641	int		retval;
1642	unsigned long	flags;
1643
1644	if (!driver
1645			|| driver->speed < USB_SPEED_FULL
1646			|| !bind
1647			|| !driver->setup) {
1648		DBG("bad parameter.\n");
1649		return -EINVAL;
1650	}
1651
1652	if (udc->driver) {
1653		DBG("UDC already has a gadget driver\n");
1654		return -EBUSY;
1655	}
1656
1657	udc->driver = driver;
1658	udc->gadget.dev.driver = &driver->driver;
1659	dev_set_drvdata(&udc->gadget.dev, &driver->driver);
1660	udc->enabled = 1;
1661	udc->selfpowered = 1;
1662
1663	retval = bind(&udc->gadget);
1664	if (retval) {
1665		DBG("bind() returned %d\n", retval);
1666		udc->driver = NULL;
1667		udc->gadget.dev.driver = NULL;
1668		dev_set_drvdata(&udc->gadget.dev, NULL);
1669		udc->enabled = 0;
1670		udc->selfpowered = 0;
1671		return retval;
1672	}
1673
1674	spin_lock_irqsave(&udc->lock, flags);
1675	pullup(udc, 1);
1676	spin_unlock_irqrestore(&udc->lock, flags);
1677
1678	DBG("bound to %s\n", driver->driver.name);
1679	return 0;
1680}
1681
1682static int at91_stop(struct usb_gadget_driver *driver)
1683{
1684	struct at91_udc *udc = &controller;
1685	unsigned long	flags;
1686
1687	if (!driver || driver != udc->driver || !driver->unbind)
1688		return -EINVAL;
1689
1690	spin_lock_irqsave(&udc->lock, flags);
1691	udc->enabled = 0;
1692	at91_udp_write(udc, AT91_UDP_IDR, ~0);
1693	pullup(udc, 0);
1694	spin_unlock_irqrestore(&udc->lock, flags);
1695
1696	driver->unbind(&udc->gadget);
1697	udc->gadget.dev.driver = NULL;
1698	dev_set_drvdata(&udc->gadget.dev, NULL);
1699	udc->driver = NULL;
1700
1701	DBG("unbound from %s\n", driver->driver.name);
1702	return 0;
1703}
1704
1705/*-------------------------------------------------------------------------*/
1706
1707static void at91udc_shutdown(struct platform_device *dev)
1708{
1709	struct at91_udc *udc = platform_get_drvdata(dev);
1710	unsigned long	flags;
1711
1712	/* force disconnect on reboot */
1713	spin_lock_irqsave(&udc->lock, flags);
1714	pullup(platform_get_drvdata(dev), 0);
1715	spin_unlock_irqrestore(&udc->lock, flags);
1716}
1717
1718static int __init at91udc_probe(struct platform_device *pdev)
1719{
1720	struct device	*dev = &pdev->dev;
1721	struct at91_udc	*udc;
1722	int		retval;
1723	struct resource	*res;
1724
1725	if (!dev->platform_data) {
1726		/* small (so we copy it) but critical! */
1727		DBG("missing platform_data\n");
1728		return -ENODEV;
1729	}
1730
1731	if (pdev->num_resources != 2) {
1732		DBG("invalid num_resources\n");
1733		return -ENODEV;
1734	}
1735	if ((pdev->resource[0].flags != IORESOURCE_MEM)
1736			|| (pdev->resource[1].flags != IORESOURCE_IRQ)) {
1737		DBG("invalid resource type\n");
1738		return -ENODEV;
1739	}
1740
1741	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1742	if (!res)
1743		return -ENXIO;
1744
1745	if (!request_mem_region(res->start, resource_size(res), driver_name)) {
1746		DBG("someone's using UDC memory\n");
1747		return -EBUSY;
1748	}
1749
1750	/* init software state */
1751	udc = &controller;
1752	udc->gadget.dev.parent = dev;
1753	udc->board = *(struct at91_udc_data *) dev->platform_data;
1754	udc->pdev = pdev;
1755	udc->enabled = 0;
1756	spin_lock_init(&udc->lock);
1757
1758	/* rm9200 needs manual D+ pullup; off by default */
1759	if (cpu_is_at91rm9200()) {
1760		if (udc->board.pullup_pin <= 0) {
1761			DBG("no D+ pullup?\n");
1762			retval = -ENODEV;
1763			goto fail0;
1764		}
1765		retval = gpio_request(udc->board.pullup_pin, "udc_pullup");
1766		if (retval) {
1767			DBG("D+ pullup is busy\n");
1768			goto fail0;
1769		}
1770		gpio_direction_output(udc->board.pullup_pin,
1771				udc->board.pullup_active_low);
1772	}
1773
1774	/* newer chips have more FIFO memory than rm9200 */
1775	if (cpu_is_at91sam9260() || cpu_is_at91sam9g20()) {
1776		udc->ep[0].maxpacket = 64;
1777		udc->ep[3].maxpacket = 64;
1778		udc->ep[4].maxpacket = 512;
1779		udc->ep[5].maxpacket = 512;
1780	} else if (cpu_is_at91sam9261() || cpu_is_at91sam9g10()) {
1781		udc->ep[3].maxpacket = 64;
1782	} else if (cpu_is_at91sam9263()) {
1783		udc->ep[0].maxpacket = 64;
1784		udc->ep[3].maxpacket = 64;
1785	}
1786
1787	udc->udp_baseaddr = ioremap(res->start, resource_size(res));
1788	if (!udc->udp_baseaddr) {
1789		retval = -ENOMEM;
1790		goto fail0a;
1791	}
1792
1793	udc_reinit(udc);
1794
1795	/* get interface and function clocks */
1796	udc->iclk = clk_get(dev, "udc_clk");
1797	udc->fclk = clk_get(dev, "udpck");
1798	if (IS_ERR(udc->iclk) || IS_ERR(udc->fclk)) {
1799		DBG("clocks missing\n");
1800		retval = -ENODEV;
1801		/* NOTE: we "know" here that refcounts on these are NOPs */
1802		goto fail0b;
1803	}
1804
1805	retval = device_register(&udc->gadget.dev);
1806	if (retval < 0) {
1807		put_device(&udc->gadget.dev);
1808		goto fail0b;
1809	}
1810
1811	/* don't do anything until we have both gadget driver and VBUS */
1812	clk_enable(udc->iclk);
1813	at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS);
1814	at91_udp_write(udc, AT91_UDP_IDR, 0xffffffff);
1815	/* Clear all pending interrupts - UDP may be used by bootloader. */
1816	at91_udp_write(udc, AT91_UDP_ICR, 0xffffffff);
1817	clk_disable(udc->iclk);
1818
1819	/* request UDC and maybe VBUS irqs */
1820	udc->udp_irq = platform_get_irq(pdev, 0);
1821	retval = request_irq(udc->udp_irq, at91_udc_irq,
1822			IRQF_DISABLED, driver_name, udc);
1823	if (retval < 0) {
1824		DBG("request irq %d failed\n", udc->udp_irq);
1825		goto fail1;
1826	}
1827	if (udc->board.vbus_pin > 0) {
1828		retval = gpio_request(udc->board.vbus_pin, "udc_vbus");
1829		if (retval < 0) {
1830			DBG("request vbus pin failed\n");
1831			goto fail2;
1832		}
1833		gpio_direction_input(udc->board.vbus_pin);
1834
1835		/*
1836		 * Get the initial state of VBUS - we cannot expect
1837		 * a pending interrupt.
1838		 */
1839		udc->vbus = gpio_get_value_cansleep(udc->board.vbus_pin) ^
1840			udc->board.vbus_active_low;
1841
1842		if (udc->board.vbus_polled) {
1843			INIT_WORK(&udc->vbus_timer_work, at91_vbus_timer_work);
1844			setup_timer(&udc->vbus_timer, at91_vbus_timer,
1845				    (unsigned long)udc);
1846			mod_timer(&udc->vbus_timer,
1847				  jiffies + VBUS_POLL_TIMEOUT);
1848		} else {
1849			if (request_irq(udc->board.vbus_pin, at91_vbus_irq,
1850					IRQF_DISABLED, driver_name, udc)) {
1851				DBG("request vbus irq %d failed\n",
1852				    udc->board.vbus_pin);
1853				retval = -EBUSY;
1854				goto fail3;
1855			}
1856		}
1857	} else {
1858		DBG("no VBUS detection, assuming always-on\n");
1859		udc->vbus = 1;
1860	}
1861	retval = usb_add_gadget_udc(dev, &udc->gadget);
1862	if (retval)
1863		goto fail4;
1864	dev_set_drvdata(dev, udc);
1865	device_init_wakeup(dev, 1);
1866	create_debug_file(udc);
1867
1868	INFO("%s version %s\n", driver_name, DRIVER_VERSION);
1869	return 0;
1870fail4:
1871	if (udc->board.vbus_pin > 0 && !udc->board.vbus_polled)
1872		free_irq(udc->board.vbus_pin, udc);
1873fail3:
1874	if (udc->board.vbus_pin > 0)
1875		gpio_free(udc->board.vbus_pin);
1876fail2:
1877	free_irq(udc->udp_irq, udc);
1878fail1:
1879	device_unregister(&udc->gadget.dev);
1880fail0b:
1881	iounmap(udc->udp_baseaddr);
1882fail0a:
1883	if (cpu_is_at91rm9200())
1884		gpio_free(udc->board.pullup_pin);
1885fail0:
1886	release_mem_region(res->start, resource_size(res));
1887	DBG("%s probe failed, %d\n", driver_name, retval);
1888	return retval;
1889}
1890
1891static int __exit at91udc_remove(struct platform_device *pdev)
1892{
1893	struct at91_udc *udc = platform_get_drvdata(pdev);
1894	struct resource *res;
1895	unsigned long	flags;
1896
1897	DBG("remove\n");
1898
1899	usb_del_gadget_udc(&udc->gadget);
1900	if (udc->driver)
1901		return -EBUSY;
1902
1903	spin_lock_irqsave(&udc->lock, flags);
1904	pullup(udc, 0);
1905	spin_unlock_irqrestore(&udc->lock, flags);
1906
1907	device_init_wakeup(&pdev->dev, 0);
1908	remove_debug_file(udc);
1909	if (udc->board.vbus_pin > 0) {
1910		free_irq(udc->board.vbus_pin, udc);
1911		gpio_free(udc->board.vbus_pin);
1912	}
1913	free_irq(udc->udp_irq, udc);
1914	device_unregister(&udc->gadget.dev);
1915
1916	iounmap(udc->udp_baseaddr);
1917
1918	if (cpu_is_at91rm9200())
1919		gpio_free(udc->board.pullup_pin);
1920
1921	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1922	release_mem_region(res->start, resource_size(res));
1923
1924	clk_put(udc->iclk);
1925	clk_put(udc->fclk);
1926
1927	return 0;
1928}
1929
1930#ifdef CONFIG_PM
1931static int at91udc_suspend(struct platform_device *pdev, pm_message_t mesg)
1932{
1933	struct at91_udc *udc = platform_get_drvdata(pdev);
1934	int		wake = udc->driver && device_may_wakeup(&pdev->dev);
1935	unsigned long	flags;
1936
1937	/* Unless we can act normally to the host (letting it wake us up
1938	 * whenever it has work for us) force disconnect.  Wakeup requires
1939	 * PLLB for USB events (signaling for reset, wakeup, or incoming
1940	 * tokens) and VBUS irqs (on systems which support them).
1941	 */
1942	if ((!udc->suspended && udc->addr)
1943			|| !wake
1944			|| at91_suspend_entering_slow_clock()) {
1945		spin_lock_irqsave(&udc->lock, flags);
1946		pullup(udc, 0);
1947		wake = 0;
1948		spin_unlock_irqrestore(&udc->lock, flags);
1949	} else
1950		enable_irq_wake(udc->udp_irq);
1951
1952	udc->active_suspend = wake;
1953	if (udc->board.vbus_pin > 0 && !udc->board.vbus_polled && wake)
1954		enable_irq_wake(udc->board.vbus_pin);
1955	return 0;
1956}
1957
1958static int at91udc_resume(struct platform_device *pdev)
1959{
1960	struct at91_udc *udc = platform_get_drvdata(pdev);
1961	unsigned long	flags;
1962
1963	if (udc->board.vbus_pin > 0 && !udc->board.vbus_polled &&
1964	    udc->active_suspend)
1965		disable_irq_wake(udc->board.vbus_pin);
1966
1967	/* maybe reconnect to host; if so, clocks on */
1968	if (udc->active_suspend)
1969		disable_irq_wake(udc->udp_irq);
1970	else {
1971		spin_lock_irqsave(&udc->lock, flags);
1972		pullup(udc, 1);
1973		spin_unlock_irqrestore(&udc->lock, flags);
1974	}
1975	return 0;
1976}
1977#else
1978#define	at91udc_suspend	NULL
1979#define	at91udc_resume	NULL
1980#endif
1981
1982static struct platform_driver at91_udc_driver = {
1983	.remove		= __exit_p(at91udc_remove),
1984	.shutdown	= at91udc_shutdown,
1985	.suspend	= at91udc_suspend,
1986	.resume		= at91udc_resume,
1987	.driver		= {
1988		.name	= (char *) driver_name,
1989		.owner	= THIS_MODULE,
1990	},
1991};
1992
1993static int __init udc_init_module(void)
1994{
1995	return platform_driver_probe(&at91_udc_driver, at91udc_probe);
1996}
1997module_init(udc_init_module);
1998
1999static void __exit udc_exit_module(void)
2000{
2001	platform_driver_unregister(&at91_udc_driver);
2002}
2003module_exit(udc_exit_module);
2004
2005MODULE_DESCRIPTION("AT91 udc driver");
2006MODULE_AUTHOR("Thomas Rathbone, David Brownell");
2007MODULE_LICENSE("GPL");
2008MODULE_ALIAS("platform:at91_udc");
2009