From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Warren Subject: Re: [PATCH 11/31] dma: add channel request API that supports deferred probe Date: Fri, 22 Nov 2013 17:05:33 -0700 Message-ID: <528FF14D.1020702@wwwdotorg.org> References: <1384548866-13141-1-git-send-email-swarren@wwwdotorg.org> <1384548866-13141-12-git-send-email-swarren@wwwdotorg.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-tegra-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Dan Williams Cc: Stephen Warren , "treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org" , "pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org" , "linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org" List-Id: linux-tegra@vger.kernel.org On 11/22/2013 04:50 PM, Dan Williams wrote: > A question about the patch: > > On Fri, Nov 15, 2013 at 12:54 PM, Stephen Warren wrote: >> From: Stephen Warren > [..] >> diff --git a/drivers/dma/of-dma.c b/drivers/dma/of-dma.c >> index 0b88dd3d05f4..928141f6f21b 100644 >> --- a/drivers/dma/of-dma.c >> +++ b/drivers/dma/of-dma.c >> @@ -181,11 +181,13 @@ struct dma_chan *of_dma_request_slave_channel(struct device_node *np, >> >> of_node_put(dma_spec.np); >> >> + if (!ofdma && defer) >> + return ERR_PTR(-EPROBE_DEFER); >> if (chan) >> return chan; >> } > > Why do we need to make this conditional on the value of 'defer'? If > the client cares it will propagate the error if it does not care then > nothing is gained by converting this to -ENODEV. The function ends up being called from two code-paths. One of which wants the new behaviour of deferring probe if a valid DMA specifier is found but there's not registered driver for it, and the other (compatibility) path wants exactly the old behaviour. The flag is passed down from dma_request_slave_channel() (old behaviour) or dma_request_slave_channel_or_err() (new behaviour). From mboxrd@z Thu Jan 1 00:00:00 1970 From: swarren@wwwdotorg.org (Stephen Warren) Date: Fri, 22 Nov 2013 17:05:33 -0700 Subject: [PATCH 11/31] dma: add channel request API that supports deferred probe In-Reply-To: References: <1384548866-13141-1-git-send-email-swarren@wwwdotorg.org> <1384548866-13141-12-git-send-email-swarren@wwwdotorg.org> Message-ID: <528FF14D.1020702@wwwdotorg.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 11/22/2013 04:50 PM, Dan Williams wrote: > A question about the patch: > > On Fri, Nov 15, 2013 at 12:54 PM, Stephen Warren wrote: >> From: Stephen Warren > [..] >> diff --git a/drivers/dma/of-dma.c b/drivers/dma/of-dma.c >> index 0b88dd3d05f4..928141f6f21b 100644 >> --- a/drivers/dma/of-dma.c >> +++ b/drivers/dma/of-dma.c >> @@ -181,11 +181,13 @@ struct dma_chan *of_dma_request_slave_channel(struct device_node *np, >> >> of_node_put(dma_spec.np); >> >> + if (!ofdma && defer) >> + return ERR_PTR(-EPROBE_DEFER); >> if (chan) >> return chan; >> } > > Why do we need to make this conditional on the value of 'defer'? If > the client cares it will propagate the error if it does not care then > nothing is gained by converting this to -ENODEV. The function ends up being called from two code-paths. One of which wants the new behaviour of deferring probe if a valid DMA specifier is found but there's not registered driver for it, and the other (compatibility) path wants exactly the old behaviour. The flag is passed down from dma_request_slave_channel() (old behaviour) or dma_request_slave_channel_or_err() (new behaviour).