2017-11-03 11:28:30 +01:00
// SPDX-License-Identifier: GPL-2.0+
2007-06-06 21:05:49 -07:00
/*
* linux / drivers / usb / gadget / s3c2410_udc . h
* Samsung on - chip full speed USB device controllers
*
2011-12-29 17:09:01 -05:00
* Copyright ( C ) 2004 - 2007 Herbert Pötzl - Arnaud Patard
2007-06-06 21:05:49 -07:00
* Additional cleanups by Ben Dooks < ben - linux @ fluff . org >
*/
# ifndef _S3C2410_UDC_H
# define _S3C2410_UDC_H
struct s3c2410_ep {
struct list_head queue ;
unsigned long last_io ; /* jiffies timestamp */
struct usb_gadget * gadget ;
struct s3c2410_udc * dev ;
struct usb_ep ep ;
u8 num ;
unsigned short fifo_size ;
u8 bEndpointAddress ;
u8 bmAttributes ;
unsigned halted : 1 ;
unsigned already_seen : 1 ;
unsigned setup_stage : 1 ;
} ;
/* Warning : ep0 has a fifo of 16 bytes */
/* Don't try to set 32 or 64 */
/* also testusb 14 fails wit 16 but is */
/* fine with 8 */
# define EP0_FIFO_SIZE 8
# define EP_FIFO_SIZE 64
# define DEFAULT_POWER_STATE 0x00
# define S3C2440_EP_FIFO_SIZE 128
static const char ep0name [ ] = " ep0 " ;
static const char * const ep_name [ ] = {
ep0name , /* everyone has ep0 */
/* s3c2410 four bidirectional bulk endpoints */
" ep1-bulk " , " ep2-bulk " , " ep3-bulk " , " ep4-bulk " ,
} ;
# define S3C2410_ENDPOINTS ARRAY_SIZE(ep_name)
struct s3c2410_request {
struct list_head queue ; /* ep's requests */
struct usb_request req ;
} ;
enum ep0_state {
EP0_IDLE ,
EP0_IN_DATA_PHASE ,
EP0_OUT_DATA_PHASE ,
EP0_END_XFER ,
EP0_STALL ,
} ;
static const char * ep0states [ ] = {
" EP0_IDLE " ,
" EP0_IN_DATA_PHASE " ,
" EP0_OUT_DATA_PHASE " ,
" EP0_END_XFER " ,
" EP0_STALL " ,
} ;
struct s3c2410_udc {
spinlock_t lock ;
struct s3c2410_ep ep [ S3C2410_ENDPOINTS ] ;
int address ;
struct usb_gadget gadget ;
struct usb_gadget_driver * driver ;
struct s3c2410_request fifo_req ;
u8 fifo_buf [ EP_FIFO_SIZE ] ;
u16 devstatus ;
u32 port_status ;
int ep0state ;
unsigned got_irq : 1 ;
unsigned req_std : 1 ;
unsigned req_config : 1 ;
unsigned req_pending : 1 ;
u8 vbus ;
2020-08-06 20:20:25 +02:00
int irq ;
2007-06-06 21:05:49 -07:00
} ;
2013-01-24 17:20:46 +02:00
# define to_s3c2410(g) (container_of((g), struct s3c2410_udc, gadget))
2007-06-06 21:05:49 -07:00
# endif