]> Pileus Git - ~andy/linux/blobdiff - include/linux/usb/musb.h
usb: musb: allow board to pass down fifo mode
[~andy/linux] / include / linux / usb / musb.h
index 7acef0234c0ec800c0beef24fe9cc98ce43beafc..f3d68f62dae89557edbbfac2670f98e154d77973 100644 (file)
@@ -22,12 +22,47 @@ enum musb_mode {
 
 struct clk;
 
+enum musb_fifo_style {
+       FIFO_RXTX,
+       FIFO_TX,
+       FIFO_RX
+} __attribute__ ((packed));
+
+enum musb_buf_mode {
+       BUF_SINGLE,
+       BUF_DOUBLE
+} __attribute__ ((packed));
+
+struct musb_fifo_cfg {
+       u8                      hw_ep_num;
+       enum musb_fifo_style    style;
+       enum musb_buf_mode      mode;
+       u16                     maxpacket;
+};
+
+#define MUSB_EP_FIFO(ep, st, m, pkt)           \
+{                                              \
+       .hw_ep_num      = ep,                   \
+       .style          = st,                   \
+       .mode           = m,                    \
+       .maxpacket      = pkt,                  \
+}
+
+#define MUSB_EP_FIFO_SINGLE(ep, st, pkt)       \
+       MUSB_EP_FIFO(ep, st, BUF_SINGLE, pkt)
+
+#define MUSB_EP_FIFO_DOUBLE(ep, st, pkt)       \
+       MUSB_EP_FIFO(ep, st, BUF_DOUBLE, pkt)
+
 struct musb_hdrc_eps_bits {
        const char      name[16];
        u8              bits;
 };
 
 struct musb_hdrc_config {
+       struct musb_fifo_cfg    *fifo_cfg;      /* board fifo configuration */
+       unsigned                fifo_cfg_size;  /* size of the fifo configuration */
+
        /* MUSB configuration-specific details */
        unsigned        multipoint:1;   /* multipoint device */
        unsigned        dyn_fifo:1 __deprecated; /* supports dynamic fifo sizing */