Message ID | 20200120124754.26826-1-peter.ujfalusi@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] media: rcar_drif: Use dma_request_chan() instead dma_request_slave_channel() | expand |
Hi, On 20/01/2020 14.47, Peter Ujfalusi 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. yes, this is suppose to be v3, but missed to change the subject-prefix. > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> > --- > Hi, > > Changes since v2: > - Use %pe to print error name using the ch->dmach pointer > - Set ch->dmach to NULL in case of error > > Changes since v1: > - Do not print error in case of EPROBE_DEFER > - Added Reviewed-by from Geert > > Regards, > Peter > > drivers/media/platform/rcar_drif.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/platform/rcar_drif.c b/drivers/media/platform/rcar_drif.c > index 0f267a237b42..3d2451ac347d 100644 > --- a/drivers/media/platform/rcar_drif.c > +++ b/drivers/media/platform/rcar_drif.c > @@ -275,10 +275,14 @@ static int rcar_drif_alloc_dmachannels(struct rcar_drif_sdr *sdr) > for_each_rcar_drif_channel(i, &sdr->cur_ch_mask) { > struct rcar_drif *ch = sdr->ch[i]; > > - ch->dmach = dma_request_slave_channel(&ch->pdev->dev, "rx"); > - if (!ch->dmach) { > - rdrif_err(sdr, "ch%u: dma channel req failed\n", i); > - ret = -ENODEV; > + ch->dmach = dma_request_chan(&ch->pdev->dev, "rx"); > + if (IS_ERR(ch->dmach)) { > + ret = PTR_ERR(ch->dmach); > + if (ret != -EPROBE_DEFER) > + rdrif_err(sdr, > + "ch%u: dma channel req failed: %pe\n", > + i, ch->dmach); > + ch->dmach = NULL; > goto dmach_error; > } > > - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Hi Peter, On 1/20/20 1:47 PM, Peter Ujfalusi 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. > > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Unfortunately the v1 version of this patch got merged, so can you make a new patch against the current media_tree master to bring it up to date with this v3? My apologies for this. Regards, Hans > --- > Hi, > > Changes since v2: > - Use %pe to print error name using the ch->dmach pointer > - Set ch->dmach to NULL in case of error > > Changes since v1: > - Do not print error in case of EPROBE_DEFER > - Added Reviewed-by from Geert > > Regards, > Peter > > drivers/media/platform/rcar_drif.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/platform/rcar_drif.c b/drivers/media/platform/rcar_drif.c > index 0f267a237b42..3d2451ac347d 100644 > --- a/drivers/media/platform/rcar_drif.c > +++ b/drivers/media/platform/rcar_drif.c > @@ -275,10 +275,14 @@ static int rcar_drif_alloc_dmachannels(struct rcar_drif_sdr *sdr) > for_each_rcar_drif_channel(i, &sdr->cur_ch_mask) { > struct rcar_drif *ch = sdr->ch[i]; > > - ch->dmach = dma_request_slave_channel(&ch->pdev->dev, "rx"); > - if (!ch->dmach) { > - rdrif_err(sdr, "ch%u: dma channel req failed\n", i); > - ret = -ENODEV; > + ch->dmach = dma_request_chan(&ch->pdev->dev, "rx"); > + if (IS_ERR(ch->dmach)) { > + ret = PTR_ERR(ch->dmach); > + if (ret != -EPROBE_DEFER) > + rdrif_err(sdr, > + "ch%u: dma channel req failed: %pe\n", > + i, ch->dmach); > + ch->dmach = NULL; > goto dmach_error; > } > >
Hi Hans, On 2/25/20 2:07 PM, Hans Verkuil wrote: > Hi Peter, > > On 1/20/20 1:47 PM, Peter Ujfalusi 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. >> >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> >> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> > > Unfortunately the v1 version of this patch got merged, so can you make a > new patch against the current media_tree master to bring it up to date > with this v3? Sure, I'll send an update patch in couple of minutes. > My apologies for this. No issue Regards, - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
diff --git a/drivers/media/platform/rcar_drif.c b/drivers/media/platform/rcar_drif.c index 0f267a237b42..3d2451ac347d 100644 --- a/drivers/media/platform/rcar_drif.c +++ b/drivers/media/platform/rcar_drif.c @@ -275,10 +275,14 @@ static int rcar_drif_alloc_dmachannels(struct rcar_drif_sdr *sdr) for_each_rcar_drif_channel(i, &sdr->cur_ch_mask) { struct rcar_drif *ch = sdr->ch[i]; - ch->dmach = dma_request_slave_channel(&ch->pdev->dev, "rx"); - if (!ch->dmach) { - rdrif_err(sdr, "ch%u: dma channel req failed\n", i); - ret = -ENODEV; + ch->dmach = dma_request_chan(&ch->pdev->dev, "rx"); + if (IS_ERR(ch->dmach)) { + ret = PTR_ERR(ch->dmach); + if (ret != -EPROBE_DEFER) + rdrif_err(sdr, + "ch%u: dma channel req failed: %pe\n", + i, ch->dmach); + ch->dmach = NULL; goto dmach_error; }