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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Redingstatic 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 Perttunenstatic 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 Perttunenstatic 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