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