⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s3c2410_udc.h

📁 2.4核linux的s3c2410-udc驱动代码!经过调试了!
💻 H
字号:
#ifndef _S3C2410_UDC_H#define _S3C2410_UDC_Hstruct s3c2410_ep {	struct list_head		queue;	unsigned long			last_io;	/* jiffies timestamp */	struct usb_gadget		*gadget;	struct s3c2410_udc		*dev;	const struct usb_endpoint_descriptor *desc;	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;};#define EP0_FIFO_SIZE		8#define EP_FIFO_SIZE		64#define DEFAULT_POWER_STATE	0x00static 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;};/****************** MACROS ******************//* #define BIT_MASK	BIT_MASK*/#define BIT_MASK	0xFF#define __raw_maskb(v,m,a)      \	        __raw_writeb((__raw_readb(a) & ~(m))|((v)&(m)), (a))#define __raw_maskw(v,m,a)      \	        __raw_writew((__raw_readw(a) & ~(m))|((v)&(m)), (a))#define __raw_maskl(v,m,a)      \	        __raw_writel((__raw_readl(a) & ~(m))|((v)&(m)), (a))#define clear_ep0_sst() do { 				\    	S3C2410_UDC_SETIX(EP0); 			\	__raw_writel(0x00, S3C2410_UDC_EP0_CSR_REG); 	\} while(0)#define clear_ep0_se() do {				\    	S3C2410_UDC_SETIX(EP0); 			\	__raw_maskl(S3C2410_UDC_EP0_CSR_SSE,		\	    	BIT_MASK, S3C2410_UDC_EP0_CSR_REG); 	\} while(0)#define clear_ep0_opr() do {				\   	S3C2410_UDC_SETIX(EP0);				\	__raw_maskl(S3C2410_UDC_EP0_CSR_SOPKTRDY,	\		BIT_MASK, S3C2410_UDC_EP0_CSR_REG); 	\} while(0)#define set_ep0_ipr() do {				\   	S3C2410_UDC_SETIX(EP0);				\	__raw_maskl(S3C2410_UDC_EP0_CSR_IPKRDY,		\		BIT_MASK, S3C2410_UDC_EP0_CSR_REG); 	\} while(0)#define set_ep0_de() do {				\   	S3C2410_UDC_SETIX(EP0);				\	__raw_maskl(S3C2410_UDC_EP0_CSR_DE,		\		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);		\} while(0)#define set_ep0_ss() do {				\   	S3C2410_UDC_SETIX(EP0);				\	__raw_maskl(S3C2410_UDC_EP0_CSR_SENDSTL,	\		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);	\} while(0)#define set_ep0_de_out() do {				\   	S3C2410_UDC_SETIX(EP0);				\	__raw_maskl((S3C2410_UDC_EP0_CSR_SOPKTRDY 	\		| S3C2410_UDC_EP0_CSR_DE),		\		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);		\} while(0)#define set_ep0_sse_out() do {				\   	S3C2410_UDC_SETIX(EP0);				\	__raw_maskl((S3C2410_UDC_EP0_CSR_SOPKTRDY 	\		| S3C2410_UDC_EP0_CSR_SSE),		\		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);		\} while(0)#define set_ep0_de_in() do {				\   	S3C2410_UDC_SETIX(EP0);				\	__raw_maskl((S3C2410_UDC_EP0_CSR_IPKRDY		\		| S3C2410_UDC_EP0_CSR_DE),		\		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);		\} while(0)#define clear_stall_ep1_out() do {			\   	S3C2410_UDC_SETIX(EP1);				\	__raw_orl(0, S3C2410_UDC_OUT_CSR1_REG);		\} while(0)#define clear_stall_ep2_out() do {			\   	S3C2410_UDC_SETIX(EP2);				\	__raw_orl(0, S3C2410_UDC_OUT_CSR1_REG);		\} while(0)#define clear_stall_ep3_out() do {			\   	S3C2410_UDC_SETIX(EP3);				\	__raw_orl(0, S3C2410_UDC_OUT_CSR1_REG);		\} while(0)#define clear_stall_ep4_out() do {			\   	S3C2410_UDC_SETIX(EP4);				\	__raw_orl(0, S3C2410_UDC_OUT_CSR1_REG);		\} while(0)#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -