18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * caam - Freescale FSL CAAM support for Public Key Cryptography descriptors
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright 2016 Freescale Semiconductor, Inc.
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * There is no Shared Descriptor for PKC so that the Job Descriptor must carry
88c2ecf20Sopenharmony_ci * all the desired key parameters, input and output pointers.
98c2ecf20Sopenharmony_ci */
108c2ecf20Sopenharmony_ci#include "caampkc.h"
118c2ecf20Sopenharmony_ci#include "desc_constr.h"
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci/* Descriptor for RSA Public operation */
148c2ecf20Sopenharmony_civoid init_rsa_pub_desc(u32 *desc, struct rsa_pub_pdb *pdb)
158c2ecf20Sopenharmony_ci{
168c2ecf20Sopenharmony_ci	init_job_desc_pdb(desc, 0, SIZEOF_RSA_PUB_PDB);
178c2ecf20Sopenharmony_ci	append_cmd(desc, pdb->sgf);
188c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->f_dma);
198c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->g_dma);
208c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->n_dma);
218c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->e_dma);
228c2ecf20Sopenharmony_ci	append_cmd(desc, pdb->f_len);
238c2ecf20Sopenharmony_ci	append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSAENC_PUBKEY);
248c2ecf20Sopenharmony_ci}
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci/* Descriptor for RSA Private operation - Private Key Form #1 */
278c2ecf20Sopenharmony_civoid init_rsa_priv_f1_desc(u32 *desc, struct rsa_priv_f1_pdb *pdb)
288c2ecf20Sopenharmony_ci{
298c2ecf20Sopenharmony_ci	init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F1_PDB);
308c2ecf20Sopenharmony_ci	append_cmd(desc, pdb->sgf);
318c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->g_dma);
328c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->f_dma);
338c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->n_dma);
348c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->d_dma);
358c2ecf20Sopenharmony_ci	append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSADEC_PRVKEY |
368c2ecf20Sopenharmony_ci			 RSA_PRIV_KEY_FRM_1);
378c2ecf20Sopenharmony_ci}
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci/* Descriptor for RSA Private operation - Private Key Form #2 */
408c2ecf20Sopenharmony_civoid init_rsa_priv_f2_desc(u32 *desc, struct rsa_priv_f2_pdb *pdb)
418c2ecf20Sopenharmony_ci{
428c2ecf20Sopenharmony_ci	init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F2_PDB);
438c2ecf20Sopenharmony_ci	append_cmd(desc, pdb->sgf);
448c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->g_dma);
458c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->f_dma);
468c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->d_dma);
478c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->p_dma);
488c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->q_dma);
498c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->tmp1_dma);
508c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->tmp2_dma);
518c2ecf20Sopenharmony_ci	append_cmd(desc, pdb->p_q_len);
528c2ecf20Sopenharmony_ci	append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSADEC_PRVKEY |
538c2ecf20Sopenharmony_ci			 RSA_PRIV_KEY_FRM_2);
548c2ecf20Sopenharmony_ci}
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci/* Descriptor for RSA Private operation - Private Key Form #3 */
578c2ecf20Sopenharmony_civoid init_rsa_priv_f3_desc(u32 *desc, struct rsa_priv_f3_pdb *pdb)
588c2ecf20Sopenharmony_ci{
598c2ecf20Sopenharmony_ci	init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F3_PDB);
608c2ecf20Sopenharmony_ci	append_cmd(desc, pdb->sgf);
618c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->g_dma);
628c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->f_dma);
638c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->c_dma);
648c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->p_dma);
658c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->q_dma);
668c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->dp_dma);
678c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->dq_dma);
688c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->tmp1_dma);
698c2ecf20Sopenharmony_ci	append_ptr(desc, pdb->tmp2_dma);
708c2ecf20Sopenharmony_ci	append_cmd(desc, pdb->p_q_len);
718c2ecf20Sopenharmony_ci	append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSADEC_PRVKEY |
728c2ecf20Sopenharmony_ci			 RSA_PRIV_KEY_FRM_3);
738c2ecf20Sopenharmony_ci}
74