Rather than embeddeding the display's device info within the main device info structure, just provide a pointer to the display-specific structure. This is in preparation for moving the display device info definitions into the display code itself and for eventually allowing the pointer to be assigned at runtime on platforms that use GMD_ID for device identification. In the future, this will also eventually allow the same display device info structures to be used outside the current i915 code (e.g., from the Xe driver). v2: - Move introduction of DISPLAY_INFO() to this patch. (Andrzej) v3: - Also use DISPLAY_INFO() in intel_display_reg_defs.h. (Andrzej) - Use "{}" instead of "{ 0 }" for empty struct init. (Jani) Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Acked-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com> Acked-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230523195609.73627-3-matthew.d.roper@intel.com
41 lines
1 KiB
C
41 lines
1 KiB
C
// SPDX-License-Identifier: MIT
|
|
/*
|
|
* Copyright © 2022 Intel Corporation
|
|
*/
|
|
|
|
#include "i915_drv.h"
|
|
#include "intel_de.h"
|
|
#include "intel_display.h"
|
|
#include "intel_hti.h"
|
|
#include "intel_hti_regs.h"
|
|
|
|
void intel_hti_init(struct drm_i915_private *i915)
|
|
{
|
|
/*
|
|
* If the platform has HTI, we need to find out whether it has reserved
|
|
* any display resources before we create our display outputs.
|
|
*/
|
|
if (DISPLAY_INFO(i915)->has_hti)
|
|
i915->display.hti.state = intel_de_read(i915, HDPORT_STATE);
|
|
}
|
|
|
|
bool intel_hti_uses_phy(struct drm_i915_private *i915, enum phy phy)
|
|
{
|
|
if (drm_WARN_ON(&i915->drm, phy == PHY_NONE))
|
|
return false;
|
|
|
|
return i915->display.hti.state & HDPORT_ENABLED &&
|
|
i915->display.hti.state & HDPORT_DDI_USED(phy);
|
|
}
|
|
|
|
u32 intel_hti_dpll_mask(struct drm_i915_private *i915)
|
|
{
|
|
if (!(i915->display.hti.state & HDPORT_ENABLED))
|
|
return 0;
|
|
|
|
/*
|
|
* Note: This is subtle. The values must coincide with what's defined
|
|
* for the platform.
|
|
*/
|
|
return REG_FIELD_GET(HDPORT_DPLL_USED_MASK, i915->display.hti.state);
|
|
}
|