|
@@ -765,9 +765,9 @@ static int __usbhsf_dma_map_ctrl(struct usbhs_pkt *pkt, int map)
|
|
|
}
|
|
|
|
|
|
static void usbhsf_dma_complete(void *arg);
|
|
|
-static void usbhsf_dma_prepare_tasklet(unsigned long data)
|
|
|
+static void xfer_work(struct work_struct *work)
|
|
|
{
|
|
|
- struct usbhs_pkt *pkt = (struct usbhs_pkt *)data;
|
|
|
+ struct usbhs_pkt *pkt = container_of(work, struct usbhs_pkt, work);
|
|
|
struct usbhs_pipe *pipe = pkt->pipe;
|
|
|
struct usbhs_fifo *fifo = usbhs_pipe_to_fifo(pipe);
|
|
|
struct usbhs_priv *priv = usbhs_pipe_to_priv(pipe);
|
|
@@ -847,11 +847,8 @@ static int usbhsf_dma_prepare_push(struct usbhs_pkt *pkt, int *is_done)
|
|
|
|
|
|
pkt->trans = len;
|
|
|
|
|
|
- tasklet_init(&fifo->tasklet,
|
|
|
- usbhsf_dma_prepare_tasklet,
|
|
|
- (unsigned long)pkt);
|
|
|
-
|
|
|
- tasklet_schedule(&fifo->tasklet);
|
|
|
+ INIT_WORK(&pkt->work, xfer_work);
|
|
|
+ schedule_work(&pkt->work);
|
|
|
|
|
|
return 0;
|
|
|
|
|
@@ -941,11 +938,8 @@ static int usbhsf_dma_try_pop(struct usbhs_pkt *pkt, int *is_done)
|
|
|
|
|
|
pkt->trans = len;
|
|
|
|
|
|
- tasklet_init(&fifo->tasklet,
|
|
|
- usbhsf_dma_prepare_tasklet,
|
|
|
- (unsigned long)pkt);
|
|
|
-
|
|
|
- tasklet_schedule(&fifo->tasklet);
|
|
|
+ INIT_WORK(&pkt->work, xfer_work);
|
|
|
+ schedule_work(&pkt->work);
|
|
|
|
|
|
return 0;
|
|
|
|