1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Support for Intel Camera Imaging ISP subsystem.
4  * Copyright (c) 2015, Intel Corporation.
5  */
6 
7 #ifndef _HRT_BITS_H
8 #define _HRT_BITS_H
9 
10 #include <linux/args.h>
11 
12 #define _hrt_ones(n)	CONCATENATE(_hrt_ones_, n)
13 #define _hrt_ones_0x0  0x00000000U
14 #define _hrt_ones_0x1  0x00000001U
15 #define _hrt_ones_0x2  0x00000003U
16 #define _hrt_ones_0x3  0x00000007U
17 #define _hrt_ones_0x4  0x0000000FU
18 #define _hrt_ones_0x5  0x0000001FU
19 #define _hrt_ones_0x6  0x0000003FU
20 #define _hrt_ones_0x7  0x0000007FU
21 #define _hrt_ones_0x8  0x000000FFU
22 #define _hrt_ones_0x9  0x000001FFU
23 #define _hrt_ones_0xA  0x000003FFU
24 #define _hrt_ones_0xB  0x000007FFU
25 #define _hrt_ones_0xC  0x00000FFFU
26 #define _hrt_ones_0xD  0x00001FFFU
27 #define _hrt_ones_0xE  0x00003FFFU
28 #define _hrt_ones_0xF  0x00007FFFU
29 #define _hrt_ones_0x10 0x0000FFFFU
30 #define _hrt_ones_0x11 0x0001FFFFU
31 #define _hrt_ones_0x12 0x0003FFFFU
32 #define _hrt_ones_0x13 0x0007FFFFU
33 #define _hrt_ones_0x14 0x000FFFFFU
34 #define _hrt_ones_0x15 0x001FFFFFU
35 #define _hrt_ones_0x16 0x003FFFFFU
36 #define _hrt_ones_0x17 0x007FFFFFU
37 #define _hrt_ones_0x18 0x00FFFFFFU
38 #define _hrt_ones_0x19 0x01FFFFFFU
39 #define _hrt_ones_0x1A 0x03FFFFFFU
40 #define _hrt_ones_0x1B 0x07FFFFFFU
41 #define _hrt_ones_0x1C 0x0FFFFFFFU
42 #define _hrt_ones_0x1D 0x1FFFFFFFU
43 #define _hrt_ones_0x1E 0x3FFFFFFFU
44 #define _hrt_ones_0x1F 0x7FFFFFFFU
45 #define _hrt_ones_0x20 0xFFFFFFFFU
46 
47 #define _hrt_ones_0  _hrt_ones_0x0
48 #define _hrt_ones_1  _hrt_ones_0x1
49 #define _hrt_ones_2  _hrt_ones_0x2
50 #define _hrt_ones_3  _hrt_ones_0x3
51 #define _hrt_ones_4  _hrt_ones_0x4
52 #define _hrt_ones_5  _hrt_ones_0x5
53 #define _hrt_ones_6  _hrt_ones_0x6
54 #define _hrt_ones_7  _hrt_ones_0x7
55 #define _hrt_ones_8  _hrt_ones_0x8
56 #define _hrt_ones_9  _hrt_ones_0x9
57 #define _hrt_ones_10 _hrt_ones_0xA
58 #define _hrt_ones_11 _hrt_ones_0xB
59 #define _hrt_ones_12 _hrt_ones_0xC
60 #define _hrt_ones_13 _hrt_ones_0xD
61 #define _hrt_ones_14 _hrt_ones_0xE
62 #define _hrt_ones_15 _hrt_ones_0xF
63 #define _hrt_ones_16 _hrt_ones_0x10
64 #define _hrt_ones_17 _hrt_ones_0x11
65 #define _hrt_ones_18 _hrt_ones_0x12
66 #define _hrt_ones_19 _hrt_ones_0x13
67 #define _hrt_ones_20 _hrt_ones_0x14
68 #define _hrt_ones_21 _hrt_ones_0x15
69 #define _hrt_ones_22 _hrt_ones_0x16
70 #define _hrt_ones_23 _hrt_ones_0x17
71 #define _hrt_ones_24 _hrt_ones_0x18
72 #define _hrt_ones_25 _hrt_ones_0x19
73 #define _hrt_ones_26 _hrt_ones_0x1A
74 #define _hrt_ones_27 _hrt_ones_0x1B
75 #define _hrt_ones_28 _hrt_ones_0x1C
76 #define _hrt_ones_29 _hrt_ones_0x1D
77 #define _hrt_ones_30 _hrt_ones_0x1E
78 #define _hrt_ones_31 _hrt_ones_0x1F
79 #define _hrt_ones_32 _hrt_ones_0x20
80 
81 #define _hrt_mask(b, n) \
82   (_hrt_ones(n) << (b))
83 #define _hrt_get_bits(w, b, n) \
84   (((w) >> (b)) & _hrt_ones(n))
85 #define _hrt_set_bits(w, b, n, v) \
86   (((w) & ~_hrt_mask(b, n)) | (((v) & _hrt_ones(n)) << (b)))
87 #define _hrt_get_bit(w, b) \
88   (((w) >> (b)) & 1)
89 #define _hrt_set_bit(w, b, v) \
90   (((w) & (~(1 << (b)))) | (((v) & 1) << (b)))
91 #define _hrt_set_lower_half(w, v) \
92   _hrt_set_bits(w, 0, 16, v)
93 #define _hrt_set_upper_half(w, v) \
94   _hrt_set_bits(w, 16, 16, v)
95 
96 #endif /* _HRT_BITS_H */
97