Commit 957a1ea3 authored by Maxime Ripard's avatar Maxime Ripard

drm/sun4i: backend: Fix probe failure with multiple backends

Commit e0d07278 ("dma-mapping: introduce DMA range map, supplanting
dma_pfn_offset") introduced a regression in our code since the second
backed to probe will now get -EINVAL back from dma_direct_set_offset and
will prevent the entire DRM device from probing.

Ignore -EINVAL as a temporary measure to get it back working, before
removing that call entirely.

Fixes: e0d07278 ("dma-mapping: introduce DMA range map, supplanting dma_pfn_offset")
Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
Reviewed-by: default avatarChen-Yu Tsai <wens@csie.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 3650b228
...@@ -814,9 +814,15 @@ static int sun4i_backend_bind(struct device *dev, struct device *master, ...@@ -814,9 +814,15 @@ static int sun4i_backend_bind(struct device *dev, struct device *master,
* *
* XXX(hch): this has no business in a driver and needs to move * XXX(hch): this has no business in a driver and needs to move
* to the device tree. * to the device tree.
*
* If we have two subsequent calls to dma_direct_set_offset
* returns -EINVAL. Unfortunately, this happens when we have two
* backends in the system, and will result in the driver
* reporting an error while it has been setup properly before.
* Ignore EINVAL, but it should really be removed eventually.
*/ */
ret = dma_direct_set_offset(drm->dev, PHYS_OFFSET, 0, SZ_4G); ret = dma_direct_set_offset(drm->dev, PHYS_OFFSET, 0, SZ_4G);
if (ret) if (ret && ret != -EINVAL)
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment