From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756912Ab2CHL3Y (ORCPT ); Thu, 8 Mar 2012 06:29:24 -0500 Received: from merlin.infradead.org ([205.233.59.134]:49653 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756677Ab2CHL3V (ORCPT ); Thu, 8 Mar 2012 06:29:21 -0500 Subject: Re: [PATCH/RFC] dmaengine: add a slave parameter to __dma_request_channel() From: Vinod Koul To: Guennadi Liakhovetski Cc: vinod.koul@intel.com, Russell King - ARM Linux , linux-kernel@vger.kernel.org, "'Jassi Brar'" , Linus Walleij , Magnus Damm , Paul Mundt In-Reply-To: References: <1331101687.24656.319.camel@vkoul-udesk3> <20120307093026.GM17370@n2100.arm.linux.org.uk> <20120307103112.GP17370@n2100.arm.linux.org.uk> <20120307124620.GT17370@n2100.arm.linux.org.uk> <20120307142634.GA18787@n2100.arm.linux.org.uk> <20120307162755.GB18787@n2100.arm.linux.org.uk> <1331188201.4657.51.camel@vkoul-udesk3> <1331204128.4657.54.camel@vkoul-udesk3> Content-Type: text/plain; charset="UTF-8" Date: Thu, 08 Mar 2012 17:04:19 +0530 Message-ID: <1331206459.4657.59.camel@vkoul-udesk3> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2012-03-08 at 12:22 +0100, Guennadi Liakhovetski wrote: > On Thu, 8 Mar 2012, Vinod Koul wrote: > > > On Thu, 2012-03-08 at 11:16 +0100, Guennadi Liakhovetski wrote: > > > I still have the impression, that my specific use-case (sh-mobile), where > > > channels can be freely configured for use by _ANY_ client on one of > > > _SEVERAL_ DMAC instances, is not fully understood or taken into account. > > > For this driver any kind of fixed mapping means, that we'd have to use > > > both virtual channels and controllers, adding _a lot_ of complexity to the > > > DMAC driver and making the dmaengine core just an "obfuscation layer." > > > Yes, I remember Russell proposing core helpers for this. They would help, > > > but (1) when would they be available, (2) how well would they be suitable > > > for us, (3) they'd take the coding / maintainance burden away, but > > > wouldn't reduce complexity and run-time overhead. > > Lets try to address you case as well. > > On a typical platform > > Let's take the mackerel board with the sh7372 SoC. it's not the state of > the art, but that's what I'm currently working with and it should give us > a good enough idea > > > 1) how many dma controllers you have? > > currently supported 5 of 3 types (3 of type A, 1 of each of the types B > and C), all handled by the same driver > > > 2) how many clients you have > > huh... many. Maybe like 20 or more, and more, that are not yet supported, > using type A, and 1 for each of types B and C > > > 3) which client can use what controller channel? How is mapping decided, > > do you have a mux, is it hard wired by soc designers,....? > > In general - with all the current sh-mobile hardware, that I'm aware of - > there can be several controller instances on an SoC of each controller > type. Inside each type all instances and all channels are freely > configurable. So, of 20 Type A clients they can use any channels on any > one of the 3 type A controllers. Types B and C are "degenerate" cases, > there clients are practically hard-wired to a specific DMA controller. > > So, we don't have to decide on mappings for type A. We just pick up any > free channels on any controller and configure them accordingly. Whether > there's a mux somewhere - you can say so, but it's all inside the SoC, and > it's configured automatically ones you configure a physical channel to > serve a specific client. > > > Can you pls give a description so that we ensure all models fit in the > > final solution? > > That's what I've been trying to do since several days now... I've been > saying "multiple controllers with multiple channels all freely > configurable for any device from a list" again and again... Seems I'm > speaking some strange language, that noone understands. Okay. One more question before I can tell you how it can work for you without you sweating it out :-) So you have: case A: Here you have N dmacs and M controllers, any controller can use any channel, No constraints on channel assignments, right? case B: Some hardwired controllers P which can only be used by a set clients Q? Anything else I missed in your description?