Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 712b617e authored by Marek Szyprowski's avatar Marek Szyprowski Committed by Sylwester Nawrocki
Browse files

media: set proper max seg size for devices on Exynos SoCs



All multimedia devices found on Exynos SoCs support only contiguous
buffers, so set DMA max segment size to DMA_BIT_MASK(32) to let memory
allocator to correctly create contiguous memory mappings.

Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
parent 3f033969
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1124,6 +1124,7 @@ static int gsc_probe(struct platform_device *pdev)
		goto err_m2m;

	/* Initialize continious memory allocator */
	vb2_dma_contig_set_max_seg_size(dev, DMA_BIT_MASK(32));
	gsc->alloc_ctx = vb2_dma_contig_init_ctx(dev);
	if (IS_ERR(gsc->alloc_ctx)) {
		ret = PTR_ERR(gsc->alloc_ctx);
@@ -1153,6 +1154,7 @@ static int gsc_remove(struct platform_device *pdev)
	v4l2_device_unregister(&gsc->v4l2_dev);

	vb2_dma_contig_cleanup_ctx(gsc->alloc_ctx);
	vb2_dma_contig_clear_max_seg_size(&pdev->dev);
	pm_runtime_disable(&pdev->dev);
	gsc_clk_put(gsc);

+2 −0
Original line number Diff line number Diff line
@@ -1019,6 +1019,7 @@ static int fimc_probe(struct platform_device *pdev)
	}

	/* Initialize contiguous memory allocator */
	vb2_dma_contig_set_max_seg_size(dev, DMA_BIT_MASK(32));
	fimc->alloc_ctx = vb2_dma_contig_init_ctx(dev);
	if (IS_ERR(fimc->alloc_ctx)) {
		ret = PTR_ERR(fimc->alloc_ctx);
@@ -1124,6 +1125,7 @@ static int fimc_remove(struct platform_device *pdev)

	fimc_unregister_capture_subdev(fimc);
	vb2_dma_contig_cleanup_ctx(fimc->alloc_ctx);
	vb2_dma_contig_clear_max_seg_size(&pdev->dev);

	clk_disable(fimc->clock[CLK_BUS]);
	fimc_clk_put(fimc);
+2 −0
Original line number Diff line number Diff line
@@ -847,6 +847,7 @@ static int fimc_is_probe(struct platform_device *pdev)
	if (ret < 0)
		goto err_pm;

	vb2_dma_contig_set_max_seg_size(dev, DMA_BIT_MASK(32));
	is->alloc_ctx = vb2_dma_contig_init_ctx(dev);
	if (IS_ERR(is->alloc_ctx)) {
		ret = PTR_ERR(is->alloc_ctx);
@@ -940,6 +941,7 @@ static int fimc_is_remove(struct platform_device *pdev)
	free_irq(is->irq, is);
	fimc_is_unregister_subdevs(is);
	vb2_dma_contig_cleanup_ctx(is->alloc_ctx);
	vb2_dma_contig_clear_max_seg_size(dev);
	fimc_is_put_clocks(is);
	fimc_is_debugfs_remove(is);
	release_firmware(is->fw.f_w);
+2 −0
Original line number Diff line number Diff line
@@ -1551,6 +1551,7 @@ static int fimc_lite_probe(struct platform_device *pdev)
			goto err_sd;
	}

	vb2_dma_contig_set_max_seg_size(dev, DMA_BIT_MASK(32));
	fimc->alloc_ctx = vb2_dma_contig_init_ctx(dev);
	if (IS_ERR(fimc->alloc_ctx)) {
		ret = PTR_ERR(fimc->alloc_ctx);
@@ -1652,6 +1653,7 @@ static int fimc_lite_remove(struct platform_device *pdev)
	pm_runtime_set_suspended(dev);
	fimc_lite_unregister_capture_subdev(fimc);
	vb2_dma_contig_cleanup_ctx(fimc->alloc_ctx);
	vb2_dma_contig_clear_max_seg_size(dev);
	fimc_lite_clk_put(fimc);

	dev_info(dev, "Driver unloaded\n");
+2 −0
Original line number Diff line number Diff line
@@ -681,6 +681,7 @@ static int g2d_probe(struct platform_device *pdev)
		goto put_clk_gate;
	}

	vb2_dma_contig_set_max_seg_size(&pdev->dev, DMA_BIT_MASK(32));
	dev->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
	if (IS_ERR(dev->alloc_ctx)) {
		ret = PTR_ERR(dev->alloc_ctx);
@@ -757,6 +758,7 @@ static int g2d_remove(struct platform_device *pdev)
	video_unregister_device(dev->vfd);
	v4l2_device_unregister(&dev->v4l2_dev);
	vb2_dma_contig_cleanup_ctx(dev->alloc_ctx);
	vb2_dma_contig_clear_max_seg_size(&pdev->dev);
	clk_unprepare(dev->gate);
	clk_put(dev->gate);
	clk_unprepare(dev->clk);
Loading