From patchwork Fri Dec 29 01:38:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Hu X-Patchwork-Id: 1880956 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4T1ShV55zHz23dD for ; Fri, 29 Dec 2023 12:38:49 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1rJ1pg-00065s-9A; Fri, 29 Dec 2023 01:38:40 +0000 Received: from smtp-relay-canonical-0.internal ([10.131.114.83] helo=smtp-relay-canonical-0.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1rJ1pb-00065O-Es for kernel-team@lists.ubuntu.com; Fri, 29 Dec 2023 01:38:35 +0000 Received: from canonical.com (unknown [10.101.194.164]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-0.canonical.com (Postfix) with ESMTPSA id 9A6E43F2D4 for ; Fri, 29 Dec 2023 01:38:34 +0000 (UTC) From: Ivan Hu To: kernel-team@lists.ubuntu.com Subject: [PATCH 1/1][SRU][J] UBUNTU: SAUCE: i915: force disable fastboot quirk Date: Fri, 29 Dec 2023 09:38:24 +0800 Message-Id: <20231229013824.7215-2-ivan.hu@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231229013824.7215-1-ivan.hu@canonical.com> References: <20231229013824.7215-1-ivan.hu@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" 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 --- 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;