diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 04b846440de6..d505c478a6ff 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -34,6 +34,7 @@
 #include "intel_display.h"
 #include "intel_display_types.h"
 #include "intel_gmbus.h"
+#include "intel_quirks.h"
 
 #define _INTEL_BIOS_PRIVATE
 #include "intel_vbt_defs.h"
@@ -2730,7 +2731,7 @@ static void parse_ddi_port(struct intel_bios_encoder_data *devdata)
 		return;
 	}
 
-	if (i915->display.vbt.ports[port]) {
+	if (i915->display.vbt.ports[port] && !intel_has_quirk(i915, QUIRK_MULTIPLE_VBT_DEVICES)) {
 		drm_dbg_kms(&i915->drm,
 			    "More than one child device for port %c in VBT, using the first.\n",
 			    port_name(port));
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index c84b581c61c6..ea90f957a5b9 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -8666,6 +8666,8 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
 			return ret;
 	}
 
+	intel_init_quirks_early(i915);
+
 	intel_bios_init(i915);
 
 	ret = intel_vga_register(i915);
diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c
index a280448df771..4428b8e38530 100644
--- a/drivers/gpu/drm/i915/display/intel_quirks.c
+++ b/drivers/gpu/drm/i915/display/intel_quirks.c
@@ -65,6 +65,12 @@ static void quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
 	drm_info(&i915->drm, "Applying no pps backlight power quirk\n");
 }
 
+static void quirk_multiple_vbt_devices(struct drm_i915_private *i915)
+{
+	intel_set_quirk(i915, QUIRK_MULTIPLE_VBT_DEVICES);
+	drm_info(&i915->drm, "Applying multiple VBT devices quirk\n");
+}
+
 struct intel_quirk {
 	int device;
 	int subsystem_vendor;
@@ -90,6 +96,12 @@ static int intel_dmi_no_pps_backlight(const struct dmi_system_id *id)
 	return 1;
 }
 
+static int intel_dmi_multiple_vbt_devices(const struct dmi_system_id *id)
+{
+	DRM_INFO("Allow multiple VBT devices in one port on %s\n", id->ident);
+	return 1;
+}
+
 static const struct intel_dmi_quirk intel_dmi_quirks[] = {
 	{
 		.dmi_id_list = &(const struct dmi_system_id[]) {
@@ -138,6 +150,22 @@ static const struct intel_dmi_quirk intel_dmi_quirks[] = {
 	},
 };
 
+static const struct intel_dmi_quirk intel_dmi_quirks_early[] = {
+	{
+		.dmi_id_list = &(const struct dmi_system_id[]) {
+			{
+				.callback = intel_dmi_multiple_vbt_devices,
+				.ident = "HP ZBook Power 15.6 inch G10 Mobile Workstation PC",
+				.matches = {DMI_EXACT_MATCH(DMI_SYS_VENDOR, "HP"),
+					    DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "HP ZBook Power 15.6 inch G10 Mobile Workstation PC"),
+				},
+			},
+			{ }
+		},
+		.hook = quirk_multiple_vbt_devices,
+	},
+};
+
 static struct intel_quirk intel_quirks[] = {
 	/* Lenovo U160 cannot use SSC on LVDS */
 	{ 0x0046, 0x17aa, 0x3920, quirk_ssc_force_disable },
@@ -224,6 +252,16 @@ void intel_init_quirks(struct drm_i915_private *i915)
 	}
 }
 
+void intel_init_quirks_early(struct drm_i915_private *i915)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(intel_dmi_quirks_early); i++) {
+		if (dmi_check_system(*intel_dmi_quirks_early[i].dmi_id_list) != 0)
+			intel_dmi_quirks_early[i].hook(i915);
+	}
+}
+
 bool intel_has_quirk(struct drm_i915_private *i915, enum intel_quirk_id quirk)
 {
 	return i915->display.quirks.mask & BIT(quirk);
diff --git a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/i915/display/intel_quirks.h
index 10a4d163149f..4faa16e46882 100644
--- a/drivers/gpu/drm/i915/display/intel_quirks.h
+++ b/drivers/gpu/drm/i915/display/intel_quirks.h
@@ -17,9 +17,11 @@ enum intel_quirk_id {
 	QUIRK_INVERT_BRIGHTNESS,
 	QUIRK_LVDS_SSC_DISABLE,
 	QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK,
+	QUIRK_MULTIPLE_VBT_DEVICES,
 };
 
 void intel_init_quirks(struct drm_i915_private *i915);
+void intel_init_quirks_early(struct drm_i915_private *i915);
 bool intel_has_quirk(struct drm_i915_private *i915, enum intel_quirk_id quirk);
 
 #endif /* __INTEL_QUIRKS_H__ */
