From 05eb261fe42124e96be46d72d077452672cc8122 Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Tue, 14 Feb 2012 11:37:21 +0100 Subject: [PATCH] --- yaml --- r: 289581 b: refs/heads/master c: 6e4b74e4690dd03b5664fa4895c3db0607d64742 h: refs/heads/master i: 289579: ce461f31374bd567e612cabcd8da9807069e13a6 v: v3 --- [refs] | 2 +- trunk/drivers/usb/renesas_usbhs/fifo.c | 18 ++++++------------ trunk/drivers/usb/renesas_usbhs/fifo.h | 3 ++- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index 0e1ca3841bd3..a4916765f56d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d5261286949fc9ada701c7e30bf89e08a6dbf4de +refs/heads/master: 6e4b74e4690dd03b5664fa4895c3db0607d64742 diff --git a/trunk/drivers/usb/renesas_usbhs/fifo.c b/trunk/drivers/usb/renesas_usbhs/fifo.c index fb2a88c5c210..3648c82a17fe 100644 --- a/trunk/drivers/usb/renesas_usbhs/fifo.c +++ b/trunk/drivers/usb/renesas_usbhs/fifo.c @@ -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; diff --git a/trunk/drivers/usb/renesas_usbhs/fifo.h b/trunk/drivers/usb/renesas_usbhs/fifo.h index f68609c0f489..c31731a843d1 100644 --- a/trunk/drivers/usb/renesas_usbhs/fifo.h +++ b/trunk/drivers/usb/renesas_usbhs/fifo.h @@ -19,6 +19,7 @@ #include #include +#include #include #include "pipe.h" @@ -31,7 +32,6 @@ struct usbhs_fifo { u32 ctr; /* xFIFOCTR */ struct usbhs_pipe *pipe; - struct tasklet_struct tasklet; struct dma_chan *tx_chan; struct dma_chan *rx_chan; @@ -53,6 +53,7 @@ struct usbhs_pkt { struct usbhs_pkt_handle *handler; void (*done)(struct usbhs_priv *priv, struct usbhs_pkt *pkt); + struct work_struct work; dma_addr_t dma; void *buf; int length;