summaryrefslogtreecommitdiff
path: root/drivers/media/platform/vsp1/vsp1.h
diff options
context:
space:
mode:
authorTakashi Saito <takashi.saitou.ry@renesas.com>2015-09-07 01:40:25 -0300
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2016-02-19 09:40:47 -0200
commit1517b0392369d67250e6b275671be5bdbf64b81e (patch)
tree4465e0d4afb40465e4b685dc68dcec798312ef10 /drivers/media/platform/vsp1/vsp1.h
parent7f2d50f8da43fde0c883c378fd81f64c8bca74eb (diff)
[media] v4l: vsp1: Add display list support
Display lists contain lists of registers and associated values to be applied atomically by the hardware. They lower the pressure on interrupt processing delays when reprogramming the device as settings can be prepared well in advance and queued to the hardware without waiting for the end of the current frame. Display list support is currently limited to the DRM pipeline. Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/platform/vsp1/vsp1.h')
-rw-r--r--drivers/media/platform/vsp1/vsp1.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/media/platform/vsp1/vsp1.h b/drivers/media/platform/vsp1/vsp1.h
index 67a026ae88cb..5b210b69f09c 100644
--- a/drivers/media/platform/vsp1/vsp1.h
+++ b/drivers/media/platform/vsp1/vsp1.h
@@ -26,7 +26,9 @@
struct clk;
struct device;
+struct vsp1_dl;
struct vsp1_drm;
+struct vsp1_entity;
struct vsp1_platform_data;
struct vsp1_bru;
struct vsp1_hsit;
@@ -80,12 +82,17 @@ struct vsp1_device {
struct v4l2_device v4l2_dev;
struct media_device media_dev;
struct media_entity_operations media_ops;
+
struct vsp1_drm *drm;
+
+ bool use_dl;
};
int vsp1_device_get(struct vsp1_device *vsp1);
void vsp1_device_put(struct vsp1_device *vsp1);
+int vsp1_reset_wpf(struct vsp1_device *vsp1, unsigned int index);
+
static inline u32 vsp1_read(struct vsp1_device *vsp1, u32 reg)
{
return ioread32(vsp1->mmio + reg);
@@ -96,4 +103,14 @@ static inline void vsp1_write(struct vsp1_device *vsp1, u32 reg, u32 data)
iowrite32(data, vsp1->mmio + reg);
}
+#include "vsp1_dl.h"
+
+static inline void vsp1_mod_write(struct vsp1_entity *e, u32 reg, u32 data)
+{
+ if (e->vsp1->use_dl)
+ vsp1_dl_add(e, reg, data);
+ else
+ vsp1_write(e->vsp1, reg, data);
+}
+
#endif /* __VSP1_H__ */