cifs: fix creating sockets when using sfu mount options
[sfrench/cifs-2.6.git] / drivers / gpu / drm / xe / compat-i915-headers / i915_drv.h
1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2023 Intel Corporation
4  */
5 #ifndef _XE_I915_DRV_H_
6 #define _XE_I915_DRV_H_
7
8 /*
9  * "Adaptation header" to allow i915 display to also build for xe driver.
10  * TODO: refactor i915 and xe so this can cease to exist
11  */
12
13 #include <drm/drm_drv.h>
14
15 #include "gem/i915_gem_object.h"
16
17 #include "soc/intel_pch.h"
18 #include "xe_device.h"
19 #include "xe_bo.h"
20 #include "xe_pm.h"
21 #include "xe_step.h"
22 #include "i915_gem.h"
23 #include "i915_gem_stolen.h"
24 #include "i915_gpu_error.h"
25 #include "i915_reg_defs.h"
26 #include "i915_utils.h"
27 #include "intel_gt_types.h"
28 #include "intel_step.h"
29 #include "intel_uc_fw.h"
30 #include "intel_uncore.h"
31 #include "intel_runtime_pm.h"
32 #include <linux/pm_runtime.h>
33
34 static inline struct drm_i915_private *to_i915(const struct drm_device *dev)
35 {
36         return container_of(dev, struct drm_i915_private, drm);
37 }
38
39 static inline struct drm_i915_private *kdev_to_i915(struct device *kdev)
40 {
41         return dev_get_drvdata(kdev);
42 }
43
44
45 #define INTEL_JASPERLAKE 0
46 #define INTEL_ELKHARTLAKE 0
47 #define IS_PLATFORM(xe, x) ((xe)->info.platform == x)
48 #define INTEL_INFO(dev_priv)    (&((dev_priv)->info))
49 #define INTEL_DEVID(dev_priv)   ((dev_priv)->info.devid)
50 #define IS_I830(dev_priv)       (dev_priv && 0)
51 #define IS_I845G(dev_priv)      (dev_priv && 0)
52 #define IS_I85X(dev_priv)       (dev_priv && 0)
53 #define IS_I865G(dev_priv)      (dev_priv && 0)
54 #define IS_I915G(dev_priv)      (dev_priv && 0)
55 #define IS_I915GM(dev_priv)     (dev_priv && 0)
56 #define IS_I945G(dev_priv)      (dev_priv && 0)
57 #define IS_I945GM(dev_priv)     (dev_priv && 0)
58 #define IS_I965G(dev_priv)      (dev_priv && 0)
59 #define IS_I965GM(dev_priv)     (dev_priv && 0)
60 #define IS_G45(dev_priv)        (dev_priv && 0)
61 #define IS_GM45(dev_priv)       (dev_priv && 0)
62 #define IS_G4X(dev_priv)        (dev_priv && 0)
63 #define IS_PINEVIEW(dev_priv)   (dev_priv && 0)
64 #define IS_G33(dev_priv)        (dev_priv && 0)
65 #define IS_IRONLAKE(dev_priv)   (dev_priv && 0)
66 #define IS_IRONLAKE_M(dev_priv) (dev_priv && 0)
67 #define IS_SANDYBRIDGE(dev_priv)        (dev_priv && 0)
68 #define IS_IVYBRIDGE(dev_priv)  (dev_priv && 0)
69 #define IS_IVB_GT1(dev_priv)    (dev_priv && 0)
70 #define IS_VALLEYVIEW(dev_priv) (dev_priv && 0)
71 #define IS_CHERRYVIEW(dev_priv) (dev_priv && 0)
72 #define IS_HASWELL(dev_priv)    (dev_priv && 0)
73 #define IS_BROADWELL(dev_priv)  (dev_priv && 0)
74 #define IS_SKYLAKE(dev_priv)    (dev_priv && 0)
75 #define IS_BROXTON(dev_priv)    (dev_priv && 0)
76 #define IS_KABYLAKE(dev_priv)   (dev_priv && 0)
77 #define IS_GEMINILAKE(dev_priv) (dev_priv && 0)
78 #define IS_COFFEELAKE(dev_priv) (dev_priv && 0)
79 #define IS_COMETLAKE(dev_priv)  (dev_priv && 0)
80 #define IS_ICELAKE(dev_priv)    (dev_priv && 0)
81 #define IS_JASPERLAKE(dev_priv) (dev_priv && 0)
82 #define IS_ELKHARTLAKE(dev_priv)        (dev_priv && 0)
83 #define IS_TIGERLAKE(dev_priv)  IS_PLATFORM(dev_priv, XE_TIGERLAKE)
84 #define IS_ROCKETLAKE(dev_priv) IS_PLATFORM(dev_priv, XE_ROCKETLAKE)
85 #define IS_DG1(dev_priv)        IS_PLATFORM(dev_priv, XE_DG1)
86 #define IS_ALDERLAKE_S(dev_priv) IS_PLATFORM(dev_priv, XE_ALDERLAKE_S)
87 #define IS_ALDERLAKE_P(dev_priv) (IS_PLATFORM(dev_priv, XE_ALDERLAKE_P) || \
88                                   IS_PLATFORM(dev_priv, XE_ALDERLAKE_N))
89 #define IS_XEHPSDV(dev_priv) (dev_priv && 0)
90 #define IS_DG2(dev_priv)        IS_PLATFORM(dev_priv, XE_DG2)
91 #define IS_PONTEVECCHIO(dev_priv) IS_PLATFORM(dev_priv, XE_PVC)
92 #define IS_METEORLAKE(dev_priv) IS_PLATFORM(dev_priv, XE_METEORLAKE)
93 #define IS_LUNARLAKE(dev_priv) IS_PLATFORM(dev_priv, XE_LUNARLAKE)
94
95 #define IS_HASWELL_ULT(dev_priv) (dev_priv && 0)
96 #define IS_BROADWELL_ULT(dev_priv) (dev_priv && 0)
97 #define IS_BROADWELL_ULX(dev_priv) (dev_priv && 0)
98
99 #define IP_VER(ver, rel)                ((ver) << 8 | (rel))
100
101 #define INTEL_DISPLAY_ENABLED(xe) (HAS_DISPLAY((xe)) && !intel_opregion_headless_sku((xe)))
102
103 #define IS_GRAPHICS_VER(xe, first, last) \
104         ((xe)->info.graphics_verx100 >= first * 100 && \
105          (xe)->info.graphics_verx100 <= (last*100 + 99))
106 #define IS_MOBILE(xe) (xe && 0)
107 #define HAS_LLC(xe) (!IS_DGFX((xe)))
108
109 #define HAS_GMD_ID(xe) GRAPHICS_VERx100(xe) >= 1270
110
111 /* Workarounds not handled yet */
112 #define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step <= last; })
113 #define IS_GRAPHICS_STEP(xe, first, last) ({u8 __step = (xe)->info.step.graphics; first <= __step && __step <= last; })
114
115 #define IS_LP(xe) (0)
116 #define IS_GEN9_LP(xe) (0)
117 #define IS_GEN9_BC(xe) (0)
118
119 #define IS_TIGERLAKE_UY(xe) (xe && 0)
120 #define IS_COMETLAKE_ULX(xe) (xe && 0)
121 #define IS_COFFEELAKE_ULX(xe) (xe && 0)
122 #define IS_KABYLAKE_ULX(xe) (xe && 0)
123 #define IS_SKYLAKE_ULX(xe) (xe && 0)
124 #define IS_HASWELL_ULX(xe) (xe && 0)
125 #define IS_COMETLAKE_ULT(xe) (xe && 0)
126 #define IS_COFFEELAKE_ULT(xe) (xe && 0)
127 #define IS_KABYLAKE_ULT(xe) (xe && 0)
128 #define IS_SKYLAKE_ULT(xe) (xe && 0)
129
130 #define IS_DG1_GRAPHICS_STEP(xe, first, last) (IS_DG1(xe) && IS_GRAPHICS_STEP(xe, first, last))
131 #define IS_DG2_GRAPHICS_STEP(xe, variant, first, last) \
132         ((xe)->info.subplatform == XE_SUBPLATFORM_DG2_ ## variant && \
133          IS_GRAPHICS_STEP(xe, first, last))
134 #define IS_XEHPSDV_GRAPHICS_STEP(xe, first, last) (IS_XEHPSDV(xe) && IS_GRAPHICS_STEP(xe, first, last))
135
136 /* XXX: No basedie stepping support yet */
137 #define IS_PVC_BD_STEP(xe, first, last) (!WARN_ON(1) && IS_PONTEVECCHIO(xe))
138
139 #define IS_TIGERLAKE_DISPLAY_STEP(xe, first, last) (IS_TIGERLAKE(xe) && IS_DISPLAY_STEP(xe, first, last))
140 #define IS_ROCKETLAKE_DISPLAY_STEP(xe, first, last) (IS_ROCKETLAKE(xe) && IS_DISPLAY_STEP(xe, first, last))
141 #define IS_DG1_DISPLAY_STEP(xe, first, last) (IS_DG1(xe) && IS_DISPLAY_STEP(xe, first, last))
142 #define IS_DG2_DISPLAY_STEP(xe, first, last) (IS_DG2(xe) && IS_DISPLAY_STEP(xe, first, last))
143 #define IS_ADLP_DISPLAY_STEP(xe, first, last) (IS_ALDERLAKE_P(xe) && IS_DISPLAY_STEP(xe, first, last))
144 #define IS_ADLS_DISPLAY_STEP(xe, first, last) (IS_ALDERLAKE_S(xe) && IS_DISPLAY_STEP(xe, first, last))
145 #define IS_JSL_EHL_DISPLAY_STEP(xe, first, last) (IS_JSL_EHL(xe) && IS_DISPLAY_STEP(xe, first, last))
146 #define IS_MTL_DISPLAY_STEP(xe, first, last) (IS_METEORLAKE(xe) && IS_DISPLAY_STEP(xe, first, last))
147
148 /* FIXME: Add subplatform here */
149 #define IS_MTL_GRAPHICS_STEP(xe, sub, first, last) (IS_METEORLAKE(xe) && IS_DISPLAY_STEP(xe, first, last))
150
151 #define IS_DG2_G10(xe) ((xe)->info.subplatform == XE_SUBPLATFORM_DG2_G10)
152 #define IS_DG2_G11(xe) ((xe)->info.subplatform == XE_SUBPLATFORM_DG2_G11)
153 #define IS_DG2_G12(xe) ((xe)->info.subplatform == XE_SUBPLATFORM_DG2_G12)
154 #define IS_RAPTORLAKE_U(xe) ((xe)->info.subplatform == XE_SUBPLATFORM_ALDERLAKE_P_RPLU)
155 #define IS_ICL_WITH_PORT_F(xe) (xe && 0)
156 #define HAS_FLAT_CCS(xe) (xe_device_has_flat_ccs(xe))
157 #define to_intel_bo(x) gem_to_xe_bo((x))
158 #define mkwrite_device_info(xe) (INTEL_INFO(xe))
159
160 #define HAS_128_BYTE_Y_TILING(xe) (xe || 1)
161
162 #define intel_has_gpu_reset(a) (a && 0)
163
164 #include "intel_wakeref.h"
165
166 static inline intel_wakeref_t intel_runtime_pm_get(struct xe_runtime_pm *pm)
167 {
168         struct xe_device *xe = container_of(pm, struct xe_device, runtime_pm);
169
170         if (xe_pm_runtime_get(xe) < 0) {
171                 xe_pm_runtime_put(xe);
172                 return 0;
173         }
174         return 1;
175 }
176
177 static inline intel_wakeref_t intel_runtime_pm_get_if_in_use(struct xe_runtime_pm *pm)
178 {
179         struct xe_device *xe = container_of(pm, struct xe_device, runtime_pm);
180
181         return xe_pm_runtime_get_if_active(xe);
182 }
183
184 static inline void intel_runtime_pm_put_unchecked(struct xe_runtime_pm *pm)
185 {
186         struct xe_device *xe = container_of(pm, struct xe_device, runtime_pm);
187
188         xe_pm_runtime_put(xe);
189 }
190
191 static inline void intel_runtime_pm_put(struct xe_runtime_pm *pm, intel_wakeref_t wakeref)
192 {
193         if (wakeref)
194                 intel_runtime_pm_put_unchecked(pm);
195 }
196
197 #define intel_runtime_pm_get_raw intel_runtime_pm_get
198 #define intel_runtime_pm_put_raw intel_runtime_pm_put
199 #define assert_rpm_wakelock_held(x) do { } while (0)
200 #define assert_rpm_raw_wakeref_held(x) do { } while (0)
201
202 #define intel_uncore_forcewake_get(x, y) do { } while (0)
203 #define intel_uncore_forcewake_put(x, y) do { } while (0)
204
205 #define intel_uncore_arm_unclaimed_mmio_detection(x) do { } while (0)
206
207 #define I915_PRIORITY_DISPLAY 0
208 struct i915_sched_attr {
209         int priority;
210 };
211 #define i915_gem_fence_wait_priority(fence, attr) do { (void) attr; } while (0)
212
213 #define with_intel_runtime_pm(rpm, wf) \
214         for ((wf) = intel_runtime_pm_get(rpm); (wf); \
215              intel_runtime_pm_put((rpm), (wf)), (wf) = 0)
216
217 #define pdev_to_i915 pdev_to_xe_device
218 #define RUNTIME_INFO(xe)                (&(xe)->info.i915_runtime)
219
220 #define FORCEWAKE_ALL XE_FORCEWAKE_ALL
221 #define HPD_STORM_DEFAULT_THRESHOLD 50
222
223 #ifdef CONFIG_ARM64
224 /*
225  * arm64 indirectly includes linux/rtc.h,
226  * which defines a irq_lock, so include it
227  * here before #define-ing it
228  */
229 #include <linux/rtc.h>
230 #endif
231
232 #define irq_lock irq.lock
233
234 #endif