Commit 62dad91c authored by Kieran Bingham's avatar Kieran Bingham Committed by Mauro Carvalho Chehab

media: v4l: vsp1: Remove redundant context variables

The vsp1_pipe object context variables for div_size and
current_partition allowed state to be maintained through processing the
partitions during processing.

Now that the partition tables are calculated during stream on, there is
no requirement to store these variables in the pipe object.

Utilise local variables for the processing as required.
Signed-off-by: default avatarKieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarHans Verkuil <hansverk@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 25b6beab
......@@ -80,10 +80,8 @@ enum vsp1_pipeline_state {
* @uds_input: entity at the input of the UDS, if the UDS is present
* @entities: list of entities in the pipeline
* @dl: display list associated with the pipeline
* @div_size: The maximum allowed partition size for the pipeline
* @partitions: The number of partitions used to process one frame
* @partition: The current partition for configuration to process
* @current_partition: The partition number currently being configured
* @part_table: The pre-calculated partitions used by the pipeline
*/
struct vsp1_pipeline {
......@@ -115,10 +113,8 @@ struct vsp1_pipeline {
struct vsp1_dl_list *dl;
unsigned int div_size;
unsigned int partitions;
struct v4l2_rect partition;
unsigned int current_partition;
struct v4l2_rect *part_table;
};
......
......@@ -290,7 +290,6 @@ static int vsp1_video_pipeline_setup_partitions(struct vsp1_pipeline *pipe)
}
}
pipe->div_size = div_size;
pipe->partitions = DIV_ROUND_UP(format->width, div_size);
pipe->part_table = kcalloc(pipe->partitions, sizeof(*pipe->part_table),
GFP_KERNEL);
......@@ -379,11 +378,12 @@ static void vsp1_video_frame_end(struct vsp1_pipeline *pipe,
}
static void vsp1_video_pipeline_run_partition(struct vsp1_pipeline *pipe,
struct vsp1_dl_list *dl)
struct vsp1_dl_list *dl,
unsigned int partition)
{
struct vsp1_entity *entity;
pipe->partition = pipe->part_table[pipe->current_partition];
pipe->partition = pipe->part_table[partition];
list_for_each_entry(entity, &pipe->entities, list_pipe) {
if (entity->ops->configure)
......@@ -396,6 +396,7 @@ static void vsp1_video_pipeline_run(struct vsp1_pipeline *pipe)
{
struct vsp1_device *vsp1 = pipe->output->entity.vsp1;
struct vsp1_entity *entity;
unsigned int partition;
if (!pipe->dl)
pipe->dl = vsp1_dl_list_get(pipe->output->dlm);
......@@ -412,20 +413,12 @@ static void vsp1_video_pipeline_run(struct vsp1_pipeline *pipe)
}
/* Run the first partition */
pipe->current_partition = 0;
vsp1_video_pipeline_run_partition(pipe, pipe->dl);
vsp1_video_pipeline_run_partition(pipe, pipe->dl, 0);
/* Process consecutive partitions as necessary */
for (pipe->current_partition = 1;
pipe->current_partition < pipe->partitions;
pipe->current_partition++) {
for (partition = 1; partition < pipe->partitions; ++partition) {
struct vsp1_dl_list *dl;
/*
* Partition configuration operations will utilise
* the pipe->current_partition variable to determine
* the work they should complete.
*/
dl = vsp1_dl_list_get(pipe->output->dlm);
/*
......@@ -438,7 +431,7 @@ static void vsp1_video_pipeline_run(struct vsp1_pipeline *pipe)
break;
}
vsp1_video_pipeline_run_partition(pipe, dl);
vsp1_video_pipeline_run_partition(pipe, dl, partition);
vsp1_dl_list_add_chain(pipe->dl, dl);
}
......
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