Skip to content

Commit ca2408d

Browse files
committed
drm/apple: Power DCP off when HDMI port is not connected
Power DCP off after init when the HDMI port is not connected. According to user reports connecting and disconnecting the HMI port saves ~0.5W on 14-/16-inch Macbook Pros. This was not reproducibable here though but powering DCP down is correct in any case. Signed-off-by: Janne Grunau <j@jannau.net>
1 parent 5a27d12 commit ca2408d

File tree

1 file changed

+18
-11
lines changed
  • drivers/gpu/drm/apple

1 file changed

+18
-11
lines changed

drivers/gpu/drm/apple/dcp.c

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,21 @@ int dcp_start(struct platform_device *pdev)
581581
return ret;
582582
}
583583

584+
static void _dcp_poweroff(struct apple_dcp *dcp)
585+
{
586+
switch (dcp->fw_compat) {
587+
case DCP_FIRMWARE_V_12_3:
588+
iomfb_poweroff_v12_3(dcp);
589+
break;
590+
case DCP_FIRMWARE_V_13_5:
591+
iomfb_poweroff_v13_3(dcp);
592+
break;
593+
default:
594+
WARN_ONCE(true, "Unexpected firmware version: %u\n", dcp->fw_compat);
595+
break;
596+
}
597+
}
598+
584599
static int dcp_enable_dp2hdmi_hpd(struct apple_dcp *dcp)
585600
{
586601
// check HPD state before enabling the edge triggered IRQ
@@ -590,6 +605,8 @@ static int dcp_enable_dp2hdmi_hpd(struct apple_dcp *dcp)
590605

591606
if (connected)
592607
dcp_dptx_connect(dcp, 0);
608+
else
609+
_dcp_poweroff(dcp);
593610
}
594611

595612
if (dcp->hdmi_hpd_irq)
@@ -673,17 +690,7 @@ void dcp_poweroff(struct platform_device *pdev)
673690
if (dcp->avep)
674691
av_service_disconnect(dcp);
675692

676-
switch (dcp->fw_compat) {
677-
case DCP_FIRMWARE_V_12_3:
678-
iomfb_poweroff_v12_3(dcp);
679-
break;
680-
case DCP_FIRMWARE_V_13_5:
681-
iomfb_poweroff_v13_3(dcp);
682-
break;
683-
default:
684-
WARN_ONCE(true, "Unexpected firmware version: %u\n", dcp->fw_compat);
685-
break;
686-
}
693+
_dcp_poweroff(dcp);
687694

688695
if (dcp->hdmi_hpd) {
689696
bool connected = gpiod_get_value_cansleep(dcp->hdmi_hpd);

0 commit comments

Comments
 (0)