[media] v4l: vsp1: Pass pipe pointer to entity configure functions

Pass the pipe explicitly instead of retrieving it through media
entities. This decouples device state stored in the pipeline from the
active state stored in entities, preparing for dynamic pipeline
creation.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
Laurent Pinchart 2016-01-14 14:17:32 -02:00 committed by Mauro Carvalho Chehab
parent d2219824cb
commit 83dd019d30
11 changed files with 29 additions and 14 deletions

View File

@ -305,9 +305,10 @@ static struct v4l2_subdev_ops bru_ops = {
* VSP1 Entity Operations
*/
static void bru_configure(struct vsp1_entity *entity, struct vsp1_dl_list *dl)
static void bru_configure(struct vsp1_entity *entity,
struct vsp1_pipeline *pipe,
struct vsp1_dl_list *dl)
{
struct vsp1_pipeline *pipe = to_vsp1_pipeline(&entity->subdev.entity);
struct vsp1_bru *bru = to_bru(&entity->subdev);
struct v4l2_mbus_framefmt *format;
unsigned int flags;

View File

@ -464,7 +464,7 @@ void vsp1_du_atomic_flush(struct device *dev)
vsp1_entity_route_setup(entity, pipe->dl);
if (entity->ops->configure)
entity->ops->configure(entity, pipe->dl);
entity->ops->configure(entity, pipe, pipe->dl);
if (entity->type == VSP1_ENTITY_RPF)
vsp1_rwpf_set_memory(to_rwpf(&entity->subdev),

View File

@ -20,6 +20,7 @@
struct vsp1_device;
struct vsp1_dl_list;
struct vsp1_pipeline;
enum vsp1_entity_type {
VSP1_ENTITY_BRU,
@ -66,7 +67,8 @@ struct vsp1_route {
struct vsp1_entity_operations {
void (*destroy)(struct vsp1_entity *);
void (*set_memory)(struct vsp1_entity *, struct vsp1_dl_list *dl);
void (*configure)(struct vsp1_entity *, struct vsp1_dl_list *dl);
void (*configure)(struct vsp1_entity *, struct vsp1_pipeline *,
struct vsp1_dl_list *);
};
struct vsp1_entity {

View File

@ -166,7 +166,9 @@ static struct v4l2_subdev_ops hsit_ops = {
* VSP1 Entity Operations
*/
static void hsit_configure(struct vsp1_entity *entity, struct vsp1_dl_list *dl)
static void hsit_configure(struct vsp1_entity *entity,
struct vsp1_pipeline *pipe,
struct vsp1_dl_list *dl)
{
struct vsp1_hsit *hsit = to_hsit(&entity->subdev);

View File

@ -185,7 +185,9 @@ static struct v4l2_subdev_ops lif_ops = {
* VSP1 Entity Operations
*/
static void lif_configure(struct vsp1_entity *entity, struct vsp1_dl_list *dl)
static void lif_configure(struct vsp1_entity *entity,
struct vsp1_pipeline *pipe,
struct vsp1_dl_list *dl)
{
const struct v4l2_mbus_framefmt *format;
struct vsp1_lif *lif = to_lif(&entity->subdev);

View File

@ -221,7 +221,9 @@ static struct v4l2_subdev_ops lut_ops = {
* VSP1 Entity Operations
*/
static void lut_configure(struct vsp1_entity *entity, struct vsp1_dl_list *dl)
static void lut_configure(struct vsp1_entity *entity,
struct vsp1_pipeline *pipe,
struct vsp1_dl_list *dl)
{
struct vsp1_lut *lut = to_lut(&entity->subdev);

View File

@ -57,9 +57,10 @@ static void rpf_set_memory(struct vsp1_entity *entity, struct vsp1_dl_list *dl)
rpf->mem.addr[2] + rpf->offsets[1]);
}
static void rpf_configure(struct vsp1_entity *entity, struct vsp1_dl_list *dl)
static void rpf_configure(struct vsp1_entity *entity,
struct vsp1_pipeline *pipe,
struct vsp1_dl_list *dl)
{
struct vsp1_pipeline *pipe = to_vsp1_pipeline(&entity->subdev.entity);
struct vsp1_rwpf *rpf = to_rwpf(&entity->subdev);
const struct vsp1_format_info *fmtinfo = rpf->fmtinfo;
const struct v4l2_pix_format_mplane *format = &rpf->format;

View File

@ -297,7 +297,9 @@ static struct v4l2_subdev_ops sru_ops = {
* VSP1 Entity Operations
*/
static void sru_configure(struct vsp1_entity *entity, struct vsp1_dl_list *dl)
static void sru_configure(struct vsp1_entity *entity,
struct vsp1_pipeline *pipe,
struct vsp1_dl_list *dl)
{
const struct vsp1_sru_param *param;
struct vsp1_sru *sru = to_sru(&entity->subdev);

View File

@ -284,7 +284,9 @@ static struct v4l2_subdev_ops uds_ops = {
* VSP1 Entity Operations
*/
static void uds_configure(struct vsp1_entity *entity, struct vsp1_dl_list *dl)
static void uds_configure(struct vsp1_entity *entity,
struct vsp1_pipeline *pipe,
struct vsp1_dl_list *dl)
{
struct vsp1_uds *uds = to_uds(&entity->subdev);
const struct v4l2_mbus_framefmt *output;

View File

@ -619,7 +619,7 @@ static int vsp1_video_setup_pipeline(struct vsp1_pipeline *pipe)
vsp1_entity_route_setup(entity, pipe->dl);
if (entity->ops->configure)
entity->ops->configure(entity, pipe->dl);
entity->ops->configure(entity, pipe, pipe->dl);
}
return 0;

View File

@ -88,9 +88,10 @@ static void wpf_set_memory(struct vsp1_entity *entity, struct vsp1_dl_list *dl)
vsp1_wpf_write(wpf, dl, VI6_WPF_DSTM_ADDR_C1, wpf->mem.addr[2]);
}
static void wpf_configure(struct vsp1_entity *entity, struct vsp1_dl_list *dl)
static void wpf_configure(struct vsp1_entity *entity,
struct vsp1_pipeline *pipe,
struct vsp1_dl_list *dl)
{
struct vsp1_pipeline *pipe = to_vsp1_pipeline(&entity->subdev.entity);
struct vsp1_rwpf *wpf = to_rwpf(&entity->subdev);
struct vsp1_device *vsp1 = wpf->entity.vsp1;
const struct v4l2_mbus_framefmt *source_format;