diff options
author | Andrzej Pietrasiewicz <andrzej.p@samsung.com> | 2014-07-15 15:09:45 +0400 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2014-07-16 21:15:28 +0400 |
commit | 90fccb529d241b55829701cfb9eb3086570f38b8 (patch) | |
tree | 4e788b13b8c35bc5c9d24597479cda82d503bf7c /drivers/usb/gadget/fsl_qe_udc.h | |
parent | 8443f2d2b7782fef35fe579bf1eb612c24951486 (diff) | |
download | linux-90fccb529d241b55829701cfb9eb3086570f38b8.tar.xz |
usb: gadget: Gadget directory cleanup - group UDC drivers
The drivers/usb/gadget directory contains many files.
Files which are related can be distributed into separate directories.
This patch moves the UDC drivers into a separate directory.
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget/fsl_qe_udc.h')
-rw-r--r-- | drivers/usb/gadget/fsl_qe_udc.h | 421 |
1 files changed, 0 insertions, 421 deletions
diff --git a/drivers/usb/gadget/fsl_qe_udc.h b/drivers/usb/gadget/fsl_qe_udc.h deleted file mode 100644 index 7026919fc901..000000000000 --- a/drivers/usb/gadget/fsl_qe_udc.h +++ /dev/null @@ -1,421 +0,0 @@ -/* - * drivers/usb/gadget/qe_udc.h - * - * Copyright (C) 2006-2008 Freescale Semiconductor, Inc. All rights reserved. - * - * Xiaobo Xie <X.Xie@freescale.com> - * Li Yang <leoli@freescale.com> - * - * Description: - * Freescale USB device/endpoint management registers - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at - * your option) any later version. - */ - -#ifndef __FSL_QE_UDC_H -#define __FSL_QE_UDC_H - -/* SoC type */ -#define PORT_CPM 0 -#define PORT_QE 1 - -#define USB_MAX_ENDPOINTS 4 -#define USB_MAX_PIPES USB_MAX_ENDPOINTS -#define USB_EP0_MAX_SIZE 64 -#define USB_MAX_CTRL_PAYLOAD 0x4000 -#define USB_BDRING_LEN 16 -#define USB_BDRING_LEN_RX 256 -#define USB_BDRING_LEN_TX 16 -#define MIN_EMPTY_BDS 128 -#define MAX_DATA_BDS 8 -#define USB_CRC_SIZE 2 -#define USB_DIR_BOTH 0x88 -#define R_BUF_MAXSIZE 0x800 -#define USB_EP_PARA_ALIGNMENT 32 - -/* USB Mode Register bit define */ -#define USB_MODE_EN 0x01 -#define USB_MODE_HOST 0x02 -#define USB_MODE_TEST 0x04 -#define USB_MODE_SFTE 0x08 -#define USB_MODE_RESUME 0x40 -#define USB_MODE_LSS 0x80 - -/* USB Slave Address Register Mask */ -#define USB_SLVADDR_MASK 0x7F - -/* USB Endpoint register define */ -#define USB_EPNUM_MASK 0xF000 -#define USB_EPNUM_SHIFT 12 - -#define USB_TRANS_MODE_SHIFT 8 -#define USB_TRANS_CTR 0x0000 -#define USB_TRANS_INT 0x0100 -#define USB_TRANS_BULK 0x0200 -#define USB_TRANS_ISO 0x0300 - -#define USB_EP_MF 0x0020 -#define USB_EP_RTE 0x0010 - -#define USB_THS_SHIFT 2 -#define USB_THS_MASK 0x000c -#define USB_THS_NORMAL 0x0 -#define USB_THS_IGNORE_IN 0x0004 -#define USB_THS_NACK 0x0008 -#define USB_THS_STALL 0x000c - -#define USB_RHS_SHIFT 0 -#define USB_RHS_MASK 0x0003 -#define USB_RHS_NORMAL 0x0 -#define USB_RHS_IGNORE_OUT 0x0001 -#define USB_RHS_NACK 0x0002 -#define USB_RHS_STALL 0x0003 - -#define USB_RTHS_MASK 0x000f - -/* USB Command Register define */ -#define USB_CMD_STR_FIFO 0x80 -#define USB_CMD_FLUSH_FIFO 0x40 -#define USB_CMD_ISFT 0x20 -#define USB_CMD_DSFT 0x10 -#define USB_CMD_EP_MASK 0x03 - -/* USB Event and Mask Register define */ -#define USB_E_MSF_MASK 0x0800 -#define USB_E_SFT_MASK 0x0400 -#define USB_E_RESET_MASK 0x0200 -#define USB_E_IDLE_MASK 0x0100 -#define USB_E_TXE4_MASK 0x0080 -#define USB_E_TXE3_MASK 0x0040 -#define USB_E_TXE2_MASK 0x0020 -#define USB_E_TXE1_MASK 0x0010 -#define USB_E_SOF_MASK 0x0008 -#define USB_E_BSY_MASK 0x0004 -#define USB_E_TXB_MASK 0x0002 -#define USB_E_RXB_MASK 0x0001 -#define USBER_ALL_CLEAR 0x0fff - -#define USB_E_DEFAULT_DEVICE (USB_E_RESET_MASK | USB_E_TXE4_MASK | \ - USB_E_TXE3_MASK | USB_E_TXE2_MASK | \ - USB_E_TXE1_MASK | USB_E_BSY_MASK | \ - USB_E_TXB_MASK | USB_E_RXB_MASK) - -#define USB_E_TXE_MASK (USB_E_TXE4_MASK | USB_E_TXE3_MASK|\ - USB_E_TXE2_MASK | USB_E_TXE1_MASK) -/* USB Status Register define */ -#define USB_IDLE_STATUS_MASK 0x01 - -/* USB Start of Frame Timer */ -#define USB_USSFT_MASK 0x3FFF - -/* USB Frame Number Register */ -#define USB_USFRN_MASK 0xFFFF - -struct usb_device_para{ - u16 epptr[4]; - u32 rstate; - u32 rptr; - u16 frame_n; - u16 rbcnt; - u32 rtemp; - u32 rxusb_data; - u16 rxuptr; - u8 reso[2]; - u32 softbl; - u8 sofucrctemp; -}; - -struct usb_ep_para{ - u16 rbase; - u16 tbase; - u8 rbmr; - u8 tbmr; - u16 mrblr; - u16 rbptr; - u16 tbptr; - u32 tstate; - u32 tptr; - u16 tcrc; - u16 tbcnt; - u32 ttemp; - u16 txusbu_ptr; - u8 reserve[2]; -}; - -#define USB_BUSMODE_GBL 0x20 -#define USB_BUSMODE_BO_MASK 0x18 -#define USB_BUSMODE_BO_SHIFT 0x3 -#define USB_BUSMODE_BE 0x2 -#define USB_BUSMODE_CETM 0x04 -#define USB_BUSMODE_DTB 0x02 - -/* Endpoint basic handle */ -#define ep_index(EP) ((EP)->ep.desc->bEndpointAddress & 0xF) -#define ep_maxpacket(EP) ((EP)->ep.maxpacket) -#define ep_is_in(EP) ((ep_index(EP) == 0) ? (EP->udc->ep0_dir == \ - USB_DIR_IN) : ((EP)->ep.desc->bEndpointAddress \ - & USB_DIR_IN) == USB_DIR_IN) - -/* ep0 transfer state */ -#define WAIT_FOR_SETUP 0 -#define DATA_STATE_XMIT 1 -#define DATA_STATE_NEED_ZLP 2 -#define WAIT_FOR_OUT_STATUS 3 -#define DATA_STATE_RECV 4 - -/* ep tramsfer mode */ -#define USBP_TM_CTL 0 -#define USBP_TM_ISO 1 -#define USBP_TM_BULK 2 -#define USBP_TM_INT 3 - -/*----------------------------------------------------------------------------- - USB RX And TX DATA Frame - -----------------------------------------------------------------------------*/ -struct qe_frame{ - u8 *data; - u32 len; - u32 status; - u32 info; - - void *privdata; - struct list_head node; -}; - -/* Frame structure, info field. */ -#define PID_DATA0 0x80000000 /* Data toggle zero */ -#define PID_DATA1 0x40000000 /* Data toggle one */ -#define PID_SETUP 0x20000000 /* setup bit */ -#define SETUP_STATUS 0x10000000 /* setup status bit */ -#define SETADDR_STATUS 0x08000000 /* setupup address status bit */ -#define NO_REQ 0x04000000 /* Frame without request */ -#define HOST_DATA 0x02000000 /* Host data frame */ -#define FIRST_PACKET_IN_FRAME 0x01000000 /* first packet in the frame */ -#define TOKEN_FRAME 0x00800000 /* Host token frame */ -#define ZLP 0x00400000 /* Zero length packet */ -#define IN_TOKEN_FRAME 0x00200000 /* In token package */ -#define OUT_TOKEN_FRAME 0x00100000 /* Out token package */ -#define SETUP_TOKEN_FRAME 0x00080000 /* Setup token package */ -#define STALL_FRAME 0x00040000 /* Stall handshake */ -#define NACK_FRAME 0x00020000 /* Nack handshake */ -#define NO_PID 0x00010000 /* No send PID */ -#define NO_CRC 0x00008000 /* No send CRC */ -#define HOST_COMMAND 0x00004000 /* Host command frame */ - -/* Frame status field */ -/* Receive side */ -#define FRAME_OK 0x00000000 /* Frame transmitted or received OK */ -#define FRAME_ERROR 0x80000000 /* Error occurred on frame */ -#define START_FRAME_LOST 0x40000000 /* START_FRAME_LOST */ -#define END_FRAME_LOST 0x20000000 /* END_FRAME_LOST */ -#define RX_ER_NONOCT 0x10000000 /* Rx Non Octet Aligned Packet */ -#define RX_ER_BITSTUFF 0x08000000 /* Frame Aborted --Received packet - with bit stuff error */ -#define RX_ER_CRC 0x04000000 /* Received packet with CRC error */ -#define RX_ER_OVERUN 0x02000000 /* Over-run occurred on reception */ -#define RX_ER_PID 0x01000000 /* Wrong PID received */ -/* Tranmit side */ -#define TX_ER_NAK 0x00800000 /* Received NAK handshake */ -#define TX_ER_STALL 0x00400000 /* Received STALL handshake */ -#define TX_ER_TIMEOUT 0x00200000 /* Transmit time out */ -#define TX_ER_UNDERUN 0x00100000 /* Transmit underrun */ -#define FRAME_INPROGRESS 0x00080000 /* Frame is being transmitted */ -#define ER_DATA_UNDERUN 0x00040000 /* Frame is shorter then expected */ -#define ER_DATA_OVERUN 0x00020000 /* Frame is longer then expected */ - -/* QE USB frame operation functions */ -#define frame_get_length(frm) (frm->len) -#define frame_set_length(frm, leng) (frm->len = leng) -#define frame_get_data(frm) (frm->data) -#define frame_set_data(frm, dat) (frm->data = dat) -#define frame_get_info(frm) (frm->info) -#define frame_set_info(frm, inf) (frm->info = inf) -#define frame_get_status(frm) (frm->status) -#define frame_set_status(frm, stat) (frm->status = stat) -#define frame_get_privdata(frm) (frm->privdata) -#define frame_set_privdata(frm, dat) (frm->privdata = dat) - -static inline void qe_frame_clean(struct qe_frame *frm) -{ - frame_set_data(frm, NULL); - frame_set_length(frm, 0); - frame_set_status(frm, FRAME_OK); - frame_set_info(frm, 0); - frame_set_privdata(frm, NULL); -} - -static inline void qe_frame_init(struct qe_frame *frm) -{ - qe_frame_clean(frm); - INIT_LIST_HEAD(&(frm->node)); -} - -struct qe_req { - struct usb_request req; - struct list_head queue; - /* ep_queue() func will add - a request->queue into a udc_ep->queue 'd tail */ - struct qe_ep *ep; - unsigned mapped:1; -}; - -struct qe_ep { - struct usb_ep ep; - struct list_head queue; - struct qe_udc *udc; - struct usb_gadget *gadget; - - u8 state; - - struct qe_bd __iomem *rxbase; - struct qe_bd __iomem *n_rxbd; - struct qe_bd __iomem *e_rxbd; - - struct qe_bd __iomem *txbase; - struct qe_bd __iomem *n_txbd; - struct qe_bd __iomem *c_txbd; - - struct qe_frame *rxframe; - u8 *rxbuffer; - dma_addr_t rxbuf_d; - u8 rxbufmap; - unsigned char localnack; - int has_data; - - struct qe_frame *txframe; - struct qe_req *tx_req; - int sent; /*data already sent */ - int last; /*data sent in the last time*/ - - u8 dir; - u8 epnum; - u8 tm; /* transfer mode */ - u8 data01; - u8 init; - - u8 already_seen; - u8 enable_tasklet; - u8 setup_stage; - u32 last_io; /* timestamp */ - - char name[14]; - - unsigned double_buf:1; - unsigned stopped:1; - unsigned fnf:1; - unsigned has_dma:1; - - u8 ackwait; - u8 dma_channel; - u16 dma_counter; - int lch; - - struct timer_list timer; -}; - -struct qe_udc { - struct usb_gadget gadget; - struct usb_gadget_driver *driver; - struct device *dev; - struct qe_ep eps[USB_MAX_ENDPOINTS]; - struct usb_ctrlrequest local_setup_buff; - spinlock_t lock; /* lock for set/config qe_udc */ - unsigned long soc_type; /* QE or CPM soc */ - - struct qe_req *status_req; /* ep0 status request */ - - /* USB and EP Parameter Block pointer */ - struct usb_device_para __iomem *usb_param; - struct usb_ep_para __iomem *ep_param[4]; - - u32 max_pipes; /* Device max pipes */ - u32 max_use_endpts; /* Max endpointes to be used */ - u32 bus_reset; /* Device is bus reseting */ - u32 resume_state; /* USB state to resume*/ - u32 usb_state; /* USB current state */ - u32 usb_next_state; /* USB next state */ - u32 ep0_state; /* Enpoint zero state */ - u32 ep0_dir; /* Enpoint zero direction: can be - USB_DIR_IN or USB_DIR_OUT*/ - u32 usb_sof_count; /* SOF count */ - u32 errors; /* USB ERRORs count */ - - u8 *tmpbuf; - u32 c_start; - u32 c_end; - - u8 *nullbuf; - u8 *statusbuf; - dma_addr_t nullp; - u8 nullmap; - u8 device_address; /* Device USB address */ - - unsigned int usb_clock; - unsigned int usb_irq; - struct usb_ctlr __iomem *usb_regs; - - struct tasklet_struct rx_tasklet; - - struct completion *done; /* to make sure release() is done */ -}; - -#define EP_STATE_IDLE 0 -#define EP_STATE_NACK 1 -#define EP_STATE_STALL 2 - -/* - * transmit BD's status - */ -#define T_R 0x80000000 /* ready bit */ -#define T_W 0x20000000 /* wrap bit */ -#define T_I 0x10000000 /* interrupt on completion */ -#define T_L 0x08000000 /* last */ -#define T_TC 0x04000000 /* transmit CRC */ -#define T_CNF 0x02000000 /* wait for transmit confirm */ -#define T_LSP 0x01000000 /* Low-speed transaction */ -#define T_PID 0x00c00000 /* packet id */ -#define T_NAK 0x00100000 /* No ack. */ -#define T_STAL 0x00080000 /* Stall received */ -#define T_TO 0x00040000 /* time out */ -#define T_UN 0x00020000 /* underrun */ - -#define DEVICE_T_ERROR (T_UN | T_TO) -#define HOST_T_ERROR (T_UN | T_TO | T_NAK | T_STAL) -#define DEVICE_T_BD_MASK DEVICE_T_ERROR -#define HOST_T_BD_MASK HOST_T_ERROR - -#define T_PID_SHIFT 6 -#define T_PID_DATA0 0x00800000 /* Data 0 toggle */ -#define T_PID_DATA1 0x00c00000 /* Data 1 toggle */ - -/* - * receive BD's status - */ -#define R_E 0x80000000 /* buffer empty */ -#define R_W 0x20000000 /* wrap bit */ -#define R_I 0x10000000 /* interrupt on reception */ -#define R_L 0x08000000 /* last */ -#define R_F 0x04000000 /* first */ -#define R_PID 0x00c00000 /* packet id */ -#define R_NO 0x00100000 /* Rx Non Octet Aligned Packet */ -#define R_AB 0x00080000 /* Frame Aborted */ -#define R_CR 0x00040000 /* CRC Error */ -#define R_OV 0x00020000 /* Overrun */ - -#define R_ERROR (R_NO | R_AB | R_CR | R_OV) -#define R_BD_MASK R_ERROR - -#define R_PID_DATA0 0x00000000 -#define R_PID_DATA1 0x00400000 -#define R_PID_SETUP 0x00800000 - -#define CPM_USB_STOP_TX 0x2e600000 -#define CPM_USB_RESTART_TX 0x2e600000 -#define CPM_USB_STOP_TX_OPCODE 0x0a -#define CPM_USB_RESTART_TX_OPCODE 0x0b -#define CPM_USB_EP_SHIFT 5 - -#endif /* __FSL_QE_UDC_H */ |