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 61