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