#ifndef __LINUX_BDC_H__
#define __LINUX_BDC_H__
#include <linux/kernel.h>
#include <linux/usb.h>
#include <linux/device.h>
#include <linux/spinlock.h>
#include <linux/list.h>
#include <linux/dma-mapping.h>
#include <linux/mm.h>
#include <linux/debugfs.h>
#include <linux/usb/ch9.h>
#include <linux/usb/gadget.h>
#include <asm/unaligned.h>
#define BRCM_BDC_NAME …
#define BRCM_BDC_DESC …
#define DMA_ADDR_INVALID …
#define BDC_CMD_TIMEOUT …
#define BDC_COP_TIMEOUT …
#define EP0_RESPONSE_BUFF …
#define EP0_MAX_PKT_SIZE …
#define NUM_SR_ENTRIES …
#define NUM_BDS_PER_TABLE …
#define NUM_TABLES …
#define NUM_TABLES_ISOCH …
#define U1_TIMEOUT …
#define INT_CLS …
#define BDC_BDCCFG0 …
#define BDC_BDCCFG1 …
#define BDC_BDCCAP0 …
#define BDC_BDCCAP1 …
#define BDC_CMDPAR0 …
#define BDC_CMDPAR1 …
#define BDC_CMDPAR2 …
#define BDC_CMDSC …
#define BDC_USPC …
#define BDC_USPPMS …
#define BDC_USPPM2 …
#define BDC_SPBBAL …
#define BDC_SPBBAH …
#define BDC_BDCSC …
#define BDC_XSFNTF …
#define BDC_DVCSA …
#define BDC_DVCSB …
#define BDC_EPSTS0 …
#define BDC_EPSTS1 …
#define BDC_EPSTS2 …
#define BDC_EPSTS3 …
#define BDC_EPSTS4 …
#define BDC_EPSTS5 …
#define BDC_EPSTS6 …
#define BDC_EPSTS7 …
#define BDC_SRRBAL(n) …
#define BDC_SRRBAH(n) …
#define BDC_SRRINT(n) …
#define BDC_INTCTLS(n) …
#define BDC_FSCNOC …
#define BDC_FSCNIC …
#define NUM_NCS(p) …
#define BDC_PGS(p) …
#define BDC_SPB(p) …
#define BDC_P64 …
#define BDC_CMD_FH …
#define BDC_CMD_DNC …
#define BDC_CMD_EPO …
#define BDC_CMD_BLA …
#define BDC_CMD_EPC …
#define BDC_CMD_DVC …
#define BDC_CMD_CWS …
#define BDC_CMD_CST(p) …
#define BDC_CMD_EPN(p) …
#define BDC_SUB_CMD_ADD …
#define BDC_SUB_CMD_FWK …
#define BDC_CMD_EPO_RST_SN …
#define BDC_CMD_EP0_XSD …
#define BDC_SUB_CMD_ADD_EP …
#define BDC_SUB_CMD_DRP_EP …
#define BDC_SUB_CMD_EP_STP …
#define BDC_SUB_CMD_EP_STL …
#define BDC_SUB_CMD_EP_RST …
#define BDC_CMD_SRD …
#define BDC_CMDS_SUCC …
#define BDC_CMDS_PARA …
#define BDC_CMDS_STAT …
#define BDC_CMDS_FAIL …
#define BDC_CMDS_INTL …
#define BDC_CMDS_BUSY …
#define EPT_SHIFT …
#define MP_SHIFT …
#define MB_SHIFT …
#define EPM_SHIFT …
#define BDC_VBC …
#define BDC_PRC …
#define BDC_PCE …
#define BDC_CFC …
#define BDC_PCC …
#define BDC_PSC …
#define BDC_VBS …
#define BDC_PRS …
#define BDC_PCS …
#define BDC_PSP(p) …
#define BDC_SCN …
#define BDC_SDC …
#define BDC_SWS …
#define BDC_USPSC_RW …
#define BDC_PSP(p) …
#define BDC_SPEED_FS …
#define BDC_SPEED_LS …
#define BDC_SPEED_HS …
#define BDC_SPEED_SS …
#define BDC_PST(p) …
#define BDC_PST_MASK …
#define BDC_U2E …
#define BDC_U1E …
#define BDC_U2A …
#define BDC_PORT_W1S …
#define BDC_U1T(p) …
#define BDC_U2T(p) …
#define BDC_U1T_MASK …
#define BDC_HLE …
#define BDC_COP_RST …
#define BDC_COP_RUN …
#define BDC_COP_STP …
#define BDC_COP_MASK …
#define BDC_COS …
#define BDC_CSTS(p) …
#define BDC_MASK_MCW …
#define BDC_GIE …
#define BDC_GIP …
#define BDC_HLT …
#define BDC_NOR …
#define BDC_OIP …
#define BD_TYPE_BITMASK …
#define BD_CHAIN …
#define BD_TFS_SHIFT …
#define BD_SOT …
#define BD_EOT …
#define BD_ISP …
#define BD_IOC …
#define BD_SBF …
#define BD_INTR_TARGET(p) …
#define BDC_SRR_RWS …
#define BDC_SRR_RST …
#define BDC_SRR_ISR …
#define BDC_SRR_IE …
#define BDC_SRR_IP …
#define BDC_SRR_EPI(p) …
#define BDC_SRR_DPI(p) …
#define BDC_SRR_DPI_MASK …
#define MARK_CHAIN_BD …
#define BD_DIR_IN …
#define BDC_PTC_MASK …
#define SR_XSF …
#define SR_USPC …
#define SR_BD_LEN(p) …
#define XSF_SUCC …
#define XSF_SHORT …
#define XSF_BABB …
#define XSF_SETUP_RECV …
#define XSF_DATA_START …
#define XSF_STATUS_START …
#define XSF_STS(p) …
#define BD_LEN(p) …
#define BD_LTF …
#define BD_TYPE_DS …
#define BD_TYPE_SS …
#define BDC_EP_ENABLED …
#define BDC_EP_STALL …
#define BDC_EP_STOP …
#define BD_MAX_BUFF_SIZE …
#define MAX_XFR_LEN …
#define DEV_NOTF_TYPE …
#define FWK_SUBTYPE …
#define TRA_PACKET …
#define to_bdc_ep(e) …
#define to_bdc_req(r) …
#define gadget_to_bdc(g) …
#define BDC_TNOTIFY …
#define REMOTE_WAKEUP_ISSUED …
#define DEVICE_SUSPENDED …
#define FUNC_WAKE_ISSUED …
#define REMOTE_WAKE_ENABLE …
#define DEVSTATUS_CLEAR …
struct bdc_bd { … };
struct bdc_sr { … };
struct bd_table { … };
struct bd_list { … };
struct bdc_req;
struct bd_transfer { … };
struct bdc_req { … };
struct bdc_scratchpad { … };
struct bdc_ep { … };
struct bdc_cmd_params { … };
struct srr { … };
enum bdc_ep0_state { … };
enum bdc_link_state { … };
struct bdc { … };
static inline u32 bdc_readl(void __iomem *base, u32 offset)
{ … }
static inline void bdc_writel(void __iomem *base, u32 offset, u32 value)
{ … }
void bdc_notify_xfr(struct bdc *bdc, u32 epnum);
void bdc_softconn(struct bdc *bdc);
void bdc_softdisconn(struct bdc *bdc);
int bdc_run(struct bdc *bdc);
int bdc_stop(struct bdc *bdc);
int bdc_reset(struct bdc *bdc);
int bdc_udc_init(struct bdc *bdc);
void bdc_udc_exit(struct bdc *bdc);
int bdc_reinit(struct bdc *bdc);
void bdc_sr_uspc(struct bdc *bdc, struct bdc_sr *sreport);
void bdc_sr_xsf(struct bdc *bdc, struct bdc_sr *sreport);
void bdc_xsf_ep0_setup_recv(struct bdc *bdc, struct bdc_sr *sreport);
void bdc_xsf_ep0_data_start(struct bdc *bdc, struct bdc_sr *sreport);
void bdc_xsf_ep0_status_start(struct bdc *bdc, struct bdc_sr *sreport);
#endif