162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * caam - Freescale FSL CAAM support for Public Key Cryptography descriptors
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright 2016 Freescale Semiconductor, Inc.
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * There is no Shared Descriptor for PKC so that the Job Descriptor must carry
862306a36Sopenharmony_ci * all the desired key parameters, input and output pointers.
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci#include "caampkc.h"
1162306a36Sopenharmony_ci#include "desc_constr.h"
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci/* Descriptor for RSA Public operation */
1462306a36Sopenharmony_civoid init_rsa_pub_desc(u32 *desc, struct rsa_pub_pdb *pdb)
1562306a36Sopenharmony_ci{
1662306a36Sopenharmony_ci	init_job_desc_pdb(desc, 0, SIZEOF_RSA_PUB_PDB);
1762306a36Sopenharmony_ci	append_cmd(desc, pdb->sgf);
1862306a36Sopenharmony_ci	append_ptr(desc, pdb->f_dma);
1962306a36Sopenharmony_ci	append_ptr(desc, pdb->g_dma);
2062306a36Sopenharmony_ci	append_ptr(desc, pdb->n_dma);
2162306a36Sopenharmony_ci	append_ptr(desc, pdb->e_dma);
2262306a36Sopenharmony_ci	append_cmd(desc, pdb->f_len);
2362306a36Sopenharmony_ci	append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSAENC_PUBKEY);
2462306a36Sopenharmony_ci}
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci/* Descriptor for RSA Private operation - Private Key Form #1 */
2762306a36Sopenharmony_civoid init_rsa_priv_f1_desc(u32 *desc, struct rsa_priv_f1_pdb *pdb)
2862306a36Sopenharmony_ci{
2962306a36Sopenharmony_ci	init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F1_PDB);
3062306a36Sopenharmony_ci	append_cmd(desc, pdb->sgf);
3162306a36Sopenharmony_ci	append_ptr(desc, pdb->g_dma);
3262306a36Sopenharmony_ci	append_ptr(desc, pdb->f_dma);
3362306a36Sopenharmony_ci	append_ptr(desc, pdb->n_dma);
3462306a36Sopenharmony_ci	append_ptr(desc, pdb->d_dma);
3562306a36Sopenharmony_ci	append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSADEC_PRVKEY |
3662306a36Sopenharmony_ci			 RSA_PRIV_KEY_FRM_1);
3762306a36Sopenharmony_ci}
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci/* Descriptor for RSA Private operation - Private Key Form #2 */
4062306a36Sopenharmony_civoid init_rsa_priv_f2_desc(u32 *desc, struct rsa_priv_f2_pdb *pdb)
4162306a36Sopenharmony_ci{
4262306a36Sopenharmony_ci	init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F2_PDB);
4362306a36Sopenharmony_ci	append_cmd(desc, pdb->sgf);
4462306a36Sopenharmony_ci	append_ptr(desc, pdb->g_dma);
4562306a36Sopenharmony_ci	append_ptr(desc, pdb->f_dma);
4662306a36Sopenharmony_ci	append_ptr(desc, pdb->d_dma);
4762306a36Sopenharmony_ci	append_ptr(desc, pdb->p_dma);
4862306a36Sopenharmony_ci	append_ptr(desc, pdb->q_dma);
4962306a36Sopenharmony_ci	append_ptr(desc, pdb->tmp1_dma);
5062306a36Sopenharmony_ci	append_ptr(desc, pdb->tmp2_dma);
5162306a36Sopenharmony_ci	append_cmd(desc, pdb->p_q_len);
5262306a36Sopenharmony_ci	append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSADEC_PRVKEY |
5362306a36Sopenharmony_ci			 RSA_PRIV_KEY_FRM_2);
5462306a36Sopenharmony_ci}
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci/* Descriptor for RSA Private operation - Private Key Form #3 */
5762306a36Sopenharmony_civoid init_rsa_priv_f3_desc(u32 *desc, struct rsa_priv_f3_pdb *pdb)
5862306a36Sopenharmony_ci{
5962306a36Sopenharmony_ci	init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F3_PDB);
6062306a36Sopenharmony_ci	append_cmd(desc, pdb->sgf);
6162306a36Sopenharmony_ci	append_ptr(desc, pdb->g_dma);
6262306a36Sopenharmony_ci	append_ptr(desc, pdb->f_dma);
6362306a36Sopenharmony_ci	append_ptr(desc, pdb->c_dma);
6462306a36Sopenharmony_ci	append_ptr(desc, pdb->p_dma);
6562306a36Sopenharmony_ci	append_ptr(desc, pdb->q_dma);
6662306a36Sopenharmony_ci	append_ptr(desc, pdb->dp_dma);
6762306a36Sopenharmony_ci	append_ptr(desc, pdb->dq_dma);
6862306a36Sopenharmony_ci	append_ptr(desc, pdb->tmp1_dma);
6962306a36Sopenharmony_ci	append_ptr(desc, pdb->tmp2_dma);
7062306a36Sopenharmony_ci	append_cmd(desc, pdb->p_q_len);
7162306a36Sopenharmony_ci	append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSADEC_PRVKEY |
7262306a36Sopenharmony_ci			 RSA_PRIV_KEY_FRM_3);
7362306a36Sopenharmony_ci}
74