Skip to content

Commit dfb2b8c

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 [email protected] (52mW). We should always remove clk_set_min_rate requests when we no longer need them. Signed-off-by: Dom Cobley <[email protected]>
1 parent 9821fa9 commit dfb2b8c

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
@@ -890,6 +890,8 @@ static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder,
890890
if (vc4_hdmi->variant->phy_disable)
891891
vc4_hdmi->variant->phy_disable(vc4_hdmi);
892892

893+
/* we no longer require a minimum clock rate */
894+
clk_set_min_rate(vc4_hdmi->pixel_bvb_clock, 0);
893895
clk_disable_unprepare(vc4_hdmi->pixel_bvb_clock);
894896
clk_disable_unprepare(vc4_hdmi->pixel_clock);
895897

@@ -3089,6 +3091,8 @@ static int vc4_hdmi_runtime_suspend(struct device *dev)
30893091
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
30903092

30913093
clk_disable_unprepare(vc4_hdmi->audio_clock);
3094+
/* we no longer require a minimum clock rate */
3095+
clk_set_min_rate(vc4_hdmi->hsm_clock, 0);
30923096
clk_disable_unprepare(vc4_hdmi->hsm_clock);
30933097

30943098
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)