19952f691SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2a134789aSThierry Reding /*
3a134789aSThierry Reding  * Copyright (c) 2015 NVIDIA Corporation.
4a134789aSThierry Reding  */
5a134789aSThierry Reding 
6a134789aSThierry Reding  /*
7a134789aSThierry Reding   * Function naming determines intended use:
8a134789aSThierry Reding   *
9a134789aSThierry Reding   *     <x>_r(void) : Returns the offset for register <x>.
10a134789aSThierry Reding   *
11a134789aSThierry Reding   *     <x>_w(void) : Returns the word offset for word (4 byte) element <x>.
12a134789aSThierry Reding   *
13a134789aSThierry Reding   *     <x>_<y>_s(void) : Returns size of field <y> of register <x> in bits.
14a134789aSThierry Reding   *
15a134789aSThierry Reding   *     <x>_<y>_f(u32 v) : Returns a value based on 'v' which has been shifted
16a134789aSThierry Reding   *         and masked to place it at field <y> of register <x>.  This value
17a134789aSThierry Reding   *         can be |'d with others to produce a full register value for
18a134789aSThierry Reding   *         register <x>.
19a134789aSThierry Reding   *
20a134789aSThierry Reding   *     <x>_<y>_m(void) : Returns a mask for field <y> of register <x>.  This
21a134789aSThierry Reding   *         value can be ~'d and then &'d to clear the value of field <y> for
22a134789aSThierry Reding   *         register <x>.
23a134789aSThierry Reding   *
24a134789aSThierry Reding   *     <x>_<y>_<z>_f(void) : Returns the constant value <z> after being shifted
25a134789aSThierry Reding   *         to place it at field <y> of register <x>.  This value can be |'d
26a134789aSThierry Reding   *         with others to produce a full register value for <x>.
27a134789aSThierry Reding   *
28a134789aSThierry Reding   *     <x>_<y>_v(u32 r) : Returns the value of field <y> from a full register
29a134789aSThierry Reding   *         <x> value 'r' after being shifted to place its LSB at bit 0.
30a134789aSThierry Reding   *         This value is suitable for direct comparison with other unshifted
31a134789aSThierry Reding   *         values appropriate for use in field <y> of register <x>.
32a134789aSThierry Reding   *
33a134789aSThierry Reding   *     <x>_<y>_<z>_v(void) : Returns the constant value for <z> defined for
34a134789aSThierry Reding   *         field <y> of register <x>.  This value is suitable for direct
35a134789aSThierry Reding   *         comparison with unshifted values appropriate for use in field <y>
36a134789aSThierry Reding   *         of register <x>.
37a134789aSThierry Reding   */
38a134789aSThierry Reding 
39a134789aSThierry Reding #ifndef HOST1X_HW_HOST1X05_UCLASS_H
40a134789aSThierry Reding #define HOST1X_HW_HOST1X05_UCLASS_H
41a134789aSThierry Reding 
host1x_uclass_incr_syncpt_r(void)42a134789aSThierry Reding static inline u32 host1x_uclass_incr_syncpt_r(void)
43a134789aSThierry Reding {
44a134789aSThierry Reding 	return 0x0;
45a134789aSThierry Reding }
46a134789aSThierry Reding #define HOST1X_UCLASS_INCR_SYNCPT \
47a134789aSThierry Reding 	host1x_uclass_incr_syncpt_r()
host1x_uclass_incr_syncpt_cond_f(u32 v)48a134789aSThierry Reding static inline u32 host1x_uclass_incr_syncpt_cond_f(u32 v)
49a134789aSThierry Reding {
50a134789aSThierry Reding 	return (v & 0xff) << 8;
51a134789aSThierry Reding }
52a134789aSThierry Reding #define HOST1X_UCLASS_INCR_SYNCPT_COND_F(v) \
53a134789aSThierry Reding 	host1x_uclass_incr_syncpt_cond_f(v)
host1x_uclass_incr_syncpt_indx_f(u32 v)54a134789aSThierry Reding static inline u32 host1x_uclass_incr_syncpt_indx_f(u32 v)
55a134789aSThierry Reding {
56a134789aSThierry Reding 	return (v & 0xff) << 0;
57a134789aSThierry Reding }
58a134789aSThierry Reding #define HOST1X_UCLASS_INCR_SYNCPT_INDX_F(v) \
59a134789aSThierry Reding 	host1x_uclass_incr_syncpt_indx_f(v)
host1x_uclass_wait_syncpt_r(void)60a134789aSThierry Reding static inline u32 host1x_uclass_wait_syncpt_r(void)
61a134789aSThierry Reding {
62a134789aSThierry Reding 	return 0x8;
63a134789aSThierry Reding }
64a134789aSThierry Reding #define HOST1X_UCLASS_WAIT_SYNCPT \
65a134789aSThierry Reding 	host1x_uclass_wait_syncpt_r()
host1x_uclass_wait_syncpt_indx_f(u32 v)66a134789aSThierry Reding static inline u32 host1x_uclass_wait_syncpt_indx_f(u32 v)
67a134789aSThierry Reding {
68a134789aSThierry Reding 	return (v & 0xff) << 24;
69a134789aSThierry Reding }
70a134789aSThierry Reding #define HOST1X_UCLASS_WAIT_SYNCPT_INDX_F(v) \
71a134789aSThierry Reding 	host1x_uclass_wait_syncpt_indx_f(v)
host1x_uclass_wait_syncpt_thresh_f(u32 v)72a134789aSThierry Reding static inline u32 host1x_uclass_wait_syncpt_thresh_f(u32 v)
73a134789aSThierry Reding {
74a134789aSThierry Reding 	return (v & 0xffffff) << 0;
75a134789aSThierry Reding }
76a134789aSThierry Reding #define HOST1X_UCLASS_WAIT_SYNCPT_THRESH_F(v) \
77a134789aSThierry Reding 	host1x_uclass_wait_syncpt_thresh_f(v)
host1x_uclass_wait_syncpt_base_r(void)78a134789aSThierry Reding static inline u32 host1x_uclass_wait_syncpt_base_r(void)
79a134789aSThierry Reding {
80a134789aSThierry Reding 	return 0x9;
81a134789aSThierry Reding }
82a134789aSThierry Reding #define HOST1X_UCLASS_WAIT_SYNCPT_BASE \
83a134789aSThierry Reding 	host1x_uclass_wait_syncpt_base_r()
host1x_uclass_wait_syncpt_base_indx_f(u32 v)84a134789aSThierry Reding static inline u32 host1x_uclass_wait_syncpt_base_indx_f(u32 v)
85a134789aSThierry Reding {
86a134789aSThierry Reding 	return (v & 0xff) << 24;
87a134789aSThierry Reding }
88a134789aSThierry Reding #define HOST1X_UCLASS_WAIT_SYNCPT_BASE_INDX_F(v) \
89a134789aSThierry Reding 	host1x_uclass_wait_syncpt_base_indx_f(v)
host1x_uclass_wait_syncpt_base_base_indx_f(u32 v)90a134789aSThierry Reding static inline u32 host1x_uclass_wait_syncpt_base_base_indx_f(u32 v)
91a134789aSThierry Reding {
92a134789aSThierry Reding 	return (v & 0xff) << 16;
93a134789aSThierry Reding }
94a134789aSThierry Reding #define HOST1X_UCLASS_WAIT_SYNCPT_BASE_BASE_INDX_F(v) \
95a134789aSThierry Reding 	host1x_uclass_wait_syncpt_base_base_indx_f(v)
host1x_uclass_wait_syncpt_base_offset_f(u32 v)96a134789aSThierry Reding static inline u32 host1x_uclass_wait_syncpt_base_offset_f(u32 v)
97a134789aSThierry Reding {
98a134789aSThierry Reding 	return (v & 0xffff) << 0;
99a134789aSThierry Reding }
100a134789aSThierry Reding #define HOST1X_UCLASS_WAIT_SYNCPT_BASE_OFFSET_F(v) \
101a134789aSThierry Reding 	host1x_uclass_wait_syncpt_base_offset_f(v)
host1x_uclass_load_syncpt_base_r(void)102a134789aSThierry Reding static inline u32 host1x_uclass_load_syncpt_base_r(void)
103a134789aSThierry Reding {
104a134789aSThierry Reding 	return 0xb;
105a134789aSThierry Reding }
106a134789aSThierry Reding #define HOST1X_UCLASS_LOAD_SYNCPT_BASE \
107a134789aSThierry Reding 	host1x_uclass_load_syncpt_base_r()
host1x_uclass_load_syncpt_base_base_indx_f(u32 v)108a134789aSThierry Reding static inline u32 host1x_uclass_load_syncpt_base_base_indx_f(u32 v)
109a134789aSThierry Reding {
110a134789aSThierry Reding 	return (v & 0xff) << 24;
111a134789aSThierry Reding }
112a134789aSThierry Reding #define HOST1X_UCLASS_LOAD_SYNCPT_BASE_BASE_INDX_F(v) \
113a134789aSThierry Reding 	host1x_uclass_load_syncpt_base_base_indx_f(v)
host1x_uclass_load_syncpt_base_value_f(u32 v)114a134789aSThierry Reding static inline u32 host1x_uclass_load_syncpt_base_value_f(u32 v)
115a134789aSThierry Reding {
116a134789aSThierry Reding 	return (v & 0xffffff) << 0;
117a134789aSThierry Reding }
118a134789aSThierry Reding #define HOST1X_UCLASS_LOAD_SYNCPT_BASE_VALUE_F(v) \
119a134789aSThierry Reding 	host1x_uclass_load_syncpt_base_value_f(v)
host1x_uclass_incr_syncpt_base_base_indx_f(u32 v)120a134789aSThierry Reding static inline u32 host1x_uclass_incr_syncpt_base_base_indx_f(u32 v)
121a134789aSThierry Reding {
122a134789aSThierry Reding 	return (v & 0xff) << 24;
123a134789aSThierry Reding }
124a134789aSThierry Reding #define HOST1X_UCLASS_INCR_SYNCPT_BASE_BASE_INDX_F(v) \
125a134789aSThierry Reding 	host1x_uclass_incr_syncpt_base_base_indx_f(v)
host1x_uclass_incr_syncpt_base_offset_f(u32 v)126a134789aSThierry Reding static inline u32 host1x_uclass_incr_syncpt_base_offset_f(u32 v)
127a134789aSThierry Reding {
128a134789aSThierry Reding 	return (v & 0xffffff) << 0;
129a134789aSThierry Reding }
130a134789aSThierry Reding #define HOST1X_UCLASS_INCR_SYNCPT_BASE_OFFSET_F(v) \
131a134789aSThierry Reding 	host1x_uclass_incr_syncpt_base_offset_f(v)
host1x_uclass_indoff_r(void)132a134789aSThierry Reding static inline u32 host1x_uclass_indoff_r(void)
133a134789aSThierry Reding {
134a134789aSThierry Reding 	return 0x2d;
135a134789aSThierry Reding }
136a134789aSThierry Reding #define HOST1X_UCLASS_INDOFF \
137a134789aSThierry Reding 	host1x_uclass_indoff_r()
host1x_uclass_indoff_indbe_f(u32 v)138a134789aSThierry Reding static inline u32 host1x_uclass_indoff_indbe_f(u32 v)
139a134789aSThierry Reding {
140a134789aSThierry Reding 	return (v & 0xf) << 28;
141a134789aSThierry Reding }
142a134789aSThierry Reding #define HOST1X_UCLASS_INDOFF_INDBE_F(v) \
143a134789aSThierry Reding 	host1x_uclass_indoff_indbe_f(v)
host1x_uclass_indoff_autoinc_f(u32 v)144a134789aSThierry Reding static inline u32 host1x_uclass_indoff_autoinc_f(u32 v)
145a134789aSThierry Reding {
146a134789aSThierry Reding 	return (v & 0x1) << 27;
147a134789aSThierry Reding }
148a134789aSThierry Reding #define HOST1X_UCLASS_INDOFF_AUTOINC_F(v) \
149a134789aSThierry Reding 	host1x_uclass_indoff_autoinc_f(v)
host1x_uclass_indoff_indmodid_f(u32 v)150a134789aSThierry Reding static inline u32 host1x_uclass_indoff_indmodid_f(u32 v)
151a134789aSThierry Reding {
152a134789aSThierry Reding 	return (v & 0xff) << 18;
153a134789aSThierry Reding }
154a134789aSThierry Reding #define HOST1X_UCLASS_INDOFF_INDMODID_F(v) \
155a134789aSThierry Reding 	host1x_uclass_indoff_indmodid_f(v)
host1x_uclass_indoff_indroffset_f(u32 v)156a134789aSThierry Reding static inline u32 host1x_uclass_indoff_indroffset_f(u32 v)
157a134789aSThierry Reding {
158a134789aSThierry Reding 	return (v & 0xffff) << 2;
159a134789aSThierry Reding }
160a134789aSThierry Reding #define HOST1X_UCLASS_INDOFF_INDROFFSET_F(v) \
161a134789aSThierry Reding 	host1x_uclass_indoff_indroffset_f(v)
host1x_uclass_indoff_rwn_read_v(void)162a134789aSThierry Reding static inline u32 host1x_uclass_indoff_rwn_read_v(void)
163a134789aSThierry Reding {
164a134789aSThierry Reding 	return 1;
165a134789aSThierry Reding }
166a134789aSThierry Reding #define HOST1X_UCLASS_INDOFF_INDROFFSET_F(v) \
167a134789aSThierry Reding 	host1x_uclass_indoff_indroffset_f(v)
host1x_uclass_load_syncpt_payload_32_r(void)168*e902585fSMikko Perttunen static inline u32 host1x_uclass_load_syncpt_payload_32_r(void)
169*e902585fSMikko Perttunen {
170*e902585fSMikko Perttunen 	return 0x4e;
171*e902585fSMikko Perttunen }
172*e902585fSMikko Perttunen #define HOST1X_UCLASS_LOAD_SYNCPT_PAYLOAD_32 \
173*e902585fSMikko Perttunen 	host1x_uclass_load_syncpt_payload_32_r()
host1x_uclass_wait_syncpt_32_r(void)174*e902585fSMikko Perttunen static inline u32 host1x_uclass_wait_syncpt_32_r(void)
175*e902585fSMikko Perttunen {
176*e902585fSMikko Perttunen 	return 0x50;
177*e902585fSMikko Perttunen }
178*e902585fSMikko Perttunen #define HOST1X_UCLASS_WAIT_SYNCPT_32 \
179*e902585fSMikko Perttunen 	host1x_uclass_wait_syncpt_32_r()
180a134789aSThierry Reding 
181a134789aSThierry Reding #endif
182