Loading drivers/gpu/drm/msm/dsi-staging/dsi_clk.h +4 −4 Original line number Diff line number Diff line Loading @@ -116,10 +116,10 @@ struct dsi_link_lp_clk_info { /** * struct link_clk_freq - Clock frequency information for Link clocks * @byte_clk_rate: Frequency of DSI byte_clk in KHz. * @byte_intf_clk_rate: Frequency of DSI byte_intf_clk in KHz. * @pixel_clk_rate: Frequency of DSI pixel_clk in KHz. * @esc_clk_rate: Frequency of DSI escape clock in KHz. * @byte_clk_rate: Frequency of DSI byte_clk in Hz. * @byte_intf_clk_rate: Frequency of DSI byte_intf_clk in Hz. * @pixel_clk_rate: Frequency of DSI pixel_clk in Hz. * @esc_clk_rate: Frequency of DSI escape clock in Hz. */ struct link_clk_freq { u32 byte_clk_rate; Loading drivers/gpu/drm/msm/dsi-staging/dsi_defs.h +1 −1 Original line number Diff line number Diff line Loading @@ -562,7 +562,7 @@ struct dsi_cmd_engine_cfg { * @common_config: Host configuration common to both Video and Cmd mode. * @video_engine: Video engine configuration if panel is in video mode. * @cmd_engine: Cmd engine configuration if panel is in cmd mode. * @esc_clk_rate_khz: Esc clock frequency in Hz. * @esc_clk_rate_hz: Esc clock frequency in Hz. * @bit_clk_rate_hz: Bit clock frequency in Hz. * @bit_clk_rate_hz_override: DSI bit clk rate override from dt/sysfs. * @video_timing: Video timing information of a frame. Loading drivers/gpu/drm/msm/dsi-staging/dsi_display.c +13 −6 Original line number Diff line number Diff line /* * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -4031,12 +4031,12 @@ static void _dsi_display_calc_pipe_delay(struct dsi_display *display, cfg = &(m_ctrl->phy->cfg); esc_clk_rate_hz = dsi_ctrl->clk_freq.esc_clk_rate * 1000; pclk_to_esc_ratio = ((dsi_ctrl->clk_freq.pix_clk_rate * 1000) / esc_clk_rate_hz = dsi_ctrl->clk_freq.esc_clk_rate; pclk_to_esc_ratio = (dsi_ctrl->clk_freq.pix_clk_rate / esc_clk_rate_hz); byte_to_esc_ratio = ((dsi_ctrl->clk_freq.byte_clk_rate * 1000) / byte_to_esc_ratio = (dsi_ctrl->clk_freq.byte_clk_rate / esc_clk_rate_hz); hr_bit_to_esc_ratio = ((dsi_ctrl->clk_freq.byte_clk_rate * 4 * 1000) / hr_bit_to_esc_ratio = ((dsi_ctrl->clk_freq.byte_clk_rate * 4) / esc_clk_rate_hz); hsync_period = DSI_H_TOTAL_DSC(&mode->timing); Loading Loading @@ -4072,7 +4072,7 @@ static void _dsi_display_calc_pipe_delay(struct dsi_display *display, else delay->pll_delay = 25; delay->pll_delay = ((delay->pll_delay * esc_clk_rate_hz) / 1000000) * 2; delay->pll_delay = (delay->pll_delay * esc_clk_rate_hz) / 1000000; } static int _dsi_display_dyn_update_clks(struct dsi_display *display, Loading Loading @@ -6590,6 +6590,13 @@ int dsi_display_validate_mode_change(struct dsi_display *display, goto error; } if (cur_mode->timing.refresh_rate != adj_mode->timing.refresh_rate) { pr_err("fps change along with dyn clk not supported\n"); rc = -ENOTSUPP; goto error; } adj_mode->dsi_mode_flags |= DSI_MODE_FLAG_DYN_CLK; SDE_EVT32(cur_mode->pixel_clk_khz, Loading drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c +5 −1 Original line number Diff line number Diff line /* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -3282,6 +3282,7 @@ static int sde_hw_rotator_wait4done(struct sde_rot_hw_resource *hw, struct sde_hw_rotator *rot; struct sde_hw_rotator_resource_info *resinfo; struct sde_hw_rotator_context *ctx; struct sde_rot_mgr *mgr; int ret; if (!hw || !entry) { Loading @@ -3291,6 +3292,7 @@ static int sde_hw_rotator_wait4done(struct sde_rot_hw_resource *hw, resinfo = container_of(hw, struct sde_hw_rotator_resource_info, hw); rot = resinfo->rot; mgr = entry->private->mgr; /* Lookup rotator context from session-id */ ctx = sde_hw_rotator_get_ctx(rot, entry->item.session_id, Loading @@ -3309,7 +3311,9 @@ static int sde_hw_rotator_wait4done(struct sde_rot_hw_resource *hw, } /* Current rotator context job is finished, time to free up*/ sde_rot_mgr_lock(mgr); sde_hw_rotator_free_rotctx(rot, ctx); sde_rot_mgr_unlock(mgr); return ret; } Loading Loading
drivers/gpu/drm/msm/dsi-staging/dsi_clk.h +4 −4 Original line number Diff line number Diff line Loading @@ -116,10 +116,10 @@ struct dsi_link_lp_clk_info { /** * struct link_clk_freq - Clock frequency information for Link clocks * @byte_clk_rate: Frequency of DSI byte_clk in KHz. * @byte_intf_clk_rate: Frequency of DSI byte_intf_clk in KHz. * @pixel_clk_rate: Frequency of DSI pixel_clk in KHz. * @esc_clk_rate: Frequency of DSI escape clock in KHz. * @byte_clk_rate: Frequency of DSI byte_clk in Hz. * @byte_intf_clk_rate: Frequency of DSI byte_intf_clk in Hz. * @pixel_clk_rate: Frequency of DSI pixel_clk in Hz. * @esc_clk_rate: Frequency of DSI escape clock in Hz. */ struct link_clk_freq { u32 byte_clk_rate; Loading
drivers/gpu/drm/msm/dsi-staging/dsi_defs.h +1 −1 Original line number Diff line number Diff line Loading @@ -562,7 +562,7 @@ struct dsi_cmd_engine_cfg { * @common_config: Host configuration common to both Video and Cmd mode. * @video_engine: Video engine configuration if panel is in video mode. * @cmd_engine: Cmd engine configuration if panel is in cmd mode. * @esc_clk_rate_khz: Esc clock frequency in Hz. * @esc_clk_rate_hz: Esc clock frequency in Hz. * @bit_clk_rate_hz: Bit clock frequency in Hz. * @bit_clk_rate_hz_override: DSI bit clk rate override from dt/sysfs. * @video_timing: Video timing information of a frame. Loading
drivers/gpu/drm/msm/dsi-staging/dsi_display.c +13 −6 Original line number Diff line number Diff line /* * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -4031,12 +4031,12 @@ static void _dsi_display_calc_pipe_delay(struct dsi_display *display, cfg = &(m_ctrl->phy->cfg); esc_clk_rate_hz = dsi_ctrl->clk_freq.esc_clk_rate * 1000; pclk_to_esc_ratio = ((dsi_ctrl->clk_freq.pix_clk_rate * 1000) / esc_clk_rate_hz = dsi_ctrl->clk_freq.esc_clk_rate; pclk_to_esc_ratio = (dsi_ctrl->clk_freq.pix_clk_rate / esc_clk_rate_hz); byte_to_esc_ratio = ((dsi_ctrl->clk_freq.byte_clk_rate * 1000) / byte_to_esc_ratio = (dsi_ctrl->clk_freq.byte_clk_rate / esc_clk_rate_hz); hr_bit_to_esc_ratio = ((dsi_ctrl->clk_freq.byte_clk_rate * 4 * 1000) / hr_bit_to_esc_ratio = ((dsi_ctrl->clk_freq.byte_clk_rate * 4) / esc_clk_rate_hz); hsync_period = DSI_H_TOTAL_DSC(&mode->timing); Loading Loading @@ -4072,7 +4072,7 @@ static void _dsi_display_calc_pipe_delay(struct dsi_display *display, else delay->pll_delay = 25; delay->pll_delay = ((delay->pll_delay * esc_clk_rate_hz) / 1000000) * 2; delay->pll_delay = (delay->pll_delay * esc_clk_rate_hz) / 1000000; } static int _dsi_display_dyn_update_clks(struct dsi_display *display, Loading Loading @@ -6590,6 +6590,13 @@ int dsi_display_validate_mode_change(struct dsi_display *display, goto error; } if (cur_mode->timing.refresh_rate != adj_mode->timing.refresh_rate) { pr_err("fps change along with dyn clk not supported\n"); rc = -ENOTSUPP; goto error; } adj_mode->dsi_mode_flags |= DSI_MODE_FLAG_DYN_CLK; SDE_EVT32(cur_mode->pixel_clk_khz, Loading
drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c +5 −1 Original line number Diff line number Diff line /* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -3282,6 +3282,7 @@ static int sde_hw_rotator_wait4done(struct sde_rot_hw_resource *hw, struct sde_hw_rotator *rot; struct sde_hw_rotator_resource_info *resinfo; struct sde_hw_rotator_context *ctx; struct sde_rot_mgr *mgr; int ret; if (!hw || !entry) { Loading @@ -3291,6 +3292,7 @@ static int sde_hw_rotator_wait4done(struct sde_rot_hw_resource *hw, resinfo = container_of(hw, struct sde_hw_rotator_resource_info, hw); rot = resinfo->rot; mgr = entry->private->mgr; /* Lookup rotator context from session-id */ ctx = sde_hw_rotator_get_ctx(rot, entry->item.session_id, Loading @@ -3309,7 +3311,9 @@ static int sde_hw_rotator_wait4done(struct sde_rot_hw_resource *hw, } /* Current rotator context job is finished, time to free up*/ sde_rot_mgr_lock(mgr); sde_hw_rotator_free_rotctx(rot, ctx); sde_rot_mgr_unlock(mgr); return ret; } Loading