linux/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c

// SPDX-License-Identifier: GPL-2.0
/*
 * sun8i-ss-core.c - hardware cryptographic offloader for
 * Allwinner A80/A83T SoC
 *
 * Copyright (C) 2015-2019 Corentin Labbe <[email protected]>
 *
 * Core file which registers crypto algorithms supported by the SecuritySystem
 *
 * You could find a link for the datasheet in Documentation/arch/arm/sunxi.rst
 */

#include <crypto/engine.h>
#include <crypto/internal/rng.h>
#include <crypto/internal/skcipher.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/dma-mapping.h>
#include <linux/err.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/reset.h>

#include "sun8i-ss.h"

static const struct ss_variant ss_a80_variant =;

static const struct ss_variant ss_a83t_variant =;

/*
 * sun8i_ss_get_engine_number() get the next channel slot
 * This is a simple round-robin way of getting the next channel
 */
int sun8i_ss_get_engine_number(struct sun8i_ss_dev *ss)
{}

int sun8i_ss_run_task(struct sun8i_ss_dev *ss, struct sun8i_cipher_req_ctx *rctx,
		      const char *name)
{}

static irqreturn_t ss_irq_handler(int irq, void *data)
{}

static struct sun8i_ss_alg_template ss_algs[] =;

static int sun8i_ss_debugfs_show(struct seq_file *seq, void *v)
{}

DEFINE_SHOW_ATTRIBUTE();

static void sun8i_ss_free_flows(struct sun8i_ss_dev *ss, int i)
{}

/*
 * Allocate the flow list structure
 */
static int allocate_flows(struct sun8i_ss_dev *ss)
{}

/*
 * Power management strategy: The device is suspended unless a TFM exists for
 * one of the algorithms proposed by this driver.
 */
static int sun8i_ss_pm_suspend(struct device *dev)
{}

static int sun8i_ss_pm_resume(struct device *dev)
{}

static const struct dev_pm_ops sun8i_ss_pm_ops =;

static int sun8i_ss_pm_init(struct sun8i_ss_dev *ss)
{}

static void sun8i_ss_pm_exit(struct sun8i_ss_dev *ss)
{}

static int sun8i_ss_register_algs(struct sun8i_ss_dev *ss)
{}

static void sun8i_ss_unregister_algs(struct sun8i_ss_dev *ss)
{}

static int sun8i_ss_get_clks(struct sun8i_ss_dev *ss)
{}

static int sun8i_ss_probe(struct platform_device *pdev)
{}

static void sun8i_ss_remove(struct platform_device *pdev)
{}

static const struct of_device_id sun8i_ss_crypto_of_match_table[] =;
MODULE_DEVICE_TABLE(of, sun8i_ss_crypto_of_match_table);

static struct platform_driver sun8i_ss_driver =;

module_platform_driver();

MODULE_DESCRIPTION();
MODULE_LICENSE();
MODULE_AUTHOR();