162306a36Sopenharmony_ci/* SPDX-License-Identifier: MIT */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright © 2013-2021 Intel Corporation 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef _VLV_SIDEBAND_H_ 762306a36Sopenharmony_ci#define _VLV_SIDEBAND_H_ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/bitops.h> 1062306a36Sopenharmony_ci#include <linux/types.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include "vlv_sideband_reg.h" 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cienum pipe; 1562306a36Sopenharmony_cistruct drm_i915_private; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cienum { 1862306a36Sopenharmony_ci VLV_IOSF_SB_BUNIT, 1962306a36Sopenharmony_ci VLV_IOSF_SB_CCK, 2062306a36Sopenharmony_ci VLV_IOSF_SB_CCU, 2162306a36Sopenharmony_ci VLV_IOSF_SB_DPIO, 2262306a36Sopenharmony_ci VLV_IOSF_SB_FLISDSI, 2362306a36Sopenharmony_ci VLV_IOSF_SB_GPIO, 2462306a36Sopenharmony_ci VLV_IOSF_SB_NC, 2562306a36Sopenharmony_ci VLV_IOSF_SB_PUNIT, 2662306a36Sopenharmony_ci}; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_civoid vlv_iosf_sb_get(struct drm_i915_private *i915, unsigned long ports); 2962306a36Sopenharmony_ciu32 vlv_iosf_sb_read(struct drm_i915_private *i915, u8 port, u32 reg); 3062306a36Sopenharmony_civoid vlv_iosf_sb_write(struct drm_i915_private *i915, 3162306a36Sopenharmony_ci u8 port, u32 reg, u32 val); 3262306a36Sopenharmony_civoid vlv_iosf_sb_put(struct drm_i915_private *i915, unsigned long ports); 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_cistatic inline void vlv_bunit_get(struct drm_i915_private *i915) 3562306a36Sopenharmony_ci{ 3662306a36Sopenharmony_ci vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_BUNIT)); 3762306a36Sopenharmony_ci} 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ciu32 vlv_bunit_read(struct drm_i915_private *i915, u32 reg); 4062306a36Sopenharmony_civoid vlv_bunit_write(struct drm_i915_private *i915, u32 reg, u32 val); 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_cistatic inline void vlv_bunit_put(struct drm_i915_private *i915) 4362306a36Sopenharmony_ci{ 4462306a36Sopenharmony_ci vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_BUNIT)); 4562306a36Sopenharmony_ci} 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_cistatic inline void vlv_cck_get(struct drm_i915_private *i915) 4862306a36Sopenharmony_ci{ 4962306a36Sopenharmony_ci vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_CCK)); 5062306a36Sopenharmony_ci} 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ciu32 vlv_cck_read(struct drm_i915_private *i915, u32 reg); 5362306a36Sopenharmony_civoid vlv_cck_write(struct drm_i915_private *i915, u32 reg, u32 val); 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_cistatic inline void vlv_cck_put(struct drm_i915_private *i915) 5662306a36Sopenharmony_ci{ 5762306a36Sopenharmony_ci vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_CCK)); 5862306a36Sopenharmony_ci} 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_cistatic inline void vlv_ccu_get(struct drm_i915_private *i915) 6162306a36Sopenharmony_ci{ 6262306a36Sopenharmony_ci vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_CCU)); 6362306a36Sopenharmony_ci} 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ciu32 vlv_ccu_read(struct drm_i915_private *i915, u32 reg); 6662306a36Sopenharmony_civoid vlv_ccu_write(struct drm_i915_private *i915, u32 reg, u32 val); 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_cistatic inline void vlv_ccu_put(struct drm_i915_private *i915) 6962306a36Sopenharmony_ci{ 7062306a36Sopenharmony_ci vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_CCU)); 7162306a36Sopenharmony_ci} 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_cistatic inline void vlv_dpio_get(struct drm_i915_private *i915) 7462306a36Sopenharmony_ci{ 7562306a36Sopenharmony_ci vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_DPIO)); 7662306a36Sopenharmony_ci} 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ciu32 vlv_dpio_read(struct drm_i915_private *i915, enum pipe pipe, int reg); 7962306a36Sopenharmony_civoid vlv_dpio_write(struct drm_i915_private *i915, 8062306a36Sopenharmony_ci enum pipe pipe, int reg, u32 val); 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_cistatic inline void vlv_dpio_put(struct drm_i915_private *i915) 8362306a36Sopenharmony_ci{ 8462306a36Sopenharmony_ci vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_DPIO)); 8562306a36Sopenharmony_ci} 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_cistatic inline void vlv_flisdsi_get(struct drm_i915_private *i915) 8862306a36Sopenharmony_ci{ 8962306a36Sopenharmony_ci vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_FLISDSI)); 9062306a36Sopenharmony_ci} 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ciu32 vlv_flisdsi_read(struct drm_i915_private *i915, u32 reg); 9362306a36Sopenharmony_civoid vlv_flisdsi_write(struct drm_i915_private *i915, u32 reg, u32 val); 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_cistatic inline void vlv_flisdsi_put(struct drm_i915_private *i915) 9662306a36Sopenharmony_ci{ 9762306a36Sopenharmony_ci vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_FLISDSI)); 9862306a36Sopenharmony_ci} 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_cistatic inline void vlv_nc_get(struct drm_i915_private *i915) 10162306a36Sopenharmony_ci{ 10262306a36Sopenharmony_ci vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_NC)); 10362306a36Sopenharmony_ci} 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ciu32 vlv_nc_read(struct drm_i915_private *i915, u8 addr); 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_cistatic inline void vlv_nc_put(struct drm_i915_private *i915) 10862306a36Sopenharmony_ci{ 10962306a36Sopenharmony_ci vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_NC)); 11062306a36Sopenharmony_ci} 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_cistatic inline void vlv_punit_get(struct drm_i915_private *i915) 11362306a36Sopenharmony_ci{ 11462306a36Sopenharmony_ci vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_PUNIT)); 11562306a36Sopenharmony_ci} 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ciu32 vlv_punit_read(struct drm_i915_private *i915, u32 addr); 11862306a36Sopenharmony_ciint vlv_punit_write(struct drm_i915_private *i915, u32 addr, u32 val); 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_cistatic inline void vlv_punit_put(struct drm_i915_private *i915) 12162306a36Sopenharmony_ci{ 12262306a36Sopenharmony_ci vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_PUNIT)); 12362306a36Sopenharmony_ci} 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci#endif /* _VLV_SIDEBAND_H_ */ 126