1 // SPDX-License-Identifier: MIT 2 /* 3 * Copyright © 2022 Intel Corporation 4 */ 5 6 #include "i915_drv.h" 7 #include "intel_de.h" 8 #include "intel_display.h" 9 #include "intel_hti.h" 10 #include "intel_hti_regs.h" 11 12 void intel_hti_init(struct drm_i915_private *i915) 13 { 14 /* 15 * If the platform has HTI, we need to find out whether it has reserved 16 * any display resources before we create our display outputs. 17 */ 18 if (DISPLAY_INFO(i915)->has_hti) 19 i915->display.hti.state = intel_de_read(i915, HDPORT_STATE); 20 } 21 22 bool intel_hti_uses_phy(struct drm_i915_private *i915, enum phy phy) 23 { 24 if (drm_WARN_ON(&i915->drm, phy == PHY_NONE)) 25 return false; 26 27 return i915->display.hti.state & HDPORT_ENABLED && 28 i915->display.hti.state & HDPORT_DDI_USED(phy); 29 } 30 31 u32 intel_hti_dpll_mask(struct drm_i915_private *i915) 32 { 33 if (!(i915->display.hti.state & HDPORT_ENABLED)) 34 return 0; 35 36 /* 37 * Note: This is subtle. The values must coincide with what's defined 38 * for the platform. 39 */ 40 return REG_FIELD_GET(HDPORT_DPLL_USED_MASK, i915->display.hti.state); 41 } 42