Skip to content

Commit ecd8c74

Browse files
mripardgregkh
authored andcommitted
drm/vc4: hdmi: Compute the CEC clock divider from the clock rate
[ Upstream commit 163a3ef ] The CEC clock divider needs to output a frequency of 40kHz from the HSM rate on the BCM2835. The driver used to have a fixed frequency for it, but that changed for the BCM2711 and we now need to compute it dynamically to maintain the proper rate. Fixes: cd4cb49 ("drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate") Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com> Signed-off-by: Maxime Ripard <maxime@cerno.tech> Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-7-maxime@cerno.tech (cherry picked from commit f1ceb9d) Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent b2c22c7 commit ecd8c74

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

drivers/gpu/drm/vc4/vc4_hdmi.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1468,6 +1468,7 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)
14681468
{
14691469
struct cec_connector_info conn_info;
14701470
struct platform_device *pdev = vc4_hdmi->pdev;
1471+
u16 clk_cnt;
14711472
u32 value;
14721473
int ret;
14731474

@@ -1493,8 +1494,9 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)
14931494
* divider: the hsm_clock rate and this divider setting will
14941495
* give a 40 kHz CEC clock.
14951496
*/
1497+
clk_cnt = clk_get_rate(vc4_hdmi->hsm_clock) / CEC_CLOCK_FREQ;
14961498
value |= VC4_HDMI_CEC_ADDR_MASK |
1497-
(4091 << VC4_HDMI_CEC_DIV_CLK_CNT_SHIFT);
1499+
(clk_cnt << VC4_HDMI_CEC_DIV_CLK_CNT_SHIFT);
14981500
HDMI_WRITE(HDMI_CEC_CNTRL_1, value);
14991501
ret = devm_request_threaded_irq(&pdev->dev, platform_get_irq(pdev, 0),
15001502
vc4_cec_irq_handler,

0 commit comments

Comments
 (0)