Merge tag 'drm-misc-next-2021-10-14' of git://anongit.freedesktop.org/drm/drm-misc...
[linux-2.6-microblaze.git] / drivers / gpu / drm / i915 / vlv_sideband.h
1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2013-2021 Intel Corporation
4  */
5
6 #ifndef _VLV_SIDEBAND_H_
7 #define _VLV_SIDEBAND_H_
8
9 #include <linux/bitops.h>
10 #include <linux/types.h>
11
12 enum pipe;
13 struct drm_i915_private;
14
15 enum {
16         VLV_IOSF_SB_BUNIT,
17         VLV_IOSF_SB_CCK,
18         VLV_IOSF_SB_CCU,
19         VLV_IOSF_SB_DPIO,
20         VLV_IOSF_SB_FLISDSI,
21         VLV_IOSF_SB_GPIO,
22         VLV_IOSF_SB_NC,
23         VLV_IOSF_SB_PUNIT,
24 };
25
26 void vlv_iosf_sb_get(struct drm_i915_private *i915, unsigned long ports);
27 u32 vlv_iosf_sb_read(struct drm_i915_private *i915, u8 port, u32 reg);
28 void vlv_iosf_sb_write(struct drm_i915_private *i915,
29                        u8 port, u32 reg, u32 val);
30 void vlv_iosf_sb_put(struct drm_i915_private *i915, unsigned long ports);
31
32 static inline void vlv_bunit_get(struct drm_i915_private *i915)
33 {
34         vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_BUNIT));
35 }
36
37 u32 vlv_bunit_read(struct drm_i915_private *i915, u32 reg);
38 void vlv_bunit_write(struct drm_i915_private *i915, u32 reg, u32 val);
39
40 static inline void vlv_bunit_put(struct drm_i915_private *i915)
41 {
42         vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_BUNIT));
43 }
44
45 static inline void vlv_cck_get(struct drm_i915_private *i915)
46 {
47         vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_CCK));
48 }
49
50 u32 vlv_cck_read(struct drm_i915_private *i915, u32 reg);
51 void vlv_cck_write(struct drm_i915_private *i915, u32 reg, u32 val);
52
53 static inline void vlv_cck_put(struct drm_i915_private *i915)
54 {
55         vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_CCK));
56 }
57
58 static inline void vlv_ccu_get(struct drm_i915_private *i915)
59 {
60         vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_CCU));
61 }
62
63 u32 vlv_ccu_read(struct drm_i915_private *i915, u32 reg);
64 void vlv_ccu_write(struct drm_i915_private *i915, u32 reg, u32 val);
65
66 static inline void vlv_ccu_put(struct drm_i915_private *i915)
67 {
68         vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_CCU));
69 }
70
71 static inline void vlv_dpio_get(struct drm_i915_private *i915)
72 {
73         vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_DPIO));
74 }
75
76 u32 vlv_dpio_read(struct drm_i915_private *i915, enum pipe pipe, int reg);
77 void vlv_dpio_write(struct drm_i915_private *i915,
78                     enum pipe pipe, int reg, u32 val);
79
80 static inline void vlv_dpio_put(struct drm_i915_private *i915)
81 {
82         vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_DPIO));
83 }
84
85 static inline void vlv_flisdsi_get(struct drm_i915_private *i915)
86 {
87         vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_FLISDSI));
88 }
89
90 u32 vlv_flisdsi_read(struct drm_i915_private *i915, u32 reg);
91 void vlv_flisdsi_write(struct drm_i915_private *i915, u32 reg, u32 val);
92
93 static inline void vlv_flisdsi_put(struct drm_i915_private *i915)
94 {
95         vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_FLISDSI));
96 }
97
98 static inline void vlv_nc_get(struct drm_i915_private *i915)
99 {
100         vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_NC));
101 }
102
103 u32 vlv_nc_read(struct drm_i915_private *i915, u8 addr);
104
105 static inline void vlv_nc_put(struct drm_i915_private *i915)
106 {
107         vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_NC));
108 }
109
110 static inline void vlv_punit_get(struct drm_i915_private *i915)
111 {
112         vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_PUNIT));
113 }
114
115 u32 vlv_punit_read(struct drm_i915_private *i915, u32 addr);
116 int vlv_punit_write(struct drm_i915_private *i915, u32 addr, u32 val);
117
118 static inline void vlv_punit_put(struct drm_i915_private *i915)
119 {
120         vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_PUNIT));
121 }
122
123 #endif /* _VLV_SIDEBAND_H_ */