root/drivers/crypto/intel/qat/qat_common/adf_cfg_services.h
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright(c) 2023 Intel Corporation */
#ifndef _ADF_CFG_SERVICES_H_
#define _ADF_CFG_SERVICES_H_

#include "adf_cfg_strings.h"

struct adf_accel_dev;

enum adf_base_services {
        SVC_ASYM = 0,
        SVC_SYM,
        SVC_DC,
        SVC_DECOMP,
        SVC_BASE_COUNT
};

enum adf_extended_services {
        SVC_DCC = SVC_BASE_COUNT,
        SVC_COUNT
};

enum adf_composed_services {
        SVC_SYM_ASYM = SVC_COUNT,
        SVC_SYM_DC,
        SVC_ASYM_DC,
};

enum {
        ADF_ONE_SERVICE = 1,
        ADF_TWO_SERVICES,
        ADF_THREE_SERVICES,
};

#define MAX_NUM_CONCURR_SVC     ADF_THREE_SERVICES

int adf_parse_service_string(struct adf_accel_dev *accel_dev, const char *in,
                             size_t in_len, char *out, size_t out_len);
int adf_get_service_enabled(struct adf_accel_dev *accel_dev);
int adf_get_service_mask(struct adf_accel_dev *accel_dev, unsigned long *mask);
enum adf_cfg_service_type adf_srv_to_cfg_svc_type(enum adf_base_services svc);
bool adf_is_service_enabled(struct adf_accel_dev *accel_dev, enum adf_base_services svc);

#endif