1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2023 Corigine, Inc. 3 * All rights reserved. 4 */ 5 6 #ifndef __NFP_PLATFORM_H__ 7 #define __NFP_PLATFORM_H__ 8 9 #include <stdint.h> 10 11 #define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) 12 13 #define DMA_BIT_MASK(n) ((1ULL << (n)) - 1) 14 15 #define BITS_PER_LONG (__SIZEOF_LONG__ * 8) 16 #define BITS_PER_LONG_LONG (__SIZEOF_LONG_LONG__ * 8) 17 18 #define GENMASK(h, l) \ 19 ((~0UL << (l)) & (~0UL >> (BITS_PER_LONG - (h) - 1))) 20 21 #define GENMASK_ULL(h, l) \ 22 ((~0ULL << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - (h) - 1))) 23 24 #define __bf_shf(x) (__builtin_ffsll(x) - 1) 25 26 #define FIELD_GET(_mask, _reg) \ 27 (__extension__ ({ \ 28 typeof(_mask) _x = (_mask); \ 29 (typeof(_x))(((_reg) & (_x)) >> __bf_shf(_x)); \ 30 })) 31 32 #define FIELD_FIT(_mask, _val) \ 33 (__extension__ ({ \ 34 typeof(_mask) _x = (_mask); \ 35 !((((typeof(_x))_val) << __bf_shf(_x)) & ~(_x)); \ 36 })) 37 38 #define FIELD_PREP(_mask, _val) \ 39 (__extension__ ({ \ 40 typeof(_mask) _x = (_mask); \ 41 ((typeof(_x))(_val) << __bf_shf(_x)) & (_x); \ 42 })) 43 44 #endif /* __NFP_PLATFORM_H__ */ 45