diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README index 9f7578b8a9e83..8b793b69f04de 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -6368,6 +6368,10 @@ Params: cma-512 CMA is 512MB nohdmi Disable both HDMI 0 & 1 outputs nohdmi0 Disable HDMI 0 output nohdmi1 Disable HDMI 1 output + hdmi0_edp Configure HDMI 0 as an internal eDP panel + (for CM4/CM5 laptops and handhelds) + hdmi1_edp Configure HDMI 1 as an internal eDP panel + (for CM4/CM5 laptops and handhelds) Name: vc4-kms-v3d-pi5 diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts index 02bbad743d772..f49bd0791fb6d 100644 --- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts @@ -193,5 +193,7 @@ nohdmi0 = <0>, "-1-3-8"; nohdmi1 = <0>, "-2-4-10"; nohdmi = <0>, "-1-2-3-4-8-10"; + hdmi0_edp = <&hdmi0>, "raspberrypi,is-internal-panel?"; + hdmi1_edp = <&hdmi1>, "raspberrypi,is-internal-panel?"; }; }; diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi5-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi5-overlay.dts index d469e717b5706..fff9c5b63f3d7 100644 --- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi5-overlay.dts +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi5-overlay.dts @@ -138,5 +138,7 @@ nohdmi0 = <0>, "-3-5-10"; nohdmi1 = <0>, "-4-6-11"; nohdmi = <0>, "-3-4-5-6-10-11"; + hdmi0_edp = <&hdmi0>, "raspberrypi,is-internal-panel?"; + hdmi1_edp = <&hdmi1>, "raspberrypi,is-internal-panel?"; }; }; diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index e858a5b878781..018af3288f8ba 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -567,6 +567,14 @@ static int vc4_hdmi_connector_init(struct drm_device *dev, if (ret) return ret; + /* CM4/CM5 internal panels: allow overriding connector type to eDP */ + if (of_property_read_bool(vc4_hdmi->pdev->dev.of_node, "raspberrypi,is-internal-panel")) { + connector->connector_type = DRM_MODE_CONNECTOR_eDP; + connector->connector_type_id = 1; + kfree(connector->name); + connector->name = kasprintf(GFP_KERNEL, "eDP-1"); + } + drm_connector_helper_add(connector, &vc4_hdmi_connector_helper_funcs); /*