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
@@ -254,10 +254,8 @@ static int ux500_dma_channel_abort(struct dma_channel *channel)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ux500_dma_controller_stop(struct dma_controller *c)
|
||||
static void ux500_dma_controller_stop(struct ux500_dma_controller *controller)
|
||||
{
|
||||
struct ux500_dma_controller *controller = container_of(c,
|
||||
struct ux500_dma_controller, controller);
|
||||
struct ux500_dma_channel *ux500_channel;
|
||||
struct dma_channel *channel;
|
||||
u8 ch_num;
|
||||
@@ -281,14 +279,10 @@ static int ux500_dma_controller_stop(struct dma_controller *c)
|
||||
if (ux500_channel->dma_chan)
|
||||
dma_release_channel(ux500_channel->dma_chan);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ux500_dma_controller_start(struct dma_controller *c)
|
||||
static int ux500_dma_controller_start(struct ux500_dma_controller *controller)
|
||||
{
|
||||
struct ux500_dma_controller *controller = container_of(c,
|
||||
struct ux500_dma_controller, controller);
|
||||
struct ux500_dma_channel *ux500_channel = NULL;
|
||||
struct musb *musb = controller->private_data;
|
||||
struct device *dev = musb->controller;
|
||||
@@ -347,7 +341,7 @@ static int ux500_dma_controller_start(struct dma_controller *c)
|
||||
dir, ch_num);
|
||||
|
||||
/* Release already allocated channels */
|
||||
ux500_dma_controller_stop(c);
|
||||
ux500_dma_controller_stop(controller);
|
||||
|
||||
return -EBUSY;
|
||||
}
|
||||
@@ -369,6 +363,7 @@ void dma_controller_destroy(struct dma_controller *c)
|
||||
struct ux500_dma_controller *controller = container_of(c,
|
||||
struct ux500_dma_controller, controller);
|
||||
|
||||
ux500_dma_controller_stop(controller);
|
||||
kfree(controller);
|
||||
}
|
||||
|
||||
@@ -378,6 +373,7 @@ struct dma_controller *dma_controller_create(struct musb *musb,
|
||||
struct ux500_dma_controller *controller;
|
||||
struct platform_device *pdev = to_platform_device(musb->controller);
|
||||
struct resource *iomem;
|
||||
int ret;
|
||||
|
||||
controller = kzalloc(sizeof(*controller), GFP_KERNEL);
|
||||
if (!controller)
|
||||
@@ -394,14 +390,15 @@ struct dma_controller *dma_controller_create(struct musb *musb,
|
||||
|
||||
controller->phy_base = (dma_addr_t) iomem->start;
|
||||
|
||||
controller->controller.start = ux500_dma_controller_start;
|
||||
controller->controller.stop = ux500_dma_controller_stop;
|
||||
controller->controller.channel_alloc = ux500_dma_channel_allocate;
|
||||
controller->controller.channel_release = ux500_dma_channel_release;
|
||||
controller->controller.channel_program = ux500_dma_channel_program;
|
||||
controller->controller.channel_abort = ux500_dma_channel_abort;
|
||||
controller->controller.is_compatible = ux500_dma_is_compatible;
|
||||
|
||||
ret = ux500_dma_controller_start(controller);
|
||||
if (ret)
|
||||
goto plat_get_fail;
|
||||
return &controller->controller;
|
||||
|
||||
plat_get_fail:
|
||||
|
Reference in New Issue
Block a user