Browse Source

video: driver: Use max fps from inst caps

Use maximum framerate from published
instance caps to make it platform
agnostic.

Change-Id: I319768e722774969287abb9e782ddbece7593ff9
Signed-off-by: Priyanka Gujjula <[email protected]>
Priyanka Gujjula 3 years ago
parent
commit
e786da48eb

+ 2 - 0
driver/platform/waipio/src/msm_vidc_waipio.c

@@ -18,6 +18,8 @@
 #define MAX_BASE_LAYER_PRIORITY_ID 63
 #define MAX_BASE_LAYER_PRIORITY_ID 63
 #define MAX_BITRATE             220000000
 #define MAX_BITRATE             220000000
 #define DEFAULT_BITRATE         20000000
 #define DEFAULT_BITRATE         20000000
+#define MINIMUM_FPS             1
+#define MAXIMUM_FPS             960
 #define MIN_QP_10BIT            -12
 #define MIN_QP_10BIT            -12
 #define MIN_QP_8BIT             0
 #define MIN_QP_8BIT             0
 #define MAX_QP                  51
 #define MAX_QP                  51

+ 2 - 2
driver/variant/iris2/src/msm_vidc_power_iris2.c

@@ -166,7 +166,7 @@ u64 msm_vidc_calc_freq_iris2(struct msm_vidc_inst *inst, u32 data_size)
 		vsp_cycles += mbs_per_second * base_cycles;
 		vsp_cycles += mbs_per_second * base_cycles;
 
 
 		/* Add 25 percent extra for 960fps use case */
 		/* Add 25 percent extra for 960fps use case */
-		if (fps >= MAXIMUM_FPS)
+		if (fps >= 960)
 			vsp_cycles += div_u64(vpp_cycles * 25, 100);
 			vsp_cycles += div_u64(vpp_cycles * 25, 100);
 
 
 		if (inst->codec == MSM_VIDC_VP9 &&
 		if (inst->codec == MSM_VIDC_VP9 &&
@@ -372,7 +372,7 @@ static u64 __calculate_decoder(struct vidc_bus_vote_data *d)
 			llc.line_buffer_write + ddr.total;
 			llc.line_buffer_write + ddr.total;
 
 
 	/* Add 25 percent extra for 960fps use case */
 	/* Add 25 percent extra for 960fps use case */
-	if (fps >= MAXIMUM_FPS) {
+	if (fps >= 960) {
 		ddr.total += div_u64(ddr.total * 25, 100);
 		ddr.total += div_u64(ddr.total * 25, 100);
 		llc.total += div_u64(llc.total * 25, 100);
 		llc.total += div_u64(llc.total * 25, 100);
 	}
 	}

+ 0 - 2
driver/vidc/inc/msm_vidc_internal.h

@@ -30,8 +30,6 @@
 #define MIN_SUPPORTED_WIDTH   32
 #define MIN_SUPPORTED_WIDTH   32
 #define MIN_SUPPORTED_HEIGHT  32
 #define MIN_SUPPORTED_HEIGHT  32
 #define DEFAULT_FPS       30
 #define DEFAULT_FPS       30
-#define MINIMUM_FPS       1
-#define MAXIMUM_FPS       960
 #define MAXIMUM_VP9_FPS   60
 #define MAXIMUM_VP9_FPS   60
 #define SINGLE_INPUT_BUFFER   1
 #define SINGLE_INPUT_BUFFER   1
 #define SINGLE_OUTPUT_BUFFER  1
 #define SINGLE_OUTPUT_BUFFER  1

+ 3 - 2
driver/vidc/src/msm_vidc.c

@@ -729,11 +729,12 @@ int msm_vidc_enum_frameintervals(void *instance, struct v4l2_frmivalenum *fival)
 
 
 	fival->type = V4L2_FRMIVAL_TYPE_STEPWISE;
 	fival->type = V4L2_FRMIVAL_TYPE_STEPWISE;
 	fival->stepwise.min.numerator = 1;
 	fival->stepwise.min.numerator = 1;
-	fival->stepwise.min.denominator = min_t(u32, fps, MAXIMUM_FPS);
+	fival->stepwise.min.denominator =
+			min_t(u32, fps, capability->cap[FRAME_RATE].max);
 	fival->stepwise.max.numerator = 1;
 	fival->stepwise.max.numerator = 1;
 	fival->stepwise.max.denominator = 1;
 	fival->stepwise.max.denominator = 1;
 	fival->stepwise.step.numerator = 1;
 	fival->stepwise.step.numerator = 1;
-	fival->stepwise.step.denominator = MAXIMUM_FPS;
+	fival->stepwise.step.denominator = capability->cap[FRAME_RATE].max;
 
 
 	return 0;
 	return 0;
 }
 }

+ 3 - 2
driver/vidc/src/msm_vidc_driver.c

@@ -2641,7 +2641,7 @@ void msm_vidc_allow_dcvs(struct msm_vidc_inst *inst)
 	struct msm_vidc_core *core;
 	struct msm_vidc_core *core;
 	u32 fps;
 	u32 fps;
 
 
-	if (!inst || !inst->core) {
+	if (!inst || !inst->core || !inst->capabilities) {
 		d_vpr_e("%s: Invalid args: %pK\n", __func__, inst);
 		d_vpr_e("%s: Invalid args: %pK\n", __func__, inst);
 		return;
 		return;
 	}
 	}
@@ -2696,7 +2696,8 @@ void msm_vidc_allow_dcvs(struct msm_vidc_inst *inst)
 	}
 	}
 
 
 	fps =  msm_vidc_get_fps(inst);
 	fps =  msm_vidc_get_fps(inst);
-	if (is_decode_session(inst) && fps >= MAXIMUM_FPS) {
+	if (is_decode_session(inst) &&
+			fps >= inst->capabilities->cap[FRAME_RATE].max) {
 		allow = false;
 		allow = false;
 		i_vpr_h(inst, "%s: unsupported fps %d\n", __func__, fps);
 		i_vpr_h(inst, "%s: unsupported fps %d\n", __func__, fps);
 		goto exit;
 		goto exit;