Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752201AbbLRGCO (ORCPT ); Fri, 18 Dec 2015 01:02:14 -0500 Received: from mga11.intel.com ([192.55.52.93]:34010 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751357AbbLRGCN (ORCPT ); Fri, 18 Dec 2015 01:02:13 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,444,1444719600"; d="scan'208";a="619975327" Date: Fri, 18 Dec 2015 11:35:26 +0530 From: Vinod Koul To: Martin Sperl Cc: dmaengine@vger.kernel.org, Linux Kernel Mailing List , linux-rpi-kernel , Noralf =?iso-8859-1?Q?Tr=F8nnes?= , jonathan@raspberrypi.org, dan.j.williams@intel.com, Eric Anholt , Stephen Warren , Lee Jones Subject: Re: [RESEND][PATCH v2] dmaengine: bcm2835: Add slave dma support Message-ID: <20151218060526.GW1854@localhost> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1957 Lines: 64 On Thu, Dec 17, 2015 at 07:11:48PM +0100, Martin Sperl wrote: > + > + /* Setup addresses */ > + if (d->dir == DMA_DEV_TO_MEM) { > + control_block->info = BCM2835_DMA_D_INC | > + BCM2835_DMA_D_WIDTH | > + BCM2835_DMA_S_DREQ; > + control_block->src = dev_addr; > + control_block->dst = addr + (dma_addr_t)j; > + } else { > + control_block->info = BCM2835_DMA_S_INC | > + BCM2835_DMA_S_WIDTH | > + BCM2835_DMA_D_DREQ; > + control_block->src = addr + (dma_addr_t)j; > + control_block->dst = dev_addr; > + } > + > + /* Common part */ > + control_block->info |= > + BCM2835_DMA_WAITS(BCM2835_DMA_WAIT_CYCLES); > + control_block->info |= BCM2835_DMA_WAIT_RESP; > + > + /* Enable */ > + if (i == sg_len - 1 && len - j <= max_size) > + control_block->info |= BCM2835_DMA_INT_EN; > + > + /* Setup synchronization */ > + if (sync_type) > + control_block->info |= sync_type; > + > + /* Setup DREQ channel */ > + if (c->dreq) > + control_block->info |= > + BCM2835_DMA_PER_MAP(c->dreq); > + > + /* Length of a frame */ > + control_block->length = min(len - j, max_size); > + d->size += control_block->length; > + > + if (i < sg_len - 1 || len - j > max_size) { > + /* Next block is the next frame. */ > + control_block->next = > + d->control_block_base_phys + > + sizeof(struct bcm2835_dma_cb) * > + (i + split_cnt + 1); > + } else { > + /* Next block is empty. */ > + control_block->next = 0; > + } > + > + if (len - j > max_size) > + split_cnt++; Most of this part is common with the cyclic and seems copy paste. Can we use common routine to do common work please -- ~Vinod -- 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/