drm/i915/gvt: Refine non privilege register address calucation
[sfrench/cifs-2.6.git] / drivers / gpu / drm / i915 / intel_wopcm.h
1 /*
2  * SPDX-License-Identifier: MIT
3  *
4  * Copyright © 2017-2018 Intel Corporation
5  */
6
7 #ifndef _INTEL_WOPCM_H_
8 #define _INTEL_WOPCM_H_
9
10 #include <linux/types.h>
11
12 /**
13  * struct intel_wopcm - Overall WOPCM info and WOPCM regions.
14  * @size: Size of overall WOPCM.
15  * @guc: GuC WOPCM Region info.
16  * @guc.base: GuC WOPCM base which is offset from WOPCM base.
17  * @guc.size: Size of the GuC WOPCM region.
18  */
19 struct intel_wopcm {
20         u32 size;
21         struct {
22                 u32 base;
23                 u32 size;
24         } guc;
25 };
26
27 /**
28  * intel_wopcm_guc_base()
29  * @wopcm:      intel_wopcm structure
30  *
31  * Returns the base of the WOPCM shadowed region.
32  *
33  * Returns:
34  * 0 if GuC is not present or not in use.
35  * Otherwise, the GuC WOPCM base.
36  */
37 static inline u32 intel_wopcm_guc_base(struct intel_wopcm *wopcm)
38 {
39         return wopcm->guc.base;
40 }
41
42 /**
43  * intel_wopcm_guc_size()
44  * @wopcm:      intel_wopcm structure
45  *
46  * Returns size of the WOPCM shadowed region.
47  *
48  * Returns:
49  * 0 if GuC is not present or not in use.
50  * Otherwise, the GuC WOPCM size.
51  */
52 static inline u32 intel_wopcm_guc_size(struct intel_wopcm *wopcm)
53 {
54         return wopcm->guc.size;
55 }
56
57 void intel_wopcm_init_early(struct intel_wopcm *wopcm);
58 void intel_wopcm_init(struct intel_wopcm *wopcm);
59
60 #endif