Skip to content

Commit 13153ee

Browse files
committed
drm/vc4: Remove request for min clocks when hdmi output is disabled
Currently, booting with no hdmi connected has: pi@pi4:~ $ vcgencmd measure_clock hdmi pixel frequency(9)=120010256 frequency(29)=74988280 After connecting hdmi we get: pi@pi4:~ $ vcgencmd measure_clock hdmi pixel frequency(9)=300005856 frequency(29)=149989744 and that persists after disconnecting hdmi I can measure this on a power supply as 10mA@5.2V (52mW). We should always remove clk_set_min_rate requests when we no longer need them. Signed-off-by: Dom Cobley <popcornmix@gmail.com>
1 parent acfbdae commit 13153ee

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

drivers/gpu/drm/vc4/vc4_hdmi.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,8 @@ static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder,
951951
if (vc4_hdmi->variant->phy_disable)
952952
vc4_hdmi->variant->phy_disable(vc4_hdmi);
953953

954+
/* we no longer require a minimum clock rate */
955+
clk_set_min_rate(vc4_hdmi->pixel_bvb_clock, 0);
954956
clk_disable_unprepare(vc4_hdmi->pixel_bvb_clock);
955957
clk_disable_unprepare(vc4_hdmi->pixel_clock);
956958

@@ -3219,6 +3221,8 @@ static int vc4_hdmi_runtime_suspend(struct device *dev)
32193221
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
32203222

32213223
clk_disable_unprepare(vc4_hdmi->audio_clock);
3224+
/* we no longer require a minimum clock rate */
3225+
clk_set_min_rate(vc4_hdmi->hsm_clock, 0);
32223226
clk_disable_unprepare(vc4_hdmi->hsm_clock);
32233227

32243228
return 0;

drivers/gpu/drm/vc4/vc4_hvs.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2149,7 +2149,10 @@ static void vc4_hvs_unbind(struct device *dev, struct device *master,
21492149
drm_mm_remove_node(node);
21502150
drm_mm_takedown(&vc4->hvs->lbm_mm);
21512151

2152+
/* we no longer require a minimum clock rate */
2153+
clk_set_min_rate(hvs->disp_clk, 0);
21522154
clk_disable_unprepare(hvs->disp_clk);
2155+
clk_set_min_rate(hvs->core_clk, 0);
21532156
clk_disable_unprepare(hvs->core_clk);
21542157

21552158
vc4->hvs = NULL;

drivers/gpu/drm/vc4/vc4_v3d.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,8 @@ static int vc4_v3d_runtime_suspend(struct device *dev)
376376

377377
vc4_irq_disable(&vc4->base);
378378

379+
/* we no longer require a minimum clock rate */
380+
clk_set_min_rate(v3d->clk, 0);
379381
clk_disable_unprepare(v3d->clk);
380382

381383
return 0;

0 commit comments

Comments
 (0)