static int ux500_dma_controller_stop(struct dma_controller *c)
{
	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;

	for (ch_num = 0; ch_num < controller->num_rx_channels; ch_num++) {
		channel = &controller->rx_channel[ch_num].channel;
		ux500_channel = channel->private_data;

		ux500_dma_channel_release(channel);

		if (ux500_channel->dma_chan)
			dma_release_channel(ux500_channel->dma_chan);
	}

	for (ch_num = 0; ch_num < controller->num_tx_channels; ch_num++) {
		channel = &controller->tx_channel[ch_num].channel;
		ux500_channel = channel->private_data;

		ux500_dma_channel_release(channel);

		if (ux500_channel->dma_chan)
			dma_release_channel(ux500_channel->dma_chan);
	}

	return 0;
}
Ejemplo n.º 2
0
static void ux500_dma_controller_stop(struct ux500_dma_controller *controller)
{
    struct ux500_dma_channel *ux500_channel;
    struct dma_channel *channel;
    u8 ch_num;

    for (ch_num = 0; ch_num < UX500_MUSB_DMA_NUM_RX_TX_CHANNELS; ch_num++) {
        channel = &controller->rx_channel[ch_num].channel;
        ux500_channel = channel->private_data;

        ux500_dma_channel_release(channel);

        if (ux500_channel->dma_chan)
            dma_release_channel(ux500_channel->dma_chan);
    }

    for (ch_num = 0; ch_num < UX500_MUSB_DMA_NUM_RX_TX_CHANNELS; ch_num++) {
        channel = &controller->tx_channel[ch_num].channel;
        ux500_channel = channel->private_data;

        ux500_dma_channel_release(channel);

        if (ux500_channel->dma_chan)
            dma_release_channel(ux500_channel->dma_chan);
    }
}