Linux-libre 4.14.69-gnu
[librecmc/linux-libre.git] / drivers / staging / media / atomisp / pci / atomisp2 / css2400 / css_2401_system / hrt / bits.h
1 /*
2  * Support for Intel Camera Imaging ISP subsystem.
3  * Copyright (c) 2015, Intel Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms and conditions of the GNU General Public License,
7  * version 2, as published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12  * more details.
13  */
14
15 #ifndef _HRT_BITS_H
16 #define _HRT_BITS_H
17
18 #include "defs.h"
19
20 #define _hrt_ones(n) HRTCAT(_hrt_ones_, n)
21 #define _hrt_ones_0x0  0x00000000U
22 #define _hrt_ones_0x1  0x00000001U
23 #define _hrt_ones_0x2  0x00000003U
24 #define _hrt_ones_0x3  0x00000007U
25 #define _hrt_ones_0x4  0x0000000FU
26 #define _hrt_ones_0x5  0x0000001FU
27 #define _hrt_ones_0x6  0x0000003FU
28 #define _hrt_ones_0x7  0x0000007FU
29 #define _hrt_ones_0x8  0x000000FFU
30 #define _hrt_ones_0x9  0x000001FFU
31 #define _hrt_ones_0xA  0x000003FFU
32 #define _hrt_ones_0xB  0x000007FFU
33 #define _hrt_ones_0xC  0x00000FFFU
34 #define _hrt_ones_0xD  0x00001FFFU
35 #define _hrt_ones_0xE  0x00003FFFU
36 #define _hrt_ones_0xF  0x00007FFFU
37 #define _hrt_ones_0x10 0x0000FFFFU
38 #define _hrt_ones_0x11 0x0001FFFFU
39 #define _hrt_ones_0x12 0x0003FFFFU
40 #define _hrt_ones_0x13 0x0007FFFFU
41 #define _hrt_ones_0x14 0x000FFFFFU
42 #define _hrt_ones_0x15 0x001FFFFFU
43 #define _hrt_ones_0x16 0x003FFFFFU
44 #define _hrt_ones_0x17 0x007FFFFFU
45 #define _hrt_ones_0x18 0x00FFFFFFU
46 #define _hrt_ones_0x19 0x01FFFFFFU
47 #define _hrt_ones_0x1A 0x03FFFFFFU
48 #define _hrt_ones_0x1B 0x07FFFFFFU
49 #define _hrt_ones_0x1C 0x0FFFFFFFU
50 #define _hrt_ones_0x1D 0x1FFFFFFFU
51 #define _hrt_ones_0x1E 0x3FFFFFFFU
52 #define _hrt_ones_0x1F 0x7FFFFFFFU
53 #define _hrt_ones_0x20 0xFFFFFFFFU
54
55 #define _hrt_ones_0  _hrt_ones_0x0
56 #define _hrt_ones_1  _hrt_ones_0x1
57 #define _hrt_ones_2  _hrt_ones_0x2
58 #define _hrt_ones_3  _hrt_ones_0x3
59 #define _hrt_ones_4  _hrt_ones_0x4
60 #define _hrt_ones_5  _hrt_ones_0x5
61 #define _hrt_ones_6  _hrt_ones_0x6
62 #define _hrt_ones_7  _hrt_ones_0x7
63 #define _hrt_ones_8  _hrt_ones_0x8
64 #define _hrt_ones_9  _hrt_ones_0x9
65 #define _hrt_ones_10 _hrt_ones_0xA
66 #define _hrt_ones_11 _hrt_ones_0xB
67 #define _hrt_ones_12 _hrt_ones_0xC
68 #define _hrt_ones_13 _hrt_ones_0xD
69 #define _hrt_ones_14 _hrt_ones_0xE
70 #define _hrt_ones_15 _hrt_ones_0xF
71 #define _hrt_ones_16 _hrt_ones_0x10
72 #define _hrt_ones_17 _hrt_ones_0x11
73 #define _hrt_ones_18 _hrt_ones_0x12
74 #define _hrt_ones_19 _hrt_ones_0x13
75 #define _hrt_ones_20 _hrt_ones_0x14
76 #define _hrt_ones_21 _hrt_ones_0x15
77 #define _hrt_ones_22 _hrt_ones_0x16
78 #define _hrt_ones_23 _hrt_ones_0x17
79 #define _hrt_ones_24 _hrt_ones_0x18
80 #define _hrt_ones_25 _hrt_ones_0x19
81 #define _hrt_ones_26 _hrt_ones_0x1A
82 #define _hrt_ones_27 _hrt_ones_0x1B
83 #define _hrt_ones_28 _hrt_ones_0x1C
84 #define _hrt_ones_29 _hrt_ones_0x1D
85 #define _hrt_ones_30 _hrt_ones_0x1E
86 #define _hrt_ones_31 _hrt_ones_0x1F
87 #define _hrt_ones_32 _hrt_ones_0x20
88
89 #define _hrt_mask(b, n) \
90   (_hrt_ones(n) << (b))
91 #define _hrt_get_bits(w, b, n) \
92   (((w) >> (b)) & _hrt_ones(n))
93 #define _hrt_set_bits(w, b, n, v) \
94   (((w) & ~_hrt_mask(b, n)) | (((v) & _hrt_ones(n)) << (b)))
95 #define _hrt_get_bit(w, b) \
96   (((w) >> (b)) & 1)
97 #define _hrt_set_bit(w, b, v) \
98   (((w) & (~(1 << (b)))) | (((v)&1) << (b)))
99 #define _hrt_set_lower_half(w, v) \
100   _hrt_set_bits(w, 0, 16, v)
101 #define _hrt_set_upper_half(w, v) \
102   _hrt_set_bits(w, 16, 16, v)
103
104 #endif /* _HRT_BITS_H */