1 /* SPDX-License-Identifier: MIT */ 2 /* Copyright © 2025 Intel Corporation */ 3 4 #ifndef _VLV_SIDEBAND_H_ 5 #define _VLV_SIDEBAND_H_ 6 7 #include <linux/bitops.h> 8 #include <linux/types.h> 9 10 #include "vlv_iosf_sb.h" 11 #include "vlv_iosf_sb_reg.h" 12 13 enum dpio_phy; 14 struct drm_device; 15 16 static inline void vlv_bunit_get(struct drm_device *drm) 17 { 18 vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_BUNIT)); 19 } 20 21 static inline u32 vlv_bunit_read(struct drm_device *drm, u32 reg) 22 { 23 return vlv_iosf_sb_read(drm, VLV_IOSF_SB_BUNIT, reg); 24 } 25 26 static inline void vlv_bunit_write(struct drm_device *drm, u32 reg, u32 val) 27 { 28 vlv_iosf_sb_write(drm, VLV_IOSF_SB_BUNIT, reg, val); 29 } 30 31 static inline void vlv_bunit_put(struct drm_device *drm) 32 { 33 vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_BUNIT)); 34 } 35 36 static inline void vlv_cck_get(struct drm_device *drm) 37 { 38 vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_CCK)); 39 } 40 41 static inline u32 vlv_cck_read(struct drm_device *drm, u32 reg) 42 { 43 return vlv_iosf_sb_read(drm, VLV_IOSF_SB_CCK, reg); 44 } 45 46 static inline void vlv_cck_write(struct drm_device *drm, u32 reg, u32 val) 47 { 48 vlv_iosf_sb_write(drm, VLV_IOSF_SB_CCK, reg, val); 49 } 50 51 static inline void vlv_cck_put(struct drm_device *drm) 52 { 53 vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_CCK)); 54 } 55 56 static inline void vlv_ccu_get(struct drm_device *drm) 57 { 58 vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_CCU)); 59 } 60 61 static inline u32 vlv_ccu_read(struct drm_device *drm, u32 reg) 62 { 63 return vlv_iosf_sb_read(drm, VLV_IOSF_SB_CCU, reg); 64 } 65 66 static inline void vlv_ccu_write(struct drm_device *drm, u32 reg, u32 val) 67 { 68 vlv_iosf_sb_write(drm, VLV_IOSF_SB_CCU, reg, val); 69 } 70 71 static inline void vlv_ccu_put(struct drm_device *drm) 72 { 73 vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_CCU)); 74 } 75 76 static inline void vlv_dpio_get(struct drm_device *drm) 77 { 78 vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_DPIO) | BIT(VLV_IOSF_SB_DPIO_2)); 79 } 80 81 #ifdef I915 82 u32 vlv_dpio_read(struct drm_device *drm, enum dpio_phy phy, int reg); 83 void vlv_dpio_write(struct drm_device *drm, 84 enum dpio_phy phy, int reg, u32 val); 85 #else 86 static inline u32 vlv_dpio_read(struct drm_device *drm, int phy, int reg) 87 { 88 return 0; 89 } 90 static inline void vlv_dpio_write(struct drm_device *drm, 91 int phy, int reg, u32 val) 92 { 93 } 94 #endif 95 96 static inline void vlv_dpio_put(struct drm_device *drm) 97 { 98 vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_DPIO) | BIT(VLV_IOSF_SB_DPIO_2)); 99 } 100 101 static inline void vlv_flisdsi_get(struct drm_device *drm) 102 { 103 vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_FLISDSI)); 104 } 105 106 static inline u32 vlv_flisdsi_read(struct drm_device *drm, u32 reg) 107 { 108 return vlv_iosf_sb_read(drm, VLV_IOSF_SB_FLISDSI, reg); 109 } 110 111 static inline void vlv_flisdsi_write(struct drm_device *drm, u32 reg, u32 val) 112 { 113 vlv_iosf_sb_write(drm, VLV_IOSF_SB_FLISDSI, reg, val); 114 } 115 116 static inline void vlv_flisdsi_put(struct drm_device *drm) 117 { 118 vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_FLISDSI)); 119 } 120 121 static inline void vlv_nc_get(struct drm_device *drm) 122 { 123 vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_NC)); 124 } 125 126 static inline u32 vlv_nc_read(struct drm_device *drm, u8 addr) 127 { 128 return vlv_iosf_sb_read(drm, VLV_IOSF_SB_NC, addr); 129 } 130 131 static inline void vlv_nc_put(struct drm_device *drm) 132 { 133 vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_NC)); 134 } 135 136 static inline void vlv_punit_get(struct drm_device *drm) 137 { 138 vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_PUNIT)); 139 } 140 141 static inline u32 vlv_punit_read(struct drm_device *drm, u32 addr) 142 { 143 return vlv_iosf_sb_read(drm, VLV_IOSF_SB_PUNIT, addr); 144 } 145 146 static inline int vlv_punit_write(struct drm_device *drm, u32 addr, u32 val) 147 { 148 return vlv_iosf_sb_write(drm, VLV_IOSF_SB_PUNIT, addr, val); 149 } 150 151 static inline void vlv_punit_put(struct drm_device *drm) 152 { 153 vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_PUNIT)); 154 } 155 156 #endif /* _VLV_SIDEBAND_H_ */ 157