[PATCH 1/1][SRU][J] UBUNTU: SAUCE: i915: force disable fastboot quirk
Ivan Hu
ivan.hu at canonical.com
Fri Dec 29 01:38:24 UTC 2023
BugLink: https://bugs.launchpad.net/bugs/2047630
Some displays connect to the B&R PC device got the garbled display, it
need to disable the fastboot to fix the issue. Add quirk to force
disable i915 fastboot on the B&R PC when no i915.fastboot parameter was set.
Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 3 +++
drivers/gpu/drm/i915/display/intel_quirks.c | 25 ++++++++++++++++++++
drivers/gpu/drm/i915/i915_drv.h | 1 +
3 files changed, 29 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 11695b4db3b3..325040afa9c3 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -8133,6 +8133,9 @@ static bool fastboot_enabled(struct drm_i915_private *dev_priv)
if (dev_priv->params.fastboot != -1)
return dev_priv->params.fastboot;
+ if (dev_priv->quirks & QUIRK_FORCE_DISABLE_FASTBOOT)
+ return false;
+
/* Enable fastboot by default on Skylake and newer */
if (DISPLAY_VER(dev_priv) >= 9)
return true;
diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c
index 015e5b806b6d..9c9ae04c38c3 100644
--- a/drivers/gpu/drm/i915/display/intel_quirks.c
+++ b/drivers/gpu/drm/i915/display/intel_quirks.c
@@ -59,6 +59,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_force_disable_fastboot_hook(struct drm_i915_private *i915)
+{
+ i915->quirks |= QUIRK_FORCE_DISABLE_FASTBOOT;
+ drm_info(&i915->drm, "Applying force disable fastboot quirk\n");
+}
+
struct intel_quirk {
int device;
int subsystem_vendor;
@@ -84,6 +90,12 @@ static int intel_dmi_no_pps_backlight(const struct dmi_system_id *id)
return 1;
}
+static int intel_dmi_force_disable_fastboot(const struct dmi_system_id *id)
+{
+ DRM_INFO("Force disable fastboot on %s\n", id->ident);
+ return 1;
+}
+
static const struct intel_dmi_quirk intel_dmi_quirks[] = {
{
.dmi_id_list = &(const struct dmi_system_id[]) {
@@ -130,6 +142,19 @@ static const struct intel_dmi_quirk intel_dmi_quirks[] = {
},
.hook = quirk_no_pps_backlight_power_hook,
},
+ {
+ .dmi_id_list = &(const struct dmi_system_id[]) {
+ {
+ .callback = intel_dmi_force_disable_fastboot,
+ .ident = "B&R Industrial Automation APC2200",
+ .matches = {DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "B&R Industrial Automation"),
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "APC2200"),
+ },
+ },
+ { }
+ },
+ .hook = quirk_force_disable_fastboot_hook,
+ },
};
static struct intel_quirk intel_quirks[] = {
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 0e610715ec71..e692111de6c7 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -524,6 +524,7 @@ struct i915_drrs {
#define QUIRK_INCREASE_T12_DELAY (1<<6)
#define QUIRK_INCREASE_DDI_DISABLED_TIME (1<<7)
#define QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK (1<<8)
+#define QUIRK_FORCE_DISABLE_FASTBOOT (1<<9)
struct intel_fbdev;
struct intel_fbc_work;
--
2.34.1
More information about the kernel-team
mailing list