lin_gadget_compat.h 881 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * Copyright (c) 2011 Samsung Electronics
  3. * Lukasz Majewski <l.majewski@samsung.com>
  4. *
  5. * This is a Linux kernel compatibility layer for USB Gadget
  6. *
  7. * SPDX-License-Identifier: GPL-2.0+
  8. */
  9. #ifndef __LIN_COMPAT_H__
  10. #define __LIN_COMPAT_H__
  11. #include <linux/compat.h>
  12. /* common */
  13. #define BITS_PER_BYTE 8
  14. #define BITS_TO_LONGS(nr) \
  15. DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
  16. #define DECLARE_BITMAP(name, bits) \
  17. unsigned long name[BITS_TO_LONGS(bits)]
  18. #define small_const_nbits(nbits) \
  19. (__builtin_constant_p(nbits) && (nbits) <= BITS_PER_LONG)
  20. static inline void bitmap_zero(unsigned long *dst, int nbits)
  21. {
  22. if (small_const_nbits(nbits))
  23. *dst = 0UL;
  24. else {
  25. int len = BITS_TO_LONGS(nbits) * sizeof(unsigned long);
  26. memset(dst, 0, len);
  27. }
  28. }
  29. #define dma_cache_maint(addr, size, mode) cache_flush()
  30. void cache_flush(void);
  31. #endif /* __LIN_COMPAT_H__ */