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