xref: /linux/lib/zlib_dfltcc/dfltcc.c (revision 132db93572821ec2fdf81e354cc40f558faf7e4f)
1 // SPDX-License-Identifier: Zlib
2 /* dfltcc.c - SystemZ DEFLATE CONVERSION CALL support. */
3 
4 #include <linux/zutil.h>
5 #include "dfltcc_util.h"
6 #include "dfltcc.h"
7 
8 char *oesc_msg(
9     char *buf,
10     int oesc
11 )
12 {
13     if (oesc == 0x00)
14         return NULL; /* Successful completion */
15     else {
16 #ifdef STATIC
17         return NULL; /* Ignore for pre-boot decompressor */
18 #else
19         sprintf(buf, "Operation-Ending-Supplemental Code is 0x%.2X", oesc);
20         return buf;
21 #endif
22     }
23 }
24 
25 void dfltcc_reset(
26     z_streamp strm,
27     uInt size
28 )
29 {
30     struct dfltcc_state *dfltcc_state =
31         (struct dfltcc_state *)((char *)strm->state + size);
32     struct dfltcc_qaf_param *param =
33         (struct dfltcc_qaf_param *)&dfltcc_state->param;
34 
35     /* Initialize available functions */
36     if (is_dfltcc_enabled()) {
37         dfltcc(DFLTCC_QAF, param, NULL, NULL, NULL, NULL, NULL);
38         memmove(&dfltcc_state->af, param, sizeof(dfltcc_state->af));
39     } else
40         memset(&dfltcc_state->af, 0, sizeof(dfltcc_state->af));
41 
42     /* Initialize parameter block */
43     memset(&dfltcc_state->param, 0, sizeof(dfltcc_state->param));
44     dfltcc_state->param.nt = 1;
45 
46     /* Initialize tuning parameters */
47     if (zlib_dfltcc_support == ZLIB_DFLTCC_FULL_DEBUG)
48         dfltcc_state->level_mask = DFLTCC_LEVEL_MASK_DEBUG;
49     else
50         dfltcc_state->level_mask = DFLTCC_LEVEL_MASK;
51     dfltcc_state->block_size = DFLTCC_BLOCK_SIZE;
52     dfltcc_state->block_threshold = DFLTCC_FIRST_FHT_BLOCK_SIZE;
53     dfltcc_state->dht_threshold = DFLTCC_DHT_MIN_SAMPLE_SIZE;
54     dfltcc_state->param.ribm = DFLTCC_RIBM;
55 }
56