0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef __LINUX_USB_MUSB_H
0012 #define __LINUX_USB_MUSB_H
0013
0014
0015
0016
0017 enum musb_mode {
0018 MUSB_UNDEFINED = 0,
0019 MUSB_HOST,
0020 MUSB_PERIPHERAL,
0021 MUSB_OTG
0022 };
0023
0024 struct clk;
0025
0026 enum musb_fifo_style {
0027 FIFO_RXTX,
0028 FIFO_TX,
0029 FIFO_RX
0030 } __attribute__ ((packed));
0031
0032 enum musb_buf_mode {
0033 BUF_SINGLE,
0034 BUF_DOUBLE
0035 } __attribute__ ((packed));
0036
0037 struct musb_fifo_cfg {
0038 u8 hw_ep_num;
0039 enum musb_fifo_style style;
0040 enum musb_buf_mode mode;
0041 u16 maxpacket;
0042 };
0043
0044 #define MUSB_EP_FIFO(ep, st, m, pkt) \
0045 { \
0046 .hw_ep_num = ep, \
0047 .style = st, \
0048 .mode = m, \
0049 .maxpacket = pkt, \
0050 }
0051
0052 #define MUSB_EP_FIFO_SINGLE(ep, st, pkt) \
0053 MUSB_EP_FIFO(ep, st, BUF_SINGLE, pkt)
0054
0055 #define MUSB_EP_FIFO_DOUBLE(ep, st, pkt) \
0056 MUSB_EP_FIFO(ep, st, BUF_DOUBLE, pkt)
0057
0058 struct musb_hdrc_eps_bits {
0059 const char name[16];
0060 u8 bits;
0061 };
0062
0063 struct musb_hdrc_config {
0064 struct musb_fifo_cfg *fifo_cfg;
0065 unsigned fifo_cfg_size;
0066
0067
0068 unsigned multipoint:1;
0069 unsigned dyn_fifo:1 __deprecated;
0070
0071
0072 unsigned host_port_deassert_reset_at_resume:1;
0073
0074 u8 num_eps;
0075 u8 ram_bits;
0076
0077 u32 maximum_speed;
0078 };
0079
0080 struct musb_hdrc_platform_data {
0081
0082 u8 mode;
0083
0084
0085 const char *clock;
0086
0087
0088 int (*set_vbus)(struct device *dev, int is_on);
0089
0090
0091 u8 power;
0092
0093
0094 u8 min_power;
0095
0096
0097 u8 potpgt;
0098
0099
0100 unsigned extvbus:1;
0101
0102
0103 int (*set_power)(int state);
0104
0105
0106 const struct musb_hdrc_config *config;
0107
0108
0109 void *board_data;
0110
0111
0112 const void *platform_ops;
0113 };
0114
0115 enum musb_vbus_id_status {
0116 MUSB_UNKNOWN = 0,
0117 MUSB_ID_GROUND,
0118 MUSB_ID_FLOAT,
0119 MUSB_VBUS_VALID,
0120 MUSB_VBUS_OFF,
0121 };
0122
0123 #if IS_ENABLED(CONFIG_USB_MUSB_HDRC)
0124 int musb_mailbox(enum musb_vbus_id_status status);
0125 #else
0126 static inline int musb_mailbox(enum musb_vbus_id_status status)
0127 {
0128 return 0;
0129 }
0130 #endif
0131
0132
0133
0134 #define TUSB6010_OSCCLK_60 16667
0135 #define TUSB6010_REFCLK_24 41667
0136 #define TUSB6010_REFCLK_19 52083
0137
0138 #ifdef CONFIG_ARCH_OMAP2
0139
0140 extern int __init tusb6010_setup_interface(
0141 struct musb_hdrc_platform_data *data,
0142 unsigned ps_refclk, unsigned waitpin,
0143 unsigned async_cs, unsigned sync_cs,
0144 unsigned irq, unsigned dmachan);
0145
0146 extern int tusb6010_platform_retime(unsigned is_refclk);
0147
0148 #endif
0149
0150 #endif