[Intel-gfx] [PATCH v2 1/3] drm/i915/opregion: add function to check if headless sku
Jani Nikula
jani.nikula at linux.intel.com
Fri Jun 10 08:02:57 UTC 2022
On Fri, 10 Jun 2022, Jouni Högander <jouni.hogander at intel.com> wrote:
> Export headless sku bit (bit 13) from opregion->header->pcon as an
> interface to check if our device is headless configuration.
>
> This is mainly targeted for hybrid gfx systems. E.g. when display
> is not supposed to be connected discrete graphics card it's
> opregion can inform this is headless graphics card.
>
> v2: Check also opregion version
>
> Bspec: 53441
> Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_opregion.c | 14 ++++++++++++++
> drivers/gpu/drm/i915/display/intel_opregion.h | 7 +++++++
> 2 files changed, 21 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c b/drivers/gpu/drm/i915/display/intel_opregion.c
> index f31e8c3f8ce0..6876ba30d5a9 100644
> --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> @@ -53,6 +53,8 @@
> #define MBOX_ASLE_EXT BIT(4) /* Mailbox #5 */
> #define MBOX_BACKLIGHT BIT(5) /* Mailbox #2 (valid from v3.x) */
>
> +#define PCON_HEADLESS_SKU BIT(13)
> +
> struct opregion_header {
> u8 signature[16];
> u32 size;
> @@ -1135,6 +1137,18 @@ struct edid *intel_opregion_get_edid(struct intel_connector *intel_connector)
> return new_edid;
> }
>
> +bool intel_opregion_headless_sku(struct drm_i915_private *i915)
> +{
> + struct intel_opregion *opregion = &i915->opregion;
> + struct opregion_header *header = opregion->header;
> +
> + if (!header || header->over.major < 2 ||
> + (header->over.major == 2 && header->over.minor < 3))
> + return false;
> +
> + return opregion->header->pcon & PCON_HEADLESS_SKU;
> +}
> +
> void intel_opregion_register(struct drm_i915_private *i915)
> {
> struct intel_opregion *opregion = &i915->opregion;
> diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h b/drivers/gpu/drm/i915/display/intel_opregion.h
> index 82cc0ba34af7..5ad96e1d8278 100644
> --- a/drivers/gpu/drm/i915/display/intel_opregion.h
> +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
> @@ -76,6 +76,8 @@ int intel_opregion_notify_adapter(struct drm_i915_private *dev_priv,
> int intel_opregion_get_panel_type(struct drm_i915_private *dev_priv);
> struct edid *intel_opregion_get_edid(struct intel_connector *connector);
>
> +bool intel_opregion_headless_sku(struct drm_i915_private *i915);
> +
> #else /* CONFIG_ACPI*/
>
> static inline int intel_opregion_setup(struct drm_i915_private *dev_priv)
> @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct intel_connector *connector)
> return NULL;
> }
>
> +bool intel_opregion_headless_sku(struct drm_i915_private *i915)
This needs to be static inline.
With that fixed, the series is
Reviewed-by: Jani Nikula <jani.nikula at intel.com>
> +{
> + return false;
> +}
> +
> #endif /* CONFIG_ACPI */
>
> #endif
--
Jani Nikula, Intel Open Source Graphics Center
More information about the Intel-gfx
mailing list