diff options
Diffstat (limited to 'drivers/gpu/drm/sun4i/sun4i_frontend.c')
| -rw-r--r-- | drivers/gpu/drm/sun4i/sun4i_frontend.c | 36 | 
1 files changed, 10 insertions, 26 deletions
| diff --git a/drivers/gpu/drm/sun4i/sun4i_frontend.c b/drivers/gpu/drm/sun4i/sun4i_frontend.c index b51cc685c13a..edb60ae0a9b7 100644 --- a/drivers/gpu/drm/sun4i/sun4i_frontend.c +++ b/drivers/gpu/drm/sun4i/sun4i_frontend.c @@ -407,6 +407,7 @@ int sun4i_frontend_update_formats(struct sun4i_frontend *frontend,  	struct drm_framebuffer *fb = state->fb;  	const struct drm_format_info *format = fb->format;  	uint64_t modifier = fb->modifier; +	unsigned int ch1_phase_idx;  	u32 out_fmt_val;  	u32 in_fmt_val, in_mod_val, in_ps_val;  	unsigned int i; @@ -442,18 +443,19 @@ int sun4i_frontend_update_formats(struct sun4i_frontend *frontend,  	 * I have no idea what this does exactly, but it seems to be  	 * related to the scaler FIR filter phase parameters.  	 */ +	ch1_phase_idx = (format->num_planes > 1) ? 1 : 0;  	regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZPHASE_REG, -		     frontend->data->ch_phase[0].horzphase); +		     frontend->data->ch_phase[0]);  	regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZPHASE_REG, -		     frontend->data->ch_phase[1].horzphase); +		     frontend->data->ch_phase[ch1_phase_idx]);  	regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE0_REG, -		     frontend->data->ch_phase[0].vertphase[0]); +		     frontend->data->ch_phase[0]);  	regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE0_REG, -		     frontend->data->ch_phase[1].vertphase[0]); +		     frontend->data->ch_phase[ch1_phase_idx]);  	regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE1_REG, -		     frontend->data->ch_phase[0].vertphase[1]); +		     frontend->data->ch_phase[0]);  	regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE1_REG, -		     frontend->data->ch_phase[1].vertphase[1]); +		     frontend->data->ch_phase[ch1_phase_idx]);  	/*  	 * Checking the input format is sufficient since we currently only @@ -687,30 +689,12 @@ static const struct dev_pm_ops sun4i_frontend_pm_ops = {  };  static const struct sun4i_frontend_data sun4i_a10_frontend = { -	.ch_phase		= { -		{ -			.horzphase = 0, -			.vertphase = { 0, 0 }, -		}, -		{ -			.horzphase = 0xfc000, -			.vertphase = { 0xfc000, 0xfc000 }, -		}, -	}, +	.ch_phase		= { 0x000, 0xfc000 },  	.has_coef_rdy		= true,  };  static const struct sun4i_frontend_data sun8i_a33_frontend = { -	.ch_phase		= { -		{ -			.horzphase = 0x400, -			.vertphase = { 0x400, 0x400 }, -		}, -		{ -			.horzphase = 0x400, -			.vertphase = { 0x400, 0x400 }, -		}, -	}, +	.ch_phase		= { 0x400, 0xfc400 },  	.has_coef_access_ctrl	= true,  }; | 
