cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

s3c2410_udc.h (2149B)


      1// SPDX-License-Identifier: GPL-2.0+
      2/*
      3 * linux/drivers/usb/gadget/s3c2410_udc.h
      4 * Samsung on-chip full speed USB device controllers
      5 *
      6 * Copyright (C) 2004-2007 Herbert Pƶtzl - Arnaud Patard
      7 *	Additional cleanups by Ben Dooks <ben-linux@fluff.org>
      8 */
      9
     10#ifndef _S3C2410_UDC_H
     11#define _S3C2410_UDC_H
     12
     13struct s3c2410_ep {
     14	struct list_head		queue;
     15	unsigned long			last_io;	/* jiffies timestamp */
     16	struct usb_gadget		*gadget;
     17	struct s3c2410_udc		*dev;
     18	struct usb_ep			ep;
     19	u8				num;
     20
     21	unsigned short			fifo_size;
     22	u8				bEndpointAddress;
     23	u8				bmAttributes;
     24
     25	unsigned			halted : 1;
     26	unsigned			already_seen : 1;
     27	unsigned			setup_stage : 1;
     28};
     29
     30
     31/* Warning : ep0 has a fifo of 16 bytes */
     32/* Don't try to set 32 or 64            */
     33/* also testusb 14 fails  wit 16 but is */
     34/* fine with 8                          */
     35#define EP0_FIFO_SIZE		 8
     36#define EP_FIFO_SIZE		64
     37#define DEFAULT_POWER_STATE	0x00
     38
     39#define S3C2440_EP_FIFO_SIZE	128
     40
     41static const char ep0name [] = "ep0";
     42
     43static const char *const ep_name[] = {
     44	ep0name,                                /* everyone has ep0 */
     45	/* s3c2410 four bidirectional bulk endpoints */
     46	"ep1-bulk", "ep2-bulk", "ep3-bulk", "ep4-bulk",
     47};
     48
     49#define S3C2410_ENDPOINTS       ARRAY_SIZE(ep_name)
     50
     51struct s3c2410_request {
     52	struct list_head		queue;		/* ep's requests */
     53	struct usb_request		req;
     54};
     55
     56enum ep0_state {
     57        EP0_IDLE,
     58        EP0_IN_DATA_PHASE,
     59        EP0_OUT_DATA_PHASE,
     60        EP0_END_XFER,
     61        EP0_STALL,
     62};
     63
     64static const char *ep0states[]= {
     65        "EP0_IDLE",
     66        "EP0_IN_DATA_PHASE",
     67        "EP0_OUT_DATA_PHASE",
     68        "EP0_END_XFER",
     69        "EP0_STALL",
     70};
     71
     72struct s3c2410_udc {
     73	spinlock_t			lock;
     74
     75	struct s3c2410_ep		ep[S3C2410_ENDPOINTS];
     76	int				address;
     77	struct usb_gadget		gadget;
     78	struct usb_gadget_driver	*driver;
     79	struct s3c2410_request		fifo_req;
     80	u8				fifo_buf[EP_FIFO_SIZE];
     81	u16				devstatus;
     82
     83	u32				port_status;
     84	int				ep0state;
     85
     86	unsigned			got_irq : 1;
     87
     88	unsigned			req_std : 1;
     89	unsigned			req_config : 1;
     90	unsigned			req_pending : 1;
     91	u8				vbus;
     92	int				irq;
     93};
     94#define to_s3c2410(g)	(container_of((g), struct s3c2410_udc, gadget))
     95
     96#endif