From nobody Sat Jul 25 16:19:13 2026 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2834326951 for ; Thu, 16 Jul 2026 06:51:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784184677; cv=none; b=lHySTcqlTS4zixrK1DCQt88bpM7hbL6GAm+B7pr5MeL2zeLWOUmGodTqcaaYD5ckpE347EgwJDencOgbzblOz4igrMlapkm9iaEbI5oVAVfpoNS/TkLpP220b/66hW1/6ZPe9kNsp2X6j58bVwohuybcn9s+rERMXXfKO8YDr3g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784184677; c=relaxed/simple; bh=6uPQnf8BBGzrUnCbrO2oCtgY8+zMKCVYNywSeNGLOHE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=iq9fk334FCRt7cdzuyrnl4L3bhVqOdv5ioJknbwLz9xVIDaTOFPDLCbWrrHtz8o+jWQPuoxlZ0JafckNlEsXE1XjYUuU1rRHDj+dH1ns6ketQKap+ka3Gpa8nPXUCY2gpe2GGz+fzLuWHjJXGeGh4eJiY3UNM7DSbJnKroEUu44= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ffEcy7O5; arc=none smtp.client-ip=209.85.214.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ffEcy7O5" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2cc73e322dbso76614125ad.1 for ; Wed, 15 Jul 2026 23:51:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784184675; x=1784789475; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=REWe9N83SgNKp6Wro3KoC+qLSEUgRwmdDgJzNFegwYo=; b=ffEcy7O5EPNrAMALe9ILXfKKQzMxcrGoHtkvmkAMks5O+vXKYwYaW2+uFUiCOo8eki RbT7AHO7OMIHl29ex7RLGDQv/Lg6CsdFa4CTQlXK8lekaaGNZU/rtCYWl/lU8PQql/vZ CAn4ht+C6bg+7nYh+bNBk5Rwst6/iRbkOVOgff7UAhPLJe1haWOjKxY8VKPw2rowwSDt ycNjuklcivjZM579eaRXl742Rzq4Z5CTJRCty4e+HVIBAn+5IVVAjc7uVOAPSdEV6bvu G1DrGmeBZYWcIGjQXO6yJcQoFMoYZ93jOTybNnU1h2l+bi1tfqy8xfBW8xadK0f2MSMw 8RmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784184675; x=1784789475; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=REWe9N83SgNKp6Wro3KoC+qLSEUgRwmdDgJzNFegwYo=; b=k0P5AwKwzQ/+2I+cyMYGd+9Kl+WVKmFg3wmuNPJCRHmPsiP3qv5GDXWKxJogU60Kfw L4SYdp6ZUGtSh2DWgsb3bA6rPdavLot3ITBRCxsNT1xnDRmpLp2V1t1rjf4HUpj5/IGv eYoqdJG3+sKGBLWfM00qdkzAa6jOBjIXRVIbU3vOcGN3n/ueKFQCJyDGEj/YSwlmozKP 70ou44wjpNKnJZke7OIUwJFVWaWGTnzko8xMUCP0jYFdEXre7uRQhEjRpl49RK5219yq ISRYejgqtDwybEEoAShAQWUPKa5hPRrF4ipiXld0lmx75LeKMRVMdS2RBH3YqkMdxisQ b/rA== X-Forwarded-Encrypted: i=1; AHgh+RqjIRU+Kx62NO5lrDpSTFQVr11RPPmvlkxdNtvfF3hHL+WP94Olyej7KDvomGfjJrTd4iLlGnsdDyHsIs4=@vger.kernel.org X-Gm-Message-State: AOJu0YzR/gKL07iZbWPvsSnWfuioYSR4iTBf0AQrR3r8Q/9UCEenfQdx 9rvPfFCnYAdUYnx6e7L52I1AU/Ym4fitBXXIMW1e7JDFObr5dhFn3RDa X-Gm-Gg: AfdE7ckvNQgIArEEKCVMB3TkNQrQGdumUO/9E/B3+I5YVOrXc/JDbkQGC+a+Tp8R2oc SCyoWDtNrbEZ942dahKH/SFjxVRmedmu1C3cf1zoWhcdoV5C061BI6SwW1RwS0OkG7oU4iMD7be hhw77//8uafr/6tVuYWBhtI1MhL6hNQqwyRIxYJkiwXyNXmwZ6Ugnt5C0Konjpa22RbLvmwulXw nhgH3hkeO4IpOEcJazXZranREAAtJpo5RX2d89Ef/dfA75IbHTjg9d9UG5Mw1r334B96QRUxdhP RKPCK03pJuTx2O0ThkQd6x6g5KTrc1UByqHwQiVtEHAQuFDx1wl8FeZGqAQa/ub4wsBENcxS9Vn SrIM9pYNlB6IwjgrAb0WGuhmu5CUGRh1hsmVEZ5HsXWpJhjlvFMHkYrV3CIVZ4QMv83yBHbZP7U tC+TWl X-Received: by 2002:a17:902:f787:b0:2cc:89ce:2ef8 with SMTP id d9443c01a7336-2cf03de86a5mr57535365ad.40.1784184675029; Wed, 15 Jul 2026 23:51:15 -0700 (PDT) Received: from XiaomiLaptop ([182.239.122.92]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf10120441sm14918565ad.20.2026.07.15.23.51.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2026 23:51:14 -0700 (PDT) From: Andrew Zhou To: dri-devel@lists.freedesktop.org Cc: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, linux-kernel@vger.kernel.org, Andrew Zhou Subject: [PATCH] drm: make panel orientation quirks optional Date: Thu, 16 Jul 2026 14:51:06 +0800 Message-ID: <20260716065106.150760-1-zhoulol888@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" DRM currently selects DRM_PANEL_ORIENTATION_QUIRKS unconditionally, forcing all DRM users to compile embedded LCD panel quirk detection. This is unnecessary on desktop and server systems with external monitors. Add a static inline stub in drm_utils.h that returns DRM_MODE_PANEL_ORIENTATION_UNKNOWN when the option is disabled, and make the Kconfig option user-visible with a description. Compile-tested with CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=3Dy and =3Dn. Boot-tested in QEMU with TinyCorePure64. Signed-off-by: Andrew Zhou --- drivers/gpu/drm/Kconfig | 14 ++++++++++++-- drivers/gpu/drm/drm_panel_orientation_quirks.c | 6 ++++-- include/drm/drm_utils.h | 8 ++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 323422861e8f..da4ac94bbf61 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -8,7 +8,6 @@ menuconfig DRM tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)" depends on (AGP || AGP=3Dn) && !EMULATED_CMPXCHG && HAS_DMA - select DRM_PANEL_ORIENTATION_QUIRKS select HDMI select I2C select DMA_SHARED_BUFFER @@ -369,4 +368,15 @@ endif =20 # Separate option because drm_panel_orientation_quirks.c is shared with fb= dev config DRM_PANEL_ORIENTATION_QUIRKS - tristate + tristate "Panel orientation quirks for DMI-based detection" + depends on DRM + help + Enable DMI-based quirk detection for devices where the + built-in LCD panel is mounted in a non-standard orientation + relative to the casing (e.g., handheld PCs, tablets). + + This allows userspace to automatically rotate the display + to match the physical orientation of the device. + + Desktop and server systems with external monitors do not + need this. If unsure, say N. diff --git a/drivers/gpu/drm/drm_panel_orientation_quirks.c b/drivers/gpu/d= rm/drm_panel_orientation_quirks.c index 3a218fb592ce..fb09078a831a 100644 --- a/drivers/gpu/drm/drm_panel_orientation_quirks.c +++ b/drivers/gpu/drm/drm_panel_orientation_quirks.c @@ -14,7 +14,7 @@ #include #include =20 -#ifdef CONFIG_DMI +#if defined(CONFIG_DMI) && defined(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) =20 /* * Some x86 clamshell design devices use portrait tablet screens and a dis= play @@ -589,7 +589,7 @@ EXPORT_SYMBOL(drm_get_panel_orientation_quirk); =20 #else =20 -/* There are no quirks for non x86 devices yet */ +/* Fallback stub when DMI or the entire quirk module is disabled. */ int drm_get_panel_orientation_quirk(int width, int height) { return DRM_MODE_PANEL_ORIENTATION_UNKNOWN; @@ -598,5 +598,7 @@ EXPORT_SYMBOL(drm_get_panel_orientation_quirk); =20 #endif =20 +#ifdef CONFIG_DRM_PANEL_ORIENTATION_QUIRKS MODULE_DESCRIPTION("Quirks for non-normal panel orientation"); MODULE_LICENSE("Dual MIT/GPL"); +#endif diff --git a/include/drm/drm_utils.h b/include/drm/drm_utils.h index 6a46f755daba..947b8e71260e 100644 --- a/include/drm/drm_utils.h +++ b/include/drm/drm_utils.h @@ -11,10 +11,18 @@ #define __DRM_UTILS_H__ =20 #include +#include =20 struct drm_edid; =20 +#ifdef CONFIG_DRM_PANEL_ORIENTATION_QUIRKS int drm_get_panel_orientation_quirk(int width, int height); +#else +static inline int drm_get_panel_orientation_quirk(int width, int height) +{ + return DRM_MODE_PANEL_ORIENTATION_UNKNOWN; +} +#endif =20 struct drm_panel_backlight_quirk { u16 min_brightness; --=20 2.54.0