| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * Support for Intel Camera Imaging ISP subsystem. |
| * Copyright (c) 2015, Intel Corporation. |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms and conditions of the GNU General Public License, |
| * version 2, as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| * more details. |
| */ |
| |
| #ifndef _HRT_BITS_H |
| #define _HRT_BITS_H |
| |
| #include "defs.h" |
| |
| #define _hrt_ones(n) HRTCAT(_hrt_ones_, n) |
| #define _hrt_ones_0x0 0x00000000U |
| #define _hrt_ones_0x1 0x00000001U |
| #define _hrt_ones_0x2 0x00000003U |
| #define _hrt_ones_0x3 0x00000007U |
| #define _hrt_ones_0x4 0x0000000FU |
| #define _hrt_ones_0x5 0x0000001FU |
| #define _hrt_ones_0x6 0x0000003FU |
| #define _hrt_ones_0x7 0x0000007FU |
| #define _hrt_ones_0x8 0x000000FFU |
| #define _hrt_ones_0x9 0x000001FFU |
| #define _hrt_ones_0xA 0x000003FFU |
| #define _hrt_ones_0xB 0x000007FFU |
| #define _hrt_ones_0xC 0x00000FFFU |
| #define _hrt_ones_0xD 0x00001FFFU |
| #define _hrt_ones_0xE 0x00003FFFU |
| #define _hrt_ones_0xF 0x00007FFFU |
| #define _hrt_ones_0x10 0x0000FFFFU |
| #define _hrt_ones_0x11 0x0001FFFFU |
| #define _hrt_ones_0x12 0x0003FFFFU |
| #define _hrt_ones_0x13 0x0007FFFFU |
| #define _hrt_ones_0x14 0x000FFFFFU |
| #define _hrt_ones_0x15 0x001FFFFFU |
| #define _hrt_ones_0x16 0x003FFFFFU |
| #define _hrt_ones_0x17 0x007FFFFFU |
| #define _hrt_ones_0x18 0x00FFFFFFU |
| #define _hrt_ones_0x19 0x01FFFFFFU |
| #define _hrt_ones_0x1A 0x03FFFFFFU |
| #define _hrt_ones_0x1B 0x07FFFFFFU |
| #define _hrt_ones_0x1C 0x0FFFFFFFU |
| #define _hrt_ones_0x1D 0x1FFFFFFFU |
| #define _hrt_ones_0x1E 0x3FFFFFFFU |
| #define _hrt_ones_0x1F 0x7FFFFFFFU |
| #define _hrt_ones_0x20 0xFFFFFFFFU |
| |
| #define _hrt_ones_0 _hrt_ones_0x0 |
| #define _hrt_ones_1 _hrt_ones_0x1 |
| #define _hrt_ones_2 _hrt_ones_0x2 |
| #define _hrt_ones_3 _hrt_ones_0x3 |
| #define _hrt_ones_4 _hrt_ones_0x4 |
| #define _hrt_ones_5 _hrt_ones_0x5 |
| #define _hrt_ones_6 _hrt_ones_0x6 |
| #define _hrt_ones_7 _hrt_ones_0x7 |
| #define _hrt_ones_8 _hrt_ones_0x8 |
| #define _hrt_ones_9 _hrt_ones_0x9 |
| #define _hrt_ones_10 _hrt_ones_0xA |
| #define _hrt_ones_11 _hrt_ones_0xB |
| #define _hrt_ones_12 _hrt_ones_0xC |
| #define _hrt_ones_13 _hrt_ones_0xD |
| #define _hrt_ones_14 _hrt_ones_0xE |
| #define _hrt_ones_15 _hrt_ones_0xF |
| #define _hrt_ones_16 _hrt_ones_0x10 |
| #define _hrt_ones_17 _hrt_ones_0x11 |
| #define _hrt_ones_18 _hrt_ones_0x12 |
| #define _hrt_ones_19 _hrt_ones_0x13 |
| #define _hrt_ones_20 _hrt_ones_0x14 |
| #define _hrt_ones_21 _hrt_ones_0x15 |
| #define _hrt_ones_22 _hrt_ones_0x16 |
| #define _hrt_ones_23 _hrt_ones_0x17 |
| #define _hrt_ones_24 _hrt_ones_0x18 |
| #define _hrt_ones_25 _hrt_ones_0x19 |
| #define _hrt_ones_26 _hrt_ones_0x1A |
| #define _hrt_ones_27 _hrt_ones_0x1B |
| #define _hrt_ones_28 _hrt_ones_0x1C |
| #define _hrt_ones_29 _hrt_ones_0x1D |
| #define _hrt_ones_30 _hrt_ones_0x1E |
| #define _hrt_ones_31 _hrt_ones_0x1F |
| #define _hrt_ones_32 _hrt_ones_0x20 |
| |
| #define _hrt_mask(b, n) \ |
| (_hrt_ones(n) << (b)) |
| #define _hrt_get_bits(w, b, n) \ |
| (((w) >> (b)) & _hrt_ones(n)) |
| #define _hrt_set_bits(w, b, n, v) \ |
| (((w) & ~_hrt_mask(b, n)) | (((v) & _hrt_ones(n)) << (b))) |
| #define _hrt_get_bit(w, b) \ |
| (((w) >> (b)) & 1) |
| #define _hrt_set_bit(w, b, v) \ |
| (((w) & (~(1 << (b)))) | (((v) & 1) << (b))) |
| #define _hrt_set_lower_half(w, v) \ |
| _hrt_set_bits(w, 0, 16, v) |
| #define _hrt_set_upper_half(w, v) \ |
| _hrt_set_bits(w, 16, 16, v) |
| |
| #endif /* _HRT_BITS_H */ |