Message ID | 20191217103100.21737-1-peter.ujfalusi@ti.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 687d39d4512aa5f644450d0662f40aeeac1e84a7 |
Headers | show |
Series | [v2] iio: adc: at91-sama5d2_adc: Use dma_request_chan() instead dma_request_slave_channel() | expand |
On Tue, 17 Dec 2019 12:31:00 +0200 Peter Ujfalusi <peter.ujfalusi@ti.com> wrote: > dma_request_slave_channel() is a wrapper on top of dma_request_chan() > eating up the error code. > > By using dma_request_chan() directly the driver can support deferred > probing against DMA. Unfortunately that doesn't seem to be true. The function in question returns void... And for that matter is called only from the set_watermark callback which doesn't run at probe time. So if we were to get a deferred response at runtime there isn't a whole lot we could do with it. Jonathan > > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > --- > Hi, > > Changes since v1: > - Subject prefix is corrected to "iio: adc: at91-sama5d2_adc:" > > Regards, > Peter > > drivers/iio/adc/at91-sama5d2_adc.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c > index e1850f3d5cf3..a5c7771227d5 100644 > --- a/drivers/iio/adc/at91-sama5d2_adc.c > +++ b/drivers/iio/adc/at91-sama5d2_adc.c > @@ -1444,10 +1444,10 @@ static void at91_adc_dma_init(struct platform_device *pdev) > if (st->dma_st.dma_chan) > return; > > - st->dma_st.dma_chan = dma_request_slave_channel(&pdev->dev, "rx"); > - > - if (!st->dma_st.dma_chan) { > + st->dma_st.dma_chan = dma_request_chan(&pdev->dev, "rx"); > + if (IS_ERR(st->dma_st.dma_chan)) { > dev_info(&pdev->dev, "can't get DMA channel\n"); > + st->dma_st.dma_chan = NULL; > goto dma_exit; > } >
Hi Jonathan, On 12/23/19 5:50 PM, Jonathan Cameron wrote: > On Tue, 17 Dec 2019 12:31:00 +0200 > Peter Ujfalusi <peter.ujfalusi@ti.com> wrote: > >> dma_request_slave_channel() is a wrapper on top of dma_request_chan() >> eating up the error code. >> >> By using dma_request_chan() directly the driver can support deferred >> probing against DMA. > Unfortunately that doesn't seem to be true. > The function in question returns void... > > And for that matter is called only from the set_watermark callback which > doesn't run at probe time. > > So if we were to get a deferred response at runtime there isn't a whole > lot we could do with it. With dma_request_chan() drivers can support deferred probing ;) I forgot to remove the section which does not apply to this driver. The main reason for this change is to retire the old APIs for requesting DMA channel and keep one, consistently named set. I'll send v3 in in about two weeks with updated commit message. > > Jonathan > > > >> >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> >> --- >> Hi, >> >> Changes since v1: >> - Subject prefix is corrected to "iio: adc: at91-sama5d2_adc:" >> >> Regards, >> Peter >> >> drivers/iio/adc/at91-sama5d2_adc.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c >> index e1850f3d5cf3..a5c7771227d5 100644 >> --- a/drivers/iio/adc/at91-sama5d2_adc.c >> +++ b/drivers/iio/adc/at91-sama5d2_adc.c >> @@ -1444,10 +1444,10 @@ static void at91_adc_dma_init(struct platform_device *pdev) >> if (st->dma_st.dma_chan) >> return; >> >> - st->dma_st.dma_chan = dma_request_slave_channel(&pdev->dev, "rx"); >> - >> - if (!st->dma_st.dma_chan) { >> + st->dma_st.dma_chan = dma_request_chan(&pdev->dev, "rx"); >> + if (IS_ERR(st->dma_st.dma_chan)) { >> dev_info(&pdev->dev, "can't get DMA channel\n"); >> + st->dma_st.dma_chan = NULL; >> goto dma_exit; >> } >> > - Peter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c index e1850f3d5cf3..a5c7771227d5 100644 --- a/drivers/iio/adc/at91-sama5d2_adc.c +++ b/drivers/iio/adc/at91-sama5d2_adc.c @@ -1444,10 +1444,10 @@ static void at91_adc_dma_init(struct platform_device *pdev) if (st->dma_st.dma_chan) return; - st->dma_st.dma_chan = dma_request_slave_channel(&pdev->dev, "rx"); - - if (!st->dma_st.dma_chan) { + st->dma_st.dma_chan = dma_request_chan(&pdev->dev, "rx"); + if (IS_ERR(st->dma_st.dma_chan)) { dev_info(&pdev->dev, "can't get DMA channel\n"); + st->dma_st.dma_chan = NULL; goto dma_exit; }
dma_request_slave_channel() is a wrapper on top of dma_request_chan() eating up the error code. By using dma_request_chan() directly the driver can support deferred probing against DMA. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> --- Hi, Changes since v1: - Subject prefix is corrected to "iio: adc: at91-sama5d2_adc:" Regards, Peter drivers/iio/adc/at91-sama5d2_adc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)