diff options
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_hti.c')
| -rw-r--r-- | drivers/gpu/drm/i915/display/intel_hti.c | 41 | 
1 files changed, 41 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_hti.c b/drivers/gpu/drm/i915/display/intel_hti.c new file mode 100644 index 000000000000..c518efebdf77 --- /dev/null +++ b/drivers/gpu/drm/i915/display/intel_hti.c @@ -0,0 +1,41 @@ +// 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 (INTEL_INFO(i915)->display.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); +}  |