usb: musb: dma: merge ->start/stop into create/destroy
The core code creates a controller and immediately after that it calls the ->start() callback. This one might drop an error but nobody cares. The same thing happens in the destroy corner: First ->stop() called followed by destroy callback. So why not merge those two into the same function since there is no difference. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:

committed by
Felipe Balbi

parent
ff2283229d
commit
66c01883ef
@@ -150,14 +150,11 @@ static void cppi_pool_free(struct cppi_channel *c)
|
||||
c->last_processed = NULL;
|
||||
}
|
||||
|
||||
static int cppi_controller_start(struct dma_controller *c)
|
||||
static void cppi_controller_start(struct cppi *controller)
|
||||
{
|
||||
struct cppi *controller;
|
||||
void __iomem *tibase;
|
||||
int i;
|
||||
|
||||
controller = container_of(c, struct cppi, controller);
|
||||
|
||||
/* do whatever is necessary to start controller */
|
||||
for (i = 0; i < ARRAY_SIZE(controller->tx); i++) {
|
||||
controller->tx[i].transmit = true;
|
||||
@@ -212,8 +209,6 @@ static int cppi_controller_start(struct dma_controller *c)
|
||||
/* disable RNDIS mode, also host rx RNDIS autorequest */
|
||||
musb_writel(tibase, DAVINCI_RNDIS_REG, 0);
|
||||
musb_writel(tibase, DAVINCI_AUTOREQ_REG, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -222,14 +217,12 @@ static int cppi_controller_start(struct dma_controller *c)
|
||||
* De-Init the DMA controller as necessary.
|
||||
*/
|
||||
|
||||
static int cppi_controller_stop(struct dma_controller *c)
|
||||
static void cppi_controller_stop(struct cppi *controller)
|
||||
{
|
||||
struct cppi *controller;
|
||||
void __iomem *tibase;
|
||||
int i;
|
||||
struct musb *musb;
|
||||
|
||||
controller = container_of(c, struct cppi, controller);
|
||||
musb = controller->musb;
|
||||
|
||||
tibase = controller->tibase;
|
||||
@@ -255,8 +248,6 @@ static int cppi_controller_stop(struct dma_controller *c)
|
||||
/*disable tx/rx cppi */
|
||||
musb_writel(tibase, DAVINCI_TXCPPI_CTRL_REG, DAVINCI_DMA_CTRL_DISABLE);
|
||||
musb_writel(tibase, DAVINCI_RXCPPI_CTRL_REG, DAVINCI_DMA_CTRL_DISABLE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* While dma channel is allocated, we only want the core irqs active
|
||||
@@ -1321,8 +1312,6 @@ struct dma_controller *dma_controller_create(struct musb *musb, void __iomem *mr
|
||||
controller->tibase = mregs - DAVINCI_BASE_OFFSET;
|
||||
|
||||
controller->musb = musb;
|
||||
controller->controller.start = cppi_controller_start;
|
||||
controller->controller.stop = cppi_controller_stop;
|
||||
controller->controller.channel_alloc = cppi_channel_allocate;
|
||||
controller->controller.channel_release = cppi_channel_release;
|
||||
controller->controller.channel_program = cppi_channel_program;
|
||||
@@ -1351,6 +1340,7 @@ struct dma_controller *dma_controller_create(struct musb *musb, void __iomem *mr
|
||||
controller->irq = irq;
|
||||
}
|
||||
|
||||
cppi_controller_start(controller);
|
||||
return &controller->controller;
|
||||
}
|
||||
|
||||
@@ -1363,6 +1353,8 @@ void dma_controller_destroy(struct dma_controller *c)
|
||||
|
||||
cppi = container_of(c, struct cppi, controller);
|
||||
|
||||
cppi_controller_stop(cppi);
|
||||
|
||||
if (cppi->irq)
|
||||
free_irq(cppi->irq, cppi->musb);
|
||||
|
||||
|
Reference in New Issue
Block a user