mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-24 02:35:16 +07:00
97fb5e8d9b
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license version 2 and only version 2 as published by the free software foundation this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 294 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Alexios Zavras <alexios.zavras@intel.com> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190529141900.825281744@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
61 lines
1.8 KiB
C
61 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _CORE_H_
|
|
#define _CORE_H_
|
|
|
|
#include "dma.h"
|
|
|
|
/**
|
|
* struct qce_device - crypto engine device structure
|
|
* @queue: crypto request queue
|
|
* @lock: the lock protects queue and req
|
|
* @done_tasklet: done tasklet object
|
|
* @req: current active request
|
|
* @result: result of current transform
|
|
* @base: virtual IO base
|
|
* @dev: pointer to device structure
|
|
* @core: core device clock
|
|
* @iface: interface clock
|
|
* @bus: bus clock
|
|
* @dma: pointer to dma data
|
|
* @burst_size: the crypto burst size
|
|
* @pipe_pair_id: which pipe pair id the device using
|
|
* @async_req_enqueue: invoked by every algorithm to enqueue a request
|
|
* @async_req_done: invoked by every algorithm to finish its request
|
|
*/
|
|
struct qce_device {
|
|
struct crypto_queue queue;
|
|
spinlock_t lock;
|
|
struct tasklet_struct done_tasklet;
|
|
struct crypto_async_request *req;
|
|
int result;
|
|
void __iomem *base;
|
|
struct device *dev;
|
|
struct clk *core, *iface, *bus;
|
|
struct qce_dma_data dma;
|
|
int burst_size;
|
|
unsigned int pipe_pair_id;
|
|
int (*async_req_enqueue)(struct qce_device *qce,
|
|
struct crypto_async_request *req);
|
|
void (*async_req_done)(struct qce_device *qce, int ret);
|
|
};
|
|
|
|
/**
|
|
* struct qce_algo_ops - algorithm operations per crypto type
|
|
* @type: should be CRYPTO_ALG_TYPE_XXX
|
|
* @register_algs: invoked by core to register the algorithms
|
|
* @unregister_algs: invoked by core to unregister the algorithms
|
|
* @async_req_handle: invoked by core to handle enqueued request
|
|
*/
|
|
struct qce_algo_ops {
|
|
u32 type;
|
|
int (*register_algs)(struct qce_device *qce);
|
|
void (*unregister_algs)(struct qce_device *qce);
|
|
int (*async_req_handle)(struct crypto_async_request *async_req);
|
|
};
|
|
|
|
#endif /* _CORE_H_ */
|