1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2010-2018 Intel Corporation 3 */ 4 5 #ifndef _IFPGA_COMPAT_H_ 6 #define _IFPGA_COMPAT_H_ 7 8 #include "opae_osdep.h" 9 10 #define IFPGA_PAGE_SHIFT 12 11 #define IFPGA_PAGE_SIZE (1 << IFPGA_PAGE_SHIFT) 12 #define IFPGA_PAGE_MASK (~(IFPGA_PAGE_SIZE - 1)) 13 #define IFPGA_PAGE_ALIGN(addr) (((addr) + IFPGA_PAGE_SIZE - 1)\ 14 & IFPGA_PAGE_MASK) 15 #define IFPGA_ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) 16 17 #define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0) 18 #define PAGE_ALIGNED(addr) IS_ALIGNED((unsigned long)(addr), IFPGA_PAGE_SIZE) 19 20 #define readl(addr) opae_readl(addr) 21 #define readq(addr) opae_readq(addr) 22 #define writel(value, addr) opae_writel(value, addr) 23 #define writeq(value, addr) opae_writeq(value, addr) 24 25 #define malloc(size) opae_malloc(size) 26 #define zmalloc(size) opae_zmalloc(size) 27 #define free(size) opae_free(size) 28 29 /* 30 * Wait register's _field to be changed to the given value (_expect's _field) 31 * by polling with given interval and timeout. 32 */ 33 #define fpga_wait_register_field(_field, _expect, _reg_addr, _timeout, _invl)\ 34 __extension__ ({ \ 35 int wait = 0; \ 36 int ret = -ETIMEDOUT; \ 37 typeof(_expect) value; \ 38 for (; wait <= _timeout; wait += _invl) { \ 39 value.csr = readq(_reg_addr); \ 40 if (_expect._field == value._field) { \ 41 ret = 0; \ 42 break; \ 43 } \ 44 udelay(_invl); \ 45 } \ 46 ret; \ 47 }) 48 49 #define __maybe_unused __rte_unused 50 51 #define UNUSED(x) (void)(x) 52 53 #endif /* _IFPGA_COMPAT_H_ */ 54