109 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only OR MIT */2/* Copyright (c) 2023 Imagination Technologies Ltd. */3 4#ifndef PVR_ROGUE_FWIF_SHARED_CHECK_H5#define PVR_ROGUE_FWIF_SHARED_CHECK_H6 7#include <linux/build_bug.h>8 9#define OFFSET_CHECK(type, member, offset) \10 static_assert(offsetof(type, member) == (offset), \11 "offsetof(" #type ", " #member ") incorrect")12 13#define SIZE_CHECK(type, size) \14 static_assert(sizeof(type) == (size), #type " is incorrect size")15 16OFFSET_CHECK(struct rogue_fwif_dma_addr, dev_addr, 0);17OFFSET_CHECK(struct rogue_fwif_dma_addr, fw_addr, 8);18SIZE_CHECK(struct rogue_fwif_dma_addr, 16);19 20OFFSET_CHECK(struct rogue_fwif_ufo, addr, 0);21OFFSET_CHECK(struct rogue_fwif_ufo, value, 4);22SIZE_CHECK(struct rogue_fwif_ufo, 8);23 24OFFSET_CHECK(struct rogue_fwif_cleanup_ctl, submitted_commands, 0);25OFFSET_CHECK(struct rogue_fwif_cleanup_ctl, executed_commands, 4);26SIZE_CHECK(struct rogue_fwif_cleanup_ctl, 8);27 28OFFSET_CHECK(struct rogue_fwif_cccb_ctl, write_offset, 0);29OFFSET_CHECK(struct rogue_fwif_cccb_ctl, read_offset, 4);30OFFSET_CHECK(struct rogue_fwif_cccb_ctl, dep_offset, 8);31OFFSET_CHECK(struct rogue_fwif_cccb_ctl, wrap_mask, 12);32OFFSET_CHECK(struct rogue_fwif_cccb_ctl, read_offset2, 16);33OFFSET_CHECK(struct rogue_fwif_cccb_ctl, read_offset3, 20);34OFFSET_CHECK(struct rogue_fwif_cccb_ctl, read_offset4, 24);35SIZE_CHECK(struct rogue_fwif_cccb_ctl, 32);36 37OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,38 geom_reg_vdm_context_state_base_addr, 0);39OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,40 geom_reg_vdm_context_state_resume_addr, 8);41OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,42 geom_reg_ta_context_state_base_addr, 16);43OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,44 geom_state[0].geom_reg_vdm_context_store_task0, 24);45OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,46 geom_state[0].geom_reg_vdm_context_store_task1, 32);47OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,48 geom_state[0].geom_reg_vdm_context_store_task2, 40);49OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,50 geom_state[0].geom_reg_vdm_context_resume_task0, 48);51OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,52 geom_state[0].geom_reg_vdm_context_resume_task1, 56);53OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,54 geom_state[0].geom_reg_vdm_context_resume_task2, 64);55OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,56 geom_state[0].geom_reg_vdm_context_store_task3, 72);57OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,58 geom_state[0].geom_reg_vdm_context_store_task4, 80);59OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,60 geom_state[0].geom_reg_vdm_context_resume_task3, 88);61OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,62 geom_state[0].geom_reg_vdm_context_resume_task4, 96);63OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,64 geom_state[1].geom_reg_vdm_context_store_task0, 104);65OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,66 geom_state[1].geom_reg_vdm_context_store_task1, 112);67OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,68 geom_state[1].geom_reg_vdm_context_store_task2, 120);69OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,70 geom_state[1].geom_reg_vdm_context_resume_task0, 128);71OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,72 geom_state[1].geom_reg_vdm_context_resume_task1, 136);73OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,74 geom_state[1].geom_reg_vdm_context_resume_task2, 144);75OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,76 geom_state[1].geom_reg_vdm_context_store_task3, 152);77OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,78 geom_state[1].geom_reg_vdm_context_store_task4, 160);79OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,80 geom_state[1].geom_reg_vdm_context_resume_task3, 168);81OFFSET_CHECK(struct rogue_fwif_geom_registers_caswitch,82 geom_state[1].geom_reg_vdm_context_resume_task4, 176);83SIZE_CHECK(struct rogue_fwif_geom_registers_caswitch, 184);84 85OFFSET_CHECK(struct rogue_fwif_cdm_registers_cswitch, cdmreg_cdm_context_pds0, 0);86OFFSET_CHECK(struct rogue_fwif_cdm_registers_cswitch, cdmreg_cdm_context_pds1, 8);87OFFSET_CHECK(struct rogue_fwif_cdm_registers_cswitch, cdmreg_cdm_terminate_pds, 16);88OFFSET_CHECK(struct rogue_fwif_cdm_registers_cswitch, cdmreg_cdm_terminate_pds1, 24);89OFFSET_CHECK(struct rogue_fwif_cdm_registers_cswitch, cdmreg_cdm_resume_pds0, 32);90OFFSET_CHECK(struct rogue_fwif_cdm_registers_cswitch, cdmreg_cdm_context_pds0_b, 40);91OFFSET_CHECK(struct rogue_fwif_cdm_registers_cswitch, cdmreg_cdm_resume_pds0_b, 48);92SIZE_CHECK(struct rogue_fwif_cdm_registers_cswitch, 56);93 94OFFSET_CHECK(struct rogue_fwif_static_rendercontext_state, ctxswitch_regs, 0);95SIZE_CHECK(struct rogue_fwif_static_rendercontext_state, 368);96 97OFFSET_CHECK(struct rogue_fwif_static_computecontext_state, ctxswitch_regs, 0);98SIZE_CHECK(struct rogue_fwif_static_computecontext_state, 56);99 100OFFSET_CHECK(struct rogue_fwif_cmd_common, frame_num, 0);101SIZE_CHECK(struct rogue_fwif_cmd_common, 4);102 103OFFSET_CHECK(struct rogue_fwif_cmd_geom_frag_shared, cmn, 0);104OFFSET_CHECK(struct rogue_fwif_cmd_geom_frag_shared, hwrt_data_fw_addr, 4);105OFFSET_CHECK(struct rogue_fwif_cmd_geom_frag_shared, pr_buffer_fw_addr, 8);106SIZE_CHECK(struct rogue_fwif_cmd_geom_frag_shared, 16);107 108#endif /* PVR_ROGUE_FWIF_SHARED_CHECK_H */109