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