Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  * linux/drivers/usb/gadget/s3c2410_udc.h
  3  * Samsung on-chip full speed USB device controllers
  4  *
  5  * Copyright (C) 2004-2007 Herbert Pötzl - Arnaud Patard
  6  *      Additional cleanups by Ben Dooks <ben-linux@fluff.org>
  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 Free Software
 20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 21  *
 22  */
 23 
 24 #ifndef _S3C2410_UDC_H
 25 #define _S3C2410_UDC_H
 26 
 27 struct s3c2410_ep {
 28         struct list_head                queue;
 29         unsigned long                   last_io;        /* jiffies timestamp */
 30         struct usb_gadget               *gadget;
 31         struct s3c2410_udc              *dev;
 32         const struct usb_endpoint_descriptor *desc;
 33         struct usb_ep                   ep;
 34         u8                              num;
 35 
 36         unsigned short                  fifo_size;
 37         u8                              bEndpointAddress;
 38         u8                              bmAttributes;
 39 
 40         unsigned                        halted : 1;
 41         unsigned                        already_seen : 1;
 42         unsigned                        setup_stage : 1;
 43 };
 44 
 45 
 46 /* Warning : ep0 has a fifo of 16 bytes */
 47 /* Don't try to set 32 or 64            */
 48 /* also testusb 14 fails  wit 16 but is */
 49 /* fine with 8                          */
 50 #define EP0_FIFO_SIZE            8
 51 #define EP_FIFO_SIZE            64
 52 #define DEFAULT_POWER_STATE     0x00
 53 
 54 #define S3C2440_EP_FIFO_SIZE    128
 55 
 56 static const char ep0name [] = "ep0";
 57 
 58 static const char *const ep_name[] = {
 59         ep0name,                                /* everyone has ep0 */
 60         /* s3c2410 four bidirectional bulk endpoints */
 61         "ep1-bulk", "ep2-bulk", "ep3-bulk", "ep4-bulk",
 62 };
 63 
 64 #define S3C2410_ENDPOINTS       ARRAY_SIZE(ep_name)
 65 
 66 struct s3c2410_request {
 67         struct list_head                queue;          /* ep's requests */
 68         struct usb_request              req;
 69 };
 70 
 71 enum ep0_state {
 72         EP0_IDLE,
 73         EP0_IN_DATA_PHASE,
 74         EP0_OUT_DATA_PHASE,
 75         EP0_END_XFER,
 76         EP0_STALL,
 77 };
 78 
 79 static const char *ep0states[]= {
 80         "EP0_IDLE",
 81         "EP0_IN_DATA_PHASE",
 82         "EP0_OUT_DATA_PHASE",
 83         "EP0_END_XFER",
 84         "EP0_STALL",
 85 };
 86 
 87 struct s3c2410_udc {
 88         spinlock_t                      lock;
 89 
 90         struct s3c2410_ep               ep[S3C2410_ENDPOINTS];
 91         int                             address;
 92         struct usb_gadget               gadget;
 93         struct usb_gadget_driver        *driver;
 94         struct s3c2410_request          fifo_req;
 95         u8                              fifo_buf[EP_FIFO_SIZE];
 96         u16                             devstatus;
 97 
 98         u32                             port_status;
 99         int                             ep0state;
100 
101         unsigned                        got_irq : 1;
102 
103         unsigned                        req_std : 1;
104         unsigned                        req_config : 1;
105         unsigned                        req_pending : 1;
106         u8                              vbus;
107         struct dentry                   *regs_info;
108 };
109 
110 #endif
111 
  This page was automatically generated by the LXR engine.