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