From: swarren@wwwdotorg.org (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V3] dma: add channel request API that supports deferred probe
Date: Tue, 26 Nov 2013 09:37:48 -0700 [thread overview]
Message-ID: <5294CE5C.1090901@wwwdotorg.org> (raw)
In-Reply-To: <1385474368.1871.6.camel@smile>
On 11/26/2013 06:59 AM, Shevchenko, Andriy wrote:
> On Mon, 2013-11-25 at 14:47 -0700, Stephen Warren wrote:
>> From: Stephen Warren <swarren@nvidia.com>
>>
>> dma_request_slave_channel() simply returns NULL whenever DMA channel
>> lookup fails. Lookup could fail for two distinct reasons:
>>
>> a) No DMA specification exists for the channel name.
>> This includes situations where no DMA specifications exist at all, or
>> other general lookup problems.
>>
>> b) A DMA specification does exist, yet the driver for that channel is not
>> yet registered.
>>
>> Case (b) should trigger deferred probe in client drivers. However, since
>> they have no way to differentiate the two situations, it cannot.
>>
>> Implement new function dma_request_slave_channel_or_err(), which performs
>> identically to dma_request_slave_channel(), except that it returns an
>> error-pointer rather than NULL, which allows callers to detect when
>> deferred probe should occur.
>>
>> Eventually, all drivers should be converted to this new API, the old API
>> removed, and the new API renamed to the more desirable name. This patch
>> doesn't convert the existing API and all drivers in one go, since some
>> drivers call dma_request_slave_channel() then dma_request_channel() if
>> that fails. That would require either modifying dma_request_channel() in
>> the same way, or adding extra error-handling code to all affected
>> drivers, and there are close to 100 drivers using the other API, rather
>> than just the 15-20 or so that use dma_request_slave_channel(), which
>> might be tenable in a single patch.
>>
>> acpi_dma_request_slave_chan_by_name() doesn't currently implement
>> deferred probe. It should, but this will be addressed later.
>
> Couple of comments below.
>
> []
>
>> --- a/drivers/dma/of-dma.c
>> +++ b/drivers/dma/of-dma.c
>
> []
>
>> @@ -152,17 +152,18 @@ struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
>> struct of_dma *ofdma;
>> struct dma_chan *chan;
>> int count, i;
>> + int ret_no_channel = -ENODEV;
>
> Could we re-use chan for the error as well?
No, because that gets over-written each time ofdma->of_dma_xlate() is
called, and that could fail and cause the result not to be returned, and
then we would have lost any -EPROBE_DEFERRED value that was stored there
to be returned in the nothing-found case.
>> @@ -174,8 +175,10 @@ struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
>>
>> if (ofdma)
>
> if (ofdma) {
> ...
>
>> chan = ofdma->of_dma_xlate(&dma_spec, ofdma);
>> - else
>> + else {
>
> } else {
>
> to keep style.
OK, I've fixed that up locally. I assume it's not worth a repost just
for that change, although I will repost if the DMA maintainers want to
create the topic branches rather than me, but there's been no word on
that yet.
next prev parent reply other threads:[~2013-11-26 16:37 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-25 21:47 [PATCH V3] dma: add channel request API that supports deferred probe Stephen Warren
2013-11-25 21:55 ` Dan Williams
2013-11-26 13:59 ` Shevchenko, Andriy
2013-11-26 16:37 ` Stephen Warren [this message]
2013-11-26 16:44 ` Dan Williams
2013-12-05 16:59 ` Stephen Warren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5294CE5C.1090901@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox