1 /*-
2  * Copyright (c) 2009-2021 Hans Petter Selasky. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  */
25 
26 #ifndef _LINUX_DEFS_H_
27 #define	_LINUX_DEFS_H_
28 
29 /*
30  * Linux kernel defines from various header files
31  */
32 
33 #define	CONFIG_BASE_SMALL	1
34 
35 #define	DIV_ROUND_CLOSEST(rem, div) \
36 ((sizeof(typeof(div)) > 4) ?	    \
37  ((((typeof(div))-1) <= 0) ?	    \
38   div_round_closest_s64(rem,div) :  \
39   div_round_closest_u64(rem,div)) : \
40  ((((typeof(div))-1) <= 0) ?	    \
41   div_round_closest_s32(rem,div) :  \
42   div_round_closest_u32(rem,div)))
43 
44 #define	DIV_ROUND_CLOSEST_ULL(rem, div) \
45   div_round_closest_u64(rem,div)
46 
47 #define	mult_frac(x, numer, denom)			\
48 ({							\
49 	typeof(x) quot = (x) / (denom);                 \
50 	typeof(x) rem  = (x) % (denom);                 \
51         (quot * (numer)) + ((rem * (numer)) / (denom)); \
52 })
53 
54 #ifndef howmany
55 #define	howmany(x, y)   (((x)+((y)-1))/(y))
56 #endif
57 
58 #define	is_power_of_2(x) (((-(x)) & (x)) == (x))
59 #define	__nop do {} while (0)
60 #define	__user
61 #define	__kernel
62 #define	__safe
63 #define	__deprecated
64 #define	__force
65 #define	__nocast
66 #define	__iomem
67 #define	__read_mostly
68 #define	__maybe_unused
69 #define	__must_check
70 #define	__must_hold(...)
71 #define	__chk_user_ptr(x) __nop
72 #define	__chk_io_ptr(x) __nop
73 #define	__builtin_warning(x, ...) (1)
74 #define	__acquires(x)
75 #define	__releases(x)
76 #define	__acquire(x) __nop
77 #define	__release(x) __nop
78 #define	__cond_lock(x,c) (c)
79 #define	__pgprot(x)     ((pgprot_t)(x))
80 #define	__rcu
81 #define	__percpu
82 #define	fallthrough __nop
83 #define	local_irq_save(x) __nop
84 #define	local_irq_restore(x) __nop
85 #define	preempt_enable() __nop
86 #define	preempt_disable() __nop
87 #define	__this_cpu_write(a,b) do { (a) = (b); } while (0)
88 #define	__this_cpu_read(a) (a)
89 #define	__this_cpu_inc(a) do { (a)++; } while (0)
90 #define	__this_cpu_dec(a) do { (a)--; } while (0)
91 #define	irqs_disabled(...) (0)
92 #define	SetPageReserved(...)   __nop
93 #define	ClearPageReserved(...) __nop
94 #define	ETH_ALEN 6
95 #define	_PAGE_PRESENT   0
96 #define	_PAGE_RW        0
97 #define	_PAGE_USER      0
98 #define	_PAGE_ACCESSED  0
99 #define	PAGE_SHARED 0
100 #define	PAGE_ALIGN(addr)        (((addr)+PAGE_SIZE-1)&(~(PAGE_SIZE - 1)))
101 #undef ALIGN
102 #define	ALIGN(x,a)		(((x)+(a)-1)&(~((a)-1)))
103 #define	PAGE_OFFSET	0
104 #define	__pa(x)                 ((unsigned long)(x)-PAGE_OFFSET)
105 #define	S_IRWXG 00070
106 #define	S_IRWXU 00700
107 #define	S_IRUSR 00400
108 #define	S_IWUSR 00200
109 #define	S_IXUSR 00100
110 #define	S_IRGRP 00040
111 #define	S_IWGRP 00020
112 #define	S_IXGRP 00010
113 #define	S_IROTH 00004
114 #define	S_IWOTH 00002
115 #define	S_IXOTH 00001
116 #define	S_IRUGO (S_IRUSR|S_IRGRP|S_IROTH)
117 #define	S_IWUGO (S_IWUSR|S_IWGRP|S_IWOTH)
118 #define	offsetof(t, m) ((uint8_t *)&((t *)0)->m - (uint8_t *)0)
119 #define	container_of(ptr, t, m) ((t *)((uint8_t *)(ptr) - offsetof(t, m)))
120 #define	__devinitdata
121 #define	__init
122 #define	__exit
123 #define	___stringify(...)	#__VA_ARGS__
124 #define	__stringify(...)	___stringify(__VA_ARGS__)
125 #define	ERESTARTSYS     512
126 #define	ENOIOCTLCMD     513
127 #define	EMEDIUMTYPE	514
128 #define	ENODATA		515
129 #define	EPROBE_DEFER	516
130 #define	EBADR		517
131 #define	symbol_request(x) (&(x))
132 #define	symbol_get(x) __nop
133 #define	symbol_put(x) __nop
134 #define	EXPORT_SYMBOL(...)
135 #define	EXPORT_SYMBOL_GPL(...)
136 #define	MODULE_INFO(...)
137 #define	MODULE_AUTHOR(...)
138 #define	MODULE_DESCRIPTION(...)
139 #define	MODULE_LICENSE(...)
140 #define	MODULE_DEVICE_TABLE(...)
141 #define	MODULE_VERSION(...)
142 #define	MODULE_ALIAS(...)
143 #define	MODULE_ALIAS_CHARDEV_MAJOR(...)
144 #define	MODULE_SUPPORTED_DEVICE(...)
145 #define	MODULE_FIRMWARE(...)
146 #define	IS_MODULE(x) x##_IS_MODULE
147 #define	IS_BUILTIN(x) IS_ENABLED(x)
148 #define	IS_ENABLED(x) x##_IS_ENABLED
149 #define	IS_REACHABLE(x,...) defined(x##__VA_ARGS__)
150 #define	IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0)
151 #define	__aligned_u64 uint64_t __aligned(8)
152 #define	THIS_MODULE (NULL)
153 #define	DECLARE_EVENT_CLASS(...)
154 #define	DECLARE_EVENT(...)
155 #define	DECLARE_PER_CPU(...)
156 #define	DEFINE_EVENT(...)
157 #define	TRACE_EVENT(...)
158 #define	TRACE_DEFINE_ENUM(...)
159 #define	trace_regcache_drop_region(...) __nop
160 #define	trace_regcache_sync(...) __nop
161 #define	trace_regmap_async_complete_done(...) __nop
162 #define	trace_regmap_async_complete_start(...) __nop
163 #define	trace_regmap_async_io_complete(...) __nop
164 #define	trace_regmap_async_write_start(...) __nop
165 #define	trace_regmap_cache_bypass(...) __nop
166 #define	trace_regmap_cache_only(...) __nop
167 #define	trace_regmap_hw_read_done(...) __nop
168 #define	trace_regmap_hw_read_start(...) __nop
169 #define	trace_regmap_hw_write_done(...) __nop
170 #define	trace_regmap_hw_write_start(...) __nop
171 #define	trace_regmap_reg_read(...) __nop
172 #define	trace_regmap_reg_read_cache(...) __nop
173 #define	trace_regmap_reg_write(...) __nop
174 #define	trace_v4l2_dqbuf(...) __nop
175 #define	trace_v4l2_qbuf(...) __nop
176 #define	trace_vb2_buf_done(...) __nop
177 #define	trace_vb2_qbuf(...) __nop
178 #define	trace_vb2_buf_queue(...) __nop
179 #define	trace_vb2_dqbuf(...) __nop
180 #define	trace_pwc_handler_enter(...) __nop
181 #define	trace_pwc_handler_exit(...) __nop
182 #define	print_hex_dump_debug(...) __nop
183 #define	__compiletime_warning(...)
184 #define	__compiletime_error(...)
185 #ifdef HAVE_DEBUG
186 #define	printk(...) do {		\
187 	syslog(LOG_DEBUG, __VA_ARGS__);	\
188 } while (0)
189 #define	printk_once(...) printk(__VA_ARGS__)
190 #define	pr_warn_once(...) printk(__VA_ARGS__)
191 #define	dev_warn_once(dev, ...) printk(__VA_ARGS__)
192 #else
193 #define	printk(...) printk_nop()
194 #define	printk_once(...) printk_nop()
195 #define	pr_warn_once(...) printk_nop()
196 #define	dev_warn_once(...) printk_nop()
197 #endif
198 #define	no_printk(...) printk_nop()
199 #define	print_hex_dump_bytes(...) printk_nop()
200 #define	printk_ratelimit(...) printk_nop()
201 #define	printk_timed_ratelimit(...) printk_nop()
202 #ifdef HAVE_DEBUG
203 #define	pr_fmt(...) __VA_ARGS__
204 #endif
205 #define	printk_ratelimited(...) printk_nop()
206 #define	pr_err_ratelimited(...) __nop
207 #define	pr_warn_ratelimited(...) __nop
208 #define	pr_cont(...) __nop
209 #define	pr_err(...) __nop
210 #define	pr_info(...) __nop
211 #define	pr_dbg(...) __nop
212 #define	pr_debug(...) __nop
213 #define	pr_warn(...) __nop
214 #define	pr_warning(...) __nop
215 #define	pr_emerg(...) __nop
216 #define	dev_dbg(dev, fmt, ...) printk("DBG: %s: " fmt "\n", dev_name(dev),## __VA_ARGS__)
217 #define	dev_debug(dev, fmt, ...) printk("DBG: %s: " fmt "\n", dev_name(dev),## __VA_ARGS__)
218 #define	dev_dbg_ratelimited(dev, fmt, ...) printk("DBG: %s: " fmt "\n", dev_name(dev),## __VA_ARGS__)
219 #define	dev_err(dev, fmt, ...) printk("ERR: %s: " fmt "\n", dev_name(dev),## __VA_ARGS__)
220 #define	dev_err_ratelimited(dev, fmt, ...) printk("ERR: %s: " fmt "\n", dev_name(dev),## __VA_ARGS__)
221 #define	dev_info(dev, fmt, ...) printk("INFO: %s: " fmt "\n", dev_name(dev),## __VA_ARGS__)
222 #define	dev_info_ratelimited(dev, fmt, ...) printk("INFO: %s: " fmt "\n", dev_name(dev),## __VA_ARGS__)
223 #define	dev_warn(dev, fmt, ...) printk("WARN: %s: " fmt, dev_name(dev),## __VA_ARGS__)
224 #define	dev_warn_ratelimited(dev, fmt, ...) printk("WARN: %s: " fmt "\n", dev_name(dev),## __VA_ARGS__)
225 #define	dev_notice(dev, fmt, ...) printk("NOTICE: %s: " fmt "\n", dev_name(dev),## __VA_ARGS__)
226 #define	dev_notice_ratelimited(dev, fmt, ...) printk("NOTICE: %s: " fmt "\n", dev_name(dev),## __VA_ARGS__)
227 #define	dev_printk(info, dev, fmt, ...) printk("DBG: %s: " fmt, dev_name(dev),## __VA_ARGS__)
228 #define	info(fmt, ...) printk("INFO: " fmt "\n",## __VA_ARGS__)
229 #define	warn(fmt, ...) printk("WARN: " fmt "\n",## __VA_ARGS__)
230 #define	dbg(fmt, ...) printk("DBG: " fmt "\n",## __VA_ARGS__)
231 #define	err(fmt, ...) printk("ERR: " fmt "\n",## __VA_ARGS__)
232 #define	notice(fmt, ...) printk("NOTICE: " fmt "\n",## __VA_ARGS__)
233 #define	kmem_cache_create(desc,size,align,arg,fn) ((struct kmem_cache *)(size))
234 #define	kmem_cache_destroy(...) __nop
235 #define	kmem_cache_free(ref,ptr) free(GP_DECONST(ptr))
236 #define	kmem_cache_alloc(ref,g) malloc((long)(ref))
237 #define	kmem_cache_zalloc(ref,g) calloc(1, (long)(ref))
238 #define	kvmalloc(size,flags) malloc(size)
239 #define	kvmalloc_array(n,s,flags) malloc((n) * (s))
240 #define	kvzalloc(s,flags) calloc(1, s)
241 #define	kvfree(ptr) free(ptr)
242 #define	kmalloc(s,opt) malloc(s)
243 #define	kzalloc(s,opt) calloc(1, (s))
244 #define	krealloc(p,s,opt) realloc(p,(s))
245 #define	dma_alloc_coherent(d,s,h,g) calloc(1,(s))
246 #define	dma_free_coherent(d,s,v,h) free(GP_DECONST(v))
247 #define	dma_map_single(...) 0
248 #define	dma_unmap_single(...) __nop
249 #define	dma_mapping_error(...) 0
250 #define	dma_sync_single_for_device(...) __nop
251 #define	vmalloc_32_user(s) malloc_vm(s)
252 #define	vmalloc_user(s) malloc_vm(s)
253 #define	vmalloc_32(s) malloc_vm(s)
254 #define	vmalloc_to_page(x) ((struct page *)(x))	/* HACK */
255 #define	vmalloc_to_pfn(x) ((unsigned long)(x))	/* HACK */
256 #define	alloc_page(...) malloc_vm(PAGE_SIZE)
257 #define	page_address(x) ((void *)(x))	/* HACK */
258 #define	virt_to_page(x) ((struct page *)(((uintptr_t)(x)) & ~(PAGE_SIZE-1)))	/* HACK */
259 #define	offset_in_page(x) (((uintptr_t)(x)) & (PAGE_SIZE - 1))
260 #define	page_to_phys(x) ((uintptr_t)(x))
261 #define	page_cache_release(...) __nop
262 #define	clear_user_highpage(...) __nop
263 #define	sg_set_page(...) __nop
264 #define	sg_next(...) NULL
265 #define	of_match_ptr(...) NULL
266 #define	is_of_node(...) 0
267 #define	sysfs_attr_init(x) __nop
268 #define	sysfs_create_files(...) (0)
269 #define	sysfs_streq(a,b) (strcmp(a,b) == 0)
270 #define	kobject_create_and_add(...) ((void *)1)
271 #define	kobject_get_path(...) strdup("webcamd")
272 #define	kobject_put(...) __nop
273 #define	kobject_get(...) __nop
274 #define	kobject_uevent(...) __nop
275 #define	kobject_uevent_env(...) (int)0
276 #define	vfree(ptr) free_vm(ptr)
277 #define	kfree(ptr) free(GP_DECONST(ptr))
278 #define	kfree_const(ptr) free(GP_DECONST(ptr))
279 #define	kstrdup(a,b) strdup(a)
280 #define	kstrdup_const(a,b) strdup(a)
281 #define	might_sleep(x) __nop
282 #define	might_sleep_if(x) __nop
283 #define	fsleep(d) usleep(d)
284 #define	ndelay(d) usleep(((d) + 1000ULL - 1ULL)/1000UL)
285 #define	udelay(d) usleep(d)
286 #define	mdelay(d) usleep((d) * 1000)
287 #define	swap(a, b) \
288     do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
289 #define	usleep_range(_min,_max) usleep(_min)
290 #define	__GFP_WAIT 0
291 #define	__GFP_HIGH 0
292 #define	__GFP_IO 0
293 #define	__GFP_FS 0
294 #define	__GFP_COLD 0
295 #define	__GFP_NOWARN 0
296 #define	__GFP_REPEAT 0
297 #define	__GFP_NOFAIL 0
298 #define	__GFP_NORETRY 0
299 #define	__GFP_NO_GROW 0
300 #define	__GFP_COMP 0
301 #define	__GFP_ZERO 0
302 #define	__GFP_NOMEMALLOC 0
303 #define	__GFP_HARDWALL 0
304 #define	__GFP_DMA32 0
305 #define	__GFP_BITS_SHIFT 1
306 #define	GFP_NOWAIT 0
307 #define	GFP_ATOMIC 0
308 #define	GFP_NOIO 0
309 #define	GFP_NOFS 0
310 #define	GFP_KERNEL 0
311 #define	GFP_USER 0
312 #define	GFP_HIGHUSER 0
313 #define	TASK_RUNNING            0
314 #define	TASK_INTERRUPTIBLE      1
315 #define	TASK_UNINTERRUPTIBLE    2
316 #define	TASK_STOPPED            4
317 #define	TASK_TRACED             8
318 #define	EXIT_ZOMBIE             16
319 #define	EXIT_DEAD               32
320 #define	TASK_NONINTERACTIVE     64
321 #define	TASK_COMM_LEN		16
322 #define	no_llseek	NULL
323 #define	default_llseek	NULL
324 #define	GENMASK(hi, lo) (((2UL << ((hi) - (lo))) - 1UL) << (lo))
325 #define	GENMASK_ULL(hi, lo) (((2ULL << ((hi) - (lo))) - 1ULL) << (lo))
326 #define	BITS_PER_LONG_LONG 64
327 #ifdef __LP64__
328 #define	BITS_PER_LONG 64
329 #else
330 #define	BITS_PER_LONG 32
331 #endif
332 #define	BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
333 #define	BIT_WORD(nr) ((nr) / BITS_PER_LONG)
334 #define	BITS_PER_BYTE 8
335 #define	for_each_set_bit(b, addr, size) \
336     for ((b) = 0; (b) < (size); (b)++) \
337 	if ((addr)[(b) / BITS_PER_LONG] & BIT((b) % BITS_PER_LONG))
338 #define	for_each_set_bit_from(b, addr, size) \
339     for ( ; (b) < (size); (b)++) \
340 	if ((addr)[(b) / BITS_PER_LONG] & BIT((b) % BITS_PER_LONG))
341 #define	BITS_TO_LONGS(n) (((n) + BITS_PER_LONG - 1) / BITS_PER_LONG)
342 #define	BIT(n) (1UL << (n))
343 #define	BIT_ULL(n) (1ULL << (n))
344 #define	KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
345 #define	LINUX_VERSION_CODE KERNEL_VERSION(2, 6, 38)
346 #define	BUS_ID_SIZE 32
347 #define	DECLARE_BITMAP(n, max) unsigned long n[((max)+BITS_PER_LONG-1)/BITS_PER_LONG]
348 #define	MKDEV(maj,min) ((dev_t)(uint32_t)((((maj) & 0xFFFFUL) << 16)|((min) & 0xFFFFUL)))
349 #define	MAJOR(dev) (((dev) >> 16) & 0xFFFFUL)
350 #define	MINOR(dev) ((dev) & 0xFFFFUL)
351 #define	dev_set_name(d, ...) \
352 	snprintf((d)->name, sizeof((d)->name), __VA_ARGS__)
353 #define	kasprintf(mem,...) ({			\
354 	char *temp_ptr;				\
355 	asprintf(&temp_ptr, __VA_ARGS__);	\
356 	temp_ptr;				\
357 })
358 #define	print_hex_dump(...) __nop
359 #define	__printf(a,b)
360 #define	DEFAULT_POLLMASK POLLNVAL
361 #define	POLL_ERR POLLERR
362 #define	EPOLLRDNORM POLLRDNORM
363 #define	EPOLLWRNORM POLLWRNORM
364 #define	EPOLLIN	POLLIN
365 #define	EPOLLOUT POLLOUT
366 #define	EPOLLERR POLLERR
367 #define	EPOLLPRI POLLPRI
368 #define	EPOLLHUP POLLHUP
369 #define	IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT)
370 #define	_IOC_TYPE(cmd) IOCGROUP(cmd)
371 #define	_IOC_SIZE(cmd) IOCPARM_LEN(cmd)
372 #define	_IOC_NR(cmd) ((cmd) & 0xFF)
373 #define	_IOC_DIR(cmd) ((cmd) & IOC_DIRMASK)
374 #define	_IOC_NONE IOC_VOID
375 #define	_IOC_READ IOC_OUT
376 #define	_IOC_WRITE IOC_IN
377 #define	_IOC_SIZEMASK IOCPARM_MASK
378 #define	_IOC_SIZESHIFT 16
379 #define	__OLD_VIDIOC_
380 #define	down_read(...) __nop
381 #define	up_read(...) __nop
382 #define	VM_WRITE 0x0001
383 #define	VM_READ 0x0002
384 #define	VM_SHARED 0x0004
385 #define	VM_DONTEXPAND 0x0008
386 #define	VM_FAULT_OOM 0x0010
387 #define	VM_RESERVED 0x0020
388 #define	VM_IO 0x0040
389 #define	VM_DONTDUMP 0x0080
390 #define	DMA_FROM_DEVICE 0x01
391 #define	DMA_TO_DEVICE 0x02
392 #define	DMA_BIDIRECTIONAL 0x03
393 #define	sizeof_field(t, m) sizeof((((t *)0)->m))
394 #define	ARRAY_SIZE(ptr) (sizeof(ptr) / sizeof((ptr)[0]))
395 #define	array_index_nospec(index, size) (((index) >= (size)) ? 0 : (index))
396 #define	__KERNEL__
397 #define	capable(...) 1
398 #define	uninitialized_var(...) __VA_ARGS__
399 #define	HZ 1000
400 #define	NSEC_PER_SEC 1000000000LL
401 #define	USEC_PER_SEC 1000000LL
402 #define	USEC_PER_MSEC 1000LL
403 #define	MSEC_PER_SEC 1000LL
404 #define	jiffies get_jiffies_64()
405 #define	msecs_to_jiffies(x) (x)
406 #define	usecs_to_jiffies(x) ((x) / 1000)
407 #define	nsecs_to_jiffies(x) ((x) / 1000000)
408 #define	jiffies_to_msecs(x) (x)
409 #define	jiffies_to_usecs(x) ((x) * 1000LL)
410 #define	jiffies_to_nsecs(x) ((x) * 1000000LL)
411 #define	likely(...) __VA_ARGS__
412 #define	unlikely(...) __VA_ARGS__
413 #define	__round_mask(x, y) ((typeof(x))((y)-1))
414 #define	roundup(x, y) ((((x) % (y)) == 0) ? (x) : (x) - ((x) % (y)) + (y))
415 #define	rounddown(x, y) ((x) - ((x) % (y)))
416 #define	round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
417 #define	round_down(x, y) ((x) & ~__round_mask(x, y))
418 #define	DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
419 #define	min(a,b) (((a) < (b)) ? (a) : (b))
420 #define	max(a,b) (((a) > (b)) ? (a) : (b))
421 #define	max3(a,b,c) (((a) >= (b) && (a) >= (c)) ? (a) :	\
422 		     ((b) >= (a) && (b) >= (c)) ? (b) : (c))
423 #define	min3(a,b,c) (((a) <= (b) && (a) <= (c)) ? (a) : \
424 		     ((b) <= (a) && (b) <= (c)) ? (b) : (c))
425 #define	prefetch(x) (void)x
426 #define	barrier()	__asm__ __volatile__("": : :"memory")
427 #define	WRITE_ONCE(x, val) \
428 do { volatile typeof(x) __val = (val); (x) = __val; } while (0)
429 #define	READ_ONCE(x) ({			\
430 	typeof(x) __var = ({		\
431 		barrier();		\
432 		ACCESS_ONCE(x);		\
433 	});				\
434 	barrier();			\
435 	__var;				\
436 })
437 #define	KERN_INFO ""
438 #define	KERN_WARNING ""
439 #define	KERN_ERR ""
440 #define	KERN_DEBUG ""
441 #define	KERN_CONT ""
442 #define	KBUILD_MODNAME ""
443 #define	KERN_NOTICE ""
444 #define	BUG(...) __nop
445 #define	__WARN() __nop
446 #define	WARN(x,...) ({ (x); })
447 #define	WARN_ONCE(x,...) ({ (x); })
448 #define	BUG_ON(x) ({ (x); })
449 #define	WARN_ON(x) ({ (x); })
450 #define	WARN_ON_ONCE(x) ({ (x); })
451 #define	BUILD_BUG_ON(x) extern int dummy_array[(x) ? -1 : 1]
452 #define	lockdep_set_class_and_name(...) __nop
453 #define	lockdep_assert_held(...) __nop
454 #define	lockdep_assert_irqs_enabled(...) __nop
455 #define	lock_kernel(...) __nop
456 #define	unlock_kernel(...) __nop
457 #define	rwlock_init(l) __nop
458 #define	write_lock_irqsave(l, f) do { (f) = 1; atomic_lock(); } while (0)
459 #define	write_unlock_irqrestore(l, f) do { if (f) { (f) = 0; atomic_unlock(); } } while (0)
460 #define	read_lock_irqsave(l, f) do { (f) = 1; atomic_lock(); } while (0)
461 #define	read_unlock_irqrestore(l, f) do { if (f) { (f) = 0; atomic_unlock(); } } while (0)
462 #define	read_lock(l) atomic_lock()
463 #define	read_unlock(l) atomic_unlock()
464 #define	spin_lock_init(lock) __nop
465 #define	spin_lock_irqsave(l,f)  do { (f) = 1; atomic_lock(); } while (0)
466 #define	spin_unlock_irqrestore(l,f) do { if (f) { (f) = 0; atomic_unlock(); } } while (0)
467 #define	spin_lock(...)  atomic_lock()
468 #define	spin_unlock(...) atomic_unlock()
469 #define	spin_lock_irq(...)  atomic_lock()
470 #define	spin_unlock_irq(...) atomic_unlock()
471 #define	raw_spin_lock_init(lock) __nop
472 #define	raw_spin_lock(...)  atomic_lock()
473 #define	raw_spin_unlock(...) atomic_unlock()
474 #define	atomic_inc_return(...) atomic_inc(__VA_ARGS__)
475 #define	atomic_dec_return(...) atomic_dec(__VA_ARGS__)
476 #define	assert_spin_locked(...) __nop
477 #define	ASSERT_EXCLUSIVE_ACCESS(...) __nop
478 #define	IS_ERR_VALUE(x) ((unsigned long)(x) >= (unsigned long)-(1<<14))
479 #define	IS_ERR_OR_NULL(x) ((unsigned long)(x) == 0 || IS_ERR_VALUE(x))
480 #define	ERR_CAST(x) ((void *)(long)(const void *)(x))
481 #define	find_first_bit(addr, size) find_next_bit((addr), (size), 0)
482 #define	find_first_zero_bit(addr, size) find_next_zero_bit((addr), (size), 0)
483 #define	synchronize_sched() do { atomic_lock(); atomic_unlock(); } while (0)
484 #define	cond_resched() do { } while (0)
485 #define	signal_pending(...) check_signal()
486 #define	down_write(...) __nop
487 #define	down_read(...) __nop
488 #define	up_write(...) __nop
489 #define	up_read(...) __nop
490 #define	dump_stack(...) __nop
491 #define	get_user_pages(a,b,...) linux_get_user_pages(__VA_ARGS__)
492 #define	DECLARE_RWSEM(x) struct rw_semaphore x
493 #define	crc32(s, d, l) crc32_le(s, (unsigned char const *)d, l)
494 #define	CRCPOLY_LE 0xedb88320
495 #define	CRCPOLY_BE 0x04c11db7
496 #define	mb() __asm volatile("":::"memory")
497 #define	smp_wmb() mb()
498 #define	smp_mb() mb()
499 #define	smp_rmb() mb()
500 #define	smp_mb__after_clear_bit() mb()
501 #define	smp_mb__after_atomic() mb()
502 #define	smp_store_release(p, v) do {		\
503 	atomic_lock();				\
504 	*(p) = (v);				\
505 	atomic_unlock();			\
506 } while (0);
507 #define	smp_load_acquire(p) ({			\
508 	typeof(*(p)) __ret;			\
509 	atomic_lock();				\
510 	__ret = *(p);				\
511 	atomic_unlock();			\
512 	__ret;					\
513 })
514 #define	ACCESS_ONCE(x)		(*(volatile __typeof(x) *)&(x))
515 #define	devres_find(...) NULL
516 #define	fops_get(x) (x)
517 #define	fops_put(x) __nop
518 #define	replace_fops(f, fops) do {	\
519 	struct file *__file = (f);	\
520 	__file->f_op = (fops);		\
521 } while (0)
522 #define	__devinitconst
523 #define	__devinit
524 #define	__devexit
525 #define	__devexit_p
526 #define	dma_sync_single_for_cpu(...) __nop
527 #define	pgprot_noncached(x) (x)
528 #define	set_current_state(...) __nop
529 #define	__set_current_state(...) __nop
530 #define	task_pid_nr(...) (1)
531 #define	time_after(a,b) (((long)(b) - (long)(a)) < 0)
532 #define	time_after_eq(a,b) (((long)(b) - (long)(a)) <= 0)
533 #define	time_before(a,b) time_after(b,a)
534 #define	time_before_eq(a,b) time_after_eq(b,a)
535 #define	time_is_before_jiffies(a) time_after(jiffies,a)
536 #define	time_is_after_jiffies(a) time_before(jiffies,a)
537 #define	time_is_after_eq_jiffies(a) time_before_eq(jiffies,a)
538 #define	time_is_before_eq_jiffies(a) time_after_eq(jiffies,a)
539 #define	__attribute_const__
540 #undef __always_inline
541 #define	__always_inline inline
542 #define	noinline
543 #define	noinline_for_stack
544 #define	__cpu_to_be64(x) cpu_to_be64(x)
545 #define	__cpu_to_be32(x) cpu_to_be32(x)
546 #define	__cpu_to_be16(x) cpu_to_be16(x)
547 #define	__cpu_to_le64(x) cpu_to_le64(x)
548 #define	__cpu_to_le32(x) cpu_to_le32(x)
549 #define	__cpu_to_le16(x) cpu_to_le16(x)
550 #define	__le64_to_cpu(x) le64_to_cpu(x)
551 #define	__le32_to_cpu(x) le32_to_cpu(x)
552 #define	__le16_to_cpu(x) le16_to_cpu(x)
553 #define	__le64_to_cpus(p) le64_to_cpus(p)
554 #define	__le32_to_cpus(p) le32_to_cpus(p)
555 #define	__le16_to_cpus(p) le16_to_cpus(p)
556 #define	__be64_to_cpu(x) be64_to_cpu(x)
557 #define	__be32_to_cpu(x) be32_to_cpu(x)
558 #define	__be16_to_cpu(x) be16_to_cpu(x)
559 #define	__be64_to_cpus(p) be64_to_cpus(p)
560 #define	__be32_to_cpus(p) be32_to_cpus(p)
561 #define	__be16_to_cpus(p) be16_to_cpus(p)
562 #define	GP_DECONST(ptr) ((void *)(long)(ptr))
563 #define	get_unaligned(x) ({ __typeof(*(x)) __temp; memcpy(GP_DECONST(&__temp), (x), sizeof(__temp)); __temp; })
564 #define	put_unaligned(x, y) do { __typeof(*(y)) __temp = (x); memcpy((y), GP_DECONST(&__temp), sizeof(__temp)); } while (0)
565 #define	NSEC_PER_USEC	1000
566 #define	simple_strtoul strtoul
567 #define	strict_strtoul(a,b,c) ({char *_pp; *(c) = strtoul(a,&_pp,b); _pp;})
568 #define	simple_strtol strtol
569 #define	strict_strtol(a,b,c) ({char *_pp; *(c) = strtol(a,&_pp,b); _pp;})
570 #define	noop_llseek 0
571 #define	ETIME ECANCELED
572 #define	ENOSR ENOBUFS
573 #define	ENOTSUPP ENOTSUP
574 #define	EREMOTEIO EIO
575 #define	EBADRQC EBADMSG
576 #define	MAX_SCHEDULE_TIMEOUT LONG_MAX
577 #define	U8_MAX 255U
578 #define	U8_MIN (-(1 << 7))
579 #define	U16_MAX 65535U
580 #define	S16_MAX (65535U / 2U)
581 #define	S16_MIN (-(1 << 15))
582 #define	U32_MAX -1U
583 #define	S32_MAX ((-1U) / 2U)
584 #define	S32_MIN (-(1 << 31))
585 #define	I2C_NAME_SIZE 20
586 #define	__SPIN_LOCK_UNLOCKED(...) {}
587 #define	in_interrupt() 0
588 #define	wmb() __nop
589 #define	min_t(cast,x,y) ((((cast)(x)) < ((cast)(y))) ? (cast)(x) : (cast)(y))
590 #define	max_t(cast,x,y) ((((cast)(x)) > ((cast)(y))) ? (cast)(x) : (cast)(y))
591 #define	clamp_val(x,y,z) clamp_t(typeof(x),x,y,z)
592 #define	clamp(x,y,z) clamp_t(typeof(x),x,y,z)
593 #define	clamp_t(cast,x,y,z) \
594 ((cast)((((cast)(x)) < ((cast)(y))) ? ((cast)(y)) : \
595 	(((cast)(x)) > ((cast)(z))) ? ((cast)(z)) : ((cast)(x))))
596 #define	try_then_request_module(x,...) (x)
597 #ifndef __cold
598 #define	__cold __attribute__((__cold__))
599 #endif
600 #ifndef __packed
601 #define	__packed __attribute__((__packed__))
602 #endif
603 #ifndef __pure
604 #define	__pure __attribute__((pure))
605 #endif
606 #ifndef __bitwise
607 #define	__bitwise
608 #endif
609 #ifndef __force
610 #define	__force
611 #endif
612 #define	numa_node_id(x) ((int)0)
613 #define	DEFINE_PER_CPU(type, name) \
614     typeof(type) name
615 
616 #define	put_user(val, ptr) ({						\
617 	int temp_err;							\
618 	__typeof(val) temp_var = (val);					\
619 	if (copy_to_user((ptr), &temp_var, sizeof(temp_var)) == 0)	\
620 		temp_err = 0;						\
621 	else								\
622 		temp_err = -EFAULT;					\
623 	temp_err;							\
624 })
625 #define	__put_user(temp_var, ptr) put_user(temp_var, ptr)
626 #define	get_user(temp_var, ptr) ({					\
627 	int temp_err;							\
628 	if (copy_from_user(&(temp_var), (ptr), sizeof(temp_var)) == 0)	\
629 		temp_err = 0;						\
630 	else								\
631 		temp_err = -EFAULT;					\
632 	temp_err;							\
633 })
634 #define	__get_user(temp_var, ptr) get_user(temp_var, ptr)
635 extern unsigned long copy_in_user(void *to, const void *from, unsigned long len);
636 #define	__copy_from_user(kptr, uptr, n) copy_from_user(kptr, uptr, n)
637 #define	__copy_to_user(uptr, kptr, n) copy_to_user(uptr, kptr, n)
638 extern unsigned long clear_user(void *uptr, unsigned long n);
639 
640 #define	__clear_user(ptr, n) clear_user(ptr, n)
641 #undef errno
642 #define	errno errno_v4l
643 
644 /* rcu - support */
645 #define	RCU_INIT_POINTER(p, v) do {	\
646 	(p) = (v);			\
647 } while (0)
648 #define	rcu_read_lock() atomic_lock()
649 #define	rcu_read_unlock() atomic_unlock()
650 #define	rcu_dereference(var)	\
651   ({ __typeof(var) __temp;	\
652      atomic_lock();		\
653      __temp = (var);		\
654      atomic_unlock();		\
655      __temp; })
656 #define	rcu_dereference_protected(p,c) rcu_dereference(p)
657 #define	rcu_dereference_raw(p) rcu_dereference(p)
658 #define	rcu_assign_pointer(a,b) do { atomic_lock(); (a) = (b); atomic_unlock(); } while (0)
659 #define	synchronize_rcu() do {	\
660 	atomic_lock();		\
661 	atomic_unlock();	\
662 } while (0)
663 
664 #define	add_input_randomness(...) __nop
665 
666 #define	kill_fasync(...) __nop
667 #define	fasync_helper(...) (0)
668 
669 #define	get_file(x) __nop
670 
671 #define	ATOMIC_INIT(x) { (x) }
672 #define	ATOMIC64_INIT(x) { (x) }
673 
674 #define	CLOCK_BOOTTIME CLOCK_UPTIME
675 
676 #define	IRQ_NONE 0
677 #define	IRQ_HANDLED 1
678 
679 #define	PLATFORM_DEVID_NONE (-1)
680 #define	PLATFORM_DEVID_AUTO (-2)
681 
682 #define	DPM_ORDER_NONE 0
683 
684 #define	RPM_ACTIVE 0
685 #define	RPM_SUSPENDED 0
686 
687 #define	ilog2(n)				\
688 (						\
689 	__builtin_constant_p(n) ? (		\
690 		(n) < 1 ? -1 :			\
691 		(n) & (1ULL << 63) ? 63 :	\
692 		(n) & (1ULL << 62) ? 62 :	\
693 		(n) & (1ULL << 61) ? 61 :	\
694 		(n) & (1ULL << 60) ? 60 :	\
695 		(n) & (1ULL << 59) ? 59 :	\
696 		(n) & (1ULL << 58) ? 58 :	\
697 		(n) & (1ULL << 57) ? 57 :	\
698 		(n) & (1ULL << 56) ? 56 :	\
699 		(n) & (1ULL << 55) ? 55 :	\
700 		(n) & (1ULL << 54) ? 54 :	\
701 		(n) & (1ULL << 53) ? 53 :	\
702 		(n) & (1ULL << 52) ? 52 :	\
703 		(n) & (1ULL << 51) ? 51 :	\
704 		(n) & (1ULL << 50) ? 50 :	\
705 		(n) & (1ULL << 49) ? 49 :	\
706 		(n) & (1ULL << 48) ? 48 :	\
707 		(n) & (1ULL << 47) ? 47 :	\
708 		(n) & (1ULL << 46) ? 46 :	\
709 		(n) & (1ULL << 45) ? 45 :	\
710 		(n) & (1ULL << 44) ? 44 :	\
711 		(n) & (1ULL << 43) ? 43 :	\
712 		(n) & (1ULL << 42) ? 42 :	\
713 		(n) & (1ULL << 41) ? 41 :	\
714 		(n) & (1ULL << 40) ? 40 :	\
715 		(n) & (1ULL << 39) ? 39 :	\
716 		(n) & (1ULL << 38) ? 38 :	\
717 		(n) & (1ULL << 37) ? 37 :	\
718 		(n) & (1ULL << 36) ? 36 :	\
719 		(n) & (1ULL << 35) ? 35 :	\
720 		(n) & (1ULL << 34) ? 34 :	\
721 		(n) & (1ULL << 33) ? 33 :	\
722 		(n) & (1ULL << 32) ? 32 :	\
723 		(n) & (1ULL << 31) ? 31 :	\
724 		(n) & (1ULL << 30) ? 30 :	\
725 		(n) & (1ULL << 29) ? 29 :	\
726 		(n) & (1ULL << 28) ? 28 :	\
727 		(n) & (1ULL << 27) ? 27 :	\
728 		(n) & (1ULL << 26) ? 26 :	\
729 		(n) & (1ULL << 25) ? 25 :	\
730 		(n) & (1ULL << 24) ? 24 :	\
731 		(n) & (1ULL << 23) ? 23 :	\
732 		(n) & (1ULL << 22) ? 22 :	\
733 		(n) & (1ULL << 21) ? 21 :	\
734 		(n) & (1ULL << 20) ? 20 :	\
735 		(n) & (1ULL << 19) ? 19 :	\
736 		(n) & (1ULL << 18) ? 18 :	\
737 		(n) & (1ULL << 17) ? 17 :	\
738 		(n) & (1ULL << 16) ? 16 :	\
739 		(n) & (1ULL << 15) ? 15 :	\
740 		(n) & (1ULL << 14) ? 14 :	\
741 		(n) & (1ULL << 13) ? 13 :	\
742 		(n) & (1ULL << 12) ? 12 :	\
743 		(n) & (1ULL << 11) ? 11 :	\
744 		(n) & (1ULL << 10) ? 10 :	\
745 		(n) & (1ULL <<  9) ?  9 :	\
746 		(n) & (1ULL <<  8) ?  8 :	\
747 		(n) & (1ULL <<  7) ?  7 :	\
748 		(n) & (1ULL <<  6) ?  6 :	\
749 		(n) & (1ULL <<  5) ?  5 :	\
750 		(n) & (1ULL <<  4) ?  4 :	\
751 		(n) & (1ULL <<  3) ?  3 :	\
752 		(n) & (1ULL <<  2) ?  2 :	\
753 		(n) & (1ULL <<  1) ?  1 :	\
754 		(n) & (1ULL <<  0) ?  0 :	\
755 		-1) :				\
756 	(sizeof(n) <= 4) ?			\
757 	fls((u32)(n)) - 1 : flsll((u64)(n)) - 1	\
758 )
759 
760 #if (defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN))
761 #if (BYTE_ORDER == LITTLE_ENDIAN)
762 #ifndef __LITTLE_ENDIAN
763 #define	__LITTLE_ENDIAN
764 #endif
765 #elif BYTE_ORDER == BIG_ENDIAN
766 #ifndef __BIG_ENDIAN
767 #define	__BIG_ENDIAN
768 #endif
769 #else
770 #error "Unknown byte order"
771 #endif
772 #endif
773 
774 struct kernel_param;
775 
776 typedef uint16_t umode_t;
777 typedef int8_t __s8;
778 typedef uint8_t __u8;
779 typedef int16_t __s16;
780 typedef uint16_t __u16;
781 typedef int32_t __s32;
782 typedef uint32_t __u32;
783 typedef int64_t __s64;
784 typedef uint64_t __u64;
785 typedef int8_t s8;
786 typedef uint8_t u8;
787 typedef int16_t s16;
788 typedef uint16_t u16;
789 typedef int32_t s32;
790 typedef uint32_t u32;
791 typedef int64_t s64;
792 typedef uint64_t u64;
793 typedef u64 dma_addr_t;
794 typedef u64 dma64_addr_t;
795 typedef u64 sector_t;
796 typedef uint16_t __le16;
797 typedef uint32_t __le32;
798 typedef uint64_t __le64;
799 typedef uint16_t __be16;
800 typedef uint32_t __be32;
801 typedef uint64_t __be64;
802 typedef uint32_t uint;
803 typedef int irqreturn_t;
804 typedef off_t __kernel_off_t;
805 typedef int __kernel_pid_t;
806 typedef unsigned long __kernel_ulong_t;
807 typedef unsigned long phys_addr_t;
808 typedef unsigned int __poll_t;
809 #define	__kernel_timespec timespec
810 
811 #define	fwnode_graph_get_remote_port_parent(...) NULL
812 #define	fwnode_handle_get(x) x
813 #define	fwnode_handle_put(...) __nop
814 #define	dev_fwnode(...) NULL
815 #define	dmi_match(...) 0
816 
817 #define	device_remove_groups(...) __nop
818 #define	device_add_groups(...) (int)0
819 
820 #ifndef __GLIBC__
821 typedef long long loff_t;
822 
823 #endif
824 typedef uint32_t gfp_t;
825 typedef struct timespec ktime_t;
826 
827 #define	timespec64 timespec
828 
829 static inline int
linux_abs(int a)830 linux_abs(int a)
831 {
832 	return (a < 0 ? -a : a);
833 }
834 
835 #undef abs
836 #define	abs(a) linux_abs(a)
837 
838 typedef int (*cmp_func_t)(const void *a, const void *b);
839 
840 #define	DEFINE_SHOW_ATTRIBUTE(...)
841 
842 #endif					/* _LINUX_DEFS_H_ */
843