/* * Copyright (c) 2011 Samsung Electronics * Lukasz Majewski * * This is a Linux kernel compatibility layer for USB Gadget * * SPDX-License-Identifier: GPL-2.0+ */ #ifndef __LIN_COMPAT_H__ #define __LIN_COMPAT_H__ #include /* common */ #define ENOTSUPP 524 /* Operation is not supported */ #define BITS_PER_BYTE 8 #define BITS_TO_LONGS(nr) \ DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long)) #define DECLARE_BITMAP(name, bits) \ unsigned long name[BITS_TO_LONGS(bits)] #define small_const_nbits(nbits) \ (__builtin_constant_p(nbits) && (nbits) <= BITS_PER_LONG) static inline void bitmap_zero(unsigned long *dst, int nbits) { if (small_const_nbits(nbits)) *dst = 0UL; else { int len = BITS_TO_LONGS(nbits) * sizeof(unsigned long); memset(dst, 0, len); } } #define dma_cache_maint(addr, size, mode) cache_flush() void cache_flush(void); #endif /* __LIN_COMPAT_H__ */