2022-01-01 21:28:58

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] media: pt3: Use dma_set_mask_and_coherent() and simplify code

Use dma_set_mask_and_coherent() instead of unrolling it with some
dma_set_mask()+dma_set_coherent_mask().

Moreover, as stated in [1], dma_set_mask() with a 64-bit mask will never
fail if dev->dma_mask is non-NULL.
So, if it fails, the 32 bits case will also fail for the same reason.

Simplify code and remove some dead code accordingly.

[1]: https://lkml.org/lkml/2021/6/7/398

Signed-off-by: Christophe JAILLET <[email protected]>
---
drivers/media/pci/pt3/pt3.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/media/pci/pt3/pt3.c b/drivers/media/pci/pt3/pt3.c
index 0d51bdf01f43..11f26cac0abc 100644
--- a/drivers/media/pci/pt3/pt3.c
+++ b/drivers/media/pci/pt3/pt3.c
@@ -707,18 +707,10 @@ static int pt3_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (ret < 0)
return ret;

- ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64));
- if (ret == 0)
- dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64));
- else {
- ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
- if (ret == 0)
- dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
- else {
- dev_err(&pdev->dev, "Failed to set DMA mask\n");
- return ret;
- }
- dev_info(&pdev->dev, "Use 32bit DMA\n");
+ ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
+ if (ret) {
+ dev_err(&pdev->dev, "Failed to set DMA mask\n");
+ return ret;
}

pt3 = devm_kzalloc(&pdev->dev, sizeof(*pt3), GFP_KERNEL);
--
2.32.0



2022-01-03 15:59:46

by Akihiro TSUKADA

[permalink] [raw]
Subject: Re: [PATCH] media: pt3: Use dma_set_mask_and_coherent() and simplify code

> Signed-off-by: Christophe JAILLET <[email protected]>
> ---
> ?drivers/media/pci/pt3/pt3.c | 16 ++++------------
> ?1 file changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/media/pci/pt3/pt3.c
> b/drivers/media/pci/pt3/pt3.c
> index 0d51bdf01f43..11f26cac0abc 100644
> --- a/drivers/media/pci/pt3/pt3.c
> +++ b/drivers/media/pci/pt3/pt3.c
> @@ -707,18 +707,10 @@ static int pt3_probe(struct pci_dev *pdev,
> const struct pci_device_id *ent)
> ????????if (ret < 0)
> ????????????????return ret;
> ?
> -???????ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64));
> -???????if (ret == 0)
> -???????????????dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64));
> -???????else {
> -???????????????ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
> -???????????????if (ret == 0)
> -???????????????????????dma_set_coherent_mask(&pdev->dev,
> DMA_BIT_MASK(32));
> -???????????????else {
> -???????????????????????dev_err(&pdev->dev, "Failed to set DMA
> mask\n");
> -???????????????????????return ret;
> -???????????????}
> -???????????????dev_info(&pdev->dev, "Use 32bit DMA\n");
> +???????ret = dma_set_mask_and_coherent(&pdev->dev,
> DMA_BIT_MASK(64));
> +???????if (ret) {
> +???????????????dev_err(&pdev->dev, "Failed to set DMA mask\n");
> +???????????????return ret;
> ????????}
> ?
> ????????pt3 = devm_kzalloc(&pdev->dev, sizeof(*pt3), GFP_KERNEL);

tested on x86_64.

Acked-by: Akihiro Tsukada <[email protected]>