Skip to content

Commit 18d1851

Browse files
popcornmixpelwell
authored andcommitted
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 6f2d1b4 commit 18d1851

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
@@ -1224,6 +1224,8 @@ static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder,
12241224
if (vc4_hdmi->variant->phy_disable)
12251225
vc4_hdmi->variant->phy_disable(vc4_hdmi);
12261226

1227+
/* we no longer require a minimum clock rate */
1228+
clk_set_min_rate(vc4_hdmi->pixel_bvb_clock, 0);
12271229
clk_disable_unprepare(vc4_hdmi->pixel_bvb_clock);
12281230
clk_disable_unprepare(vc4_hdmi->pixel_clock);
12291231

@@ -3724,6 +3726,8 @@ static int vc4_hdmi_runtime_suspend(struct device *dev)
37243726
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
37253727

37263728
clk_disable_unprepare(vc4_hdmi->audio_clock);
3729+
/* we no longer require a minimum clock rate */
3730+
clk_set_min_rate(vc4_hdmi->hsm_clock, 0);
37273731
clk_disable_unprepare(vc4_hdmi->hsm_clock);
37283732

37293733
return 0;

drivers/gpu/drm/vc4/vc4_hvs.c

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

2364+
/* we no longer require a minimum clock rate */
2365+
clk_set_min_rate(hvs->disp_clk, 0);
23642366
clk_disable_unprepare(hvs->disp_clk);
2367+
clk_set_min_rate(hvs->core_clk, 0);
23652368
clk_disable_unprepare(hvs->core_clk);
23662369

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