138517a78SLukasz Majewski /* 238517a78SLukasz Majewski * Copyright (c) 2011 Samsung Electronics 338517a78SLukasz Majewski * Lukasz Majewski <l.majewski@samsung.com> 438517a78SLukasz Majewski * 538517a78SLukasz Majewski * This is a Linux kernel compatibility layer for USB Gadget 638517a78SLukasz Majewski * 738517a78SLukasz Majewski * This program is free software; you can redistribute it and/or 838517a78SLukasz Majewski * modify it under the terms of the GNU General Public License as 938517a78SLukasz Majewski * published by the Free Software Foundation; either version 2 of 1038517a78SLukasz Majewski * the License, or (at your option) any later version. 1138517a78SLukasz Majewski * 1238517a78SLukasz Majewski * This program is distributed in the hope that it will be useful, 1338517a78SLukasz Majewski * but WITHOUT ANY WARRANTY; without even the implied warranty of 1438517a78SLukasz Majewski * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1538517a78SLukasz Majewski * GNU General Public License for more details. 1638517a78SLukasz Majewski * 1738517a78SLukasz Majewski * You should have received a copy of the GNU General Public License 1838517a78SLukasz Majewski * along with this program; if not, write to the Free Software 1938517a78SLukasz Majewski * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 2038517a78SLukasz Majewski * MA 02111-1307 USA 2138517a78SLukasz Majewski */ 2238517a78SLukasz Majewski 2338517a78SLukasz Majewski #ifndef __LIN_COMPAT_H__ 2438517a78SLukasz Majewski #define __LIN_COMPAT_H__ 2538517a78SLukasz Majewski 266777a3cfSMike Frysinger #include <linux/compat.h> 276777a3cfSMike Frysinger 2838517a78SLukasz Majewski /* common */ 2938517a78SLukasz Majewski #define spin_lock_init(...) 3038517a78SLukasz Majewski #define spin_lock(...) 31ea2d9159SAnatolij Gustschin #define spin_lock_irqsave(lock, flags) do { debug("%lu\n", flags); } while (0) 3238517a78SLukasz Majewski #define spin_unlock(...) 3338517a78SLukasz Majewski #define spin_unlock_irqrestore(lock, flags) do {flags = 0; } while (0) 3438517a78SLukasz Majewski #define disable_irq(...) 3538517a78SLukasz Majewski #define enable_irq(...) 3638517a78SLukasz Majewski 3738517a78SLukasz Majewski #define mutex_init(...) 3838517a78SLukasz Majewski #define mutex_lock(...) 3938517a78SLukasz Majewski #define mutex_unlock(...) 4038517a78SLukasz Majewski 4138517a78SLukasz Majewski #define GFP_KERNEL 0 4238517a78SLukasz Majewski 4338517a78SLukasz Majewski #define IRQ_HANDLED 1 4438517a78SLukasz Majewski 4538517a78SLukasz Majewski #define ENOTSUPP 524 /* Operation is not supported */ 4638517a78SLukasz Majewski 47*7010f5b9SLukasz Majewski #define BITS_PER_BYTE 8 48*7010f5b9SLukasz Majewski #define BITS_TO_LONGS(nr) \ 49*7010f5b9SLukasz Majewski DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long)) 50*7010f5b9SLukasz Majewski #define DECLARE_BITMAP(name, bits) \ 51*7010f5b9SLukasz Majewski unsigned long name[BITS_TO_LONGS(bits)] 52*7010f5b9SLukasz Majewski 53*7010f5b9SLukasz Majewski #define small_const_nbits(nbits) \ 54*7010f5b9SLukasz Majewski (__builtin_constant_p(nbits) && (nbits) <= BITS_PER_LONG) 55*7010f5b9SLukasz Majewski 56*7010f5b9SLukasz Majewski static inline void bitmap_zero(unsigned long *dst, int nbits) 57*7010f5b9SLukasz Majewski { 58*7010f5b9SLukasz Majewski if (small_const_nbits(nbits)) 59*7010f5b9SLukasz Majewski *dst = 0UL; 60*7010f5b9SLukasz Majewski else { 61*7010f5b9SLukasz Majewski int len = BITS_TO_LONGS(nbits) * sizeof(unsigned long); 62*7010f5b9SLukasz Majewski memset(dst, 0, len); 63*7010f5b9SLukasz Majewski } 64*7010f5b9SLukasz Majewski } 65*7010f5b9SLukasz Majewski 6638517a78SLukasz Majewski #define dma_cache_maint(addr, size, mode) cache_flush() 6738517a78SLukasz Majewski void cache_flush(void); 6838517a78SLukasz Majewski 6938517a78SLukasz Majewski #endif /* __LIN_COMPAT_H__ */ 70