drivers/media/pci/pt3/pt3.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-)
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 <christophe.jaillet@wanadoo.fr>
---
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
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
> 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 <tskd08@gmail.com>
© 2016 - 2026 Red Hat, Inc.