[Intel-gfx] [RFC 05/33] drm/i915/combo_phy: use intel_de_*() functions for register access
Matt Roper
matthew.d.roper at intel.com
Fri Jan 24 21:30:51 UTC 2020
On Fri, Jan 24, 2020 at 03:25:26PM +0200, Jani Nikula wrote:
> The implicit "dev_priv" local variable use has been a long-standing pain
> point in the register access macros I915_READ(), I915_WRITE(),
> POSTING_READ(), I915_READ_FW(), and I915_WRITE_FW().
>
> Replace them with the corresponding new display engine register
> accessors intel_de_read(), intel_de_write(), intel_de_posting_read(),
> intel_de_read_fw(), and intel_de_write_fw().
>
> No functional changes.
>
> Generated using the following semantic patch:
>
> @@
> expression REG, OFFSET;
> @@
> - I915_READ(REG)
> + intel_de_read(dev_priv, REG)
>
> @@
> expression REG, OFFSET;
> @@
> - POSTING_READ(REG)
> + intel_de_posting_read(dev_priv, REG)
>
> @@
> expression REG, OFFSET;
> @@
> - I915_WRITE(REG, OFFSET)
> + intel_de_write(dev_priv, REG, OFFSET)
>
> @@
> expression REG;
> @@
> - I915_READ_FW(REG)
> + intel_de_read_fw(dev_priv, REG)
>
> @@
> expression REG, OFFSET;
> @@
> - I915_WRITE_FW(REG, OFFSET)
> + intel_de_write_fw(dev_priv, REG, OFFSET)
>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
> .../gpu/drm/i915/display/intel_combo_phy.c | 66 +++++++++----------
> 1 file changed, 33 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_combo_phy.c b/drivers/gpu/drm/i915/display/intel_combo_phy.c
> index 5f54aca7c36f..a45b934fab0a 100644
> --- a/drivers/gpu/drm/i915/display/intel_combo_phy.c
> +++ b/drivers/gpu/drm/i915/display/intel_combo_phy.c
> @@ -48,7 +48,7 @@ cnl_get_procmon_ref_values(struct drm_i915_private *dev_priv, enum phy phy)
> const struct cnl_procmon *procmon;
> u32 val;
>
> - val = I915_READ(ICL_PORT_COMP_DW3(phy));
> + val = intel_de_read(dev_priv, ICL_PORT_COMP_DW3(phy));
> switch (val & (PROCESS_INFO_MASK | VOLTAGE_INFO_MASK)) {
> default:
> MISSING_CASE(val);
> @@ -81,20 +81,20 @@ static void cnl_set_procmon_ref_values(struct drm_i915_private *dev_priv,
>
> procmon = cnl_get_procmon_ref_values(dev_priv, phy);
>
> - val = I915_READ(ICL_PORT_COMP_DW1(phy));
> + val = intel_de_read(dev_priv, ICL_PORT_COMP_DW1(phy));
> val &= ~((0xff << 16) | 0xff);
> val |= procmon->dw1;
> - I915_WRITE(ICL_PORT_COMP_DW1(phy), val);
> + intel_de_write(dev_priv, ICL_PORT_COMP_DW1(phy), val);
>
> - I915_WRITE(ICL_PORT_COMP_DW9(phy), procmon->dw9);
> - I915_WRITE(ICL_PORT_COMP_DW10(phy), procmon->dw10);
> + intel_de_write(dev_priv, ICL_PORT_COMP_DW9(phy), procmon->dw9);
> + intel_de_write(dev_priv, ICL_PORT_COMP_DW10(phy), procmon->dw10);
> }
>
> static bool check_phy_reg(struct drm_i915_private *dev_priv,
> enum phy phy, i915_reg_t reg, u32 mask,
> u32 expected_val)
> {
> - u32 val = I915_READ(reg);
> + u32 val = intel_de_read(dev_priv, reg);
>
> if ((val & mask) != expected_val) {
> DRM_DEBUG_DRIVER("Combo PHY %c reg %08x state mismatch: "
> @@ -127,8 +127,8 @@ static bool cnl_verify_procmon_ref_values(struct drm_i915_private *dev_priv,
>
> static bool cnl_combo_phy_enabled(struct drm_i915_private *dev_priv)
> {
> - return !(I915_READ(CHICKEN_MISC_2) & CNL_COMP_PWR_DOWN) &&
> - (I915_READ(CNL_PORT_COMP_DW0) & COMP_INIT);
> + return !(intel_de_read(dev_priv, CHICKEN_MISC_2) & CNL_COMP_PWR_DOWN) &&
> + (intel_de_read(dev_priv, CNL_PORT_COMP_DW0) & COMP_INIT);
> }
>
> static bool cnl_combo_phy_verify_state(struct drm_i915_private *dev_priv)
> @@ -151,20 +151,20 @@ static void cnl_combo_phys_init(struct drm_i915_private *dev_priv)
> {
> u32 val;
>
> - val = I915_READ(CHICKEN_MISC_2);
> + val = intel_de_read(dev_priv, CHICKEN_MISC_2);
> val &= ~CNL_COMP_PWR_DOWN;
> - I915_WRITE(CHICKEN_MISC_2, val);
> + intel_de_write(dev_priv, CHICKEN_MISC_2, val);
>
> /* Dummy PORT_A to get the correct CNL register from the ICL macro */
> cnl_set_procmon_ref_values(dev_priv, PHY_A);
>
> - val = I915_READ(CNL_PORT_COMP_DW0);
> + val = intel_de_read(dev_priv, CNL_PORT_COMP_DW0);
> val |= COMP_INIT;
> - I915_WRITE(CNL_PORT_COMP_DW0, val);
> + intel_de_write(dev_priv, CNL_PORT_COMP_DW0, val);
Drive by comment...could some fancier coccinelle usage change these to
intel_de_rmw() instead? We have a lot of rmw behavior for PHY
registers, and I believe some for pre-ilk watermarks and clock gating
workarounds in intel_pm.c too.
Matt
>
> - val = I915_READ(CNL_PORT_CL1CM_DW5);
> + val = intel_de_read(dev_priv, CNL_PORT_CL1CM_DW5);
> val |= CL_POWER_DOWN_ENABLE;
> - I915_WRITE(CNL_PORT_CL1CM_DW5, val);
> + intel_de_write(dev_priv, CNL_PORT_CL1CM_DW5, val);
> }
>
> static void cnl_combo_phys_uninit(struct drm_i915_private *dev_priv)
> @@ -174,9 +174,9 @@ static void cnl_combo_phys_uninit(struct drm_i915_private *dev_priv)
> if (!cnl_combo_phy_verify_state(dev_priv))
> DRM_WARN("Combo PHY HW state changed unexpectedly.\n");
>
> - val = I915_READ(CHICKEN_MISC_2);
> + val = intel_de_read(dev_priv, CHICKEN_MISC_2);
> val |= CNL_COMP_PWR_DOWN;
> - I915_WRITE(CHICKEN_MISC_2, val);
> + intel_de_write(dev_priv, CHICKEN_MISC_2, val);
> }
>
> static bool icl_combo_phy_enabled(struct drm_i915_private *dev_priv,
> @@ -184,11 +184,11 @@ static bool icl_combo_phy_enabled(struct drm_i915_private *dev_priv,
> {
> /* The PHY C added by EHL has no PHY_MISC register */
> if (IS_ELKHARTLAKE(dev_priv) && phy == PHY_C)
> - return I915_READ(ICL_PORT_COMP_DW0(phy)) & COMP_INIT;
> + return intel_de_read(dev_priv, ICL_PORT_COMP_DW0(phy)) & COMP_INIT;
> else
> - return !(I915_READ(ICL_PHY_MISC(phy)) &
> + return !(intel_de_read(dev_priv, ICL_PHY_MISC(phy)) &
> ICL_PHY_MISC_DE_IO_COMP_PWR_DOWN) &&
> - (I915_READ(ICL_PORT_COMP_DW0(phy)) & COMP_INIT);
> + (intel_de_read(dev_priv, ICL_PORT_COMP_DW0(phy)) & COMP_INIT);
> }
>
> static bool icl_combo_phy_verify_state(struct drm_i915_private *dev_priv,
> @@ -257,10 +257,10 @@ void intel_combo_phy_power_up_lanes(struct drm_i915_private *dev_priv,
> }
> }
>
> - val = I915_READ(ICL_PORT_CL_DW10(phy));
> + val = intel_de_read(dev_priv, ICL_PORT_CL_DW10(phy));
> val &= ~PWR_DOWN_LN_MASK;
> val |= lane_mask << PWR_DOWN_LN_SHIFT;
> - I915_WRITE(ICL_PORT_CL_DW10(phy), val);
> + intel_de_write(dev_priv, ICL_PORT_CL_DW10(phy), val);
> }
>
> static u32 ehl_combo_phy_a_mux(struct drm_i915_private *i915, u32 val)
> @@ -318,28 +318,28 @@ static void icl_combo_phys_init(struct drm_i915_private *dev_priv)
> * based on whether our VBT indicates the presence of any
> * "internal" child devices.
> */
> - val = I915_READ(ICL_PHY_MISC(phy));
> + val = intel_de_read(dev_priv, ICL_PHY_MISC(phy));
> if (IS_ELKHARTLAKE(dev_priv) && phy == PHY_A)
> val = ehl_combo_phy_a_mux(dev_priv, val);
> val &= ~ICL_PHY_MISC_DE_IO_COMP_PWR_DOWN;
> - I915_WRITE(ICL_PHY_MISC(phy), val);
> + intel_de_write(dev_priv, ICL_PHY_MISC(phy), val);
>
> skip_phy_misc:
> cnl_set_procmon_ref_values(dev_priv, phy);
>
> if (phy == PHY_A) {
> - val = I915_READ(ICL_PORT_COMP_DW8(phy));
> + val = intel_de_read(dev_priv, ICL_PORT_COMP_DW8(phy));
> val |= IREFGEN;
> - I915_WRITE(ICL_PORT_COMP_DW8(phy), val);
> + intel_de_write(dev_priv, ICL_PORT_COMP_DW8(phy), val);
> }
>
> - val = I915_READ(ICL_PORT_COMP_DW0(phy));
> + val = intel_de_read(dev_priv, ICL_PORT_COMP_DW0(phy));
> val |= COMP_INIT;
> - I915_WRITE(ICL_PORT_COMP_DW0(phy), val);
> + intel_de_write(dev_priv, ICL_PORT_COMP_DW0(phy), val);
>
> - val = I915_READ(ICL_PORT_CL_DW5(phy));
> + val = intel_de_read(dev_priv, ICL_PORT_CL_DW5(phy));
> val |= CL_POWER_DOWN_ENABLE;
> - I915_WRITE(ICL_PORT_CL_DW5(phy), val);
> + intel_de_write(dev_priv, ICL_PORT_CL_DW5(phy), val);
> }
> }
>
> @@ -363,14 +363,14 @@ static void icl_combo_phys_uninit(struct drm_i915_private *dev_priv)
> if (IS_ELKHARTLAKE(dev_priv) && phy == PHY_C)
> goto skip_phy_misc;
>
> - val = I915_READ(ICL_PHY_MISC(phy));
> + val = intel_de_read(dev_priv, ICL_PHY_MISC(phy));
> val |= ICL_PHY_MISC_DE_IO_COMP_PWR_DOWN;
> - I915_WRITE(ICL_PHY_MISC(phy), val);
> + intel_de_write(dev_priv, ICL_PHY_MISC(phy), val);
>
> skip_phy_misc:
> - val = I915_READ(ICL_PORT_COMP_DW0(phy));
> + val = intel_de_read(dev_priv, ICL_PORT_COMP_DW0(phy));
> val &= ~COMP_INIT;
> - I915_WRITE(ICL_PORT_COMP_DW0(phy), val);
> + intel_de_write(dev_priv, ICL_PORT_COMP_DW0(phy), val);
> }
> }
>
> --
> 2.20.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Matt Roper
Graphics Software Engineer
VTT-OSGC Platform Enablement
Intel Corporation
(916) 356-2795
More information about the Intel-gfx
mailing list