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