Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756662AbbDPGky (ORCPT ); Thu, 16 Apr 2015 02:40:54 -0400 Received: from cust-95-128-94-82.breedbanddelft.nl ([95.128.94.82]:48747 "EHLO bitwizard.nl" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752395AbbDPGkq (ORCPT ); Thu, 16 Apr 2015 02:40:46 -0400 X-Greylist: delayed 588 seconds by postgrey-1.27 at vger.kernel.org; Thu, 16 Apr 2015 02:40:46 EDT Date: Thu, 16 Apr 2015 08:30:56 +0200 From: Rogier Wolff To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: Martin Sperl , dmaengine@vger.kernel.org, vinod.koul@intel.com, linux-kernel@vger.kernel.org, jonathan@raspberrypi.org, linux-rpi-kernel@lists.infradead.org, dan.j.williams@intel.com Subject: Re: [PATCH] dmaengine: bcm2835: Add slave dma support Message-ID: <20150416063055.GH23239@bitwizard.nl> References: <1429091778-26350-1-git-send-email-noralf@tronnes.org> <75BEAE20-81A9-4567-8AB2-1C1865A0B72D@sperl.org> <552EB393.4050609@tronnes.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <552EB393.4050609@tronnes.org> Organization: BitWizard B.V. 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: 1751 Lines: 38 On Wed, Apr 15, 2015 at 08:53:07PM +0200, Noralf Tr?nnes wrote: > A 16-bit register can't hold a value of 65536. > Either the max value is 65535 or the register is 17-bits wide. It is common for hardware registers to have the value "0" mean 65536 in case of a 16-bit register. The hardware would then FIRST decrement the register and THEN check for zero. This results in the behaviour that "1" requires one cycle to complete, "10" requires ten cycles, and "0" means the same as the total number of bitpatterns possible in the register. (256 for an 8-bit register, 65536 for a 16-bit register). Another way to implement such a register in hardware would "check for zero" first, and not do antyhing if the register equals zero. This results in differnet behaviour for the "0" value. That said: IMHO, the overhead of setting up 2 transfers for each 64k block as opposed to only one results in such a small performance penalty that I'd prefer to play it safe unless you're very sure you can adequately test it. (Another option would be to set the maximum transfer size to 0xf000: 60kbytes. Less than 10% extra transfers in the long run than when aiming for the edge...) Roger. -- ** R.E.Wolff@BitWizard.nl ** http://www.BitWizard.nl/ ** +31-15-2600998 ** ** Delftechpark 26 2628 XH Delft, The Netherlands. KVK: 27239233 ** *-- BitWizard writes Linux device drivers for any device you may have! --* The plan was simple, like my brother-in-law Phil. But unlike Phil, this plan just might work. -- 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/