xref: /openbmc/u-boot/include/linux/compat.h (revision 0c06db59)
17b15e2bbSMike Frysinger #ifndef _LINUX_COMPAT_H_
27b15e2bbSMike Frysinger #define _LINUX_COMPAT_H_
37b15e2bbSMike Frysinger 
4*0c06db59SHeiko Schocher #include <malloc.h>
5*0c06db59SHeiko Schocher #include <linux/types.h>
6*0c06db59SHeiko Schocher #include <linux/err.h>
7*0c06db59SHeiko Schocher 
8*0c06db59SHeiko Schocher struct unused {};
9*0c06db59SHeiko Schocher typedef struct unused unused_t;
10*0c06db59SHeiko Schocher 
11*0c06db59SHeiko Schocher struct p_current{
12*0c06db59SHeiko Schocher        int pid;
13*0c06db59SHeiko Schocher };
14*0c06db59SHeiko Schocher 
15*0c06db59SHeiko Schocher extern struct p_current *current;
16*0c06db59SHeiko Schocher 
177b15e2bbSMike Frysinger #define ndelay(x)	udelay(1)
187b15e2bbSMike Frysinger 
192f96b06bSWu, Josh #define dev_dbg(dev, fmt, args...)		\
202f96b06bSWu, Josh 	debug(fmt, ##args)
212f96b06bSWu, Josh #define dev_vdbg(dev, fmt, args...)		\
222f96b06bSWu, Josh 	debug(fmt, ##args)
232f96b06bSWu, Josh #define dev_info(dev, fmt, args...)		\
242f96b06bSWu, Josh 	printf(fmt, ##args)
252f96b06bSWu, Josh #define dev_err(dev, fmt, args...)		\
262f96b06bSWu, Josh 	printf(fmt, ##args)
277b15e2bbSMike Frysinger #define printk	printf
28*0c06db59SHeiko Schocher #define printk_once	printf
297b15e2bbSMike Frysinger 
307b15e2bbSMike Frysinger #define KERN_EMERG
317b15e2bbSMike Frysinger #define KERN_ALERT
327b15e2bbSMike Frysinger #define KERN_CRIT
337b15e2bbSMike Frysinger #define KERN_ERR
347b15e2bbSMike Frysinger #define KERN_WARNING
357b15e2bbSMike Frysinger #define KERN_NOTICE
367b15e2bbSMike Frysinger #define KERN_INFO
377b15e2bbSMike Frysinger #define KERN_DEBUG
387b15e2bbSMike Frysinger 
39*0c06db59SHeiko Schocher void *kmalloc(size_t size, int flags);
40*0c06db59SHeiko Schocher void *kzalloc(size_t size, int flags);
41*0c06db59SHeiko Schocher #define vmalloc(size)	kmalloc(size, 0)
42*0c06db59SHeiko Schocher #define __vmalloc(size, flags, pgsz)	kmalloc(size, flags)
437b15e2bbSMike Frysinger #define kfree(ptr)	free(ptr)
447b15e2bbSMike Frysinger #define vfree(ptr)	free(ptr)
457b15e2bbSMike Frysinger 
46*0c06db59SHeiko Schocher struct kmem_cache { int sz; };
47*0c06db59SHeiko Schocher 
48*0c06db59SHeiko Schocher struct kmem_cache *get_mem(int element_sz);
49*0c06db59SHeiko Schocher #define kmem_cache_create(a, sz, c, d, e)	get_mem(sz)
50*0c06db59SHeiko Schocher void *kmem_cache_alloc(struct kmem_cache *obj, int flag);
51*0c06db59SHeiko Schocher #define kmem_cache_free(obj, size)	free(size)
52*0c06db59SHeiko Schocher #define kmem_cache_destroy(obj)		free(obj)
53*0c06db59SHeiko Schocher 
547b15e2bbSMike Frysinger #define DECLARE_WAITQUEUE(...)	do { } while (0)
557b15e2bbSMike Frysinger #define add_wait_queue(...)	do { } while (0)
567b15e2bbSMike Frysinger #define remove_wait_queue(...)	do { } while (0)
577b15e2bbSMike Frysinger 
587b15e2bbSMike Frysinger #define KERNEL_VERSION(a,b,c)	(((a) << 16) + ((b) << 8) + (c))
597b15e2bbSMike Frysinger 
607b15e2bbSMike Frysinger /*
617b15e2bbSMike Frysinger  * ..and if you can't take the strict
627b15e2bbSMike Frysinger  * types, you can specify one yourself.
637b15e2bbSMike Frysinger  *
647b15e2bbSMike Frysinger  * Or not use min/max at all, of course.
657b15e2bbSMike Frysinger  */
667b15e2bbSMike Frysinger #define min_t(type,x,y) \
677b15e2bbSMike Frysinger 	({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
687b15e2bbSMike Frysinger #define max_t(type,x,y) \
697b15e2bbSMike Frysinger 	({ type __x = (x); type __y = (y); __x > __y ? __x: __y; })
707b15e2bbSMike Frysinger 
717b15e2bbSMike Frysinger #ifndef BUG
727b15e2bbSMike Frysinger #define BUG() do { \
737b15e2bbSMike Frysinger 	printf("U-Boot BUG at %s:%d!\n", __FILE__, __LINE__); \
747b15e2bbSMike Frysinger } while (0)
757b15e2bbSMike Frysinger 
767b15e2bbSMike Frysinger #define BUG_ON(condition) do { if (condition) BUG(); } while(0)
777b15e2bbSMike Frysinger #endif /* BUG */
787b15e2bbSMike Frysinger 
796777a3cfSMike Frysinger #define WARN_ON(x) if (x) {printf("WARNING in %s line %d\n" \
806777a3cfSMike Frysinger 				  , __FILE__, __LINE__); }
816777a3cfSMike Frysinger 
827b15e2bbSMike Frysinger #define PAGE_SIZE	4096
838f2df5d3SLijun Pan 
848f2df5d3SLijun Pan /**
858f2df5d3SLijun Pan  * upper_32_bits - return MSB bits 32-63 of a number if little endian, or
868f2df5d3SLijun Pan  * return MSB bits 0-31 of a number if big endian.
878f2df5d3SLijun Pan  * @n: the number we're accessing
888f2df5d3SLijun Pan  *
898f2df5d3SLijun Pan  * A basic shift-right of a 64- or 32-bit quantity.  Use this to suppress
908f2df5d3SLijun Pan  * the "right shift count >= width of type" warning when that quantity is
918f2df5d3SLijun Pan  * 32-bits.
928f2df5d3SLijun Pan  */
938f2df5d3SLijun Pan #define upper_32_bits(n) ((u32)(((n) >> 16) >> 16))
948f2df5d3SLijun Pan 
958f2df5d3SLijun Pan /**
968f2df5d3SLijun Pan  * lower_32_bits - return LSB bits 0-31 of a number if little endian, or
978f2df5d3SLijun Pan  * return LSB bits 32-63 of a number if big endian.
988f2df5d3SLijun Pan  * @n: the number we're accessing
998f2df5d3SLijun Pan  */
1008f2df5d3SLijun Pan #define lower_32_bits(n) ((u32)(n))
1018f2df5d3SLijun Pan 
102*0c06db59SHeiko Schocher /* drivers/char/random.c */
103*0c06db59SHeiko Schocher #define get_random_bytes(...)
104*0c06db59SHeiko Schocher 
105*0c06db59SHeiko Schocher /* idr.c */
106*0c06db59SHeiko Schocher #define GFP_ATOMIC ((gfp_t) 0)
107*0c06db59SHeiko Schocher #define GFP_KERNEL ((gfp_t) 0)
108*0c06db59SHeiko Schocher #define GFP_NOFS ((gfp_t) 0)
109*0c06db59SHeiko Schocher #define GFP_USER ((gfp_t) 0)
110*0c06db59SHeiko Schocher #define __GFP_NOWARN ((gfp_t) 0)
111*0c06db59SHeiko Schocher 
112*0c06db59SHeiko Schocher /* include/linux/leds.h */
113*0c06db59SHeiko Schocher struct led_trigger {};
114*0c06db59SHeiko Schocher 
115*0c06db59SHeiko Schocher #define DEFINE_LED_TRIGGER(x)		static struct led_trigger *x;
116*0c06db59SHeiko Schocher enum led_brightness {
117*0c06db59SHeiko Schocher 	LED_OFF		= 0,
118*0c06db59SHeiko Schocher 	LED_HALF	= 127,
119*0c06db59SHeiko Schocher 	LED_FULL	= 255,
120*0c06db59SHeiko Schocher };
121*0c06db59SHeiko Schocher 
122*0c06db59SHeiko Schocher static inline void led_trigger_register_simple(const char *name,
123*0c06db59SHeiko Schocher 					struct led_trigger **trigger) {}
124*0c06db59SHeiko Schocher static inline void led_trigger_unregister_simple(struct led_trigger *trigger) {}
125*0c06db59SHeiko Schocher static inline void led_trigger_event(struct led_trigger *trigger,
126*0c06db59SHeiko Schocher 					enum led_brightness event) {}
127*0c06db59SHeiko Schocher 
128*0c06db59SHeiko Schocher /* include/linux/log2.h */
129*0c06db59SHeiko Schocher static inline int is_power_of_2(unsigned long n)
130*0c06db59SHeiko Schocher {
131*0c06db59SHeiko Schocher 	return (n != 0 && ((n & (n - 1)) == 0));
132*0c06db59SHeiko Schocher }
133*0c06db59SHeiko Schocher 
134*0c06db59SHeiko Schocher /* uapi/linux/limits.h */
135*0c06db59SHeiko Schocher #define XATTR_LIST_MAX 65536	/* size of extended attribute namelist (64k) */
136*0c06db59SHeiko Schocher 
137*0c06db59SHeiko Schocher /**
138*0c06db59SHeiko Schocher  * The type used for indexing onto a disc or disc partition.
139*0c06db59SHeiko Schocher  *
140*0c06db59SHeiko Schocher  * Linux always considers sectors to be 512 bytes long independently
141*0c06db59SHeiko Schocher  * of the devices real block size.
142*0c06db59SHeiko Schocher  *
143*0c06db59SHeiko Schocher  * blkcnt_t is the type of the inode's block count.
144*0c06db59SHeiko Schocher  */
145*0c06db59SHeiko Schocher #ifdef CONFIG_LBDAF
146*0c06db59SHeiko Schocher typedef u64 sector_t;
147*0c06db59SHeiko Schocher typedef u64 blkcnt_t;
148*0c06db59SHeiko Schocher #else
149*0c06db59SHeiko Schocher typedef unsigned long sector_t;
150*0c06db59SHeiko Schocher typedef unsigned long blkcnt_t;
151*0c06db59SHeiko Schocher #endif
152*0c06db59SHeiko Schocher 
153*0c06db59SHeiko Schocher #define ENOTSUPP	524	/* Operation is not supported */
154*0c06db59SHeiko Schocher 
155*0c06db59SHeiko Schocher /* from include/linux/kernel.h */
156*0c06db59SHeiko Schocher /*
157*0c06db59SHeiko Schocher  * This looks more complex than it should be. But we need to
158*0c06db59SHeiko Schocher  * get the type for the ~ right in round_down (it needs to be
159*0c06db59SHeiko Schocher  * as wide as the result!), and we want to evaluate the macro
160*0c06db59SHeiko Schocher  * arguments just once each.
161*0c06db59SHeiko Schocher  */
162*0c06db59SHeiko Schocher #define __round_mask(x, y) ((__typeof__(x))((y)-1))
163*0c06db59SHeiko Schocher #define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
164*0c06db59SHeiko Schocher #define round_down(x, y) ((x) & ~__round_mask(x, y))
165*0c06db59SHeiko Schocher 
166*0c06db59SHeiko Schocher /* module */
167*0c06db59SHeiko Schocher #define THIS_MODULE		0
168*0c06db59SHeiko Schocher #define try_module_get(...)	1
169*0c06db59SHeiko Schocher #define module_put(...)		do { } while (0)
170*0c06db59SHeiko Schocher #define module_init(...)
171*0c06db59SHeiko Schocher #define module_exit(...)
172*0c06db59SHeiko Schocher #define EXPORT_SYMBOL(...)
173*0c06db59SHeiko Schocher #define EXPORT_SYMBOL_GPL(...)
174*0c06db59SHeiko Schocher #define module_param(...)
175*0c06db59SHeiko Schocher #define module_param_call(...)
176*0c06db59SHeiko Schocher #define MODULE_PARM_DESC(...)
177*0c06db59SHeiko Schocher #define MODULE_VERSION(...)
178*0c06db59SHeiko Schocher #define MODULE_DESCRIPTION(...)
179*0c06db59SHeiko Schocher #define MODULE_AUTHOR(...)
180*0c06db59SHeiko Schocher #define MODULE_LICENSE(...)
181*0c06db59SHeiko Schocher #define MODULE_ALIAS(...)
182*0c06db59SHeiko Schocher #define __module_get(...)
183*0c06db59SHeiko Schocher 
184*0c06db59SHeiko Schocher /* character device */
185*0c06db59SHeiko Schocher #define MKDEV(...)			0
186*0c06db59SHeiko Schocher #define MAJOR(dev)			0
187*0c06db59SHeiko Schocher #define MINOR(dev)			0
188*0c06db59SHeiko Schocher 
189*0c06db59SHeiko Schocher #define alloc_chrdev_region(...)	0
190*0c06db59SHeiko Schocher #define unregister_chrdev_region(...)
191*0c06db59SHeiko Schocher 
192*0c06db59SHeiko Schocher #define class_create(...)		__builtin_return_address(0)
193*0c06db59SHeiko Schocher #define class_create_file(...)		0
194*0c06db59SHeiko Schocher #define class_remove_file(...)
195*0c06db59SHeiko Schocher #define class_destroy(...)
196*0c06db59SHeiko Schocher #define misc_register(...)		0
197*0c06db59SHeiko Schocher #define misc_deregister(...)
198*0c06db59SHeiko Schocher 
199*0c06db59SHeiko Schocher #define blocking_notifier_call_chain(...) 0
200*0c06db59SHeiko Schocher 
201*0c06db59SHeiko Schocher /*
202*0c06db59SHeiko Schocher  * Multiplies an integer by a fraction, while avoiding unnecessary
203*0c06db59SHeiko Schocher  * overflow or loss of precision.
204*0c06db59SHeiko Schocher  */
205*0c06db59SHeiko Schocher #define mult_frac(x, numer, denom)(			\
206*0c06db59SHeiko Schocher {							\
207*0c06db59SHeiko Schocher 	typeof(x) quot = (x) / (denom);			\
208*0c06db59SHeiko Schocher 	typeof(x) rem  = (x) % (denom);			\
209*0c06db59SHeiko Schocher 	(quot * (numer)) + ((rem * (numer)) / (denom));	\
210*0c06db59SHeiko Schocher }							\
211*0c06db59SHeiko Schocher )
212*0c06db59SHeiko Schocher 
213*0c06db59SHeiko Schocher #define __initdata
214*0c06db59SHeiko Schocher #define late_initcall(...)
215*0c06db59SHeiko Schocher 
216*0c06db59SHeiko Schocher #define dev_set_name(...)		do { } while (0)
217*0c06db59SHeiko Schocher #define device_register(...)		0
218*0c06db59SHeiko Schocher #define volume_sysfs_init(...)		0
219*0c06db59SHeiko Schocher #define volume_sysfs_close(...)		do { } while (0)
220*0c06db59SHeiko Schocher 
221*0c06db59SHeiko Schocher #define init_waitqueue_head(...)	do { } while (0)
222*0c06db59SHeiko Schocher #define wait_event_interruptible(...)	0
223*0c06db59SHeiko Schocher #define wake_up_interruptible(...)	do { } while (0)
224*0c06db59SHeiko Schocher #define print_hex_dump(...)		do { } while (0)
225*0c06db59SHeiko Schocher #define dump_stack(...)			do { } while (0)
226*0c06db59SHeiko Schocher 
227*0c06db59SHeiko Schocher #define task_pid_nr(x)			0
228*0c06db59SHeiko Schocher #define set_freezable(...)		do { } while (0)
229*0c06db59SHeiko Schocher #define try_to_freeze(...)		0
230*0c06db59SHeiko Schocher #define set_current_state(...)		do { } while (0)
231*0c06db59SHeiko Schocher #define kthread_should_stop(...)	0
232*0c06db59SHeiko Schocher #define schedule()			do { } while (0)
233*0c06db59SHeiko Schocher 
234*0c06db59SHeiko Schocher #define setup_timer(timer, func, data) do {} while (0)
235*0c06db59SHeiko Schocher #define del_timer_sync(timer) do {} while (0)
236*0c06db59SHeiko Schocher #define schedule_work(work) do {} while (0)
237*0c06db59SHeiko Schocher #define INIT_WORK(work, fun) do {} while (0)
238*0c06db59SHeiko Schocher 
239*0c06db59SHeiko Schocher struct work_struct {};
240*0c06db59SHeiko Schocher 
241*0c06db59SHeiko Schocher unsigned long copy_from_user(void *dest, const void *src,
242*0c06db59SHeiko Schocher 			     unsigned long count);
243*0c06db59SHeiko Schocher 
244*0c06db59SHeiko Schocher void *vzalloc(unsigned long size);
245*0c06db59SHeiko Schocher 
246*0c06db59SHeiko Schocher typedef unused_t spinlock_t;
247*0c06db59SHeiko Schocher typedef int	wait_queue_head_t;
248*0c06db59SHeiko Schocher 
249*0c06db59SHeiko Schocher #define spin_lock_init(lock) do {} while (0)
250*0c06db59SHeiko Schocher #define spin_lock(lock) do {} while (0)
251*0c06db59SHeiko Schocher #define spin_unlock(lock) do {} while (0)
252*0c06db59SHeiko Schocher #define spin_lock_irqsave(lock, flags) do { debug("%lu\n", flags); } while (0)
253*0c06db59SHeiko Schocher #define spin_unlock_irqrestore(lock, flags) do { flags = 0; } while (0)
254*0c06db59SHeiko Schocher 
255*0c06db59SHeiko Schocher #define DEFINE_MUTEX(...)
256*0c06db59SHeiko Schocher #define mutex_init(...)
257*0c06db59SHeiko Schocher #define mutex_lock(...)
258*0c06db59SHeiko Schocher #define mutex_unlock(...)
259*0c06db59SHeiko Schocher 
260*0c06db59SHeiko Schocher #define init_rwsem(...)			do { } while (0)
261*0c06db59SHeiko Schocher #define down_read(...)			do { } while (0)
262*0c06db59SHeiko Schocher #define down_write(...)			do { } while (0)
263*0c06db59SHeiko Schocher #define down_write_trylock(...)		1
264*0c06db59SHeiko Schocher #define up_read(...)			do { } while (0)
265*0c06db59SHeiko Schocher #define up_write(...)			do { } while (0)
266*0c06db59SHeiko Schocher 
267*0c06db59SHeiko Schocher #define cond_resched()			do { } while (0)
268*0c06db59SHeiko Schocher #define yield()				do { } while (0)
269*0c06db59SHeiko Schocher 
270*0c06db59SHeiko Schocher #define INT_MAX				((int)(~0U>>1))
271*0c06db59SHeiko Schocher 
272*0c06db59SHeiko Schocher #define __user
273*0c06db59SHeiko Schocher #define __init
274*0c06db59SHeiko Schocher #define __exit
275*0c06db59SHeiko Schocher #define __devinit
276*0c06db59SHeiko Schocher #define __devinitdata
277*0c06db59SHeiko Schocher #define __devinitconst
278*0c06db59SHeiko Schocher #define __iomem
279*0c06db59SHeiko Schocher 
280*0c06db59SHeiko Schocher #define kthread_create(...)	__builtin_return_address(0)
281*0c06db59SHeiko Schocher #define kthread_stop(...)	do { } while (0)
282*0c06db59SHeiko Schocher #define wake_up_process(...)	do { } while (0)
283*0c06db59SHeiko Schocher 
284*0c06db59SHeiko Schocher struct rw_semaphore { int i; };
285*0c06db59SHeiko Schocher #define down_write(...)			do { } while (0)
286*0c06db59SHeiko Schocher #define up_write(...)			do { } while (0)
287*0c06db59SHeiko Schocher #define down_read(...)			do { } while (0)
288*0c06db59SHeiko Schocher #define up_read(...)			do { } while (0)
289*0c06db59SHeiko Schocher struct device {
290*0c06db59SHeiko Schocher 	struct device		*parent;
291*0c06db59SHeiko Schocher 	struct class		*class;
292*0c06db59SHeiko Schocher 	dev_t			devt;	/* dev_t, creates the sysfs "dev" */
293*0c06db59SHeiko Schocher 	void	(*release)(struct device *dev);
294*0c06db59SHeiko Schocher 	/* This is used from drivers/usb/musb-new subsystem only */
295*0c06db59SHeiko Schocher 	void		*driver_data;	/* data private to the driver */
296*0c06db59SHeiko Schocher 	void            *device_data;   /* data private to the device */
297*0c06db59SHeiko Schocher };
298*0c06db59SHeiko Schocher struct mutex { int i; };
299*0c06db59SHeiko Schocher struct kernel_param { int i; };
300*0c06db59SHeiko Schocher 
301*0c06db59SHeiko Schocher struct cdev {
302*0c06db59SHeiko Schocher 	int owner;
303*0c06db59SHeiko Schocher 	dev_t dev;
304*0c06db59SHeiko Schocher };
305*0c06db59SHeiko Schocher #define cdev_init(...)		do { } while (0)
306*0c06db59SHeiko Schocher #define cdev_add(...)		0
307*0c06db59SHeiko Schocher #define cdev_del(...)		do { } while (0)
308*0c06db59SHeiko Schocher 
309*0c06db59SHeiko Schocher #define MAX_ERRNO		4095
310*0c06db59SHeiko Schocher 
311*0c06db59SHeiko Schocher #define prandom_u32(...)	0
312*0c06db59SHeiko Schocher 
313*0c06db59SHeiko Schocher typedef struct {
314*0c06db59SHeiko Schocher 	uid_t val;
315*0c06db59SHeiko Schocher } kuid_t;
316*0c06db59SHeiko Schocher 
317*0c06db59SHeiko Schocher typedef struct {
318*0c06db59SHeiko Schocher 	gid_t val;
319*0c06db59SHeiko Schocher } kgid_t;
320*0c06db59SHeiko Schocher 
321*0c06db59SHeiko Schocher /* from include/linux/types.h */
322*0c06db59SHeiko Schocher 
323*0c06db59SHeiko Schocher typedef int	atomic_t;
324*0c06db59SHeiko Schocher /**
325*0c06db59SHeiko Schocher  * struct callback_head - callback structure for use with RCU and task_work
326*0c06db59SHeiko Schocher  * @next: next update requests in a list
327*0c06db59SHeiko Schocher  * @func: actual update function to call after the grace period.
328*0c06db59SHeiko Schocher  */
329*0c06db59SHeiko Schocher struct callback_head {
330*0c06db59SHeiko Schocher 	struct callback_head *next;
331*0c06db59SHeiko Schocher 	void (*func)(struct callback_head *head);
332*0c06db59SHeiko Schocher };
333*0c06db59SHeiko Schocher #define rcu_head callback_head
334*0c06db59SHeiko Schocher enum writeback_sync_modes {
335*0c06db59SHeiko Schocher 	WB_SYNC_NONE,	/* Don't wait on anything */
336*0c06db59SHeiko Schocher 	WB_SYNC_ALL,	/* Wait on every mapping */
337*0c06db59SHeiko Schocher };
338*0c06db59SHeiko Schocher 
339*0c06db59SHeiko Schocher /* from include/linux/writeback.h */
340*0c06db59SHeiko Schocher /*
341*0c06db59SHeiko Schocher  * A control structure which tells the writeback code what to do.  These are
342*0c06db59SHeiko Schocher  * always on the stack, and hence need no locking.  They are always initialised
343*0c06db59SHeiko Schocher  * in a manner such that unspecified fields are set to zero.
344*0c06db59SHeiko Schocher  */
345*0c06db59SHeiko Schocher struct writeback_control {
346*0c06db59SHeiko Schocher 	long nr_to_write;		/* Write this many pages, and decrement
347*0c06db59SHeiko Schocher 					   this for each page written */
348*0c06db59SHeiko Schocher 	long pages_skipped;		/* Pages which were not written */
349*0c06db59SHeiko Schocher 
350*0c06db59SHeiko Schocher 	/*
351*0c06db59SHeiko Schocher 	 * For a_ops->writepages(): if start or end are non-zero then this is
352*0c06db59SHeiko Schocher 	 * a hint that the filesystem need only write out the pages inside that
353*0c06db59SHeiko Schocher 	 * byterange.  The byte at `end' is included in the writeout request.
354*0c06db59SHeiko Schocher 	 */
355*0c06db59SHeiko Schocher 	loff_t range_start;
356*0c06db59SHeiko Schocher 	loff_t range_end;
357*0c06db59SHeiko Schocher 
358*0c06db59SHeiko Schocher 	enum writeback_sync_modes sync_mode;
359*0c06db59SHeiko Schocher 
360*0c06db59SHeiko Schocher 	unsigned for_kupdate:1;		/* A kupdate writeback */
361*0c06db59SHeiko Schocher 	unsigned for_background:1;	/* A background writeback */
362*0c06db59SHeiko Schocher 	unsigned tagged_writepages:1;	/* tag-and-write to avoid livelock */
363*0c06db59SHeiko Schocher 	unsigned for_reclaim:1;		/* Invoked from the page allocator */
364*0c06db59SHeiko Schocher 	unsigned range_cyclic:1;	/* range_start is cyclic */
365*0c06db59SHeiko Schocher 	unsigned for_sync:1;		/* sync(2) WB_SYNC_ALL writeback */
366*0c06db59SHeiko Schocher };
367*0c06db59SHeiko Schocher 
368*0c06db59SHeiko Schocher void *kmemdup(const void *src, size_t len, gfp_t gfp);
369*0c06db59SHeiko Schocher 
370*0c06db59SHeiko Schocher typedef int irqreturn_t;
371*0c06db59SHeiko Schocher 
372*0c06db59SHeiko Schocher struct timer_list {};
373*0c06db59SHeiko Schocher struct notifier_block {};
374*0c06db59SHeiko Schocher 
375*0c06db59SHeiko Schocher typedef unsigned long dmaaddr_t;
376*0c06db59SHeiko Schocher 
377*0c06db59SHeiko Schocher #define cpu_relax() do {} while (0)
378*0c06db59SHeiko Schocher 
379*0c06db59SHeiko Schocher #define pm_runtime_get_sync(dev) do {} while (0)
380*0c06db59SHeiko Schocher #define pm_runtime_put(dev) do {} while (0)
381*0c06db59SHeiko Schocher #define pm_runtime_put_sync(dev) do {} while (0)
382*0c06db59SHeiko Schocher #define pm_runtime_use_autosuspend(dev) do {} while (0)
383*0c06db59SHeiko Schocher #define pm_runtime_set_autosuspend_delay(dev, delay) do {} while (0)
384*0c06db59SHeiko Schocher #define pm_runtime_enable(dev) do {} while (0)
385*0c06db59SHeiko Schocher 
386*0c06db59SHeiko Schocher #define IRQ_NONE 0
387*0c06db59SHeiko Schocher #define IRQ_HANDLED 1
388*0c06db59SHeiko Schocher 
389*0c06db59SHeiko Schocher #define dev_set_drvdata(dev, data) do {} while (0)
390*0c06db59SHeiko Schocher 
391*0c06db59SHeiko Schocher #define enable_irq(...)
392*0c06db59SHeiko Schocher #define disable_irq(...)
393*0c06db59SHeiko Schocher #define disable_irq_wake(irq) do {} while (0)
394*0c06db59SHeiko Schocher #define enable_irq_wake(irq) -EINVAL
395*0c06db59SHeiko Schocher #define free_irq(irq, data) do {} while (0)
396*0c06db59SHeiko Schocher #define request_irq(nr, f, flags, nm, data) 0
397*0c06db59SHeiko Schocher 
3987b15e2bbSMike Frysinger #endif
399