Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752353AbbEFTWP (ORCPT ); Wed, 6 May 2015 15:22:15 -0400 Received: from smtp.domeneshop.no ([194.63.252.55]:45841 "EHLO smtp.domeneshop.no" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751694AbbEFTWH (ORCPT ); Wed, 6 May 2015 15:22:07 -0400 Message-ID: <554A69D5.90301@tronnes.org> Date: Wed, 06 May 2015 21:21:57 +0200 From: =?UTF-8?B?Tm9yYWxmIFRyw7hubmVz?= User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Martin Sperl , Stephen Warren , jonathan@raspberrypi.org CC: dmaengine@vger.kernel.org, vinod.koul@intel.com, Linux Kernel Mailing List , linux-rpi-kernel , dan.j.williams@intel.com, linux-spi Subject: Re: [PATCH v2] dmaengine: bcm2835: Add slave dma support References: <1429355160-13657-1-git-send-email-noralf@tronnes.org> In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1949 Lines: 51 Den 01.05.2015 23:07, skrev Martin Sperl: > Tests with the initial (and incomplete) version of the spi-bcm2835 driver > with DMA transfer support show that the dma-engine works as expected with > this patch. > > There is one one observation: > >> On 18.04.2015, at 13:06, Noralf Trønnes wrote: >> +static struct dma_async_tx_descriptor * >> +bcm2835_dma_prep_slave_sg(struct dma_chan *chan, >> + struct scatterlist *sgl, >> + unsigned int sg_len, >> + enum dma_transfer_direction direction, >> + unsigned long flags, void *context) >> +{ > ... >> + /* Enable */ >> + if (i == sg_len - 1 && len - j <= max_size) >> + control_block->info |= BCM2835_DMA_INT_EN; > The observation is that an interrupt is always triggered - even in the case > where flags does NOT have DMA_PREP_INTERRUPT set. > This may not be necessary and avoid interrupts. > > So maybe the above if clause should get extended by: > && (flags & DMA_PREP_INTERRUPT) > to only trigger an interrupt when really requested. > > I am not sure if there are any side-effects because of this besides having the > requirement on the client to run dmaengine_terminate_all() on that specific dma > channel without interrupts when the transfer is finished. > > In the case of SPI we have TX feed the fifo - which finishes early - , but we > only need to the interrupt when RX finishes reading the fifo, which indicates > that the SPI-transfer is fully finished. > So having an interrupt on TX is not necessary for the process. > > The same observations may also apply to bcm2835_dma_prep_dma_cyclic (which is > outside of this patch provided by Noralf). Jonathan, can you comment on this? Noralf. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/