Skip to content

Commit 403cf03

Browse files
author
Shunqing Chen
committed
drm: rockchip: rk628: post_process: recalculate dst clock
Signed-off-by: Shunqing Chen <csq@rock-chips.com> Change-Id: I93388ba499f0d74c5f5c549decc83f3225ae1b82
1 parent 34d1b40 commit 403cf03

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

drivers/gpu/drm/rockchip/rk628/rk628_post_process.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,9 @@ static void rk628_post_process_scaler_init(struct rk628_post_process *pp,
204204
static void rk628_post_process_bridge_pre_enable(struct drm_bridge *bridge)
205205
{
206206
struct rk628_post_process *pp = bridge_to_pp(bridge);
207-
const struct drm_display_mode *src = &pp->src_mode;
208-
const struct drm_display_mode *dst = &pp->dst_mode;
207+
struct drm_display_mode *src = &pp->src_mode;
208+
struct drm_display_mode *dst = &pp->dst_mode;
209+
u64 dst_rate, src_rate;
209210

210211
reset_control_assert(pp->rstc_decoder);
211212
udelay(10);
@@ -219,6 +220,12 @@ static void rk628_post_process_bridge_pre_enable(struct drm_bridge *bridge)
219220
reset_control_deassert(pp->rstc_clk_rx);
220221
udelay(10);
221222

223+
src_rate = src->clock * 1000;
224+
dst_rate = src_rate * dst->vdisplay * dst->htotal;
225+
do_div(dst_rate, src->vdisplay * src->htotal);
226+
do_div(dst_rate, 1000);
227+
dst->clock = dst_rate;
228+
222229
clk_set_rate(pp->sclk_vop, dst->clock * 1000);
223230
clk_prepare_enable(pp->sclk_vop);
224231
reset_control_assert(pp->rstc_vop);

0 commit comments

Comments
 (0)