@@ -137,6 +137,20 @@ static int mtk_vcodec_init_dec_resources(struct mtk_vcodec_dev *dev)
return 0;
}
+static int mtk_vcodec_dec_set_dma_mask(struct device *dev)
+{
+ int ret = 0;
+
+ return !(of_device_is_compatible(dev->of_node, "mediatek,mt8173-vcodec-dec") ||
+ of_device_is_compatible(dev->of_node, "mediatek,mt8183-vcodec-dec"));
+
+ ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(34));
+ if (ret)
+ mtk_v4l2_err("Failed to set dec mask");
+
+ return ret;
+}
+
static int fops_vcodec_open(struct file *file)
{
struct mtk_vcodec_dev *dev = video_drvdata(file);
@@ -323,13 +337,9 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
}
}
- if (of_get_property(pdev->dev.of_node, "dma-ranges", NULL)) {
- ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(34));
- if (ret) {
- mtk_v4l2_err("Failed to set mask");
- goto err_core_workq;
- }
- }
+ ret = mtk_vcodec_dec_set_dma_mask(&pdev->dev);
+ if (ret)
+ goto err_core_workq;
for (i = 0; i < MTK_VDEC_HW_MAX; i++)
mutex_init(&dev->dec_mutex[i]);
After commit f1ad5338a4d5("of: Fix "dma-ranges" handling for bus controllers"), the dma-ranges is not allowed in decoder dts node. But the driver still need to set dma mask, remove "dma-ranges" condition in prob function. Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> --- Reference series: [1]: v5 of this series is present by Yong Wu. 20230307023507.13306-1-yong.wu@mediatek.com --- .../mediatek/vcodec/mtk_vcodec_dec_drv.c | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-)