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