Commit 04738e7f authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

[media] v4l: vsp1: Add global alpha support for DRM pipeline

Make the global alpha multiplier of DRM planes configurable. All the
necessary infrastructure is there, we just need to store the alpha value
passed through the DRM API.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent f5e04e7e
...@@ -235,6 +235,7 @@ EXPORT_SYMBOL_GPL(vsp1_du_atomic_begin); ...@@ -235,6 +235,7 @@ EXPORT_SYMBOL_GPL(vsp1_du_atomic_begin);
* @mem: DMA addresses of the memory buffers (one per plane) * @mem: DMA addresses of the memory buffers (one per plane)
* @src: the source crop rectangle for the RPF * @src: the source crop rectangle for the RPF
* @dst: the destination compose rectangle for the BRU input * @dst: the destination compose rectangle for the BRU input
* @alpha: global alpha value for the input
* @zpos: the Z-order position of the input * @zpos: the Z-order position of the input
* *
* Configure the VSP to perform composition of the image referenced by @mem * Configure the VSP to perform composition of the image referenced by @mem
...@@ -263,7 +264,8 @@ EXPORT_SYMBOL_GPL(vsp1_du_atomic_begin); ...@@ -263,7 +264,8 @@ EXPORT_SYMBOL_GPL(vsp1_du_atomic_begin);
int vsp1_du_atomic_update_ext(struct device *dev, unsigned int rpf_index, int vsp1_du_atomic_update_ext(struct device *dev, unsigned int rpf_index,
u32 pixelformat, unsigned int pitch, u32 pixelformat, unsigned int pitch,
dma_addr_t mem[2], const struct v4l2_rect *src, dma_addr_t mem[2], const struct v4l2_rect *src,
const struct v4l2_rect *dst, unsigned int zpos) const struct v4l2_rect *dst, unsigned int alpha,
unsigned int zpos)
{ {
struct vsp1_device *vsp1 = dev_get_drvdata(dev); struct vsp1_device *vsp1 = dev_get_drvdata(dev);
const struct vsp1_format_info *fmtinfo; const struct vsp1_format_info *fmtinfo;
...@@ -303,6 +305,7 @@ int vsp1_du_atomic_update_ext(struct device *dev, unsigned int rpf_index, ...@@ -303,6 +305,7 @@ int vsp1_du_atomic_update_ext(struct device *dev, unsigned int rpf_index,
rpf->format.num_planes = fmtinfo->planes; rpf->format.num_planes = fmtinfo->planes;
rpf->format.plane_fmt[0].bytesperline = pitch; rpf->format.plane_fmt[0].bytesperline = pitch;
rpf->format.plane_fmt[1].bytesperline = pitch; rpf->format.plane_fmt[1].bytesperline = pitch;
rpf->alpha = alpha;
rpf->mem.addr[0] = mem[0]; rpf->mem.addr[0] = mem[0];
rpf->mem.addr[1] = mem[1]; rpf->mem.addr[1] = mem[1];
......
...@@ -27,7 +27,8 @@ void vsp1_du_atomic_begin(struct device *dev); ...@@ -27,7 +27,8 @@ void vsp1_du_atomic_begin(struct device *dev);
int vsp1_du_atomic_update_ext(struct device *dev, unsigned int rpf, int vsp1_du_atomic_update_ext(struct device *dev, unsigned int rpf,
u32 pixelformat, unsigned int pitch, u32 pixelformat, unsigned int pitch,
dma_addr_t mem[2], const struct v4l2_rect *src, dma_addr_t mem[2], const struct v4l2_rect *src,
const struct v4l2_rect *dst, unsigned int zpos); const struct v4l2_rect *dst, unsigned int alpha,
unsigned int zpos);
void vsp1_du_atomic_flush(struct device *dev); void vsp1_du_atomic_flush(struct device *dev);
static inline int vsp1_du_atomic_update(struct device *dev, static inline int vsp1_du_atomic_update(struct device *dev,
...@@ -37,7 +38,7 @@ static inline int vsp1_du_atomic_update(struct device *dev, ...@@ -37,7 +38,7 @@ static inline int vsp1_du_atomic_update(struct device *dev,
const struct v4l2_rect *dst) const struct v4l2_rect *dst)
{ {
return vsp1_du_atomic_update_ext(dev, rpf_index, pixelformat, pitch, return vsp1_du_atomic_update_ext(dev, rpf_index, pixelformat, pitch,
mem, src, dst, 0); mem, src, dst, 255, 0);
} }
#endif /* __MEDIA_VSP1_H__ */ #endif /* __MEDIA_VSP1_H__ */
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