1e9eec291SMałgorzata Mielnik /* SPDX-License-Identifier: GPL-2.0-only */ 2e9eec291SMałgorzata Mielnik /* Copyright(c) 2025 Intel Corporation */ 3e9eec291SMałgorzata Mielnik #ifndef ADF_BANK_STATE_H_ 4e9eec291SMałgorzata Mielnik #define ADF_BANK_STATE_H_ 5e9eec291SMałgorzata Mielnik 6e9eec291SMałgorzata Mielnik #include <linux/types.h> 7e9eec291SMałgorzata Mielnik 8e9eec291SMałgorzata Mielnik struct adf_accel_dev; 9*a47dc5d1SSuman Kumar Chakraborty 10*a47dc5d1SSuman Kumar Chakraborty struct ring_config { 11*a47dc5d1SSuman Kumar Chakraborty u64 base; 12*a47dc5d1SSuman Kumar Chakraborty u32 config; 13*a47dc5d1SSuman Kumar Chakraborty u32 head; 14*a47dc5d1SSuman Kumar Chakraborty u32 tail; 15*a47dc5d1SSuman Kumar Chakraborty u32 reserved0; 16*a47dc5d1SSuman Kumar Chakraborty }; 17*a47dc5d1SSuman Kumar Chakraborty 18*a47dc5d1SSuman Kumar Chakraborty struct adf_bank_state { 19*a47dc5d1SSuman Kumar Chakraborty u32 ringstat0; 20*a47dc5d1SSuman Kumar Chakraborty u32 ringstat1; 21*a47dc5d1SSuman Kumar Chakraborty u32 ringuostat; 22*a47dc5d1SSuman Kumar Chakraborty u32 ringestat; 23*a47dc5d1SSuman Kumar Chakraborty u32 ringnestat; 24*a47dc5d1SSuman Kumar Chakraborty u32 ringnfstat; 25*a47dc5d1SSuman Kumar Chakraborty u32 ringfstat; 26*a47dc5d1SSuman Kumar Chakraborty u32 ringcstat0; 27*a47dc5d1SSuman Kumar Chakraborty u32 ringcstat1; 28*a47dc5d1SSuman Kumar Chakraborty u32 ringcstat2; 29*a47dc5d1SSuman Kumar Chakraborty u32 ringcstat3; 30*a47dc5d1SSuman Kumar Chakraborty u32 iaintflagen; 31*a47dc5d1SSuman Kumar Chakraborty u32 iaintflagreg; 32*a47dc5d1SSuman Kumar Chakraborty u32 iaintflagsrcsel0; 33*a47dc5d1SSuman Kumar Chakraborty u32 iaintflagsrcsel1; 34*a47dc5d1SSuman Kumar Chakraborty u32 iaintcolen; 35*a47dc5d1SSuman Kumar Chakraborty u32 iaintcolctl; 36*a47dc5d1SSuman Kumar Chakraborty u32 iaintflagandcolen; 37*a47dc5d1SSuman Kumar Chakraborty u32 ringexpstat; 38*a47dc5d1SSuman Kumar Chakraborty u32 ringexpintenable; 39*a47dc5d1SSuman Kumar Chakraborty u32 ringsrvarben; 40*a47dc5d1SSuman Kumar Chakraborty u32 reserved0; 41*a47dc5d1SSuman Kumar Chakraborty struct ring_config rings[ADF_ETR_MAX_RINGS_PER_BANK]; 42*a47dc5d1SSuman Kumar Chakraborty }; 43e9eec291SMałgorzata Mielnik 44e9eec291SMałgorzata Mielnik int adf_bank_state_restore(struct adf_accel_dev *accel_dev, u32 bank_number, 45*a47dc5d1SSuman Kumar Chakraborty struct adf_bank_state *state); 46e9eec291SMałgorzata Mielnik int adf_bank_state_save(struct adf_accel_dev *accel_dev, u32 bank_number, 47*a47dc5d1SSuman Kumar Chakraborty struct adf_bank_state *state); 48e9eec291SMałgorzata Mielnik 49e9eec291SMałgorzata Mielnik #endif 50