diff options
-rw-r--r-- | drivers/media/platform/vsp1/vsp1_drm.c | 24 | ||||
-rw-r--r-- | include/media/vsp1.h | 3 |
2 files changed, 27 insertions, 0 deletions
diff --git a/drivers/media/platform/vsp1/vsp1_drm.c b/drivers/media/platform/vsp1/vsp1_drm.c index 84d0418660bf..9377aafa8996 100644 --- a/drivers/media/platform/vsp1/vsp1_drm.c +++ b/drivers/media/platform/vsp1/vsp1_drm.c | |||
@@ -12,6 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | #include <linux/dma-mapping.h> | ||
15 | #include <linux/slab.h> | 16 | #include <linux/slab.h> |
16 | 17 | ||
17 | #include <media/media-entity.h> | 18 | #include <media/media-entity.h> |
@@ -540,6 +541,29 @@ void vsp1_du_atomic_flush(struct device *dev) | |||
540 | } | 541 | } |
541 | EXPORT_SYMBOL_GPL(vsp1_du_atomic_flush); | 542 | EXPORT_SYMBOL_GPL(vsp1_du_atomic_flush); |
542 | 543 | ||
544 | int vsp1_du_map_sg(struct device *dev, struct sg_table *sgt) | ||
545 | { | ||
546 | struct vsp1_device *vsp1 = dev_get_drvdata(dev); | ||
547 | |||
548 | /* | ||
549 | * As all the buffers allocated by the DU driver are coherent, we can | ||
550 | * skip cache sync. This will need to be revisited when support for | ||
551 | * non-coherent buffers will be added to the DU driver. | ||
552 | */ | ||
553 | return dma_map_sg_attrs(vsp1->bus_master, sgt->sgl, sgt->nents, | ||
554 | DMA_TO_DEVICE, DMA_ATTR_SKIP_CPU_SYNC); | ||
555 | } | ||
556 | EXPORT_SYMBOL_GPL(vsp1_du_map_sg); | ||
557 | |||
558 | void vsp1_du_unmap_sg(struct device *dev, struct sg_table *sgt) | ||
559 | { | ||
560 | struct vsp1_device *vsp1 = dev_get_drvdata(dev); | ||
561 | |||
562 | dma_unmap_sg_attrs(vsp1->bus_master, sgt->sgl, sgt->nents, | ||
563 | DMA_TO_DEVICE, DMA_ATTR_SKIP_CPU_SYNC); | ||
564 | } | ||
565 | EXPORT_SYMBOL_GPL(vsp1_du_unmap_sg); | ||
566 | |||
543 | /* ----------------------------------------------------------------------------- | 567 | /* ----------------------------------------------------------------------------- |
544 | * Initialization | 568 | * Initialization |
545 | */ | 569 | */ |
diff --git a/include/media/vsp1.h b/include/media/vsp1.h index c135c47b4641..c837383b2013 100644 --- a/include/media/vsp1.h +++ b/include/media/vsp1.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #ifndef __MEDIA_VSP1_H__ | 13 | #ifndef __MEDIA_VSP1_H__ |
14 | #define __MEDIA_VSP1_H__ | 14 | #define __MEDIA_VSP1_H__ |
15 | 15 | ||
16 | #include <linux/scatterlist.h> | ||
16 | #include <linux/types.h> | 17 | #include <linux/types.h> |
17 | #include <linux/videodev2.h> | 18 | #include <linux/videodev2.h> |
18 | 19 | ||
@@ -53,5 +54,7 @@ void vsp1_du_atomic_begin(struct device *dev); | |||
53 | int vsp1_du_atomic_update(struct device *dev, unsigned int rpf, | 54 | int vsp1_du_atomic_update(struct device *dev, unsigned int rpf, |
54 | const struct vsp1_du_atomic_config *cfg); | 55 | const struct vsp1_du_atomic_config *cfg); |
55 | void vsp1_du_atomic_flush(struct device *dev); | 56 | void vsp1_du_atomic_flush(struct device *dev); |
57 | int vsp1_du_map_sg(struct device *dev, struct sg_table *sgt); | ||
58 | void vsp1_du_unmap_sg(struct device *dev, struct sg_table *sgt); | ||
56 | 59 | ||
57 | #endif /* __MEDIA_VSP1_H__ */ | 60 | #endif /* __MEDIA_VSP1_H__ */ |