From: Peter Ujfalusi <peter.ujfalusi-l0cyMroinI0@public.gmane.org>
To: Mugunthan V N <mugunthanvnm-l0cyMroinI0@public.gmane.org>,
linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>,
Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
Russell King <linux-I+IVW8TIWO2tmTQ+vhA3Yw@public.gmane.org>,
Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Hartmut Knaack <knaack.h-Mmb7MZpHnFY@public.gmane.org>,
Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>,
Peter Meerwald-Stadler
<pmeerw-jW+XmwGofnusTnJN9+BGXg@public.gmane.org>,
Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Vignesh R <vigneshr-l0cyMroinI0@public.gmane.org>,
"Andrew F . Davis" <afd-l0cyMroinI0@public.gmane.org>,
linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org>,
John Syne <john3909-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCH v2 2/4] drivers: iio: ti_am335x_adc: add dma support
Date: Wed, 5 Oct 2016 11:46:17 +0300 [thread overview]
Message-ID: <f00632fa-a542-c633-ae5e-3a42cf364a9f@ti.com> (raw)
In-Reply-To: <1ffce826-b94a-5b9f-ffb4-ba2d0324b246-l0cyMroinI0@public.gmane.org>
On 10/05/16 11:17, Mugunthan V N wrote:
> On Wednesday 05 October 2016 12:01 PM, Peter Ujfalusi wrote:
>> On 10/05/16 09:21, Mugunthan V N wrote:
>>> On Tuesday 04 October 2016 02:02 PM, Peter Ujfalusi wrote:
>>>> On 10/03/16 16:03, Mugunthan V N wrote:
>>>>> +static int tiadc_request_dma(struct platform_device *pdev,
>>>>> + struct tiadc_device *adc_dev)
>>>>> +{
>>>>> + struct tiadc_dma *dma = &adc_dev->dma;
>>>>> + dma_cap_mask_t mask;
>>>>> +
>>>>> + /* Default slave configuration parameters */
>>>>> + dma->conf.direction = DMA_DEV_TO_MEM;
>>>>> + dma->conf.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;
>>>>> + dma->conf.src_addr = adc_dev->mfd_tscadc->tscadc_phys_base + REG_FIFO1;
>>>>> +
>>>>> + dma_cap_zero(mask);
>>>>> + dma_cap_set(DMA_CYCLIC, mask);
>>>>> +
>>>>> + /* Get a channel for RX */
>>>>> + dma->chan = dma_request_chan(adc_dev->mfd_tscadc->dev, "fifo1");
>>>>> + if (!dma->chan)
>>>>> + return -ENODEV;
>>>>
>>>> dma_request_chan() ERR_PTR in case of failure, never NULL. You should reuse
>>>> the returned error code to support deferred probing.
>>>
>>> Will fix this in v3.
>>>
>>>>
>>>>> +
>>>>> + /* RX buffer */
>>>>> + dma->buf = dma_alloc_coherent(dma->chan->device->dev, DMA_BUFFER_SIZE,
>>>>> + &dma->addr, GFP_KERNEL);
>>>>> + if (!dma->buf)
>>>>> + goto err;
>>>>> +
>>>>> + return 0;
>>>>> +err:
>>>>> + dma_release_channel(dma->chan);
>>>>> +
>>>>> + return -ENOMEM;
>>>>> +}
>>>>> +
>>>>> static int tiadc_parse_dt(struct platform_device *pdev,
>>>>> struct tiadc_device *adc_dev)
>>>>> {
>>>>> @@ -512,8 +639,14 @@ static int tiadc_probe(struct platform_device *pdev)
>>>>>
>>>>> platform_set_drvdata(pdev, indio_dev);
>>>>>
>>>>> + err = tiadc_request_dma(pdev, adc_dev);
>>>>> + if (err && err != -ENODEV)
>>>>> + goto err_dma;
>>>>
>>>> You should handle the deferred probing for DMA channel.
>>>
>>> + dma->chan = dma_request_chan(adc_dev->mfd_tscadc->dev, "fifo1");
>>> + if (IS_ERR(dma->chan)) {
>>> + int ret = PTR_ERR(dma->chan);
>>> +
>>> + dma->chan = NULL;
>>> + return ret;
>>
>> You don't need the 'ret' variable:
>> return PTR_ERR(dma->chan);
>
> So you mean change all *if (dma->chan)* to *if (IS_ERR(dma->chan))*?
Oh, sorry. Your version was fine as you NULL the dma->chan before the return.
>
>>
>>> + }
>>>
>>> With this probe defer will be taken care and ADC will continue without
>>> DMA when request channel returns -ENODEV.
>>
>> I would rather have explicit check for deferred probe:
>>
>> err = tiadc_request_dma(pdev, adc_dev);
>> if (err && err == -EPROBE_DEFER)
>> goto err_dma;
>
> But in this case any other failure other than -EPROBE_DEFER will be
> masked and ADC will be in PIO mode?
Yes, exactly. If we fail to get the DMA channel we should not use the DMA and
we only want to handle the deferred probing.
>
> Regards
> Mugunthan V N
>
--
Péter
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-10-05 8:46 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-03 13:03 [PATCH v2 0/4] Add DMA support for ti_am335x_adc driver Mugunthan V N
[not found] ` <20161003130318.12591-1-mugunthanvnm-l0cyMroinI0@public.gmane.org>
2016-10-03 13:03 ` [PATCH v2 1/4] mfd: ti_am335x_tscadc: store physical address Mugunthan V N
2016-10-03 13:03 ` [PATCH v2 2/4] drivers: iio: ti_am335x_adc: add dma support Mugunthan V N
2016-10-04 8:32 ` Peter Ujfalusi
[not found] ` <0ff2c6ef-3fa1-dc8b-fb6e-1a4dcfea8ea9-l0cyMroinI0@public.gmane.org>
2016-10-05 6:21 ` Mugunthan V N
2016-10-05 6:31 ` Peter Ujfalusi
[not found] ` <de6bbf1c-e9e2-83b1-73c2-49aa64cc939c-l0cyMroinI0@public.gmane.org>
2016-10-05 8:17 ` Mugunthan V N
[not found] ` <1ffce826-b94a-5b9f-ffb4-ba2d0324b246-l0cyMroinI0@public.gmane.org>
2016-10-05 8:46 ` Peter Ujfalusi [this message]
2016-10-05 8:52 ` Mugunthan V N
2016-10-03 13:03 ` [PATCH v2 3/4] ARM: dts: am33xx: add DMA properties for tscadc Mugunthan V N
2016-10-03 13:03 ` [PATCH v2 4/4] ARM: dts: am4372: " Mugunthan V N
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=f00632fa-a542-c633-ae5e-3a42cf364a9f@ti.com \
--to=peter.ujfalusi-l0cymroini0@public.gmane.org \
--cc=afd-l0cyMroinI0@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=john3909-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=knaack.h-Mmb7MZpHnFY@public.gmane.org \
--cc=lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org \
--cc=lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=linux-I+IVW8TIWO2tmTQ+vhA3Yw@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=mugunthanvnm-l0cyMroinI0@public.gmane.org \
--cc=nsekhar-l0cyMroinI0@public.gmane.org \
--cc=pmeerw-jW+XmwGofnusTnJN9+BGXg@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org \
--cc=vigneshr-l0cyMroinI0@public.gmane.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;
as well as URLs for NNTP newsgroup(s).