Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2016-2018 NXP
3 * Copyright (c) 2018-2019, Vladimir Oltean <olteanv@gmail.com>
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
15enum packing_op {
16 PACK,
17 UNPACK,
18};
19
20int packing(void *pbuf, u64 *uval, int startbit, int endbit, size_t pbuflen,
21 enum packing_op op, u8 quirks);
22
23int pack(void *pbuf, u64 uval, size_t startbit, size_t endbit, size_t pbuflen,
24 u8 quirks);
25
26int unpack(const void *pbuf, u64 *uval, size_t startbit, size_t endbit,
27 size_t pbuflen, u8 quirks);
28
29#endif