usb: renesas_usbhs: tidyup original usbhsx_for_each_xxx macro
[pandora-kernel.git] / drivers / usb / renesas_usbhs / pipe.h
index 41534cb..a00b67a 100644 (file)
@@ -30,11 +30,15 @@ struct usbhs_pipe {
        struct usbhs_fifo *fifo;
        struct list_head list;
 
+       int maxp;
+
        u32 flags;
 #define USBHS_PIPE_FLAGS_IS_USED               (1 << 0)
 #define USBHS_PIPE_FLAGS_IS_DIR_IN             (1 << 1)
 #define USBHS_PIPE_FLAGS_IS_DIR_HOST           (1 << 2)
 
+       struct usbhs_pkt_handle *handler;
+
        void *mod_private;
 };
 
@@ -43,7 +47,6 @@ struct usbhs_pipe_info {
        int size;       /* array size of "pipe" */
        int bufnmb_last;        /* FIXME : driver needs good allocator */
 
-       void (*done)(struct usbhs_pkt *pkt);
        int (*dma_map_ctrl)(struct usbhs_pkt *pkt, int map);
 };
 
@@ -51,9 +54,9 @@ struct usbhs_pipe_info {
  * pipe list
  */
 #define __usbhs_for_each_pipe(start, pos, info, i)     \
-       for (i = start, pos = (info)->pipe;             \
-            i < (info)->size;                          \
-            i++, pos = (info)->pipe + i)
+       for ((i) = start;                                               \
+            ((i) < (info)->size) && ((pos) = (info)->pipe + (i));      \
+            (i)++)
 
 #define usbhs_for_each_pipe(pos, priv, i)                      \
        __usbhs_for_each_pipe(1, pos, &((priv)->pipe_info), i)
@@ -66,33 +69,31 @@ struct usbhs_pipe_info {
  */
 #define usbhs_priv_to_pipeinfo(pr)     (&(pr)->pipe_info)
 
-/*
- * usb request
- */
-void usbhs_usbreq_get_val(struct usbhs_priv *priv, struct usb_ctrlrequest *req);
-void usbhs_usbreq_set_val(struct usbhs_priv *priv, struct usb_ctrlrequest *req);
-
 /*
  * pipe control
  */
+char *usbhs_pipe_name(struct usbhs_pipe *pipe);
 struct usbhs_pipe
-*usbhs_pipe_malloc(struct usbhs_priv *priv,
-                  const struct usb_endpoint_descriptor *desc);
+*usbhs_pipe_malloc(struct usbhs_priv *priv, int endpoint_type, int dir_in);
 int usbhs_pipe_probe(struct usbhs_priv *priv);
 void usbhs_pipe_remove(struct usbhs_priv *priv);
 int usbhs_pipe_is_dir_in(struct usbhs_pipe *pipe);
 int usbhs_pipe_is_dir_host(struct usbhs_pipe *pipe);
 void usbhs_pipe_init(struct usbhs_priv *priv,
-                    void (*done)(struct usbhs_pkt *pkt),
                     int (*dma_map_ctrl)(struct usbhs_pkt *pkt, int map));
 int usbhs_pipe_get_maxpacket(struct usbhs_pipe *pipe);
-void usbhs_pipe_clear_sequence(struct usbhs_pipe *pipe);
 void usbhs_pipe_clear(struct usbhs_pipe *pipe);
 int usbhs_pipe_is_accessible(struct usbhs_pipe *pipe);
 void usbhs_pipe_enable(struct usbhs_pipe *pipe);
 void usbhs_pipe_disable(struct usbhs_pipe *pipe);
 void usbhs_pipe_stall(struct usbhs_pipe *pipe);
 void usbhs_pipe_select_fifo(struct usbhs_pipe *pipe, struct usbhs_fifo *fifo);
+void usbhs_pipe_config_update(struct usbhs_pipe *pipe, u16 devsel,
+                             u16 epnum, u16 maxp);
+
+#define usbhs_pipe_sequence_data0(pipe)        usbhs_pipe_data_sequence(pipe, 0)
+#define usbhs_pipe_sequence_data1(pipe)        usbhs_pipe_data_sequence(pipe, 1)
+void usbhs_pipe_data_sequence(struct usbhs_pipe *pipe, int data);
 
 #define usbhs_pipe_to_priv(p)  ((p)->priv)
 #define usbhs_pipe_number(p)   (int)((p) - (p)->priv->pipe_info.pipe)
@@ -100,10 +101,14 @@ void usbhs_pipe_select_fifo(struct usbhs_pipe *pipe, struct usbhs_fifo *fifo);
 #define usbhs_pipe_to_fifo(p)  ((p)->fifo)
 #define usbhs_pipe_is_busy(p)  usbhs_pipe_to_fifo(p)
 
+#define usbhs_pipe_type(p)             ((p)->pipe_type)
+#define usbhs_pipe_type_is(p, t)       ((p)->pipe_type == t)
+
 /*
  * dcp control
  */
 struct usbhs_pipe *usbhs_dcp_malloc(struct usbhs_priv *priv);
 void usbhs_dcp_control_transfer_done(struct usbhs_pipe *pipe);
+void usbhs_dcp_dir_for_host(struct usbhs_pipe *pipe, int dir_out);
 
 #endif /* RENESAS_USB_PIPE_H */