struct usbhs_pipe *pipe = pkt->pipe;
        struct usbhs_priv *priv = usbhs_pipe_to_priv(pipe);
        struct usbhs_pipe_info *info = usbhs_priv_to_pipeinfo(priv);
+       struct usbhs_fifo *fifo = usbhs_pipe_to_fifo(pipe);
+       struct dma_chan *chan = usbhsf_dma_chan_get(fifo, pkt);
 
-       return info->dma_map_ctrl(pkt, map);
+       return info->dma_map_ctrl(chan->device->dev, pkt, map);
 }
 
 static void usbhsf_dma_complete(void *arg);
 
 /*
  *             dma map/unmap
  */
-static int usbhsg_dma_map_ctrl(struct usbhs_pkt *pkt, int map)
+static int usbhsg_dma_map_ctrl(struct device *dma_dev, struct usbhs_pkt *pkt,
+                              int map)
 {
        struct usbhsg_request *ureq = usbhsg_pkt_to_ureq(pkt);
        struct usb_request *req = &ureq->req;
 
 /*
  *             dma map functions
  */
-static int usbhsh_dma_map_ctrl(struct usbhs_pkt *pkt, int map)
+static int usbhsh_dma_map_ctrl(struct device *dma_dev, struct usbhs_pkt *pkt,
+                              int map)
 {
        if (map) {
                struct usbhsh_request *ureq = usbhsh_pkt_to_ureq(pkt);
 
 }
 
 void usbhs_pipe_init(struct usbhs_priv *priv,
-                    int (*dma_map_ctrl)(struct usbhs_pkt *pkt, int map))
+                    int (*dma_map_ctrl)(struct device *dma_dev,
+                                        struct usbhs_pkt *pkt, int map))
 {
        struct usbhs_pipe_info *info = usbhs_priv_to_pipeinfo(priv);
        struct usbhs_pipe *pipe;
 
        struct usbhs_pipe *pipe;
        int size;       /* array size of "pipe" */
 
-       int (*dma_map_ctrl)(struct usbhs_pkt *pkt, int map);
+       int (*dma_map_ctrl)(struct device *dma_dev, struct usbhs_pkt *pkt,
+                           int map);
 };
 
 /*
 void usbhs_pipe_running(struct usbhs_pipe *pipe, int running);
 
 void usbhs_pipe_init(struct usbhs_priv *priv,
-                    int (*dma_map_ctrl)(struct usbhs_pkt *pkt, int map));
+                    int (*dma_map_ctrl)(struct device *dma_dev,
+                                        struct usbhs_pkt *pkt, int map));
 int usbhs_pipe_get_maxpacket(struct usbhs_pipe *pipe);
 void usbhs_pipe_clear(struct usbhs_pipe *pipe);
 int usbhs_pipe_is_accessible(struct usbhs_pipe *pipe);