1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright 2016-2018 NXP 3 * Copyright (c) 2018-2019, Vladimir Oltean <[email protected]> 4 */ 5 #ifndef _LINUX_PACKING_H 6 #define _LINUX_PACKING_H 7 8 #include <linux/types.h> 9 #include <linux/bitops.h> 10 11 #define QUIRK_MSB_ON_THE_RIGHT BIT(0) 12 #define QUIRK_LITTLE_ENDIAN BIT(1) 13 #define QUIRK_LSW32_IS_FIRST BIT(2) 14 15 enum packing_op { 16 PACK, 17 UNPACK, 18 }; 19 20 int packing(void *pbuf, u64 *uval, int startbit, int endbit, size_t pbuflen, 21 enum packing_op op, u8 quirks); 22 23 int pack(void *pbuf, u64 uval, size_t startbit, size_t endbit, size_t pbuflen, 24 u8 quirks); 25 26 int unpack(const void *pbuf, u64 *uval, size_t startbit, size_t endbit, 27 size_t pbuflen, u8 quirks); 28 29 #endif 30