Commit cc0cb445 authored by Leon Elazar's avatar Leon Elazar Committed by Alex Deucher
Browse files

drm/amd/display: Fixing some fallout from dc_target removal



Also avoid allocating memory dce110_set_output_transfer_func
if not needed

Signed-off-by: default avatarLeon Elazar <leon.elazar@amd.com>
Acked-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 7a1c37e0
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -192,7 +192,8 @@ bool dc_stream_set_cursor_attributes(
	for (i = 0; i < MAX_PIPES; i++) {
		struct pipe_ctx *pipe_ctx = &res_ctx->pipe_ctx[i];

		if (pipe_ctx->stream == stream) {
		if ((pipe_ctx->stream == stream) &&
			(pipe_ctx->ipp != NULL)) {
			struct input_pixel_processor *ipp = pipe_ctx->ipp;

			if (ipp->funcs->ipp_cursor_set_attributes(
@@ -231,7 +232,8 @@ bool dc_stream_set_cursor_position(
	for (i = 0; i < MAX_PIPES; i++) {
		struct pipe_ctx *pipe_ctx = &res_ctx->pipe_ctx[i];

		if (pipe_ctx->stream == stream) {
		if ((pipe_ctx->stream == stream) &&
				(pipe_ctx->ipp != NULL)) {
			struct input_pixel_processor *ipp = pipe_ctx->ipp;
			struct dc_cursor_mi_param param = {
				.pixel_clk_khz = dc_stream->timing.pix_clk_khz,
+7 −0
Original line number Diff line number Diff line
@@ -973,6 +973,10 @@ bool dce110_opp_construct(struct dce110_opp *opp110,

	opp110->base.inst = inst;

	opp110->base.regamma_params = dm_alloc(sizeof(struct pwl_params));
	if (opp110->base.regamma_params == NULL)
		return false;

	opp110->regs = regs;
	opp110->opp_shift = opp_shift;
	opp110->opp_mask = opp_mask;
@@ -982,6 +986,9 @@ bool dce110_opp_construct(struct dce110_opp *opp110,

void dce110_opp_destroy(struct output_pixel_processor **opp)
{
	dm_free((*opp)->regamma_params);
	(*opp)->regamma_params = NULL;

	dm_free(FROM_DCE11_OPP(*opp));
	*opp = NULL;
}
+7 −23
Original line number Diff line number Diff line
@@ -721,20 +721,9 @@ static bool dce110_set_output_transfer_func(
	const struct core_stream *stream)
{
	struct output_pixel_processor *opp = pipe_ctx->opp;
	const struct core_gamma *ramp = NULL;
	struct pwl_params *regamma_params;
	bool result = false;

	if (surface->public.gamma_correction)
		ramp = DC_GAMMA_TO_CORE(surface->public.gamma_correction);

	regamma_params = dm_alloc(sizeof(struct pwl_params));
	if (regamma_params == NULL)
		goto regamma_alloc_fail;

	regamma_params->hw_points_num = GAMMA_HW_POINTS_NUM;

	opp->funcs->opp_power_on_regamma_lut(opp, true);
	opp->regamma_params->hw_points_num = GAMMA_HW_POINTS_NUM;

	if (stream->public.out_transfer_func &&
		stream->public.out_transfer_func->type ==
@@ -743,8 +732,8 @@ static bool dce110_set_output_transfer_func(
			TRANSFER_FUNCTION_SRGB) {
		opp->funcs->opp_set_regamma_mode(opp, OPP_REGAMMA_SRGB);
	} else if (dce110_translate_regamma_to_hw_format(
			stream->public.out_transfer_func, regamma_params)) {
		opp->funcs->opp_program_regamma_pwl(opp, regamma_params);
				stream->public.out_transfer_func, opp->regamma_params)) {
			opp->funcs->opp_program_regamma_pwl(opp, opp->regamma_params);
			opp->funcs->opp_set_regamma_mode(opp, OPP_REGAMMA_USER);
	} else {
		opp->funcs->opp_set_regamma_mode(opp, OPP_REGAMMA_BYPASS);
@@ -752,12 +741,7 @@ static bool dce110_set_output_transfer_func(

	opp->funcs->opp_power_on_regamma_lut(opp, false);

	result = true;

	dm_free(regamma_params);

regamma_alloc_fail:
	return result;
	return true;
}

static enum dc_status bios_parser_crtc_source_select(
+7 −0
Original line number Diff line number Diff line
@@ -548,3 +548,10 @@ void dce110_opp_power_on_regamma_lut_v(

	dm_write_reg(opp->ctx, mmDCFEV_MEM_PWR_CTRL, value);
}

void dce110_opp_set_regamma_mode_v(
	struct output_pixel_processor *opp,
	enum opp_regamma mode)
{
	// TODO: need to implement the function
}
+5 −1
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ static const struct opp_funcs funcs = {
		.opp_set_csc_default = dce110_opp_v_set_csc_default,
		.opp_set_csc_adjustment = dce110_opp_v_set_csc_adjustment,
		.opp_set_dyn_expansion = dce110_opp_set_dyn_expansion,
		.opp_set_regamma_mode = dce110_opp_set_regamma_mode,
		.opp_set_regamma_mode = dce110_opp_set_regamma_mode_v,
		.opp_destroy = dce110_opp_destroy,
		.opp_program_fmt = dce110_opp_program_fmt,
		.opp_program_bit_depth_reduction =
@@ -56,6 +56,10 @@ bool dce110_opp_v_construct(struct dce110_opp *opp110,

	opp110->base.ctx = ctx;

	opp110->base.regamma_params = dm_alloc(sizeof(struct pwl_params));
	if (opp110->base.regamma_params == NULL)
		return false;

	return true;
}
Loading