diff options
author | Jordan Crouse <jcrouse@codeaurora.org> | 2018-07-24 10:33:19 -0600 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2018-07-30 08:49:02 -0400 |
commit | 489cae632fc04927e8ef36ac8d8847193a41df3b (patch) | |
tree | 86f4e54e3a44eadcc98a7d1edec516ac97536619 /include/linux/ascii85.h | |
parent | 2f2eb723b50b4da887a34570ff15a3c23d966b85 (diff) | |
download | lwn-489cae632fc04927e8ef36ac8d8847193a41df3b.tar.gz lwn-489cae632fc04927e8ef36ac8d8847193a41df3b.zip |
include: Move ascii85 functions from i915 to linux/ascii85.h
The i915 DRM driver very cleverly used ascii85 encoding for their
GPU state file. Move the encode functions to a general header file to
support other drivers that might be interested in the same
functionality.
v4: Make the return value const char * as suggested by Chris Wilson
v3: Fix error_puts -> err_puts pointed out by the 01.org bot
v2: Update API to be cleaner for the caller as suggested by Chris Wilson
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'include/linux/ascii85.h')
-rw-r--r-- | include/linux/ascii85.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/include/linux/ascii85.h b/include/linux/ascii85.h new file mode 100644 index 000000000000..4cc40201273e --- /dev/null +++ b/include/linux/ascii85.h @@ -0,0 +1,38 @@ +/* + * SPDX-License-Identifier: GPL-2.0 + * + * Copyright (c) 2008 Intel Corporation + * Copyright (c) 2018 The Linux Foundation. All rights reserved. + */ + +#ifndef _ASCII85_H_ +#define _ASCII85_H_ + +#include <linux/kernel.h> + +#define ASCII85_BUFSZ 6 + +static inline long +ascii85_encode_len(long len) +{ + return DIV_ROUND_UP(len, 4); +} + +static inline const char * +ascii85_encode(u32 in, char *out) +{ + int i; + + if (in == 0) + return "z"; + + out[5] = '\0'; + for (i = 5; i--; ) { + out[i] = '!' + in % 85; + in /= 85; + } + + return out; +} + +#endif |